基于Android平台的身份证识别技术
最近公司提出了一个要求通过摄像头扫描身份证实现读取身份证号码的需求,看了一下网上的SDK大多都是收费的,也看了好几篇博客决定使用tess-two来做
- 1.去下载tess-two库文件
个人不会C++有会的可以自己下载源文件编译,我是使用的是已经编译好的aar
compile 'com.rmtheis:tess-two:7.0.0'
- 2.获取摄像头返回的数据
这里有两种思路,要么写一个定时器比如一秒抓拍一张,或者把相机返回的YUV数据转换成bitmap,看需求吧 - 3.图像处理
首先把彩图转换成灰度图,然后二值化,调用。
if (bitmap==null) {
Log.e("MainActivity","bitmap为空");
return;
}
bitmap= ImageFilter.bitmap2Gray(bitmap);
bitmap=ImageFilter.grayScaleImage(bitmap);
File root =new File( Environment.getExternalStorageDirectory(),"tessdata");
File f = new File(root,"chi_sim.traineddata");
String path=f.getAbsolutePath();
api.init( Environment.getExternalStorageDirectory().getAbsolutePath(),"chi_sim");
api.setDebug(true);
api.setImage(bitmap);
String text = api.getUTF8Text();
Log.e("TAG",text);
bitmap.recycle();
api.end();
结论
毕竟不是专业做图像识别的,识别效率略低,并且识别不一定准确。