3

嗨,我在使用 java 的 tess4j 库时遇到问题。我正在使用maven。

线程“main”中的异常 java.lang.UnsatisfiedLinkError:找不到指定的模块。

我确定路径中设置的文件存在,因为方法存在返回true。调试器在此指令中显示问题:

String result = instance.doOCR(imageFile);

这是错误:

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.TessAPI.<clinit>(TessAPI.java:45)
at net.sourceforge.tess4j.Tesseract.init(Tesseract.java:283)
at net.sourceforge.tess4j.Tesseract.doOCR(Tesseract.java:219)
at net.sourceforge.tess4j.Tesseract.doOCR(Tesseract.java:168)
at net.sourceforge.tess4j.Tesseract.doOCR(Tesseract.java:152)
at Index.main(Index.java:17)

我的依赖

  <dependency>
    <groupId>net.sourceforge.tess4j</groupId>
    <artifactId>tess4j</artifactId>
    <version>1.3.0</version>
 </dependency>

我的代码

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



public class Index {

public static void main(String[] args) {

File imageFile = new File("C:\\Users\\Juan\\workspace\\TESSERACT\\src\\main\\java\\img.png");
Tesseract instance = Tesseract.getInstance(); //

try {
System.out.println( imageFile.exists());

String result = instance.doOCR(imageFile);
System.out.println(result);

} catch (TesseractException e) {
System.err.println(e.getMessage());
}
}

}

提前致谢。

4

3 回答 3

4

看来您没有将libtesseract302.dllliblept168.dll添加到类路径中。使用 Maven 只能让您下载 tess4j jar,您仍然需要将 libtesseract302.dll 和 liblept168.dll 添加到您的类路径中。

要让 Tess4J 在 Eclipse 中运行:请参阅此处 Maven 为您完成了第 1 步和第 2 步,您仍然需要执行第 3 步。

还有Here,它可能会对你有所帮助。

于 2014-08-04T17:24:57.460 回答
2

对于 tess4j 的最后一个版本 - 3.0 - 添加就足够了

<dependency>
    <groupId>net.sourceforge.tess4j</groupId>
    <artifactId>tess4j</artifactId>
    <version>3.0.0</version>
</dependency>

而是tess4j 所需的所有以前的 maven 依赖项。

于 2016-01-31T11:28:53.813 回答
1

看起来您缺少 tess4j 使用的本机库。下载 dll 并通过适当设置 java.library.path 来运行您的程序

于 2014-08-04T17:02:31.703 回答