PaddleOCR实践

Catalogue
  1. 1. 环境搭建
    1. 1.1 镜像构建
      1. 1.1.1 下载整个项目
      2. 1.1.2 下载模型文件
      3. 1.1.3 打包
      4. 1.1.4 镜像调整
      5. 1.1.5 测试
    2. 1.2 镜像保存
    3. 1.3 模型解读
      1. 1.3.1 工程解读
        1. 1.3.1.1 模型流程
      2. 1.3.2 算法解读

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 算法解读