Tessnet2 System.AccessViolationException

时间:2014-01-11 21:37:35

标签: c# access-violation tessnet2

您好我想让Tessnet2工作。我的代码是

Bitmap image = new Bitmap(@"C:\Users\Eric\Desktop\Text Pictures\Oil0.bmp");

tessnet2.Tesseract ocr = new tessnet2.Tesseract();

ocr.SetVariable("tessedit_char_whitelist", "0123456789"); 

ocr.Init(@"C:\tessdata", "eng", false); 

List<tessnet2.Word> result = ocr.DoOCR(image, Rectangle.Empty); // Error occurs here

foreach (tessnet2.Word word in result)
     Console.WriteLine("{0} : {1}", word.Confidence, word.Text);

当我运行它时,我在List result = ocr.DoOCR(image,Rectangle.Empty)中得到错误“System.AccessViolationException”;

我正在使用.net 3.5,我真的不知道这里有什么问题。有什么建议吗?

4 个答案:

答案 0 :(得分:0)

1.确定您是否使用tessnet2下载了正确的语言文件。您应该使用Tesseract(2.00及以上)的英语语言数据而不是Tesseract 3.01版本的英语语言数据。下载正确的数据从下面的链接。 https://code.google.com/p/tesseract-ocr/downloads/list

2.如果您安装了任何tesseract-ocr-setup.exe,则表示您的程序始终在C:\ Program Files \ Tesseract-OCR \ tessdata位置引用tessdata文件,因为设置安装时间会创建环境变量 TESSDATA_PREFIX 值为** C:\ Program Files \ Tesseract-OCR **。要解决此问题,请卸载设置并删除环境变量,或将您的tessdata文件保存在C:\ Program Files \ Tesseract-OCR \ tessdata位置。< / p>

答案 1 :(得分:0)

它显示此错误,您清理解决方案并重建它,它将工作。代码没有任何问题。验证您的app.config只是一个小心。

答案 2 :(得分:0)

删除 ocr.SetVariable方法

另外,请勿指向tessdata文件夹本身的路径。

如果您只想使用数字字符,则可以使用以下代码:

Bitmap image = new Bitmap(@"C:\Users\Eric\Desktop\Text Pictures\Oil0.bmp");

tessnet2.Tesseract ocr = new tessnet2.Tesseract();



ocr.Init(@"C:\DontPointToTessDataDirectly", "eng", true); 

List<tessnet2.Word> result = ocr.DoOCR(image, Rectangle.Empty); // Error occurs here

foreach (tessnet2.Word word in result)
     Console.WriteLine("{0} : {1}", word.Confidence, word.Text);

答案 3 :(得分:0)

尝试以较小的分辨率和文件大小的质量将Oil0.bmp保存为.jpg。我以前有这个问题。问题出在图片文件中。将文件大小调整为250x100px(最大14Kb)后,错误消失了)