Я бы хотел использовать tesseract в Java, так как мне нужно выполнить OCR для моих плагинов ImageJ. Поэтому я использую оболочку Java "tesjeract". Однако, когда я создаю экземпляр new Tesjeract("eng")
ImageJ падает, не предоставляя никакой информации.
Загрузка библиотек, кажется, работает, потому что, когда я не создаю экземпляр new Tesjeract("eng")
и не запускаю один и тот же плагин дважды, во второй раз я получаю UnsatisfiedLinkError: Native library C:\Windows\System32\tessdll.dll already loaded in another classloader
.
Есть идеи, что я могу сделать, чтобы решить проблему?
В случае, если это уместно, я использую 64-битную Windows 7, но настроил ImageJ на использование 32-битной JVM, поскольку tesseract доступен только как 32-битная dll. Я загружаю dll в статический блок, и они оба помещены в папку C: \ Windows \ System32.
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)\Java\jre7\bin\javaw.exe
. Поэтому я поместил мои dll, включая папку tessdata, в тот же каталог и удалил dll из System32. Тем не менее приложение вылетает.