Tesseract是一个HP和google先后维护的开源OCR(ocr,optical character Recognition)引擎,3.0以后已经支持中文识别.如何在android上使用它呢,那就不得不提另一个开源项目tess-two,tess-two
是一个在android上使用tesseract的实例,tess-two
中有三个主要目录:
- eyes-two
对leptonica的封装
- tess-two-test
ocr的测试代码
- tess-two
对Tesseract的封装
下载tess-two源码
首先,将tess-two代码从github上clone下来:(也可知直接从这个地址下载)
git@github.com:rmtheis/tess-two.git
克隆下来后,还需要ndk编译,建议linux下编译,只需要下载ndk就行了,windows下还要下载安装sygwin
使用ndk编译tess-two
分别cd进tess-two
和eyes-two
去编译项目
cd tess-two
ndk-build
cd eyes-two
ndk-build
简单的调用示例
简单的调用识别,只需要使用eclipse导入tess-two
中的tess-two
就行了,然后新建工程,引用这个library.
//sd卡路径
private static final String SD_PATH=Environment.getExternalStorageDirectory();
//字典名
private static final String DICTIONARY="/custom";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TessBaseAPI baseApi = new TessBaseAPI();
//记得要在你的sd卡的tessdata文件夹下放对应的字典文件,例如我这里就放的是custom.traineddata
baseApi.init(SD_PATH, DICTIONARY);
baseApi.setPageSegMode(TessBaseAPI.PageSegMode.PSM_AUTO);
//记得要在对应的文件夹里放上要识别的图片文件,比如我这里就在sd卡根目录放了img.png
baseApi.setImage(new File(SD_PATH+"/img.png"));
final String result= baseApi.getUTF8Text();
//这里,你可以把result的值赋值给你的TextView
baseApi.end();
}
如上,一个简单的android ocr程序就完成了