Tesseract OCR Android无法找到tessdata目录

4
我目前正在开发一款使用OCR的Android应用程序,我已经调用了BaseAPI.init()方法。但是我一直收到错误提示说该目录必须包含tessdata作为子文件夹。我已经检查了文件目录,确保包含了训练数据文件夹,并确保我指向了正确的目录。我真的很想解决这个问题。
我指向的目录是/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));
1个回答

6

就像你所说的,DATA_PATH目录必须包含tessdata作为子文件夹。因此,如果你的tessdata文件夹是/data/data/tessdata,DATA_PATH将会是/data/data。

编辑:啊,我想我误解了!


我从BaseAPI.java文件中读取到了这部分内容,所以我知道。我已经进入文件系统进行检查,并确保目录存在,结果它确实存在。在这种情况下,目录是/mnt/sdcard/Image2Text/。该目录包含一个名为tessdata的子文件夹。我在代码中是否错误地指定了它?此外,如果不存在该文件夹,我的代码应该会创建它。在我的情况下,它确实会创建,因为我在AndroidManifest.xml中有android.permission.WRITE_EXTERNAL_STORAGE权限。 - dr3wmurphy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接