我想在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
1条答案
按热度按时间kb5ga3dv1#
您需要使用与本地库兼容的Java库版本。例如,对于Leptonica 1.79,请使用lept 4j-1.13.x版本。您可以在POM中指定版本。