使用hub部署PaddleOCR

使用hub部署PaddleOCR

概述

目前有一些处理证件照片、资质照片的业务需求,已经尝试过 llava-llama3​ 与 llama3.2-vision​,表现都不佳,要么不能正确 ocr 出文字,要么在胡言乱语。当前时间(2024-11-19)注意文章时效

  对比了一众开源 OCR 的在线体验服务后,发现 PaddleOCR 的能力尤为突出。即便图片存在水印、字体模糊,仍能保持极高的准确度。准备在项目部署一套 ocr 识别,搭配 ai 再处理处理图片内容。

  对比参考的大神,同样使用了 docker 运行在 cpu 环境,这里更新了版本,如下:

基本流程

流程命令

  参考文档的流程已经足够准确,这里概述一下

  1. 下载、运行 paddlepaddle​ 镜像,并进入容器终端, 版本参考: https://hub.docker.com/r/paddlepaddle/paddle/tags

    如果有支持的 gpu,选择类似 3.0.0b2-gpu-cuda12.3-cudnn9.0-trt8.6​ ​tag 的进行

     docker pull paddlepaddle/paddle:3.0.0b2
     docker run -p 9997:9997 --name ppocr -it paddlepaddle/paddle:3.0.0b2 bash
    
  2. 安装 paddlehub​:

    pip3 install paddlehub==2.4.0 --upgrade
    
  3. 下载 PaddleOCR​ 并安装依赖:

    cd /home 
    git clone https://gitee.com/paddlepaddle/PaddleOCR.git 
    cd PaddleOCR 
    pip3 install -r requirements.txt
    
  4. 下载模型:

    mkdir inference  
    cd inference 
    wget https://paddleocr.bj.bcebos.com/PP-OCRv3/chinese/ch_PP-OCRv3_det_infer.tar 
    wget https://paddleocr.bj.bcebos.com/PP-OCRv3/chinese/ch_PP-OCRv3_rec_infer.tar 
    wget https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_cls_infer.tar 
    wget https://paddleocr.bj.bcebos.com/ppstructure/models/slanet/ch_ppstructure_mobile_v2.0_SLANet_infer.tar 
    tar xf ch_ppstructure_mobile_v2.0_SLANet_infer.tar 
    for i in $(ls *.tar);do tar xvf $i;done && rm -f *.tar
    
  5. 处理 protobuf​ 报错,这有两个方式(当前版本 4.25.1)

    • 通用降低版本解决
    pip uninstall protobuf && pip install protobuf==3.20.2
    
    • 通用设定解决
    echo "export PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python" >> ~/.bashrc && source ~/.bashrc
    
  6. 安装 ocr_system​ :

    hub install deploy/hubserving/ocr_system
    

配置调整

  到目前为止,贴合默认配置。下面是可能会变动的配置

  1. 文本检测+文本方向分类+文本识别(ocr_system)​ 模型路径配置文件: deploy/hubserving/ocr_system/params.py
  2. 文本检测+文本方向分类+文本识别(ocr_system)​ 模型运行配置文件:deploy/hubserving/ocr_system/config.json​ 用于修改默认端口、配置是否允许使用 gpu、配置进程数量
  3. 表格识别服务(structure_table) ​模型路径配置文件: /deploy/hubserving/structure_table/param.py​ 这里默认是英文表格,识别中文需要改成下载的模型路径、字典文件路径

  最后就是启动服务:

  1. 容器内启动服务:

    hub serving start -m ocr_system structure_table -p 9997
    
  2. 打包镜像启动,因为必须在 /home/PaddleOCR​ 下才能使用启动命令,所以可以创建一个启动脚本或者设置 workdir

    • 使用启动脚本方式
    touch /home/PaddleOCR/userStart.sh
    echo -e "cd /home/PaddleOCR \nhub serving start -m ocr_system structure_table -p 9997" > /home/PaddleOCR/userStart.sh
    docker commit -m="描述信息" -a="作者" ppocr ppocr:test 
    docker run ppocr-test ppocr:test /home/PaddleOCR/userStart.sh
    
    • 运行时指定 workdir
    docker commit -m="描述信息" -a="作者" ppocr ppocr:test 
    docker run ppocr-test -w/home/PaddleOCR ppocr:test hub serving start -m ocr_system structure_table -p 9997
    
    • 使用Dockerfile
    docker commit -m="描述信息" -a="作者" ppocr ppocr:test 
    touch Dockerfile
    echo -e "FROM ppocr:test\nWORKDIR /home/PaddleOCR\nCMD hub serving start -m ocr_system structure_table -p 9997" > Dockerfile
    

  ‍

参考:

posted @ 2024-11-19 23:50  铁流是宝宝  阅读(9)  评论(0编辑  收藏  举报