【发布时间】:2016-06-28 06:50:03
【问题描述】:
我正在开发一个 Android OCR 项目。在我的项目中,我使用的是 tess-two。但是我在初始化 tess-two 的 tessdata 文件夹中的训练数据时遇到问题。
我像这样在grandle中安装了tess-two
dependencies {
compile 'com.rmtheis:tess-two:6.0.2'
}
然后我尝试像这样从位图中检测文本
public String detectText(Bitmap bitmap) {
TessBaseAPI tessBaseAPI = new TessBaseAPI();
tessBaseAPI.setDebug(true);
tessBaseAPI.init(DATA_PATH, "eng"); //Init the Tess with the trained data file, with english language
//For example if we want to only detect numbers
tessBaseAPI.setVariable(TessBaseAPI.VAR_CHAR_WHITELIST, "1234567890");
tessBaseAPI.setVariable(TessBaseAPI.VAR_CHAR_BLACKLIST, "!@#$%^&*()_+=-qwertyuiop[]}{POIU" +
"YTREWQasdASDfghFGHjklJKLl;L:'\"\\|~`xcvXCVbnmBNM,./<>?");
tessBaseAPI.setImage(bitmap);
String text = tessBaseAPI.getUTF8Text();
tessBaseAPI.end();
return text;
}
当一个按钮被点击时触发。我的活动只包括那个功能。问题出在数据路径变量上。
这是我的项目结构
是的,我添加了两个 tessdata 文件夹来演示两个场景。
第一次尝试。我这样设置DATA_PATH
DATA_PATH = Environment.getRootDirectory().getPath()+"/data/";
这给了我“数据路径不存在!”错误。所以我找到了Tesseract OCR Android tessdata directory not found和Get path of data directory(android)这些解决方案。
所以我尝试像这样设置 DATA_PATH
DATA_PATH = Environment.getRootDirectory().getPath();
它给了我“数据路径必须包含子文件夹 tessdata!”错误。
然后我尝试了这个
DATA_PATH = Environment.getRootDirectory().getPath()+"/data/tessdata/";
然后我再次给我这个错误“数据路径不存在!”。
然后我就这样尝试了
DATA_PATH = Environment.getRootDirectory().getPath()+"/tessdata/";
它给了我这个错误“数据路径不存在!”。
所以我尝试的所有方法都不起作用。如何正确初始化 tessdata 文件夹?我不知道为它设置路径。
【问题讨论】:
-
在那个链接中,据说像这样使用 baseApi.init("/mnt/sdcard/tesseract", "eng"); .它来自sdcard。 ,我的 tessdata 文件夹在项目父目录中。所以在我的事业中,我必须这样引用? “/tessdata”。
-
我试过了,还是不行。
-
我试过这个“/data”和这个“/”
-
当我尝试这个“/data”时,它给了我这个错误“数据路径必须包含子文件夹 tessdata!”。请问怎么解决?
-
根据文档,我也尝试过“/data/”。
标签: android ocr tesseract tess-two