放入资产文件夹时找不到 Tesseract tessdata 文件夹
Tesseract tessdata folder not found when put in assets folder
我到处都读到 tessdata 应该在外部存储上,eng
语言应该有 eng.traineddata
。但是如何将应用程序打包到设备以便它在那里呢?我不知道这是否可行,所以我将 tessdata
复制到 assets
文件夹。我可以通过 context().getAssets().openFd().open("tessdata/eng.traineddata")
访问它但是当我尝试 !new File("file:///android_asset/tessdata/").exists()
时找不到它并且我在初始化时从 tesseract 库中得到异常,找不到它。我正在使用 Genymotion 作为模拟器,不知何故直接路径不正确。所以我不知道该怎么办。
好的,我在 github 上看到了另一个例子,如果数据不存在,他正在将经过训练的数据从资产复制到 sdcard。所以这可能是唯一的方法。
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);
}
我到处都读到 tessdata 应该在外部存储上,eng
语言应该有 eng.traineddata
。但是如何将应用程序打包到设备以便它在那里呢?我不知道这是否可行,所以我将 tessdata
复制到 assets
文件夹。我可以通过 context().getAssets().openFd().open("tessdata/eng.traineddata")
访问它但是当我尝试 !new File("file:///android_asset/tessdata/").exists()
时找不到它并且我在初始化时从 tesseract 库中得到异常,找不到它。我正在使用 Genymotion 作为模拟器,不知何故直接路径不正确。所以我不知道该怎么办。
好的,我在 github 上看到了另一个例子,如果数据不存在,他正在将经过训练的数据从资产复制到 sdcard。所以这可能是唯一的方法。
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);
}