【问题标题】:Cannot initialize tessdata path for OCR using tess-two in Android无法在 Android 中使用 tess-two 初始化 OCR 的 tessdata 路径
【发布时间】:2016-06-28 06:50:03
【问题描述】:

我正在开发一个 Android OCR 项目。在我的项目中,我使用的是 tess-two。但是我在初始化 tess-two 的 tessdata 文件夹中的训练数据时遇到问题。

我像这样在grandle中安装了tess-two

dependencies {
    compile 'com.rmtheis:tess-two:6.0.2'
}

然后我尝试像这样从位图中检测文本

public String detectText(Bitmap bitmap) {

        TessBaseAPI tessBaseAPI = new TessBaseAPI();
        tessBaseAPI.setDebug(true);
        tessBaseAPI.init(DATA_PATH, "eng"); //Init the Tess with the trained data file, with english language

        //For example if we want to only detect numbers
        tessBaseAPI.setVariable(TessBaseAPI.VAR_CHAR_WHITELIST, "1234567890");
        tessBaseAPI.setVariable(TessBaseAPI.VAR_CHAR_BLACKLIST, "!@#$%^&*()_+=-qwertyuiop[]}{POIU" +
                "YTREWQasdASDfghFGHjklJKLl;L:'\"\\|~`xcvXCVbnmBNM,./<>?");


        tessBaseAPI.setImage(bitmap);

        String text = tessBaseAPI.getUTF8Text();

        tessBaseAPI.end();

        return text;
    }

当一个按钮被点击时触发。我的活动只包括那个功能。问题出在数据路径变量上。

这是我的项目结构

是的,我添加了两个 tessdata 文件夹来演示两个场景。

第一次尝试。我这样设置DATA_PATH

DATA_PATH = Environment.getRootDirectory().getPath()+"/data/";

这给了我“数据路径不存在!”错误。所以我找到了Tesseract OCR Android tessdata directory not foundGet path of data directory(android)这些解决方案。

所以我尝试像这样设置 DATA_PATH

DATA_PATH = Environment.getRootDirectory().getPath();

它给了我“数据路径必须包含子文件夹 tessdata!”错误。

然后我尝试了这个

DATA_PATH = Environment.getRootDirectory().getPath()+"/data/tessdata/";

然后我再次给我这个错误“数据路径不存在!”。

然后我就这样尝试了

DATA_PATH = Environment.getRootDirectory().getPath()+"/tessdata/";

它给了我这个错误“数据路径不存在!”。

所以我尝试的所有方法都不起作用。如何正确初始化 tessdata 文件夹?我不知道为它设置路径。

【问题讨论】:

  • 在那个链接中,据说像这样使用 baseApi.init("/mnt/sdcard/tesseract", "eng"); .它来自sdcard。 ,我的 tessdata 文件夹在项目父目录中。所以在我的事业中,我必须这样引用? “/tessdata”。
  • 我试过了,还是不行。
  • 我试过这个“/data”和这个“/”
  • 当我尝试这个“/data”时,它给了我这个错误“数据路径必须包含子文件夹 tessdata!”。请问怎么解决?
  • 根据文档,我也尝试过“/data/”。

标签: android ocr tesseract tess-two


【解决方案1】:

将您的 tessdata 目录复制到您的内部存储器或手机内存中。然后把你的 DATA_PATH 变量作为

DATA_PATH = Environment.getExternalStorageDirectory() + "/";

然后尝试运行它。我最近发现Environment.getExternalStorageDirectory() 可能并不总是指向您的 SD 卡或外部存储。在我的情况下,它实际上指向我的内部存储,因此使用上述 DATA_PATH 将 tessdata 文件夹复制到我的内部存储中对我来说效果很好。因此,这应该直接指向包含 tessdata 文件夹的内存。

【讨论】:

    【解决方案2】:

    您可以将文件放在assets 文件夹中,然后使用AssetManager 将它们复制到/storage/emulated/0/tesseract/tessdata/ 之类的地方。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-09
      • 2019-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-21
      相关资源
      最近更新 更多