0

Tesseract を使用して、Java アプリケーションで OCR 機能を使用しようとしています。これを実現するために、ここにある Java/Tesseract ブリッジを使用しています

pom.xml依存:

<dependency>
    <groupId>org.bytedeco.javacpp-presets</groupId>
    <artifactId>tesseract</artifactId>
    <version>3.04-1.1</version>
</dependency>

ライブラリを使用して画像をOCR化できます。しかし、Java プログラムが終了すると、JVM がクラッシュします。最小限の例として、最初の Tesseract 初期化行で十分です。

import org.bytedeco.javacpp.tesseract.TessBaseAPI;

public class MinimalExample {

    public static void main(String[] args) {
        System.out.println("Hi!");
        TessBaseAPI tessAPI = new TessBaseAPI();
    }
}

これを実行するmainと、次のようになります。

Hi!

This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.

次のエラー メッセージ: Java(TM) Platform SE binary funktioniert nicht mehr – Windows kann online nach einer Lösung für das Problem suchen.( Java(TM) Platform SE binary does not work anymore – Windows can look for a solution to this problem online)。

Problemsignatur:
  Problemereignisname:  APPCRASH
  Anwendungsname:   java.exe
  Anwendungsversion:    8.0.650.17
  Anwendungszeitstempel:    5614685f
  Fehlermodulname:  libgcc_s_dw2-1.dll
  Fehlermodulversion:   0.0.0.0
  Fehlermodulzeitstempel:   3f263ec2
  Ausnahmecode: 40000015
  Ausnahmeoffset:   000149a1
  Betriebsystemversion: 6.1.7601.2.1.0.256.49
  Gebietsschema-ID: 1031
  Zusatzinformation 1:  7309
  Zusatzinformation 2:  73092f5dbc78923c702ae5601110d2ea
  Zusatzinformation 3:  9fa1
  Zusatzinformation 4:  9fa11625863fb37077a4ab55be352b96

Java がクラッシュしたことはありませんが、ネイティブを使用したこともありません。;-) この奇妙な動作の解決策をどこで探せばよいか、ヒントを持っている人はいますか?

編集 2015-12-07 : ListDLLsを使用して、問題の DLL が にあることがわかったC:\Users\...\AppData\Local\Temp\javacpp3256864312633\libgcc_s_dw2-1.dllので、「からの間違った DLL %PATH%」は答えではありません。

4

1 に答える 1

0

libwinpthread-1.dll に問題がある可能性があります。

jar 内の現在の libwinpthread-1.dll を最新の mingw32 の dll に置き換えると、正常に動作します。

  1. https://msys2.github.io/からダウンロードした msys2-x86_64-20150916.exe をインストールします。
  2. pacman を使用して、base-devel、mingw-w64-i686-toolchain をインストールします。
  3. leptonica-1.72-1.1-windows-x86.jar を抽出し、すべての dll をアプリケーションの同じフォルダーに配置します。
  4. クラスパスから leptonica-1.72-1.1-windows-x86.jar を削除します。
  5. libwinpthread-1.dll をフォルダーから削除します (または、libwinpthread-1.dll をインストール済みの C:\msys64\mingw32\bin\libwinpthread-1.dll に置き換えます)。パス "C:\msys64\mingw32\bin" が最初にロードされるようですので、mingw32 をインストールできれば削除 (または置換) する必要はありません。
于 2016-02-15T12:02:15.577 に答える