如何在Microsoft ASP.NET Core 6 Linux Docker容器中运行.NET Tesseract 5.2?
在ASP.NET Core 6 Linux Docker容器中快速运行Tesseract 5的简便方法
我需要在基于mcr.microsoft.com/dotnet/aspnet:6.0的Docker容器中运行.NET Tesseract 5.2,但初始化引擎时遇到错误:
Failed to find library "libleptonica-1.82.0.so" for platform x64
尝试过现有方案但存在版本不匹配、编译繁琐、依赖报错等问题,这里提供两种简便的解决方式:
方法一:通过第三方软件源安装最新版Tesseract 5
mcr.microsoft.com/dotnet/aspnet:6.0基于Debian 11(bullseye),可以添加第三方源直接安装适配版本的库,无需编译:
- 在Dockerfile中添加以下步骤:
FROM mcr.microsoft.com/dotnet/aspnet:6.0 # 添加Tesseract第三方源并安装证书工具 RUN apt-get update && apt-get install -y --no-install-recommends \ apt-transport-https \ ca-certificates \ gnupg2 \ && echo "deb https://notesalexp.org/tesseract-ocr5/bullseye/ bullseye main" >> /etc/apt/sources.list.d/tesseract.list \ && wget -O - https://notesalexp.org/debian/alexp_key.asc | apt-key add - # 安装Tesseract 5与对应Leptonica库 RUN apt-get update && apt-get install -y --no-install-recommends \ libtesseract5 \ libleptonica-dev \ && rm -rf /var/lib/apt/lists/* # 设置语言包路径环境变量(按需配置) ENV TESSDATA_PREFIX=/usr/share/tesseract-ocr/5/tessdata # 复制应用发布文件 COPY --from=build /app/publish . ENTRYPOINT ["dotnet", "YourApp.dll"]
该源提供的库版本完全匹配.NET Tesseract 5.2的依赖要求,无需手动编译。
方法二:多阶段构建复制预编译库
若不想添加第三方源,可借助官方Tesseract 5镜像复制预编译库到ASP.NET Core容器:
# 第一阶段:获取Tesseract 5预编译库 FROM tesseractshadow/tesseract4re:5.0.1 as tesseract # 第二阶段:构建ASP.NET Core应用容器 FROM mcr.microsoft.com/dotnet/aspnet:6.0 # 复制Tesseract与Leptonica库文件 COPY --from=tesseract /usr/lib/x86_64-linux-gnu/libleptonica*.so* /usr/lib/x86_64-linux-gnu/ COPY --from=tesseract /usr/lib/x86_64-linux-gnu/libtesseract*.so* /usr/lib/x86_64-linux-gnu/ # 复制默认语言包(按需取舍) COPY --from=tesseract /usr/share/tesseract-ocr/5/tessdata/ /usr/share/tesseract-ocr/5/tessdata/ # 设置语言包路径环境变量 ENV TESSDATA_PREFIX=/usr/share/tesseract-ocr/5/tessdata # 复制应用发布文件 COPY --from=build /app/publish . ENTRYPOINT ["dotnet", "YourApp.dll"]
解决liblibdl错误的补充步骤
若出现liblibdl: cannot open shared object file: No such file or directory错误,是符号链接缺失导致,添加以下命令创建链接即可:
RUN ln -s /lib/x86_64-linux-gnu/libdl.so.2 /usr/lib/x86_64-linux-gnu/libdl.so
内容的提问来源于stack exchange,提问作者elshev
相关产品推荐
相关产品推荐

