如何强制tesseract不要使用TESSDATA_PREFIX

How to force tesseract not to use TESSDATA_PREFIX

本文关键字:TESSDATA PREFIX 何强制 tesseract      更新时间:2023-10-16

我在电脑上安装了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安装中)复制到上面提到的位置。

希望你能很好地离开。