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,因此“来自错误%PATH%的 DLL”不是答案。

4

1 回答 1

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. 从类路径中删除 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 回答