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

1
git clone https://github.com/rmtheis/tess-two.git

1
2
3
dependencies {
implementation 'com.rmtheis:tess-two:9.0.0' //免编译方式
}

使用ndk编译tess-two和eyes-two

1
2
cd tess-two
ndk-build
1
2
cd eyes-two
ndk-build

简单调用示例

只需要新建Module导入tess-two中的tess-two即可,然后引用这个Library

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//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();
}

Powered by AppBlog.CN     浙ICP备14037229号

Copyright © 2012 - 2020 APP开发技术博客 All Rights Reserved.

访客数 : | 访问量 :