Tessnet2 System.AccessViolationException

Привет, я пытаюсь заставить 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);

Когда я запускаю его, я получаю ошибку «System.AccessViolationException» в List result = ocr.DoOCR (image, Rectangle.Empty);

Я использую .net 3.5, и я действительно понятия не имею, что здесь не так. Какие-либо предложения?


person Eqric    schedule 11.01.2014    source источник


Ответы (4)


1. убедитесь, что если вы используете tessnet2, что вы загружаете правильные языковые файлы. Вы должны использовать данные на английском языке для Tesseract (2.00 и выше), а не данные на английском языке для версии Tesseract 3.01. Загрузите правильные данные по ссылке ниже. https://code.google.com/p/tesseract-ocr/downloads/list

2.Если вы установили какой-либо tesseract-ocr-setup.exe, это означает, что ваша программа всегда ссылается на файл tessdata в папке C: \ Program Files \ Tesseract-OCR \ tessdata, потому что во время установки время установки создаст переменную среды TESSDATA_PREFIX со значением ** C: \ Program Files \ Tesseract-OCR **. Чтобы решить эту проблему, удалите программу установки и удалите переменную среды или сохраните файлы tessdata в папке C: \ Program Files \ Tesseract-OCR \ tessdata.

person Sathyaraj Palanisamy    schedule 29.01.2015

Он показывает эту ошибку, вы очищаете свое решение и перестраиваете его, и оно будет работать. С кодом все в порядке. Проверяйте свой app.config в качестве предостережения.

person Sudhir pradhan    schedule 03.07.2015

Удалите метод 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);
person DanielFrins    schedule 18.01.2017

Попробуйте сохранить файл Oil0.bmp в формате .jpg с небольшим разрешением и размером файла высокого качества. У меня была эта проблема раньше. Проблема была в файле изображения. После изменения размера файла с 250x100px до 14Kb ошибка исчезла)

person Константин Вольный    schedule 08.07.2019