在 Java 中使用 TESSERACT API 时出现 java.lang.UnsatisfiedLinkError 异常

标签 java api ocr tesseract jna

我正在尝试为 Tesseract OCR API 使用 Java JNA 包装器,但我一直收到 java.lang.UnsatisfiedLinkError 异常

我从http://sourceforge.net/projects/tess4j/下载了最新版本

我确定我使用的是 32 位 JVM。以下是异常跟踪。

Exception in thread "main" java.lang.UnsatisfiedLinkError: The specified module could not be found.

at com.sun.jna.Native.open(Native Method)
at com.sun.jna.Native.open(Native.java:1759)
at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:260)
at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:398)
at com.sun.jna.Library$Handler.(Library.java:147)
at com.sun.jna.Native.loadLibrary(Native.java:412)
at com.sun.jna.Native.loadLibrary(Native.java:391)
at net.sourceforge.tess4j.util.LoadLibs.getTessAPIInstance(LoadLibs.java:79)
at net.sourceforge.tess4j.TessAPI.(TessAPI.java:40)
at net.sourceforge.tess4j.Tesseract.init(Tesseract.java:360)
at net.sourceforge.tess4j.Tesseract.doOCR(Tesseract.java:273)
at net.sourceforge.tess4j.Tesseract.doOCR(Tesseract.java:205)
at net.sourceforge.tess4j.Tesseract.doOCR(Tesseract.java:189)
at net.sourceforge.tess4j.Main.main(Main.java:12)

我有什么明显的错误吗?

我使用了 http://tess4j.sourceforge.net/codesample.html 中的示例代码

package net.sourceforge.tess4j.example;

import java.io.File;
import net.sourceforge.tess4j.*;

public class TesseractExample {

    public static void main(String[] args) {
        File imageFile = new File("eurotext.tif");
        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());
        }
    }}

我添加了一个 VM 参数,例如 jna.library.path=${pathtodll2},如果我使用该参数,则会出现以下错误,

Error: Could not find or load main class jna.library.path=D:\OCR\Tess4J\lib\win32-x86

我使用的是 Test4J 项目的最新版本, 2.0 版(2015 年 3 月 29 日)

  • 升级到 Tesseract 3.03 (r1050),它与 ​​Linux 上的 Tesseract 3.03RC 兼容
  • 重构 Tesseract 类以实现可扩展性和线程安全
  • 更新 Tesseract 3.02 的英语语言数据

我在 Windows 7 32 位机器上运行它。 Java 7。

当我尝试使用进程资源管理器时,我无法看到正在加载的 dll,但我不确定,因为会立即抛出异常。

最佳答案

我通过更新到 Visual C++ Redistributable Packages for Visual Studio 2013 解决了这个问题

Visual C++ Redistributable for VS2012 还不够。

此工具:http://www.dependencywalker.com/帮我找到了问题。

关于在 Java 中使用 TESSERACT API 时出现 java.lang.UnsatisfiedLinkError 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29471835/

相关文章:

java SSLEngine 说 NEED_WRAP,调用 .wrap() 并且仍然是 NEED_WRAP

java - 在 android 中,如何将 setter 值转换为字符串?

java - 什么时候在 Java 中使用可变参数?

java - 如何使用 Rest API 和 Java 在 Egnyte 中上传 pdf 文件

java - 重新启动 Android 应用程序时出现 SQlite 错误

api - Azure 包 REST API 身份验证

c# - 有没有办法在 C# 中限制 API 的处理器资源?

python - 使用python opencv清除ocr图像

python - 在 Python 中识别相似项目以减少/澄清简历结果的数量

opencv - 如何从细节丰富的图像中指定计算机感兴趣的区域?