如何强制tesseract不要使用TESSDATA_PREFIX

时间:2013-02-19 07:12:53

标签: c++ ocr tesseract

我在我的电脑上安装了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?感谢

3 个答案:

答案 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中的此链接。 。为了更好的示范。 。希望它有帮助:)

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

答案 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安装中)复制到上述位置。

希望你会好起来的。