放入资产文件夹时找不到Tesseract tessdata文件夹

时间:2015-10-19 17:24:44

标签: android tesseract

我到处读到tessdata应该在外部存储上,eng.traineddata语言应该eng。但是如何将应用程序打包到设备上呢?我不知道这是可能的,所以我将tessdata复制到assets文件夹。我可以通过context().getAssets().openFd().open("tessdata/eng.traineddata")访问它,但是当我尝试时!new File("file:///android_asset/tessdata/").exists()找不到它,并且在初始化时我从tesseract库中获得异常,但未找到它。我使用Genymotion作为模拟器,不知何故直接路径不正确。所以我不知道该怎么做。

1 个答案:

答案 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);
}