我正在使用 tess4J api 来处理 ocr 过程。我已经在 Windows 上成功部署了我的项目,但我被困在 linux ubunutu 上运行该项目。根据我的研究,我必须为 linux 使用 .so 文件而不是 .dll 文件。我的简单代码片段看起来像 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 文件也将其放入文件夹中的类路径中。例如linux-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 提出任何解决方案。我们将不胜感激。谢谢。