1

嗨,我正在尝试让 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

4 回答 4

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 文件,因为 setup 安装时间它将创建一个环境变量TESSDATA_PREFIX,其值为 **C: \Program Files\Tesseract-OCR** 。要解决此问题,请卸载安装程序并删除环境变量或将您的 tessdata 文件保存在 C:\Program Files\Tesseract-OCR\tessdata 位置。

于 2015-01-29T06:31:21.417 回答
0

它显示了这个错误,你清理你的解决方案并重建它,它就会工作。代码没有问题。验证您的 app.config 只是一个警告。

于 2015-07-03T05:59:52.170 回答
0

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

于 2019-07-08T16:28:01.090 回答
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);
于 2017-01-18T20:09:23.123 回答