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を削除しました。それでも、アプリケーションがクラッシュします。
私のtessdataフォルダは上記のとおりですが、それでもクラッシュします。 – Pedro
まだUnsatisfiedLinkErrorの場合は、プログラムが探しているパスに.dllファイルがあることを確認してください。それでも問題が解決しない場合は、別のJavaラッパーで使いやすくなるかもしれないTess4Jを見てみてください。 http://tess4j.sf.net – nguyenq
dllの場所は問題ありません。プラグインを実行してコードを実行せずにライブラリのみをロードすると、エラーは発生しません。 '新しいTesjeract(" eng ")'が問題を引き起こしています。しかし、正しい言語ファイルが利用できるようになったので、それ以外に何が問題になるかわかりません。 – Pedro