2011-11-12 40 views
0

我想在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。但是,應用程序崩潰。

回答

1

* .traineddata是tess 3.x的語言數據。你需要用於2.x的,如tesseract-2.00.eng.tar.gz

+0

現在我的tessdata文件夾看起來完全如上所述,但它仍然崩潰。 – Pedro

+0

如果仍然UnsatisfiedLinkError,請確保.dll文件位於程序正在查找的路徑中。如果你仍然有問題,你可能想看看Tess4J,這是另一個Java包裝,可能更容易使用。 http://tess4j.sf.net – nguyenq

+0

該DLL位置很好。當我執行我的插件並只加載庫而不執行任何代碼時,我不會收到任何錯誤。 '新的Tesjeract(「eng」)引起了這個問題。但是現在有了正確的語言文件,我不知道還有什麼問題可以解決。 – Pedro

相關問題