出发点
最近有搞OCR的心,调研了一下最新的开源代码,发现还是paddleOCR做的最好,那就先从这个开始部署一下环境吧
github paddleOCR
PaddlePaddle 3.0
安装paddlepaddle
从上图可以看到,paddlepaddle提供了多种安装方法,我一如既往的选择linux+docker+英伟达+cuda11.8的方式来安装
python
docker pull paddlepaddle/paddle:3.0.0-gpu-cuda11.8-cudnn8.9-trt8.6
# paddle的镜像是真大啊
docker run --gpus all --name paddle_docker -v $PWD:/paddle --network=host -it paddlepaddle/paddle:3.0.0-gpu-cuda11.8-cudnn8.9-trt8.6 /bin/bash
# 新建容器

安装paddleOCR
python
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
pip install paddleocr
是不是看起来很简单?第一个报错来了。。
报错1

我在网上搜了一下,发现需要手动删除PyYAML的文件,操作如下:
python
pip show PyYAML
# Name: PyYAML
# Version: 5.3.1
# Summary: YAML parser and emitter for Python
# Home-page: https://github.com/yaml/pyyaml
# Author: Kirill Simonov
# Author-email: [email protected]
# License: MIT
# Location: /usr/lib/python3/dist-packages
# Requires:
# Required-by:
rm -rf /usr/lib/python3/dist-packages
pip install paddleocr
# 安装成功
报错2
安装成功了,是不是就可以进行OCR识别了呢?
python
paddleocr ocr -i https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/general_ocr_002.png --use_doc_orientation_classify False --use_doc_unwarping False --use_textline_orientation False
然后就来了第二个报错
服务器没能成功下载这个字体,那我去代码上看了一下,找到了完整的链接(/usr/local/lib/python3.10/dist-packages/paddlex/utils/fonts/init.py#L36)
python
https://paddle-model-ecology.bj.bcebos.com/paddlex/PaddleX3.0/fonts/PingFang-SC-Regular.ttf
我从本地上下载了下来,上传到服务器,那要放到哪里呢?打印代码里的font_path,看到了(/root/.paddlex/fonts/PingFang-SC-Regular.ttf)
那就把这个字体放过去
继续下载一个字体
python
https://paddle-model-ecology.bj.bcebos.com/paddlex/PaddleX3.0/fonts/simfang.ttf
继续放到(/root/.paddlex/fonts/)下
报错3

在下载一个模型文件,没有成功,那就手动下载吧
python
https://paddle-model-ecology.bj.bcebos.com/paddlex/official_inference_model/paddle3.0.0/PP-OCRv5_server_det_infer.tar

打开/usr/local/lib/python3.10/dist-packages/paddlex/utils/download.py进行修改

python
# 将PP-OCRv5_server_det_infer.tar放入/root/.paddlex/official_models/
def download_and_extract(
url, save_dir, dst_name, print_progress=True, overwrite=False, no_interm_dir=True
):
"""download and extract"""
# NOTE: `url` MUST come from a trusted source, since we do not provide a solution
# to secure against CVE-2007-4559.
os.makedirs(save_dir, exist_ok=True)
dst_path = os.path.join(save_dir, dst_name)
print ("dst_path", dst_path)
if overwrite:
_remove_if_exists(dst_path)
if not os.path.exists(dst_path):
with tempfile.TemporaryDirectory() as td:
td = save_dir# 将td改为固定的路径 /root/.paddlex/official_models/
arc_file_path = os.path.join(td, url.split("/")[-1])
extd_dir = os.path.splitext(arc_file_path)[0]
print ("arc_file_path", arc_file_path)
#_download(url, arc_file_path, print_progress=print_progress)# 将下载注释掉,因为我们手动下载了
再次运行,报错
python
https://paddle-model-ecology.bj.bcebos.com/paddlex/official_inference_model/paddle3.0.0/PP-OCRv5_server_rec_infer.tar
# 将这个文件放入/root/.paddlex/official_models/
再次运行,就可以看到下一个错误了
报错4
文件不存在,那就看一下这个文件是啥?
做完这一步修改,看到默认的图片是网上的图片,我想还是自己下载下来放到某个路径下吧。。

运行
python
paddleocr ocr -i /root/.paddlex/imgs/general_ocr_002.png --use_doc_orientation_classify False --use_doc_unwarping False --use_textline_orientation False

成功
总结
下载了四个文件
python
https://paddle-model-ecology.bj.bcebos.com/paddlex/PaddleX3.0/fonts/PingFang-SC-Regular.ttf
https://paddle-model-ecology.bj.bcebos.com/paddlex/PaddleX3.0/fonts/simfang.ttf
https://paddle-model-ecology.bj.bcebos.com/paddlex/official_inference_model/paddle3.0.0/PP-OCRv5_server_det_infer.tar
https://paddle-model-ecology.bj.bcebos.com/paddlex/official_inference_model/paddle3.0.0/PP-OCRv5_server_rec_infer.tar
补充
python
# 运行 PP-StructureV3 推理
paddleocr pp_structurev3 -i /root/.paddlex/imgs/general_ocr_002.png --use_doc_orientation_classify False --use_doc_unwarping False
# 下载文件
https://paddle-model-ecology.bj.bcebos.com/paddlex/official_inference_model/paddle3.0.0/PP-DocBlockLayout_infer.tar
https://paddle-model-ecology.bj.bcebos.com/paddlex/official_inference_model/paddle3.0.0/PP-DocLayout_plus-L_infer.tar
https://paddle-model-ecology.bj.bcebos.com/paddlex/official_inference_model/paddle3.0.0/PP-LCNet_x1_0_textline_ori_infer.tar
https://paddle-model-ecology.bj.bcebos.com/paddlex/official_inference_model/paddle3.0.0/PP-LCNet_x1_0_table_cls_infer.tar
https://paddle-model-ecology.bj.bcebos.com/paddlex/official_inference_model/paddle3.0.0/SLANeXt_wired_infer.tar
https://paddle-model-ecology.bj.bcebos.com/paddlex/official_inference_model/paddle3.0.0/SLANet_plus_infer.tar
https://paddle-model-ecology.bj.bcebos.com/paddlex/official_inference_model/paddle3.0.0/PP-FormulaNet_plus-L_infer.tar
https://paddle-model-ecology.bj.bcebos.com/paddlex/official_inference_model/paddle3.0.0/RT-DETR-L_wired_table_cell_det_infer.tar
https://paddle-model-ecology.bj.bcebos.com/paddlex/official_inference_model/paddle3.0.0/RT-DETR-L_wireless_table_cell_det_infer.tar
https://paddle-model-ecology.bj.bcebos.com/paddlex/official_inference_model/paddle3.0.0/PP-OCRv4_server_seal_det_infer.tar
https://paddle-model-ecology.bj.bcebos.com/paddlex/official_inference_model/paddle3.0.0/PP-LCNet_x1_0_doc_ori_infer.tar