前两章介绍了如何搭建Tesseract和jTessBoxEditor环境和制作样本和训练样本文件
本章介绍如何在android中使用训练好的xxx.traineddata
android办大事必备图
因为Tesseract使用C++实现的,在Android中不能直接使用,需要封装JavaAPI才能在Android平台中进行调用,这里我们直接使用TessTwo项目,tess-two是TesseraToolsForAndroid的一个git分支,使用简单
Tess-two在git上地址为:https://github.com/rmtheis/tess-two
Tess-two下载后,需要进行编译,本章节为简单起见,直接上build.gradle
implementation 'com.rmtheis:tess-two:8.0.0'
这个库使用非常简单,大体可以分为三步:
1.初始化并设置样本库路径
2.设置要识别的bitmap
3.返回识别结果
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
private TessBaseAPI tessBaseAPI;
//传入路径
private static final File PATH = new File(Environment.getExternalStorageState(), "data");
//实际路径
private static final File LOCAL_PATH = new File(PATH, "tessdata");
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
createLocalPath();
//初始化BaseApi并设置识别路径
tessBaseAPI = new TessBaseAPI();
//传入路径为 /sdcard/data
//通过观察源码发现,实际路径为/sdcard/data/tessdata/
//故而应该把样本文件放在传入路径下的../tessdata/num.traineddata
boolean num = tessBaseAPI.init(PATH.getAbsolutePath(), "num");
if (num) {
Log.i(TAG, "初始化成功");
}
}
private void createLocalPath() {
if (!LOCAL_PATH.exists()) {
LOCAL_PATH.mkdirs();
}
}
public void onClick(View view) {
//传入等待识别的图片
tessBaseAPI.setImage(new File(Environment.getExternalStorageDirectory(), "test.png"));
//识别结果
String utf8Text = tessBaseAPI.getUTF8Text();
Log.i(TAG, "识别结果:" + utf8Text);
//释放识别结果
tessBaseAPI.clear();
}
@Override
protected void onDestroy() {
super.onDestroy();
//释放tessBaseApi
tessBaseAPI.end();
}
}
因调用比较简单,以上代码拷过去就可以测试使用,前提是务必将识别样本文件放到指定位置
注:tess-two规定:样本文件必须存放在你传入的文件夹下的tessdata文件夹里面
本章内容到此结束。