前一段时间需要应用文字识别,看了一下国内外开源的OCR软件,发现中文识别有:
Tesseract
PaddleOCR
EasyOCR
Chineseocr
Trwebocr
Cnocr/cnstd
等,通过对比识别效果,感觉PaddleOCR效果较好,准备部署服务,开发环境没有GPU,所以先通过容器模式部署CPU版。具体过程如下:
下载PaddleOCR:https://gitee.com/paddlepaddle/PaddleOCR
在容器目录下包括:
PaddleOCR (下载的代码)
requirements.txt
Dockerfile
requirements.txt的内容如下:
shapely
scikit-image
imgaug==0.4.0
pyclipper
lmdb
tqdm
numpy
visualdl
python-Levenshtein
opencv-contrib-python==4.4.0.46
cython
lxml
premailer
openpyxl
attrdict
paddlepaddle
paddlenlp
paddle2onnx
paddlehub
Dockerfile内容如下:
Base Images
FROM python:3.7-buster
把当前文件夹里的文件构建到镜像的根目录下
ADD . /
WORKDIR /
RUN apt -y update
RUN apt -y install g++
RUN apt -y install libglib2.0-dev
RUN apt -y install libgl1-mesa-glx
RUN apt -y install libsm6
RUN apt -y install libxrender1
安装所需要的包
RUN pip install --no-cache-dir -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
WORKDIR /PaddleOCR
RUN mkdir -p /PaddleOCR/inference/
ADD https://paddleocr.bj.bcebos.com/PP-OCRv3/chinese/ch_PP-OCRv3_det_infer.tar /PaddleOCR/inference/
RUN tar xf /PaddleOCR/inference/ch_PP-OCRv3_det_infer.tar -C /PaddleOCR/inference/
ADD https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_cls_infer.tar /PaddleOCR/inference/
RUN tar xf /PaddleOCR/inference/ch_ppocr_mobile_v2.0_cls_infer.tar -C /PaddleOCR/inference/
ADD https://paddleocr.bj.bcebos.com/PP-OCRv3/chinese/ch_PP-OCRv3_rec_infer.tar /PaddleOCR/inference/
RUN tar xf /PaddleOCR/inference/ch_PP-OCRv3_rec_infer.tar -C /PaddleOCR/inference/
检测+识别串联服务模块:
RUN hub install deploy/hubserving/ocr_system/
分类服务模块:
RUN hub install deploy/hubserving/ocr_cls/
检测服务模块:
RUN hub install deploy/hubserving/ocr_det/
安装识别服务模块:
RUN hub install deploy/hubserving/ocr_rec/
EXPOSE 8899
执行:
docker build -t ppocr:0.1 .
启动服务
docker run -itd --name ppocr -p 9000:9000 ppocr:0.1 /bin/bash -c "cd /PaddleOCR && hub serving start --modules ocr_system ocr_cls ocr_det ocr_rec -p 8899"
然后就可以通过http://host:9000/predict/ocr_system访问文字识别服务了。