tessnet2 не загружается
Я использую оболочку tessnet2 для источника Tesseract 2.04 на Windows XP, настроил его для работы с x86.
Основная функция проекта TessarctTest содержит:
Bitmap bmp = new Bitmap(@"C:\temp\New Folder\dotnet\eurotext.tif");
tessnet2.Tesseract ocr = new tessnet2.Tesseract();
// ocr.SetVariable("tessedit_char_whitelist", "0123456789");
ocr.Init(@"C:\temp\tessdata", "eng", false);
// List<tessnet2.Word> r1 = ocr.DoOCR(bmp, new Rectangle(792, 247, 130, 54));
List<tessnet2.Word> r1 = ocr.DoOCR(bmp, Rectangle.Empty);
int lc = tessnet2.Tesseract.LineCount(r1);
когда я пытаюсь запустить программу, она вылетает в следующей строке внутри ocr.Init
int result = m_myTessBaseAPIInstance->InitWithLanguage((char *)_tessdata.ToPointer(), NULL, (char *)_lang.ToPointer(), NULL, numericMode, 0, NULL);
У кого-нибудь есть идея?
Цените!
8 ответов
Если у вас все еще есть проблемы, убедитесь, что вы используете tessnet2 и загрузили правильные языковые файлы.
Вам нужны данные на английском языке для Tesseract ( версии 2.00 и выше), а не данные на английском языке для версии Tesseract 3.01. Надеюсь, это сэкономит вам несколько часов!:)
Для тех, кто пытается использовать сборку Tessnet2 для механизма распознавания текста Tesseract в C# и кто сталкивается с проблемой Tesseract.Init()
метод, вызывающий сбой вашего приложения - я нашел одну из возможных причин.
Во-первых, я предполагаю, что у вас есть файлы следующим образом:
bin\Debug\MyDotNetApp.exe
bin\Debug\tessdata\eng.DangAmbigs
bin\Debug\tessdata\eng.freq-dawg
bin\Debug\tessdata\eng.inttemp
bin\Debug\tessdata\eng.pffmtable
bin\Debug\tessdata\eng.unicharset
bin\Debug\tessdata\eng.user-words
bin\Debug\tessdata\eeng.word-dawg
И используем это для инициализации:
using (var ocr = new tessnet2.Tesseract())
{
ocr.Init(null, "eng", false);
...
}
Теоретически это должно работать. Для меня это сработало - но потом это не произошло внезапно... хотя я не изменил ничего, что могло бы повлиять на это.
Для меня исправление было искать в реестре (используя regedit) и удалять все ссылки на tesseract. Были некоторые подозрительные записи, которые, я думаю, могли быть созданы при установке установщика Tesseract 3.00 (tesseract-ocr-setup-3.00.exe).
Когда я удалил эти записи и перезагрузился (я пытался перезагрузиться перед удалением записей reg, к вашему сведению), все снова заработало.
Были ли записи реестра причиной проблемы? Кто знает. Но это решило мою проблему.
Project + Properties, вкладка "Отладка", прокрутите вниз, установите флажок "Включить отладку неуправляемого кода". Теперь вы можете установить точку останова и отладить ее.
Если ваша IDE не поддерживает отладку в смешанном режиме, вы можете подключить отладчик, используя методику, описанную в этом посте.
В моем случае ответ от dkr88 сделал свою работу, большое спасибо. Я предполагаю, что некоторая зависимость повреждена, когда tesseract был установлен как автономный ранее. Кроме того, качество распознавания текста лучше, чем в MODI, хотя коррекция наклона или последняя работает в более экстремальных условиях (вертикальный текст).
Я очень доволен Tessnet2 сейчас. Есть только один недостаток: мне нужно было изменить мой app.config (как описано в интернете) и добавил следующее:
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0"/>
</startup>
Убедитесь, что ваша папка tessdata (C:\temp\tessdata) содержит файлы данных на английском языке. Файлы: eng.DangAmbigs, eng.freq-dawg, eng.inttemp, eng.normproto, eng.pffmtable, eng.unicharset, eng.user-words, eng.word-dawg. загрузите файлы с загрузок tesseract. Файл для загрузки - tesseract-2.00.eng.tar.gz.
Моя проблема в том, что я не запускал приложение с правами администратора.
Когда я щелкнул правой кнопкой мыши на Run as и выбрал Local Administrator, это сработало.
В моем случае я сделал следующие изменения, чтобы заставить его работать:)
- Загруженные https://tesseract-ocr.googlecode.com/files/tesseract-2.00.eng.tar.gz
- Вставил папку tessdata в мою папку Debug
- И сделал следующие изменения кода
ocr.Init("D:\MyApplication\MyApplication\Debug", "eng", false);
в
ocr.Init(null, "eng", false);
В моем случае я установил, чтобы файлы tessdata копировались всегда, и тогда он не зависал в строке инициализации.