PaddleOCR实践

1. 环境搭建

资料:https://gitee.com/quano/PaddleOCR

  • 可检查获取最新的代码及更新.

1.1 镜像构建

1.1.1 下载整个项目

1
git clone https://gitee.com/quano/PaddleOCR.git

1.1.2 下载模型文件

模型列表

  • 可以使用mobile轻量模型,也可尝试server模型.

1.1.3 打包

创建/PaddleOCR/inference/路径,将模型解压后的文件放入
然后获取Dockerfile
调整(dockerfile中解压文件去掉,在工作环境解压好)后,通过 docker build -t paddleocr:gpu0 . 命令打包成镜像

打包后的镜像名称为: paddleocr:gpu0, 通过 docker images 命令可以查看到.

1.1.4 镜像调整

1
2
3
4
5
6
# 进入镜像,测试环境是否正确,解决遇到的问题
sudo docker run -p 8866:8866 --gpus all --name paddle_ocr -it paddleocr:gpu0 bash

# 编辑完后,可以使用以下命令 重新进入 (容器)
sudo docker start $容器ID
sudo docker exec -it $容器ID bash

解决遇到的问题

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
hub install deploy/hubserving/ocr_system/ && hub serving start -m ocr_system

# 问题:ModuleNotFoundError: No module named 'paddle.utils.cpp_extension'
# 解决 - pip 重新安装 paddlehub
pip3.7 install --upgrade pip -i https://mirror.baidu.com/pypi/simple
pip3.7 install paddlehub --upgrade -i https://mirror.baidu.com/pypi/simple
pip3.7 install -r requirements.txt -i https://mirror.baidu.com/pypi/simple

# 好像 安装 paddlepaddle 就可以, 不用执行上边2个.
pip3.7 install paddlepaddle -i https://mirror.baidu.com/pypi/simple

# 问题2 protobuf 问题(版本落后,进行升级)
pip3.7 install protobuf==3.20
# 再次执行 hub

# 问题3. 模型路径问题
ValueError: not find model file path ./inference/ch_PP-OCRv2_det_infer//inference.pdmodel
# 解决
# 编辑 deploy/hubserving/ocr_system/params.py, 修改模型文件路径。 (最好在 开发环境修改,而不是在容器里再修改)

# 因为容器内没有vim编辑器。 所以在 工作环境(也可以是宿主机) 编辑后,再cp到容器环境。
docker cp <container_id_or_name>:/PaddleOCR/deploy/hubserving/ocr_system/params.py .
# 编辑完后
docker cp params.py <container_id_or_name>:/PaddleOCR/deploy/hubserving/ocr_system/params.py

# 再次执行 hub. 成功!!!!

1.1.5 测试

使用 https://gitee.com/quano/east-nlp/tree/master/east_paddelocr/.tcloud 中的文件测试

1
2
sh test.txt
sh test.txt2

1.2 镜像保存

使用 docker commit 保存成镜像。

1.3 模型解读

1.3.1 工程解读

  1. 怎么加载的。
  2. 怎么切换cpu、gpu; 还是说只能有单独的环境。
  3. 都有哪些模型,执行流程

1.3.1.1 模型流程

1.3.2 算法解读