我在我的应用中使用tesseract ocr。为了使用tesseract,我需要使用位于名为 - ' tessdata'的目录中的几个语言文件。
这是我的方法代码:
public String detectText(Bitmap bitmap) {
TessBaseAPI tessBaseAPI = new TessBaseAPI();
String DATA_PATH = Environment.getRootDirectory().getPath() + "/tessdata/";
tessBaseAPI.setDebug(true);
tessBaseAPI.init(DATA_PATH, "eng"); //Init the Tess with the trained data file, with english language
tessBaseAPI.setImage(bitmap);
String text = tessBaseAPI.getUTF8Text();
tessBaseAPI.end();
return text;
}
我使用了很多变种:
String DATA_PATH = Environment.getRootDirectory().getPath() + "/tessdata/";
并且每次应用失败并且#34;路径未找到"例外。 我需要一个很好的方法将这个目录放在Android手机中并获取它的路径,无论它是哪个手机。现在,' tessdata'目录可以在app根目录找到。
我该怎么做?
答案 0 :(得分:2)
不要在"/tessdata/"
变量中包含DATA_PATH
- 只需关闭该部分,但请确保子文件夹存在于DATA_PATH
指定的目录中。
答案 1 :(得分:0)
From sourcecode TessBaseAPI#init
public boolean init(String datapath, String language) {
...
if (!datapath.endsWith(File.separator))
datapath += File.separator;
File tessdata = new File(datapath + "tessdata");
if (!tessdata.exists() || !tessdata.isDirectory())
throw new IllegalArgumentException("Data path must contain subfolder tessdata!");
That means
You can create it like this:
File dataPath = Environment.getDataDirectory();
// or any other dir where you app has file write permissions
File tessSubDir = new File(dataPath,"tessdata");
tessSubDir.mkdirs(); // create if it does not exist
tessBaseAPI.init(dataPath.getAbsolutePath(), "eng");