You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bytedeco Tesseract API在Docker容器中初始化崩溃求助

问题分析与解决方法

核心原因

你遇到的JVM崩溃是因为系统安装的Tesseract库和Bytedeco自带的预编译Native库版本冲突。Bytedeco的Tesseract绑定会自动加载自带的native库,而Docker容器中通过apk add tesseract-ocr安装的系统级库版本和Bytedeco依赖的版本不一致,导致初始化时出现内存访问错误(SIGSEGV)。

解决方案步骤

1. 移除Dockerfile中系统级Tesseract安装

在运行阶段的Dockerfile里,删除apk add tesseract-ocr leptonica-dev这一行——Bytedeco已经包含了所需的native库,不需要额外安装系统版本。

修改后的运行阶段Dockerfile:

FROM eclipse-temurin:17.0.13_11-jdk-alpine

COPY --from=build /root/GitHub/tessdata_best /root/GitHub/tessdata_best

VOLUME /tmp
ARG JAVA_OPTS
ENV JAVA_OPTS=$JAVA_OPTS

RUN mkdir /app
COPY --from=build /home/gradle/src/build/libs/*.jar /app/extract.jar
ENTRYPOINT ["java", "-XX:+UnlockExperimentalVMOptions", "-Djava.security.egd=file:/dev/./urandom","-jar","/app/extract.jar"]

2. 确保Bytedeco依赖版本正确

检查你的build.gradle(或pom.xml)中Bytedeco的Tesseract依赖是否为最新稳定版,避免版本兼容问题。例如Gradle依赖:

implementation 'org.bytedeco:tesseract-platform:5.3.0-1.5.10'

(注:-platform后缀会自动引入对应平台的native库,包括Linux Alpine版本)

3. 验证tessdata路径权限

确保容器中tessdata_best目录的权限正确,Java进程可以读取其中的语言文件。可在Dockerfile中添加权限设置:

RUN chmod -R 755 /root/GitHub/tessdata_best

4. 测试容器运行

重新构建镜像并运行容器,此时Bytedeco会使用自带的native库,避免版本冲突,Tesseract初始化应该能正常完成。

额外排查点

如果问题仍然存在,检查:

  • 是否在代码中设置了jna.library.path或其他环境变量强制加载系统库,如有则移除
  • 确认tessdata_best克隆的是对应Bytedeco依赖的Tesseract版本的训练数据(比如Tesseract 5.x对应tessdata_best的main分支即可)

内容的提问来源于stack exchange,提问作者Anonymous Creator

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 01:52:34