放入资产文件夹时找不到 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);
}