您好我想让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,我真的不知道这里有什么问题。有什么建议吗?
答案 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)后,错误消失了)