Tesseract无法在从Java Spring应用程序中调用ubuntu 20.04的Docker映像中工作

vyswwuz2  于 2023-03-17  发布在  Docker
关注(0)|答案(1)|浏览(122)

我想在Docker映像中从Ubuntu 20.04上运行的Java Sping Boot 应用程序调用Tesseract。Tesseract失败,并显示以下日志条目:

java.lang.UnsatisfiedLinkError: Error looking up function 'boxaSizeConsistency': /lib/x86_64-linux-gnu/liblept.so.5: undefined symbol: boxaSizeConsistency
at com.sun.jna.Function.<init>(Function.java:252) ~[jna-5.13.0.jar!/:5.13.0 (b0)]
at com.sun.jna.NativeLibrary.getFunction(NativeLibrary.java:620) ~[jna-5.13.0.jar!/:5.13.0 (b0)]
at com.sun.jna.NativeLibrary.getFunction(NativeLibrary.java:596) ~[jna-5.13.0.jar!/:5.13.0 (b0)]
at com.sun.jna.NativeLibrary.getFunction(NativeLibrary.java:582) ~[jna-5.13.0.jar!/:5.13.0 (b0)]
at com.sun.jna.Native.register(Native.java:1904) ~[jna-5.13.0.jar!/:5.13.0 (b0)]
at com.sun.jna.Native.register(Native.java:1775) ~[jna-5.13.0.jar!/:5.13.0 (b0)]
at com.sun.jna.Native.register(Native.java:1493) ~[jna-5.13.0.jar!/:5.13.0 (b0)]
at net.sourceforge.lept4j.Leptonica1.<clinit>(Leptonica1.java:41) ~[lept4j-1.18.0.jar!/:na]
at net.sourceforge.lept4j.util.LeptUtils.convertImageToPix(LeptUtils.java:92) ~[lept4j-1.18.0.jar!/:na]
at net.sourceforge.tess4j.Tesseract.createDocuments(Tesseract.java:709) ~[tess4j-5.6.0.jar!/:5.6.0]

我补充道

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

到我的Maven pom.xml文件中

RUN apt-get update \
    && apt-get install -qq \
    libleptonica-dev
    
RUN apt-get update \
    && apt-get install -qq \
    tesseract-ocr \
    tesseract-ocr-deu \
    libtesseract-dev

到我的Dockerfile。我能够建立我的jar和我的docker图像。
当我在运行的docker映像中打开一个shell并调用tesseract --version时,它输出:

# tesseract --version
tesseract 4.1.1
 leptonica-1.79.0
  libgif 5.1.4 : libjpeg 8d (libjpeg-turbo 2.0.3) : libpng 1.6.37 : libtiff 4.1.0 : zlib 1.2.11 : libwebp 0.6.1 : libopenjp2 2.3.1
 Found AVX2
 Found AVX
 Found FMA
 Found SSE
 Found libarchive 3.4.0 zlib/1.2.11 liblzma/5.2.4 bz2lib/1.0.8 liblz4/1.9.2 libzstd/1.4.4

所以在我看来,tesseract和leptonica安装在兼容的版本中。另外,liblept可以在请求的路径中找到:

# ldconfig -p | grep lept
        liblept.so.5 (libc6,x86-64) => /lib/x86_64-linux-gnu/liblept.so.5
        liblept.so (libc6,x86-64) => /lib/x86_64-linux-gnu/liblept.so
kb5ga3dv

kb5ga3dv1#

您需要使用与本地库兼容的Java库版本。例如,对于Leptonica 1.79,请使用lept 4j-1.13.x版本。您可以在POM中指定版本。

相关问题