#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")
является причиной проблемы. Но теперь, когда доступны правильные языковые файлы, я не вижу, в чем еще может быть проблема.