2011-11-12 2 views
0

ImageJプラグインでOCRを実行する必要があるため、Javaでtesseractを使用したいと考えています。したがって、私はJavaラッパー "tesjeract"を使用しています。しかし、私がnew Tesjeract("eng")をインスタンス化すると、ImageJは何の情報も与えずにクラッシュします。インスタンス化時にtesseract/tesjeractがクラッシュするアプリケーション

new Tesjeract("eng")をインスタンス化せずに同じプラグインを2回実行すると、UnsatisfiedLinkError: Native library C:\Windows\System32\tessdll.dll already loaded in another classloaderが2回目に表示されるため、ライブラリをロードすると機能しているようです。

私は問題を解決するために何ができるでしょうか?

関連性がある場合は、Windows 7 64ビットを使用していますが、32ビットJVMを使用するようにImageJを設定しています。これは、tesseractは32ビットdllとしてのみ使用できるためです。静的なブロックにDLLをロードしていて、両方ともC:\ Windows \ System32フォルダに配置されています。

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

編集:

もし誰かがC++の中に同様の問題を経験していたことが判明し、解決策はlanguangeファイルが欠落していたということでした。私はそれも私の場合の問題だと思います。

これがディレクトリ(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は、テス3.xの言語データです。 2.xにはtesseract-2.00.eng.tar.gzのようなものが必要です。

+0

私のtessdataフォルダは上記のとおりですが、それでもクラッシュします。 – Pedro

+0

まだUnsatisfiedLinkErrorの場合は、プログラムが探しているパスに.dllファイルがあることを確認してください。それでも問題が解決しない場合は、別のJavaラッパーで使いやすくなるかもしれないTess4Jを見てみてください。 http://tess4j.sf.net – nguyenq

+0

dllの場所は問題ありません。プラグインを実行してコードを実行せずにライブラリのみをロードすると、エラーは発生しません。 '新しいTesjeract(" eng ")'が問題を引き起こしています。しかし、正しい言語ファイルが利用できるようになったので、それ以外に何が問題になるかわかりません。 – Pedro

関連する問題