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.

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

4

3 回答 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

希望有帮助!

于 2013-02-19T07:25:51.447 回答
1

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

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

请参阅 youtube 中的此链接。. .为了更好的演示。. 。希望能帮助到你 :)

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

于 2014-02-22T09:26:45.500 回答
0

我对训练数据也有同样的问题。我没有强制不使用 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 安装中)复制到上述位置。

希望你一切顺利。

于 2014-02-24T12:10:21.507 回答