5

我希望使用 EMGU.CV 的 Tesseract 对象对一些图片进行 OCR。首先,我已经下载、编译并运行了他们的 OCR 和 LicensePlateRecognition 示例。

但是,Tesseract 不断抛出以下异常:

无法使用路径“teseract”和语言“eng”创建 ocr 模型。

我追踪了源代码:

_ocr = new Tesseract(@"tessdata", "eng", Tesseract.OcrEngineMode.OEM_TESSERACT_CUBE_COMBINED);

我尝试用最明显的方法修复它:我给它完整的路径,我将文件复制到'C:\',并确保我的程序的当前目录与其中的 tessdata 相同。

这些都不起作用,所以我使用了 procmon 并发现它正在这里寻找文件:

C:\Program Files (x86)\Tesseract-OCR\tessdata

似乎无论我做什么,我都无法从这个位置改变它。(当然,将文件移到那里是可行的)。这个位置在 EMGU.cv 的代码中不存在任何地方,所以我猜它是作为默认值编译到 Tesseract 的代码中的(?)。

那么,我如何改变 Tesseract 不使用这个位置呢?显而易见的方法是 Tesseract 构造函数应该对我传入的路径做一些事情,那么我错过了什么?

4

5 回答 5

7

我尝试将文件复制到我的应用程序运行的目录,我尝试了绝对路径和相对路径,我尝试使用 hte 硬编码 C:\Program Files (x86)\Tesseract-OCR\tessdata。他们都没有为我工作。

我通过执行以下操作使其工作:

  1. 将 tessdata 文件夹复制到我的应用程序正在运行的位置
  2. 然后指定一个空的 dataPath 参数(显然 tessdata/ 默认附加到 dataPath )。此代码有效:

_ocr = new Tesseract("", "eng", Tesseract.OcrEngineMode.OEM_TESSERACT_CUBE_COMBINED);

于 2013-02-03T21:46:01.443 回答
1

第一个参数是文件位置。提示应该是用于使转义字符“\”无效的“@”符号。这通常用于路径以避免 \。

于 2012-10-27T23:56:40.560 回答
1

检查是否TESSDATA_PREFIX设置了环境变量(删除它并重新启动应用程序)。我有这个完全相同的问题......

于 2013-07-10T20:01:08.953 回答
1

我有完全相同的问题,编译VB2010 x64,修复是删除TESSDATA_PREFIX系统环境变量。

于 2015-06-22T00:12:21.543 回答
1

将 Emgu 的 BIN 中的文件夹“tessdata”复制到您的 BIN 项目中,在我的情况下它可以工作。

于 2016-01-27T00:34:51.980 回答