Docker 中使用Tesseract
一、简介
项目使用python识别pdf图片。使用ocr识别图片,刚开始使用的CnOCR,结果在Docker部署时发现生成的镜像过大占用资源过多,所以需要更换一个OCR框架, 测试下来决定使用pytesseract。
由于项目需要部署到K8S,需要搭建Docker镜像。现搭建一个测试镜像。特此记录下来。
二、步骤
pytesseract安装简介。使用alpine基础镜像直接安装python3和tesseract-ocr。然后需要手动安装语言训练数据(在这下载)。本次项目只识别英文和数字,所以采用的是eng训练集。
python测试代码
if __name__ == '__main__':
print("begin")
from PIL import Image
import pytesseract
lang = pytesseract.get_languages()
print(lang)
path = "/pdf/cv_cut_thor.jpg"
text = pytesseract.image_to_string(Image.open(path), lang='eng')
items = text.split("\n")
print(items)
Dockerfile
FROM alpine:latest
# Reloace repositoryies to faster download
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories && apk update
# Install python3 dependencies in virtral space
RUN apk add --no-cache --virtual temp_dependencies gcc libc-dev libffi-dev
# Set timezone
RUN apk add --no-cache tzdata
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" > /etc/timezone
# Add tesseract-ocr
RUN apk add tesseract-ocr
# Install python3
RUN apk add --no-cache python3 python3-dev py3-pip
# Install python libraries
RUN pip3 --no-cache-dir install -i https://pypi.tuna.tsinghua.edu.cn/simple pillow pytesseract
# Remove virtral space
RUN apk del temp_dependencies
#Create work directory
RUN mkdir -p /pdf
# test image
COPY cv_cut_thor.jpg /pdf/cv_cut_thor.jpg
COPY main.py /pdf/main.py
# Copy pytesseract tessdata
COPY eng.traineddata /usr/share/tessdata/
ENTRYPOINT python /pdf/main.py
# docker build -f pytesseract_Dockerfile -t pytesseract_ocr:0.1.0 .
# docker run -it --name myocr pytesseract_ocr:0.1.0
三、结果
项目运行后可以识别图片中的文字
镜像大小为367MB