我在我的电脑上安装了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中的输入设置TESSDATA_PREFIX告诉我没有这样的变量。但tesseract记得它(不知道如何)。那么我如何强制tesseract在具体文件夹中搜索traindata?感谢
答案 0 :(得分:3)
这似乎有帮助: 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 :(得分:1)
我遇到了同样的问题。 ..我所做的只是将tessdata文件夹复制到运行我的应用程序的目录。 。
注意:执行此操作后,请确保将tessdata属性“复制到输出目录”设置为“始终复制”。这解决了这个问题。 。
请参阅youtube中的此链接。 。为了更好的示范。 。希望它有帮助:)
答案 2 :(得分: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:\苔丝\包括\包括
这里“C:\ tess \ include \ include”是包含文件所在的“tesseract”和“leptonica”文件夹的父目录。
链接器>>其他库依赖项 C:\苔丝\ lib中\ lib中
链接器>>额外的依赖关系 liblept168.lib libtesseract302.lib (将这些添加到列表中)
C / C ++盐;>预处理器 _CRT_SECURE_NO_WARNINGS(将其添加到列表中)
复制两个tesseract dll(对应于库文件)以调试和释放文件夹(不是根目录中的文件夹)
将tessdata文件夹(在Tesseract安装中)复制到上述位置。
希望你会好起来的。