我目前正在使用 OCR 开发一个 Android 应用程序,并且已经到了调用 BaseAPI.init() 方法的地步。我不断收到错误消息,指出该目录必须包含 tessdata 作为子文件夹。我检查了文件目录是否包含其中包含 trainingdata 文件的文件夹,并确保我指向正确的目录。我真的很想解决这个问题。
我指向的目录是 /mnt/sdcard/Image2Text/ 。我确保 tessdata 是一个子文件夹,里面有必要的语言文件。
这是代码:
public static final String DATA_PATH = Environment.getExternalStorageDirectory().toString() +
"/Image2Text/";
....
File dir = new File(DATA_PATH + "tessdata");
dir.mkdirs();
if (!(new File(DATA_PATH + "tessdata/" + lang + ".traineddata")).exists()) {
try {
AssetManager assetManager = getAssets();
InputStream in = assetManager.open("eng.traineddata");
OutputStream out = new FileOutputStream(DATA_PATH
+ "tessdata/eng.traineddata");
byte[] buf = new byte[1024];
int len;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
in.close();
out.close();
} catch (IOException e) {}
}
TessBaseAPI baseAPI = new TessBaseAPI();
baseAPI.init(DATA_PATH, lang);
baseAPI.setImage(new File(path));