Ubuntu20.04 Docker镜像中Spring Boot调用Tesseract报错求助
问题分析
你遇到的java.lang.UnsatisfiedLinkError核心原因是依赖版本不兼容:
- 你使用的
tess4j 5.6.0自带的lept4j 1.18.0需要调用Leptonica 1.80.0及以上版本才有的boxaSizeConsistency函数 - 但Ubuntu 20.04官方仓库默认提供的Leptonica版本是1.79.0,该版本不存在这个函数,导致JNA查找符号失败
解决方案
提供两种可行方案,按需选择:
方案一:升级系统Leptonica到兼容版本
Ubuntu 20.04官方仓库无高版本Leptonica,需手动编译安装匹配lept4j 1.18.0的1.82.0版本:
修改Dockerfile,替换原有的libleptonica-dev安装步骤:
# 安装编译依赖 RUN apt-get update \ && apt-get install -qq \ build-essential autoconf automake libtool pkg-config \ libgif-dev libjpeg-dev libpng-dev libtiff-dev zlib1g-dev libwebp-dev libopenjp2-7-dev # 编译安装Leptonica 1.82.0 RUN cd /tmp \ && wget https://github.com/DanBloomberg/leptonica/releases/download/1.82.0/leptonica-1.82.0.tar.gz \ && tar xzf leptonica-1.82.0.tar.gz \ && cd leptonica-1.82.0 \ && ./configure \ && make \ && make install \ && ldconfig # 安装Tesseract及语言包 RUN apt-get update \ && apt-get install -qq \ tesseract-ocr \ tesseract-ocr-deu \ libtesseract-dev
方案二:降级tess4j匹配系统Leptonica版本
如果不想编译源码,可降级tess4j到支持Leptonica 1.79.0的版本:
修改pom.xml中的依赖:
<dependency> <groupId>net.sourceforge.tess4j</groupId> <artifactId>tess4j</artifactId> <version>4.5.4</version> </dependency>
重新构建Jar包和Docker镜像即可。
验证
执行以下命令确认版本兼容性:
# 方案一验证Leptonica版本 leptonica-config --version # 检查库链接情况 ldd /lib/x86_64-linux-gnu/liblept.so.5 | grep lept
内容的提问来源于stack exchange,提问作者SirNight
相关产品推荐
相关产品推荐

