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

时间:2015-04-06 13:00:41

标签: java api ocr tesseract jna

我正在尝试使用Java JNA包装器来使用Tesseract OCR API,但我一直在使用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.<init>(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.<clinit>(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。*;

公共类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兼容 - Refactor Tesseract类的可扩展性和线程安全性 - 更新Tesseract 3.02的英语语言数据

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

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

3 个答案:

答案 0 :(得分:5)

我通过更新到Visual C++ Redistributable Packages for Visual Studio 2013

解决了这个问题

VS2012的Visual C ++ Redistributable是不够的。

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

答案 1 :(得分:1)

Visual C++ Redistributable Packages for Visual Studio 2013 是您需要在计算机上安装的软件包:)

它确实有效....

答案 2 :(得分:0)

UnsatisfiedLinkError的解决方案:

  1. 安装 Visual C ++ 2015 Redistributable Packages

  2. 尝试将 tess4j 文件夹从本地移至发生异常的系统。