如何将 tesseract 添加到我的 Docker 容器中以便我可以使用 pytesseract

s_h*_*s_h 7 python opencv tesseract docker python-tesseract

我正在开发一个项目,需要我在 docker 容器上运行 pytesseract,但无法将 tesseract 安装到容器上,我也不知道 pytesseract 的文件路径应该是什么

我的 Dockerfile:

FROM python:3
ENV PYHTONUNBUFFERED=1
RUN apt-get update && apt-get install -y --no-install-recommends \
      bzip2 \
      g++ \
      git \
      graphviz \
      libgl1-mesa-glx \
      libhdf5-dev \
      openmpi-bin \
      wget \
      python3-tk && \
    rm -rf /var/lib/apt/lists/*
 



WORKDIR /usr/src/app
COPY requirements.txt ./
RUN pip install -r requirements.txt
ENV QT_X11_NO_MITSHM=1
Run Code Online (Sandbox Code Playgroud)

我的 pytesseract 代码:

path_to_tesseract = r'C:\Program Files\Tesseract-OCR\tesseract.exe'
pytesseract.tesseract_cmd = path_to_tesseract

            img=cv2.imread(fpath)
            img=cv2.resize(img,None,fx=2,fy=2, interpolation=cv2.INTER_CUBIC)
            text=pytesseract.image_to_string(img)
Run Code Online (Sandbox Code Playgroud)

Dhi*_*aTN 6

我看到你也在使用opencv。使用 pytesseract 需要以下依赖项:

FROM python:3.10-slim

ENV PYHTONUNBUFFERED=1
RUN apt-get update \
  && apt-get -y install tesseract-ocr \ # required for pytesseract
  && apt-get -y install ffmpeg libsm6 libxext6 # required for opencv

...
RUN pip install -r requirements.txt
Run Code Online (Sandbox Code Playgroud)

但当您使用 docker 时,我建议安装它,opencv-python-headless而不是opencv主要用于 Docker 等无头环境。它将附带一个预编译的二进制轮并减少 Docker 映像的大小。Dockerfile 将减少为:

FROM python:3.10-slim

ENV PYHTONUNBUFFERED=1
RUN apt-get update \
  && apt-get -y install tesseract-ocr

...
RUN pip install -r requirements.txt
Run Code Online (Sandbox Code Playgroud)