4

我目前正在使用 OCR 开发一个 Android 应用程序,并且已经到了调用 BaseAPI.init() 方法的地步。我不断收到错误消息,指出该目录必须包含 tessdata 作为子文件夹。我检查了文件目录是否包含其中包含 trainingdata 文件的文件夹,并确保我指向正确的目录。我真的很想解决这个问题。

我指向的目录是 /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));
4

1 回答 1

6

就像你说的,DATA_PATH 目录必须包含 tessdata 作为子文件夹。因此,如果您的 tessdata 文件夹是 /data/data/tessdata,DATA_PATH 将是 /data/data 我希望这会有所帮助!

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

于 2012-11-08T12:17:54.200 回答