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, это сработало.

В моем случае я сделал следующие изменения, чтобы заставить его работать:)

  1. Загруженные https://tesseract-ocr.googlecode.com/files/tesseract-2.00.eng.tar.gz
  2. Вставил папку tessdata в мою папку Debug
  3. И сделал следующие изменения кода

ocr.Init("D:\MyApplication\MyApplication\Debug", "eng", false);

в

ocr.Init(null, "eng", false);

В моем случае я установил, чтобы файлы tessdata копировались всегда, и тогда он не зависал в строке инициализации.

Другие вопросы по тегам