首页 > 代码库 > 浅析android OCR文字识别

浅析android OCR文字识别

这学期有门课程老师要求用JAVA实现一个OCR文字识别的程序,所以就花了一些时间研究了一下在安卓端如何实现

OCR的引擎是用的开源项目tesseract-ocr 这个安卓版的地址:https://code.google.com/p/tesseract-android-tools/

但是自己在编译的时候老是出错,于是在网上寻找到了别人编译好安卓可用的tess-two导入到项目中(参考文章地址 http://www.cnblogs.com/hangxin1940/archive/2012/01/13/2321507.html)

 

自己尝试做了拍照识别和从相册选择图片识别

但是手机运算能力太差,图片太大、分辨率太高的话,识别时间会很长,所以在选取图片的时候调用了系统裁剪功能,并且另开线程来处理识别。

推荐测试的时候不要用太大的图片。

 

同组的队友用java写了图片的预处理,所以拿过来试试能否提高识别成功率

无奈安卓无法使用java.awt里面的包,所以还费了一些时间替换成android.graphics中的一些类实现相同功能。

测试发现灰度化后是能提高一些识别率,在电脑上灰度化后再用三个算法二值化后还能进一步提高识别率

但在手机上用大津法、最大熵法进行二值化花费时间太久(几乎没算成功),所以后来这两个方法就没有调用,而只用迭代法二值化效果不理想。

 

识别需要用到语言包,需要放置在SD卡根目录。(我只下载了简体中文和英文的语言包)

 

下面是几张识别截图(前两张是识别的手机照片,后一张是识别的示例图片):

    

 

 

最后的效果是,能识别一些比较规整的文字,照片的话最好只裁剪文字部分去识别(而且要照的比较清晰)。

也能识别一些简单的英文、数字验证码。

识别有待提高,速度也有待提高。

 

下面是源代码,语言包等下载地址:

CSDN下载

百度网盘下载

 

tessdata是语言包 需要放到手机SD卡根目录
tess-two是OCR引擎(是基于3.01版编译的,现在已经有3.02版本了),需要导入到项目中(项目中已经导入)