我到处读到tessdata应该在外部存储上,eng.traineddata
语言应该eng
。但是如何将应用程序打包到设备上呢?我不知道这是可能的,所以我将tessdata
复制到assets
文件夹。我可以通过context().getAssets().openFd().open("tessdata/eng.traineddata")
访问它,但是当我尝试时!new File("file:///android_asset/tessdata/").exists()
找不到它,并且在初始化时我从tesseract库中获得异常,但未找到它。我使用Genymotion作为模拟器,不知何故直接路径不正确。所以我不知道该怎么做。
答案 0 :(得分:1)
好的我在github上看到了另一个例子,如果不存在数据,他正在将训练数据从资产复制到SD卡。所以这可能是唯一的方法。
private void initializeTessApi() {
_tessApi = new TessBaseAPI();
File data = new File(application().dataDir(), TESSDATA);
File traineddataFile = new File(data, LANG + ".traineddata");
if (!traineddataFile.exists()) {
try {
data.mkdirs();
copyAndClose(context().getAssets().open(TESSDATA + "/" + LANG + ".traineddata"), new FileOutputStream(traineddataFile));
info("Copied", LANG, "traineddata");
} catch (IOException e) {
error(e, "Was unable to copy", LANG, "traineddata ");
}
}
_tessApi.init(application().dataDir().getAbsolutePath(), LANG);
}