C# Tessnet2 System.AccessViolationException

C# Tessnet2 System.AccessViolationException,c#,access-violation,tessnet2,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", fals

嗨,我正在试着让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);
Bitmap image=新位图(@“C:\Users\Eric\Desktop\Text Pictures\Oil0.bmp”);
tessnet2.Tesseract ocr=新的tessnet2.Tesseract();
ocr.SetVariable(“tessedit_char_whitelist”,“0123456789”);
ocr.Init(@“C:\tessdata”,“eng”,false);
列表结果=ocr.DoOCR(图像,矩形,空);//这里发生错误
foreach(tessnet2.Word输入结果)
Console.WriteLine(“{0}:{1}”,word.Confidence,word.Text);
当我运行它时,在List result=ocr.DoOCR(image,Rectangle.Empty)处得到错误“System.AccessViolationException”


我使用的是.NET3.5,我真的不知道这里出了什么问题。有什么建议吗?

1.如果您使用的是tessnet2,请确保您下载了正确的语言文件。您应该使用Tesseract(2.00及以上版本)的英语数据,而不是Tesseract 3.01版本的英语数据。从下面的链接下载正确的数据。


2.如果安装了任何tesseract-ocr-setup.exe,则表示您的程序始终参考C:\program Files\tesseract ocr\tessdata位置下的tessdata文件,因为安装程序安装时间将创建一个值为**C:\program Files\tesseract ocr**的环境变量tessdata\u前缀。若要解决此问题,请卸载安装程序并删除环境变量或将您的tessdata文件保存在C:\Program files\Tesseract OCR\tessdata location下。

如果显示此错误,请清理解决方案并重建它,它将正常工作。代码没有问题。验证app.config只是一个警告。

删除
ocr.SetVariable
方法

另外,不要将路径指向数据文件夹本身

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

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);
Bitmap image=新位图(@“C:\Users\Eric\Desktop\Text Pictures\Oil0.bmp”);
tessnet2.Tesseract ocr=新的tessnet2.Tesseract();
ocr.Init(@“C:\dontpointtotssdatadirectly”,“eng”,true);
列表结果=ocr.DoOCR(图像,矩形,空);//这里发生错误
foreach(tessnet2.Word输入结果)
Console.WriteLine(“{0}:{1}”,word.Confidence,word.Text);

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