在 docker 中容器化时出现 TesseractNotFound 问题
TesseractNotFound issue when containerizing in docker
问题:
我在本地机器上安装了 tesseract
,它的路径是 /usr/local/Cellar/tesseract/4.1.1/bin/tesseract
。一切正常,直到我将它容器化在 docker 中,错误消息为:pytesseract.pytesseract.TesseractNotFoundError: is not installed or it's not your PATH
我试过的:
根据错误消息,这是我尝试过的:
1).将文件共享下 docker 桌面应用程序中的 PATH 添加到 /usr/local
并将文件路径从本地挂载到 docker - 仍然收到错误消息(不起作用)
2).将 tesseract.exe
从它所在的位置移动到当前本地工作目录 - 仍然收到错误消息(当然它不起作用 - 我当时在想什么?)
3).修改 docker 文件以安装 tesseract 及其依赖项。这是 docker 文件:
FROM python:3.7-alpine
RUN apk update && apk add --no-cache tesseract-ocr
WORKDIR /app
COPY ./requirements.txt ./
RUN pip3 install --upgrade pip
# install dependencies
RUN pip3 install -r requirements.txt
RUN pip3 install --upgrade PyMuPDF
# bundle app source
COPY . /app
COPY ./ChaseOCR.py /app
COPY ./BancAmericaOCR.py /app
COPY ./WellsFargoOCR.py /app
EXPOSE 8080
CMD ["python3", "MainBankClass.py"]
在requirements.txt文件下,还包括pytesseract和tesseract依赖。 - 仍然收到错误消息(不起作用)。在过去的 2 天里被困在这个问题上,有点 运行 在这里没有选择。 This link and this link 两者都不适用于我的情况。任何帮助深表感谢。提前致谢。
编辑:
感谢 Neo 的解决方案,我现在正在测试它,但它 运行 非常慢。因此,我认为最好在这里共享 requirements.txt 文件,以防其他问题与 tesseract 无关。
requirements.txt:
numpy
pandas
opencv-python
Pillow
Image
pytesseract
tesseract
PyMuPDF
python-levenshtein
tabula-py
本地文件目录:
testdockerfile
├─ .vscode
│ └─ settings.json
├─ BankofAmericaOCR.py
├─ ChaseOCR.py
├─ Dockerfile
├─ MainBankClass.py
|- __init__.py
├─ WellsFargoOCR.py
└─ requirements.txt
编辑 2:
如果有人遇到与我在 docker 中实施 tesseract
后仍然遇到 TesseractNotFound 问题相同的问题,仅供将来参考。你需要做的是如果你在本地将路径设置为运行,则注释掉pytesseract.pytesseract.tesseract_cmd = r'/path/to/your/tesseract
。之后,您还需要重新构建图像和 运行 docker 中的图像。应该没问题。
编辑 3:
requirements.txt
中的一些 python 包有其他先决条件。
有了这个 Dockerfile
它成功地完成了整个构建过程。
最棘手的部分是构建 opencv
。
感谢 https://github.com/janza/docker-python3-opencv/blob/master/Dockerfile
.
├── Dockerfile
└── requirements.txt
Docker 文件:
FROM python:3.7
RUN apt-get update \
&& apt-get install -y \
build-essential \
cmake \
git \
wget \
unzip \
yasm \
pkg-config \
libswscale-dev \
libtbb2 \
libtbb-dev \
libjpeg-dev \
libpng-dev \
libtiff-dev \
libavformat-dev \
libpq-dev \
&& rm -rf /var/lib/apt/lists/*
RUN pip install numpy
WORKDIR /
ENV OPENCV_VERSION="4.1.1"
RUN wget https://github.com/opencv/opencv/archive/${OPENCV_VERSION}.zip \
&& unzip ${OPENCV_VERSION}.zip \
&& mkdir /opencv-${OPENCV_VERSION}/cmake_binary \
&& cd /opencv-${OPENCV_VERSION}/cmake_binary \
&& cmake -DBUILD_TIFF=ON \
-DBUILD_opencv_java=OFF \
-DWITH_CUDA=OFF \
-DWITH_OPENGL=ON \
-DWITH_OPENCL=ON \
-DWITH_IPP=ON \
-DWITH_TBB=ON \
-DWITH_EIGEN=ON \
-DWITH_V4L=ON \
-DBUILD_TESTS=OFF \
-DBUILD_PERF_TESTS=OFF \
-DCMAKE_BUILD_TYPE=RELEASE \
-DCMAKE_INSTALL_PREFIX=$(python3.7 -c "import sys; print(sys.prefix)") \
-DPYTHON_EXECUTABLE=$(which python3.7) \
-DPYTHON_INCLUDE_DIR=$(python3.7 -c "from distutils.sysconfig import get_python_inc; print(get_python_inc())") \
-DPYTHON_PACKAGES_PATH=$(python3.7 -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())") \
.. \
&& make install \
&& rm /${OPENCV_VERSION}.zip \
&& rm -r /opencv-${OPENCV_VERSION}
RUN ln -s \
/usr/local/python/cv2/python-3.7/cv2.cpython-37m-x86_64-linux-gnu.so \
/usr/local/lib/python3.7/site-packages/cv2.so
RUN apt-get --fix-missing update && apt-get --fix-broken install && apt-get install -y poppler-utils && apt-get install -y tesseract-ocr && \
apt-get install -y libtesseract-dev && apt-get install -y libleptonica-dev && ldconfig && apt install -y libsm6 libxext6 && apt install -y python-opencv
COPY ./requirements.txt ./
RUN pip3 install --upgrade pip
# install dependencies
RUN pip3 install -r requirements.txt
建造:
docker image build -t my-awesome-py .
运行:
docker run --rm my-awesome-py tesseract
Usage:
tesseract --help | --help-extra | --version
tesseract --list-langs
tesseract imagename outputbase [options...] [configfile...]
OCR options:
-l LANG[+LANG] Specify language(s) used for OCR.
NOTE: These options must occur before any configfile.
Single options:
--help Show this help message.
--help-extra Show extra help for advanced users.
--version Show version information.
--list-langs List available languages for tesseract engine.
问题:
我在本地机器上安装了 tesseract
,它的路径是 /usr/local/Cellar/tesseract/4.1.1/bin/tesseract
。一切正常,直到我将它容器化在 docker 中,错误消息为:pytesseract.pytesseract.TesseractNotFoundError: is not installed or it's not your PATH
我试过的:
根据错误消息,这是我尝试过的:
1).将文件共享下 docker 桌面应用程序中的 PATH 添加到 /usr/local
并将文件路径从本地挂载到 docker - 仍然收到错误消息(不起作用)
2).将 tesseract.exe
从它所在的位置移动到当前本地工作目录 - 仍然收到错误消息(当然它不起作用 - 我当时在想什么?)
3).修改 docker 文件以安装 tesseract 及其依赖项。这是 docker 文件:
FROM python:3.7-alpine
RUN apk update && apk add --no-cache tesseract-ocr
WORKDIR /app
COPY ./requirements.txt ./
RUN pip3 install --upgrade pip
# install dependencies
RUN pip3 install -r requirements.txt
RUN pip3 install --upgrade PyMuPDF
# bundle app source
COPY . /app
COPY ./ChaseOCR.py /app
COPY ./BancAmericaOCR.py /app
COPY ./WellsFargoOCR.py /app
EXPOSE 8080
CMD ["python3", "MainBankClass.py"]
在requirements.txt文件下,还包括pytesseract和tesseract依赖。 - 仍然收到错误消息(不起作用)。在过去的 2 天里被困在这个问题上,有点 运行 在这里没有选择。 This link and this link 两者都不适用于我的情况。任何帮助深表感谢。提前致谢。
编辑:
感谢 Neo 的解决方案,我现在正在测试它,但它 运行 非常慢。因此,我认为最好在这里共享 requirements.txt 文件,以防其他问题与 tesseract 无关。
requirements.txt:
numpy
pandas
opencv-python
Pillow
Image
pytesseract
tesseract
PyMuPDF
python-levenshtein
tabula-py
本地文件目录:
testdockerfile
├─ .vscode
│ └─ settings.json
├─ BankofAmericaOCR.py
├─ ChaseOCR.py
├─ Dockerfile
├─ MainBankClass.py
|- __init__.py
├─ WellsFargoOCR.py
└─ requirements.txt
编辑 2:
如果有人遇到与我在 docker 中实施 tesseract
后仍然遇到 TesseractNotFound 问题相同的问题,仅供将来参考。你需要做的是如果你在本地将路径设置为运行,则注释掉pytesseract.pytesseract.tesseract_cmd = r'/path/to/your/tesseract
。之后,您还需要重新构建图像和 运行 docker 中的图像。应该没问题。
编辑 3:
requirements.txt
中的一些 python 包有其他先决条件。
有了这个 Dockerfile
它成功地完成了整个构建过程。
最棘手的部分是构建 opencv
。
感谢 https://github.com/janza/docker-python3-opencv/blob/master/Dockerfile
.
├── Dockerfile
└── requirements.txt
Docker 文件:
FROM python:3.7
RUN apt-get update \
&& apt-get install -y \
build-essential \
cmake \
git \
wget \
unzip \
yasm \
pkg-config \
libswscale-dev \
libtbb2 \
libtbb-dev \
libjpeg-dev \
libpng-dev \
libtiff-dev \
libavformat-dev \
libpq-dev \
&& rm -rf /var/lib/apt/lists/*
RUN pip install numpy
WORKDIR /
ENV OPENCV_VERSION="4.1.1"
RUN wget https://github.com/opencv/opencv/archive/${OPENCV_VERSION}.zip \
&& unzip ${OPENCV_VERSION}.zip \
&& mkdir /opencv-${OPENCV_VERSION}/cmake_binary \
&& cd /opencv-${OPENCV_VERSION}/cmake_binary \
&& cmake -DBUILD_TIFF=ON \
-DBUILD_opencv_java=OFF \
-DWITH_CUDA=OFF \
-DWITH_OPENGL=ON \
-DWITH_OPENCL=ON \
-DWITH_IPP=ON \
-DWITH_TBB=ON \
-DWITH_EIGEN=ON \
-DWITH_V4L=ON \
-DBUILD_TESTS=OFF \
-DBUILD_PERF_TESTS=OFF \
-DCMAKE_BUILD_TYPE=RELEASE \
-DCMAKE_INSTALL_PREFIX=$(python3.7 -c "import sys; print(sys.prefix)") \
-DPYTHON_EXECUTABLE=$(which python3.7) \
-DPYTHON_INCLUDE_DIR=$(python3.7 -c "from distutils.sysconfig import get_python_inc; print(get_python_inc())") \
-DPYTHON_PACKAGES_PATH=$(python3.7 -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())") \
.. \
&& make install \
&& rm /${OPENCV_VERSION}.zip \
&& rm -r /opencv-${OPENCV_VERSION}
RUN ln -s \
/usr/local/python/cv2/python-3.7/cv2.cpython-37m-x86_64-linux-gnu.so \
/usr/local/lib/python3.7/site-packages/cv2.so
RUN apt-get --fix-missing update && apt-get --fix-broken install && apt-get install -y poppler-utils && apt-get install -y tesseract-ocr && \
apt-get install -y libtesseract-dev && apt-get install -y libleptonica-dev && ldconfig && apt install -y libsm6 libxext6 && apt install -y python-opencv
COPY ./requirements.txt ./
RUN pip3 install --upgrade pip
# install dependencies
RUN pip3 install -r requirements.txt
建造:
docker image build -t my-awesome-py .
运行:
docker run --rm my-awesome-py tesseract
Usage:
tesseract --help | --help-extra | --version
tesseract --list-langs
tesseract imagename outputbase [options...] [configfile...]
OCR options:
-l LANG[+LANG] Specify language(s) used for OCR.
NOTE: These options must occur before any configfile.
Single options:
--help Show this help message.
--help-extra Show extra help for advanced users.
--version Show version information.
--list-langs List available languages for tesseract engine.