美文网首页
PaddleOCR docker模式

PaddleOCR docker模式

作者: 水他 | 来源:发表于2023-07-15 19:16 被阅读0次

    PaddleCloud基于 Tekton 为OCR模型套件提供了镜像持续构建的能力,并支持CPU、GPU以及常见CUDA版本的镜像。 您可以查看 PaddleOCR 镜像仓库 来获取所有的镜像列表。 同时我们也将PP-OCRv3识别模型的训练与推理实战案例放置到了AI Studio平台上,您可以点击 PP-OCRv3识别训推一体项目实战 在平台上快速体验。

    PP-OCR是一个实用的超轻量OCR系统。主要由DB文本检测、检测框矫正和CRNN文本识别三部分组成。

    image.png

    PaddleServing 服务化部署框架是什么?

    Paddle Serving依托深度学习框架PaddlePaddle旨在帮助深度学习开发者和企业提供高性能、灵活易用的工业级在线推理服务。Paddle Serving支持RESTful、gRPC、bRPC等多种协议,提供多种异构硬件和多种操作系统环境下推理解决方案,和多种经典预训练模型示例。

    image.png

    一、启动容器

    拉取预安装paddlepaddle的镜像

    docker pull registry.baidubce.com/paddlepaddle/paddle:2.4.2

    image.png

    clone paddleOCR代码

    git clone https://gitee.com/paddlepaddle/PaddleOCR

    启动并进入docker容器:

    docker run --name ppocr \ -v $PWD:/paddle \ --network=host \ -it registry.baidubce.com/paddlepaddle/paddle:2.4.2 /bin/bash

    二、安装依赖和部署模型

    安装paddleOCR的python依赖

    cd /paddle/PaddleOCR 
    python -V 
      python 3.7.13 
    pip3 install -r requirements.txt
    
    image.png

    安装服务模块

    PaddleOCR提供3种服务模块,分别为检测、识别、检测+识别,根据需要安装所需模块。(这里我们是安装的ocr_system)

    pip uninstall typing-extensions -y 
    pip uninstall flask-babel -y 
    pip uninstall astroid -y 
    
    pip install astroid==2.11.6 
    pip install flask-babel==2.0.0 
    pip install typing-extensions==4.7.1
    
    # 安装paddlehub(用于启动服务) 
    pip3 install paddlehub 
    # 安装检测+识别串联服务模块:
     hub install ./deploy/hubserving/ocr_system/ 
    # 或,只安装检测服务模块:
     hub install deploy/hubserving/ocr_det/ 
    # 或,只安装识别服务模块:
     hub install deploy/hubserving/ocr_rec/
    
    image.png image.png

    下载并安装模型

    下载PPOCR的inference模型:

    # 切换到 OCR 的 inference 目录 
    mkdir /paddle/PaddleOCR/inference
     cd /paddle/PaddleOCR/inference 
    
    # 下载并解压 OCR 文本检测模型 
    wget https://paddleocr.bj.bcebos.com/PP-OCRv3/chinese/ch_PP-OCRv3_det_infer.tar && tar -xf ch_PP-OCRv3_det_infer.tar 
    # 下载并解压 OCR 方向分类器模型 
    wget https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_cls_infer.tar -O ch_ppocr_mobile_v2.0_cls_infer.tar && tar -xf ch_ppocr_mobile_v2.0_cls_infer.tar 
    # 下载并解压 OCR 文本识别模型 
    wget https://paddleocr.bj.bcebos.com/PP-OCRv3/chinese/ch_PP-OCRv3_rec_infer.tar -O ch_PP-OCRv3_rec_infer.tar && tar -xf ch_PP-OCRv3_rec_infer.tar
    

    修改参数文件 - 模型路径

    vi /paddle/PaddleOCR/deploy/hubserving/ocr_system/params.py

    image.png

    三、启动模型服务

    修改启动配置文件,不使用gpu

    此时启动后端口为8868,需注意use_multiprocess 和user_gpu不能同时为true。

    vi /paddle/PaddleOCR/deploy/hubserving/ocr_system/config.json

    image.png

    如果gpu = true,可以修改显存占用的配置

    vi /paddle/PaddleOCR/deploy/hubserving/ocr_system/module.py

    image.png

    启动paddleocr服务(hubserving启动),

    # config文件启动 
    hub serving start -c deploy/hubserving/ocr_system/config.json 
    
    # 命令行方式启动 
    hub serving start -m ocr_system -modules k==v --port 8866 --use_multiporcess false --workers 1
    

    命令行方式启动参数:

    参数 用途 
    --modules/-m PaddleHub Serving预安装模型,以多个Module==Version键值对的形式列出当不指定Version时,默认选择最新版本 
    --port/-p 服务端口,默认为8866 
    --use_multiprocess 是否启用并发方式,默认为单进程方式,推荐多核CPU机器使用此方式,Windows操作系统只支持单进程方式 
    --workers 在并发方式下指定的并发任务数,默认为2*cpu_count-1,其中cpu_count为CPU核数
    

    四、测试

    4.1 通过test_hubserving.py文件验证

    docker exec -it ppocr bash python /paddle/PaddleOCR/tools/test_hubserving.py --server_url http://127.0.0.1:8868/predict/ocr_system --image_dir /paddle/PaddleOCR/doc/imgs/

    image.png

    4.2 通过python请求request单个文件测试

    python ocr.py

    import requests
    import json
    import base64
    
    
    def cv2_to_base64(image):
        return base64.b64encode(image).decode('utf8')
    
    headers = {"Content-type": "application/json"}
    
    img = open(r'/paddle/id3.jpg', 'rb').read()
    
    b = cv2_to_base64(img)
    data = {'images': [cv2_to_base64(img)]}
           
    
    r = requests.post(url='http://127.0.0.1:8868/predict/ocr_system', headers=headers, data=json.dumps(data))
    # data数据写入文件
    #with open('data.txt', 'w') as f:
    #    f.write(json.dumps(data))
    
    # 打印data数据和返回结果
    print(data) 
    print(r.json()["results"][0])
    
    image.png

    4.3 通过curl命令测试

    计算待识别图片的Base64编码,可以通过免费的在线工具实现,如:http://tool.chinaz.com/tools/imgtobase/,也可以通过python的cv2_to_base64包实现。

    或者直接使用\deploy\docker\hubserving路径下的sample_request.txt样例。

    # 服务请求
    curl -H "Content-Type:application/json" -X POST --data "{\"images\": [\"填入图片Base64编码(需要删除'data:image/jpg;base64,')\"]}" http://localhost:8868/predict/ocr_system
    # 服务返回
    {"msg":"","results":[[{"confidence":0.8403433561325073,"text":"约定","text_region":[[345,377],[641,390],[634,540],[339,528]]},{"confidence":0.8131805658340454,"text":"最终相遇","text_region":[[356,532],[624,530],[624,596],[356,598]]}]],"status":"0"}
    

    相关文章

      网友评论

          本文标题:PaddleOCR docker模式

          本文链接:https://www.haomeiwen.com/subject/dyciudtx.html