我希望使用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构造函数应该使用我传递给它的路径做一些事情,那么我错过了什么?
答案 0 :(得分:7)
我已经尝试将文件复制到运行我的应用程序的目录,我尝试过绝对路径和相对路径,并尝试使用hte硬编码C:\ Program Files(x86)\ Tesseract-OCR \ tessdata。他们都没有为我工作。
我通过以下方式开展工作:
_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中,在我看来它是有效的。