tesseract/tesjeractがインスタンス化時にアプリケーションをクラッシュさせる

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

新しいTesjeract( "eng")のインスタンスを作成せずに同じプラグインを2回実行すると、2回目に UnsatisfiedLinkError:ネイティブライブラリCを受け取るため、ライブラリを読み込むことができているようです:\ Windows \ System32 \ tessdll.dllはすでに別のクラスローダーにロードされています

任意のアイデア、私は問題を解決するために何ができますか?

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

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

編集:

誰かがC ++で同様の問題を経験していることがわかった場合、解決方法はlangangeファイルが欠落していることでした。私はそれも私の場合の問題だと思います。

This is how the directory should look like ( found 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を削除しました。それでも、アプリケーションがクラッシュします。

0

1 答え

* .traineddataはtess 3.xの言語データです。 tesseract-2.00.eng.tarのような2.xのものが必要です.gz

1
追加された
今度は私のtessdataフォルダは上記の通りですが、それでもクラッシュします。
追加された 著者 Pedro,
DLLの場所は問題ありません。プラグインを実行してコードを実行せずにライブラリのみをロードすると、エラーは発生しません。 new Tesjeract( "eng")が問題を引き起こしています。しかし、正しい言語ファイルが利用できるようになったので、それ以外に何が問題になるかわかりません。
追加された 著者 Pedro,
それでもUnsatisfiedLinkErrorの場合は、.dllファイルがプログラムが探しているパスにあることを確認してください。それでも問題が解決しない場合は、別のJavaラッパーで使いやすくなるかもしれないTess4Jを見てみてください。 rel="nofollow noreferrer"> tess4j.sf.net
追加された 著者 nguyenq,