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

.NET7 ASP.NET WebAPI中IronOCR在Docker读取JPG图片报错求助

问题:.NET7 WebAPI中IronOCR在Docker环境下处理JPG字节数组报错(PDF正常)

场景概述

Windows环境下运行完全正常,但部署到Docker后,对JPG图片字节数组执行OCR操作时触发报错,处理PDF文件则无异常。

核心代码

IronTesseract ocr = new IronTesseract();
using (OcrInput input = new OcrInput(data.ToArray())) // 报错位置
{
      input.Deskew();
      input.DeNoise();
      input.Invert();
                   
      OcrResult result = ocr.Read(input);
      return Task.FromResult(result.Text);
}

错误调用栈

Error in pixReadMemJpeg: function not present
Error in pixReadMem: jpeg: no pix returned
Failed to load image from memory.
      System.Exception: Failed to load image from memory.
       ---> System.Exception: Failed to load image from memory.
       ---> System.IO.IOException: Failed to load image from memory.
         at .(Byte[] )
         at IronOcr.OcrInput.Add(Byte[] imageAsByteArray, CropRectangle ContentArea)
         at IronOcr.OcrInput..ctor(Byte[] Bytes)

已尝试的Dockerfile配置

RUN apt-get update && apt-get install -y apt-utils libgdiplus libc6-dev
RUN apt-get install -y libjpeg-dev zlib1g-dev libpng-dev wget pkg-config gcc g++ make

RUN wget http://www.leptonica.org/source/leptonica-1.80.0.tar.gz && \
    tar -xvf leptonica-1.80.0.tar.gz && \
    cd leptonica-1.80.0 && \
    ./configure --disable-dependency-tracking && \
    make && \
    make install

补充信息

IronOCR官方建议使用的基础镜像:

FROM mcr.microsoft.com/dotnet/runtime:5.0-focal AS base

对应的官方示例配置:

FROM mcr.microsoft.com/dotnet/runtime:5.0-focal AS base
WORKDIR /app
# install necessary packages

RUN apt-get update && apt-get install -y apt-utils libgdiplus libc6-dev

当前使用的基础镜像为:

FROM mcr.microsoft.com/dotnet/aspnet:7.0 AS base


解决方案

1. 切换兼容的基础镜像

.NET7默认的aspnet镜像基于Ubuntu Jammy(22.04),与IronOCR依赖的Leptonica/Tesseract存在兼容性问题。将基础镜像替换为Ubuntu Focal(20.04)版本的.NET7镜像:

FROM mcr.microsoft.com/dotnet/aspnet:7.0-focal AS base
WORKDIR /app

2. 安装完整的预编译依赖库

无需手动编译Leptonica,直接安装系统兼容的预编译包,补充JPG处理所需的完整依赖:

RUN apt-get update && apt-get install -y --no-install-recommends \
    apt-utils \
    libgdiplus \
    libc6-dev \
    libjpeg-turbo8-dev \
    zlib1g-dev \
    libpng-dev \
    libtesseract4 \
    libleptonica-dev

3. 配置动态库加载路径(可选)

若仍出现库找不到的情况,添加环境变量指定动态库路径:

ENV LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH

4. 验证依赖完整性

构建镜像后,可进入容器执行以下命令检查依赖是否正常加载:

ldd /usr/lib/x86_64-linux-gnu/liblept.so.5

内容的提问来源于stack exchange,提问作者Taufiq Abdur Rahman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 02:22:42