Android上使用Tesseract识别文字
文字识别一般使用:tesseract-ocr
GitHub:https://github.com/tesseract-ocr/tesseract
训练数据:https://github.com/tesseract-ocr/tessdata
Android平台推荐的tesseract封装:tess-two
GitHub:https://github.com/rmtheis/tess-two
Tesseract及tess-two简介
Tesseract是一个HP和Google先后维护的开源OCR(Optical Character Recognition)引擎,3.0以后已经支持中文识别。tess-two是一个在Android上使用tesseract的实例,tess-two中有三个主要目录:
- eyes-two:对leptonica的封装
- tess-two:对Tesseract的封装
- tess-two-test:ocr的测试代码
获取tess-two
git clone https://github.com/rmtheis/tess-two.git
或
dependencies {
implementation 'com.rmtheis:tess-two:9.0.0' //免编译方式
}
使用ndk编译tess-two和eyes-two
cd tess-two
ndk-build
cd eyes-two
ndk-build
简单调用示例
只需要新建Module导入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卡根目录放了test.png
baseApi.setImage(new File(SD_PATH + "/test.png"));
final String result= baseApi.getUTF8Text();
//可以把result的值赋值给你的TextView
baseApi.end();
}
版权声明:
作者:Joe.Ye
链接:https://www.appblog.cn/index.php/2023/03/12/use-tesseract-to-recognize-text-on-android/
来源:APP全栈技术分享
文章版权归作者所有,未经允许请勿转载。
共有 0 条评论