【问题标题】:How to force tesseract not to use TESSDATA_PREFIX如何强制 tesseract 不使用 TESSDATA_PREFIX
【发布时间】:2013-02-03 19:08:26
【问题描述】:

我的电脑上安装了 tesseract,它定义了 TESSDATA_PREFIX 环境变量。完全卸载 tesseract 后,我​​尝试以这种方式使用 tesseract API:

if (myOCR->Init("C:/Projects/project/Release/tessdata/", "rus")) {
            fprintf(stderr, "Could not initialize tesseract.\n");
            exit(1);
        }

然后收到

Error opening data file C:\Program Files (x86)\Tesseract-OCR\tessdata/rus.traine
ddata
Please make sure the TESSDATA_PREFIX environment variable is set to the parent d
irectory of your "tessdata" directory.
Failed loading language 'rus'
Tesseract couldn't load any languages!
Could not initialize tesseract.

在 cmd 中键入 set TESSDATA_PREFIX 让我知道没有这样的变量。但是 tesseract 记得它(不知道如何)。那么如何强制 tesseract 在具体文件夹中搜索 traindata 呢?谢谢

【问题讨论】:

    标签: c++ ocr tesseract


    【解决方案1】:

    这似乎很有帮助: Tesseract - change language file location

    从该线程中的答案来看,似乎是 tesseract 查找环境变量的情况,但 如果未设置,则假定为固定位置

    解决此问题的最简单方法是运行“cmd”,然后执行:

    c:\Users\alex> set TESSDATA_PREFIX="C:/Projects/project/Release/tessdata"
    c:\Users\alex> cd MyOCRProgDir
    c:\Users\alex\MyOCRProgDir> MyProg
    

    希望有帮助!

    【讨论】:

    • 我不想用这个,因为它不能在另一台电脑上工作
    • 1.) 我将没有机会在另一台电脑上手动设置 env 变量 2.) 不方便 3) 即使重置此变量后,我也不知道为什么,但它在 C 中搜索: \Progamfiles (x86)\tesseract-ocr ...
    • 我在遇到 TESSDATA_PREFIX 时进行了完整的 reg 扫描并删除了所有内容,但它在旧目录中搜索
    • 首先,您将这些命令放入“批处理文件”(扩展名为 .bat 的文件)中,当您将程序复制到其他计算机上时,您也将复制此 . bat 文件放到他们的桌面上,使其成为他们双击以启动 OCR 程序的“快捷方式”。其次,由于这不起作用,您是否有机会从源代码构建 Tesseract?我知道这听起来很复杂,但如果你能做到这一点,你也许可以使用我指给你的线程上的建议。
    • 在这种情况下,您可以直接从代码中使用 putenv 而不是 bat 文件。无论如何,重新启动通过 tesseract exe 先前定义的环境变量解决了这个棘手的问题。谢谢
    【解决方案2】:

    我也遇到过同样的问题。 .. 我所做的只是将 tessdata 文件夹复制到我的应用程序正在运行的目录中。 . .

    注意:这样做后,请确保将 tessdata 属性“复制到输出目录”设置为“始终复制”。这解决了问题。 . .

    请参阅 youtube 中的此链接。 . .为了更好的演示。 . .希望它有所帮助:)

    http://www.youtube.com/watch?v=RqvvXJXuRYY

    【讨论】:

      【解决方案3】:

      我在训练数据方面遇到了同样的问题。我没有强制不使用 TESSDATA_PREFIX,而是找到了一种解决方法。这对我有用。

      我的机器是 64 位的,我正在用 VS2012 构建一个 32 位的副本。

      设置环境变量。 TESSDATA_PREFIX : C:\Program Files (x86)\Tesseract-OCR

      这里的“Tesseract-OCR”是“tessdata”文件夹的父目录。

      编辑路径变量。 路径:C:\tess\lib\lib;

      这里的“C:\tess\lib\lib”是lib和dll文件所在的地方:liblept168.dll,liblept168.lib等

      启动一个新的 win32 控制台应用程序并设置以下设置。 C/C++ >> 一般 C:\tess\include\include

      这里的“C:\tess\include\include”是包含文件所在的“tesseract”和“leptonica”文件夹的父目录。

      链接器 >> 附加库依赖 C:\tess\lib\lib

      链接器 >> 附加依赖 liblept168.lib libtesseract302.lib (将这些添加到列表中)

      C/C++>>预处理器 _CRT_SECURE_NO_WARNINGS(将此添加到列表中)

      将两个tesseract dll(对应库文件)复制到调试和发布文件夹(不是根目录内的)

      将 tessdata 文件夹(在 Tesseract 安装中)复制到上述位置。

      希望你一切顺利。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-07-10
        • 1970-01-01
        • 1970-01-01
        • 2013-01-29
        • 2015-05-05
        • 1970-01-01
        • 2013-06-13
        相关资源
        最近更新 更多