如何强制 Tesseract 不使用 TESSDATA_PREFIX

5

我在电脑上安装了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.

在命令行中键入设置TESSDATA_PREFIX,会提示没有这样的变量。但是tesseract记得它(不知道如何)。那么我该如何强制tesseract在特定文件夹中搜索训练数据?谢谢。
3个回答

3
这似乎很有帮助:Tesseract - 更改语言文件位置 从该线程的答案中可以看出,tesseract会查找环境变量,但是如果没有设置,则假定为固定位置。
最简单的解决方法是运行“cmd”,然后执行:
c:\Users\alex> set TESSDATA_PREFIX="C:/Projects/project/Release/tessdata"
c:\Users\alex> cd MyOCRProgDir
c:\Users\alex\MyOCRProgDir> MyProg

希望这能帮到您!

4
我不想使用这个,因为它在另一台电脑上无法运行。 - Alex Hoppus
1.) 我将没有机会在另一台电脑上手动设置环境变量 2.) 这不太方便 3.) 即使重置了这个变量,我也不知道为什么它会搜索C:\Progamfiles (x86)\tesseract-ocr... - Alex Hoppus
我进行了完整的注册表扫描并删除了所有内容,但当我遇到TESSDATA_PREFIX时,它仍在旧目录中搜索。 - Alex Hoppus
首先,您将把这些命令放入“批处理文件”(一个带有.bat扩展名的文件)中,当您将程序复制到其他计算机时,您还将复制此.bat文件到其桌面上,使其成为他们双击启动OCR程序的“快捷方式”。其次,既然这样不起作用,您能否有机会从源代码构建Tesseract?我知道听起来很麻烦,但如果您能够做到这一点,您可能可以使用我指向的线程上的建议。 - Rahul Banerjee
你可以直接在代码中使用putenv,而不是批处理文件。无论如何,重新启动可以解决由tesseract exe之前定义的环境变量引起的棘手问题。谢谢。 - Alex Hoppus
只需要重新启动一下?哈!很高兴你能解决它。 - Rahul Banerjee

1
我曾经遇到同样的问题...我所做的就是将tessdata文件夹复制到我的应用程序运行的目录中...
注意:在这样做之后,请确保将tessdata属性“复制到输出目录”设置为“始终复制”。这解决了问题...
请参考YouTube上的此链接,以获得更好的演示...希望对你有所帮助 :)

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


0

我曾经遇到过训练数据的同样问题。但是我没有强制禁止使用TESSDATA_PREFIX,而是找到了一个解决方法。这个方法对我很有效。

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

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

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

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

这里的“C:\tess\lib\lib”是lib和dll文件所在的位置:liblept168.dll、liblept168.lib等。

启动一个新的win32控制台应用程序,并设置以下设置。 C/C++ >> General 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安装文件夹内)复制到上述位置。

希望这样做,你就可以开始了。


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