如何强制tesseract不要使用TESSDATA_PREFIX
How to force tesseract not to use TESSDATA_PREFIX
我在电脑上安装了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-OCRtessdata/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呢?感谢
这似乎很有帮助:Tesseract-更改语言文件位置
从该线程中的答案来看,似乎是tesseract查找环境变量的情况,但如果未设置,则假定为固定位置。
修复此问题的最简单方法是运行"cmd",然后执行:
c:Usersalex> set TESSDATA_PREFIX="C:/Projects/project/Release/tessdata"
c:Usersalex> cd MyOCRProgDir
c:UsersalexMyOCRProgDir> MyProg
希望能有所帮助!
我也遇到过同样的问题。。我所做的只是将tessdata文件夹复制到我的应用程序正在运行的目录中。
注意:完成此操作后,请确保将tessdata属性"Copy to Output Directory"设置为"Copy Always"。这解决了问题。
请参阅youtube中的此链接。为了更好地展示。希望有帮助:)
http://www.youtube.com/watch?v=RqvvXJXuRYY
我在训练数据方面也遇到了同样的问题。我没有强迫不使用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"是include文件所在的"tesseract"answers"leptonica"文件夹的父目录。
链接器>>其他库依赖项C: \tess\lib\lib
链接器>>其他依赖项liblept168.liblibtesseract302.lib(将这些添加到列表中)
C/C++>>预处理器_CRT_SECURE_NO_WARNINGS(将其添加到列表中)
将两个tesseract dll(对应于库文件)复制到调试和发布文件夹(而不是根目录中的文件夹)
将tessdata文件夹(在Tesseract安装中)复制到上面提到的位置。
希望你能很好地离开。