2

我正在使用 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 提出任何解决方案。我们将不胜感激。谢谢。

4

1 回答 1

0

我遇到过同样的问题。我通过下载必要依赖项的编译包来解决它。在您的情况下,您应该下载 Leptonica 库,其中包含liblept.so. 选择库版本时要小心,并将其与 tess4j 依赖项列表中提到的版本进行比较。

于 2017-09-25T13:19:27.253 回答