tessnet2无法加载
我正在使用Windows XP上的Tesseract 2.04 Source的tessnet2包装器,将其配置为与x86一起使用。
TessarctTest项目的主要function包括:
Bitmap bmp = new Bitmap(@"C:\temp\New Folder\dotnet\eurotext.tif"); tessnet2.Tesseract ocr = new tessnet2.Tesseract(); // ocr.SetVariable("tessedit_char_whitelist", "0123456789"); ocr.Init(@"C:\temp\tessdata", "eng", false); // List r1 = ocr.DoOCR(bmp, new Rectangle(792, 247, 130, 54)); List r1 = ocr.DoOCR(bmp, Rectangle.Empty); int lc = tessnet2.Tesseract.LineCount(r1);
当我尝试运行程序时,它会在ocr.Init中的以下行崩溃
int result = m_myTessBaseAPIInstance->InitWithLanguage((char *)_tessdata.ToPointer(), NULL, (char *)_lang.ToPointer(), NULL, numericMode, 0, NULL);
有谁有想法?
欣赏!
对于仍然遇到问题的人,请确保您使用tessnet2下载正确的语言文件 。
您需要Tesseract(2.00及以上)的英语语言数据,而不是Tesseract 3.01版本的英语语言数据 。 我希望这可以节省你几个小时! 🙂
对于那些试图在C#中使用Tessnet2程序集用于Tesseract OCR引擎并且遇到Tesseract.Init()
方法导致应用程序崩溃的问题的人 – 我发现了一个可能的原因。
首先,我假设你有如下文件:
bin\Debug\MyDotNetApp.exe bin\Debug\tessdata\eng.DangAmbigs bin\Debug\tessdata\eng.freq-dawg bin\Debug\tessdata\eng.inttemp bin\Debug\tessdata\eng.pffmtable bin\Debug\tessdata\eng.unicharset bin\Debug\tessdata\eng.user-words bin\Debug\tessdata\eeng.word-dawg
并正在使用它进行初始化:
using (var ocr = new tessnet2.Tesseract()) { ocr.Init(null, "eng", false); ... }
在理论上应该工作。 对我来说它确实有效 – 但它并没有突然间……即使我没有改变任何会影响它的东西。
对我来说,解决方法是搜索注册表(使用regedit)并删除对tesseract的所有引用。 当我安装Tesseract 3.00安装程序(tesseract-ocr-setup-3.00.exe)时,我认为可能已经创建了一些可疑条目。
当我删除这些条目并重新启动时(我在删除reg条目之前尝试重新启动,FYI),一切都恢复了。
注册表项是否导致问题? 谁知道。 但它确实解决了我的问题。
单击项目+属性,调试选项卡,向下滚动,勾选“启用非托管代码调试”复选框。 现在您可以设置断点并对其进行调试。
如果您的IDE不支持混合模式调试,则可以使用本文中概述的技术附加调试器。
确保您的tessdata文件夹(C:\ temp \ tessdata)包含英语语言数据文件。 文件是:eng.DangAmbigs,eng.freq-dawg,eng.inttemp,eng.normproto,eng.pffmtable,eng.unicharset,eng.user-words,eng.word-dawg。 从tesseract下载文件下载文件。 要下载的文件是tesseract-2.00.eng.tar.gz。
就我而言,dkr88的答案完成了这项工作,非常感谢。 我认为当tesseract作为独立安装之前有一些依赖性损坏。 此外,OCR质量似乎比MODI更好,尽管后者的倾斜校正在更极端的环境下工作(垂直文本)。
我现在对tessnet2非常满意。 只有一个缺点:我需要更改我的app.config(如互联网上所述)并添加以下内容:
我的问题是我没有运行具有管理员权限的应用程序。
当我右键单击运行并选择本地管理员时,它工作。
在我的情况下,我做了以下更改,以使其工作:)
- 已下载https://tesseract-ocr.googlecode.com/files/tesseract-2.00.eng.tar.gz
- 将tessdata文件夹粘贴到我的Debug文件夹中
- 并做了以下代码更改
ocr.Init("D:\MyApplication\MyApplication\Debug", "eng", false);
至
ocr.Init(null, "eng", false);