tesseract / tesjeract завершает работу приложения при создании экземпляра

#java #dll #crash #ocr #tesseract

#java #dll #сбой #распознавание текста #тессеракт

Вопрос:

Я хотел бы использовать tesseract на Java, поскольку мне нужно выполнить распознавание текста для моих плагинов ImageJ. Поэтому я использую Java-оболочку «tesjeract». Однако, когда я создаю экземпляр new Tesjeract("eng") , ImageJ завершает работу без предоставления какой-либо информации.

Загрузка библиотек, похоже, работает, потому что, когда я не создаю экземпляр new Tesjeract("eng") и не запускаю один и тот же плагин дважды, во второй раз я получаю UnsatisfiedLinkError: Native library C:WindowsSystem32tessdll.dll already loaded in another classloader .

Есть идеи, что я могу сделать, чтобы решить проблему?

В случае, если это актуально, я использую 64-разрядную версию Windows 7, но настроил ImageJ на использование 32-разрядной JVM, поскольку tesseract доступен только как 32-разрядная dll. Я загружаю библиотеки DLL в статический блок, и оба они помещаются в C:WindowsSystem32 папка.

 static
{
    System.loadLibrary("tessdll");
    System.loadLibrary("tesjeract");
}
  

Редактировать:

Если бы выяснилось, что кто-то сталкивался с аналогичной проблемой в c , и решение заключалось в том, что языковые файлы отсутствовали. Я полагаю, что это проблема и в моем случае.

Вот как должен выглядеть каталог ( находится здесь ):

 project.exe
tessdll.dll
tessdata ----- eng.DangAmbigs
            |- eng.freq-dawg
            |- eng.inttemp
            |- eng.normproto
            |- eng.pffmtable
            |- eng.unicharset
            |- eng.user-words
             - eng.word-dawg 
  

ImageJ настроен для использования C:Program Files(x86)Javajre7binjavaw.exe . Итак, я поместил свои библиотеки DLL, включая папку tessdata, в тот же каталог и удалил библиотеки DLL из System32. Тем не менее, приложение завершает работу.

Ответ №1:

*.traineddata — это языковые данные для tess 3.x. Вам понадобятся данные для 2.x, такие какtesseract-2.00.eng.tar.gz .

Комментарии:

1. теперь моя папка tessdata выглядит точно так, как описано выше, но она по-прежнему выходит из строя.

2. Если по-прежнему не выполняется ошибка ссылки, убедитесь, что . dll-файлы находятся по пути, который ищет программа. Если у вас все еще есть проблема, вы можете захотеть взглянуть на Tess4J, который является другой оболочкой Java и может быть проще в использовании. tess4j.sf.net

3. расположение dll в порядке. Когда я запускаю свой плагин и загружаю только библиотеки без выполнения какого-либо кода, я не получаю никаких ошибок. new Tesjeract("eng") является причиной проблемы. Но теперь, когда доступны правильные языковые файлы, я не вижу, в чем еще может быть проблема.