• 基于 CPU 在docker 中部署PaddleOCR


    1. 拉取镜像

    docker pull registry.baidubce.com/paddlepaddle/paddle:2.4.0
    
    • 1

    注:写该文章时,Paddle 最新版本为2.5.1,但是在实际安装中会出现与 PaddleHub 2.3.1版本的冲突,故采用2.4.0版本

    2. 构建并进入容器

    docker run --name paddle_docker -it registry.baidubce.com/paddlepaddle/paddle:2.4.0 /bin/bash
    
    • 1

    3. 安装paddlehub

    pip install paddlehub==2.3.1
    
    • 1

    4. 下载paddleocr项目文件

    git clone https://github.com/PaddlePaddle/PaddleOCR.git /PaddleOCR
    
    • 1

    5. 安装项目所需包

    pip install -r requirements.txt -i https://mirror.baidu.com/pypi/simple
    
    • 1

    注:
    如果是拉取的最新版的PaddleOCR代码(写该文章时最新版未release-2.7),pillow可能会安装不成功,10.0.0版本需要python 3.8+以上版本,经过测试安装pillow=9.5.0亦可

    6. 下载并解压模型文件

    mkdir -p /PaddleOCR/inference/
    
    # 下载文本检测模型
    wget https://paddleocr.bj.bcebos.com/PP-OCRv3/chinese/ch_PP-OCRv3_det_infer.tar -P /PaddleOCR/inference/
    tar xf /PaddleOCR/inference/ch_PP-OCRv3_det_infer.tar -C /PaddleOCR/inference/
    
    # 下载文本识别模型
    wget https://paddleocr.bj.bcebos.com/PP-OCRv3/chinese/ch_PP-OCRv3_rec_infer.tar -P /PaddleOCR/inference/
    tar xf /PaddleOCR/inference/ch_PP-OCRv3_rec_infer.tar -C /PaddleOCR/inference/
    
     # 下载方向检测模型
    wget https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_cls_infer.tar -P /PaddleOCR/inference/
    tar xf /PaddleOCR/inference/ch_ppocr_mobile_v2.0_cls_infer.tar -C /PaddleOCR/inference/
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    7. 安装OCR模块

    hub install deploy/hubserving/ocr_system/
    
    • 1

    在这里插入图片描述

    8. 启动服务

    hub serving start --modules [Module1==Version1, Module2==Version2, ...] \
                        --port XXXX \
                        --use_multiprocess \
                        --workers \
    
    • 1
    • 2
    • 3
    • 4
    参数用途
    –modules/-mPaddleHub Serving预安装模型,以多个Module==Version键值对的形式列出,当不指定Version,默认选择最新版本
    –port/-p服务端口,默认为8866
    –use_multiprocess是否启用并发方式,默认为单进程方式,推荐多核CPU机器使用此方式,Windows操作系统只支持单进程模式
    –workers在并发方式下指定的并发任务数,默认为2*cpu_count-1,其中cpu_count为CPU核数
    配置文件启动(支持CPU、GPU)
    hub serving start -c config.json
    其中,config.json格式如下:
    {
        "modules_info": {
            "ocr_system": {
                "init_args": {
                    "version": "1.0.0",
                    "use_gpu": true
                },
                "predict_args": {
                }
            }
        },
        "port": 8868,
        "use_multiprocess": false,
        "workers": 2
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • init_args中的可配参数与module.py中的_initialize函数接口一致。其中,当use_gpu为true时,表示使用GPU启动服务。
    • predict_args中的可配参数与module.py中的predict函数接口一致。

    注意:

    • 使用配置文件启动服务时,其他参数会被忽略。
    • 如果使用GPU预测(即,use_gpu置为true),则需要在启动服务之前,设置CUDA_VISIBLE_DEVICES环境变量,如:export CUDA_VISIBLE_DEVICES=0,否则不用设置。
    • use_gpu不可与use_multiprocess同时为true
      在这里插入图片描述

    9. 参考意见

    1. 可直接通过官方提供的Dockerfile文件部署,但是官方文件没有考虑版本问题,所以直接安装过程中可能出现各种包冲突问题。
      地址:https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.7/deploy/docker/hubserving/cpu/Dockerfile
    2. 该部署方式默认不启用cpu加速,如果需要开启cpu加速可以去如下文件中(https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.7/deploy/hubserving/ocr_system/module.py)中修改enable_mkldnn参数未True,截止文章发布日期,pp-ocr-v4不支持该参数
    3. 不推荐使用默认workers,调用量较大情况下,速度会很慢,尤其在开启CPU加速情况下,cpu资源耗费会更大,请合理分配workers。
    4. worker挂掉会自动重启,内存不够会报内存溢出error

    参考文件:
    https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.7/deploy/hubserving/readme.md

  • 相关阅读:
    软件安全性测试包含哪些类型?2023年专业软件安全测试报告获取
    函数调用、值传递、引用传递、实参与形参
    Redis 持久化
    基于web的邮票鉴赏系统及实现设计与实现-计算机毕业设计源码+LW文档
    .NET周刊【1月第2期 2024-01-21】
    数据建模软件Chiner,颜值与实用性并存
    两张图完全理解单点登录
    异或的4种堪称神奇的运用场景
    VUE如何使得大屏自适应的几种方法?
    plt.plot
  • 原文地址:https://blog.csdn.net/bugang4663/article/details/132994411