嗨我使用tess4j库和java有问题。我正在使用maven。
线程“main”中的异常java.lang.UnsatisfiedLinkError:找不到指定的模块。
我确定路径中设置的文件存在,因为该方法存在返回true。 debuger在这条指令中显示了问题:
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());
}
}
}
提前致谢。
答案 0 :(得分:3)
您似乎没有将 libtesseract302.dll 和 liblept168.dll 添加到类路径中。 使用Maven只能下载tess4j jar,你仍然需要在你的类路径中添加libtesseract302.dll和liblept168.dll。
让Tess4J在Eclipse中运行:请参阅Here Maven为你做了第1步和第2步,你仍然需要做第3步。
以及Here,它可能对您有所帮助。
答案 1 :(得分:2)
对于tess4j的最新版本 - 3.0 - 添加
就足够了<dependency>
<groupId>net.sourceforge.tess4j</groupId>
<artifactId>tess4j</artifactId>
<version>3.0.0</version>
</dependency>
取而代之的是所有以前的teven4j所需的maven依赖项。
答案 2 :(得分:1)
看起来您缺少tess4j使用的本机库。通过适当设置java.library.path来下载dll并运行程序