Tessnet2 не загружается - программирование
Подтвердить что ты не робот

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);

У кого-нибудь есть идея?

Цените!

4b9b3361

Ответ 1

Для всех, у кого по-прежнему возникает проблема, убедитесь, что вы используете tessnet2 для загрузки правильных языковых файлов.

Вы хотите данные на английском языке для Tesseract (2.00 и выше), а не данные на английском языке для версии Tesseract 3.01. Надеюсь, это сэкономит вам несколько часов!:)

Ответ 2

Для тех, кто пытается использовать сборку Tessnet2 для механизма OCR Tesseract на С# и кто сталкивается с проблемой метода 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, FYI), все снова работало.

Были ли записи реестра причиной проблемы? Кто знает. Но это устранило мою проблему.

Ответ 3

Project + Properties, вкладка Debug, прокрутите вниз, отметьте галочкой флажок "Включить неуправляемый отладку кода". Теперь вы можете установить точку останова и отладить ее.


Если ваша среда разработки не поддерживает отладку смешанного режима, вы можете прикрепить отладчик, используя технику, описанную в этом сообщении.

Ответ 4

Убедитесь, что ваша папка 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.

Ответ 5

В моем случае ответ от dkr88 сделал работу, спасибо большое. Я предполагаю, что некоторая зависимость коррумпирована, когда tesseract был установлен как автономный раньше. Кроме того, качество OCR кажется лучше, чем с MODI, хотя tiltcorrection и последний работает в более экстремальных условиях (вертикальный текст).

Я очень доволен tessnet2 сейчас. Есть только один недостаток: мне нужно было изменить свой app.config(как описано в Интернете) и добавил следующее:

<startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0"/>
</startup>

Ответ 6

Моя проблема в том, что я не запускал приложение с разрешениями администратора.

Когда я щелкнул правой кнопкой мыши, запустите и выберите Local Administrator, и он сработал.

Ответ 7

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

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

к

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

Ответ 8

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