使用javacpp-preset / tesseract会在退出时崩溃java

时间:2015-12-06 20:43:54

标签: java tesseract javacpp libgcc

我正在尝试使用Tesseract在Java应用程序中使用OCR功能。为实现这一目标,我使用了here找到的Java / Tesseract网桥。

pom.xml依赖:

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

它有效,我可以使用该库来OCRize图像。但是当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,所以“来自{{1的错误的DLL” “不是答案。

1 个答案:

答案 0 :(得分:0)

libwinpthread-1.dll可能存在问题。

用最新的mingw32的dll替换jar中的当前libwinpthread-1.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. 从classpath中删除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,则无需删除(或替换)它。