我想在Java中使用tesseract,因爲我需要爲我的ImageJ插件執行OCR。因此我使用Java包裝「tesjeract」。但是,當我實例化new Tesjeract("eng")
ImageJ崩潰而沒有提供任何信息。tesseract/tesjeract在實例化時崩潰應用程序
加載庫似乎工作,因爲當我沒有實例化new Tesjeract("eng")
並運行相同的插件兩次,第二次我收到UnsatisfiedLinkError: Native library C:\Windows\System32\tessdll.dll already loaded in another classloader
。
任何想法,我能做些什麼來解決這個問題?
如果它是相關的,我使用Windows 7 64位,但已配置ImageJ使用32位JVM,因爲tesseract僅適用於32位dll。我正在加載靜態塊中的dll,並將它們都放在C:\ Windows \ System32文件夾中。
static
{
System.loadLibrary("tessdll");
System.loadLibrary("tesjeract");
}
編輯:
如果發現有人正在經歷着C++類似的問題,而解決方案是,文件的語人失蹤。我想這也是我的情況。
這是目錄應該怎麼樣子(發現here):
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
。因此,我將包括tessdata文件夾在內的dll放在同一目錄中,並從System32中刪除了dll。但是,應用程序崩潰。
現在我的tessdata文件夾看起來完全如上所述,但它仍然崩潰。 – Pedro
如果仍然UnsatisfiedLinkError,請確保.dll文件位於程序正在查找的路徑中。如果你仍然有問題,你可能想看看Tess4J,這是另一個Java包裝,可能更容易使用。 http://tess4j.sf.net – nguyenq
該DLL位置很好。當我執行我的插件並只加載庫而不執行任何代碼時,我不會收到任何錯誤。 '新的Tesjeract(「eng」)引起了這個問題。但是現在有了正確的語言文件,我不知道還有什麼問題可以解決。 – Pedro