Emgu.cv的Tesseract对象使用不正确的OCR文件路径

时间:2012-02-29 18:57:41

标签: c# emgucv tesseract tessnet2

我希望使用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构造函数应该使用我传递给它的路径做一些事情,那么我错过了什么?

5 个答案:

答案 0 :(得分:7)

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

我通过以下方式开展工作:

  1. 将tessdata文件夹复制到我的应用运行的位置
  2. 然后指定一个空的dataPath参数(显然tessdata /默认附加到dataPath)。这段代码有效:
  3. _ocr = new Tesseract(""," eng",Tesseract.OcrEngineMode.OEM_TESSERACT_CUBE_COMBINED);

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

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

答案 4 :(得分:1)

复制文件夹' tessdata'这是在你的BIN项目的Emgu的BIN中,在我看来它是有效的。