0

画像からテキストを抽出できるように、アプリケーションで Tesseract を使用しています。これは私のコードです。すべて問題ありません

public class TestDriver {
    public static void main(String []args){
        String imagePath = "apps/Tess4J/eurotext.bmp";
        File imageFile = new File(imagePath);
        Tesseract instance = Tesseract.getInstance();  // JNA Interface Mapping
        // Tesseract1 instance = new Tesseract1(); // JNA Direct Mapping

        try {
            String result = instance.doOCR(imageFile);
            System.out.println(result);
        } catch (TesseractException e) {
            System.err.println(e.getMessage());
        }
    }
}

しかし、私の .dll は 32 ビット jvm 用であり、代わりに 64 を使用していることに気付きました。これは私のエラーです。

64 ビットのままにしておく必要がある場合、この問題にどのように対処すればよいですか?

4

2 に答える 2

1

64 ビット JVM から 32 ビット ネイティブ ライブラリを使用することはできません (またはその逆)。考えられる解決策は 2 つあります。

  • 32 ビットの JVM を使用します (これは、64 ビットのオペレーティング システムを使用している場合でも機能します)。
  • 使用する必要があるネイティブ ライブラリの 64 ビット バージョンを使用する

注: Java コードを再コンパイルする必要はありません。Java バイトコードは、JVM およびオペレーティング システムの「ビット数」とは無関係です。

于 2013-09-11T08:49:43.643 に答える
0

あなたのエラーから、libtesseract302の論理リンクが利用できないという考えが得られました。このエラーのリンクは次のとおりです。

http://sourceforge.net/p/tess4j/discussion/1202294/thread/a3e57163

32 ビット JVM に切り替えます。

Tess4J APIを使用していますか??? または、「tesseract」コマンドを使用して実行しますか?

以下に示すように、コマンドラインからtesseractを実行したことを克服するために同じ問題がありました。

Runtime.getRuntime().exec("tesseract " + fileName + " " + textFileName);
于 2013-09-11T09:58:59.097 に答える