我正在使用tess4J api来处理ocr进程。我已经在Windows上成功部署了我的项目,但我坚持在linux ubunutu上运行该项目。根据我的研究,我必须使用.so文件而不是.dll文件用于linux。我的简单代码片段看起来像belove
import net.sourceforge.tess4j.Tesseract;
import net.sourceforge.tess4j.TesseractException;
import net.sourceforge.tess4j.util.PdfUtilities;
private static Tesseract instance;
try {
System.out.println(getPath());
instance.setDatapath(getPath()+"/tessdata");
result = instance.doOCR(file);
System.out.println(result);
} catch (Exception e) {
logger.log(Level.INFO, e.getMessage(), e);
throw new TesseractException(e);
}
我有linux os的tessdata文件夹并将其放入类路径中并且有几个.so文件也将它放入类路径的文件夹中。 eglinux-x86v文件夹。
我的printstacktrace如下..
java.lang.UnsatisfiedLinkError: /tmp/tess4j.tmp/linux-x86/liblept.so: libjbig.so.0: cannot open shared object file: No such file or directory
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary1(ClassLoader.java:1965)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1890)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1851)
at java.lang.Runtime.load0(Runtime.java:795)
at java.lang.System.load(System.java:1062)
at net.sourceforge.tess4j.util.LoadLibs.loadLibs(LoadLibs.java:127)
at net.sourceforge.tess4j.util.LoadLibs.<init>(LoadLibs.java:71)
at net.sourceforge.tess4j.util.LoadLibs.<clinit>(LoadLibs.java:38)
at net.sourceforge.tess4j.TessAPI.<clinit>(TessAPI.java:40)
at net.sourceforge.tess4j.Tesseract.init(Tesseract.java:286)
at net.sourceforge.tess4j.Tesseract.doOCR(Tesseract.java:222)
at net.sourceforge.tess4j.Tesseract.doOCR(Tesseract.java:171)
at net.sourceforge.tess4j.Tesseract.doOCR(Tesseract.java:155)
请建议任何关于如何在linux平台上运行tess4j api的解决方案以及运行tess4j api要么是什么类型的文件.so或.dll。我将不胜感激。谢谢。
答案 0 :(得分:0)
我有同样的问题。我通过下载必要依赖项的编译包来解决它。在您的情况下,您应该下载Leptonica库,其中包含liblept.so
。小心选择库的版本,并将其与tess4j依赖列表中提到的版本进行比较。