Files
rapidocr/python/README.md
T
2022-06-30 22:08:54 +08:00

6.7 KiB
Executable File
Raw Blame History

Python版RapidOCR

  • 各个版本的ONNX模型下载地址:百度网盘 | Google Drive
  • 所有常用的参数配置都在config.yaml下,一目了然,更加便捷
  • 每个独立的模块下均有独立的config.yaml配置文件,可以单独使用
  • det部分:
    • det中mobile和server版,共用一个推理代码,直接更改配置文件中模型路径即可
    • det中v2和v3两个版本代码,共用一个推理代码,直接更改配置文件中模型路径即可
      Det:
          module_name: ch_ppocr_v2_det
          class_name: TextDetector
          model_path: resources/models/ch_PP-OCRv3_det_infer.onnx
      
  • rec中mobile和server版本,共用一个推理代码,直接更改配置文件中模型路径即可
  • onnxruntime和OpenVINO调用方式如下:
    # 基于onnxruntime引擎推理
    from rapidocr_onnxruntime import TextSystem
    
    # 基于openvin引擎推理
    from rapidocr_openvino import TextSystem
    
  • 值得说明的是,基于openvino推理部分中ch_ppocr_v2_cls部分仍然是基于onnxruntime的,原因是openvino有bug,详情见openvino/issue

使用步骤

  1. 下载当前下的rapidocr_onnxruntime/rapidocr_openvino目录到本地

  2. 下载链接下的resources目录(包含模型和显示的字体文件)

    • 下载链接:百度网盘 | Google Drive
    • resources/models下模型搭配已经为最优组合(速度和精度平衡)
      ch_PP-OCRv3_det + ch_ppocr_mobile_v2.0_cls +  ch_ppocr_mobile_v2.0_rec
      
    • 最终目录如下:
      .
      ├── README.md
      ├── config.yaml
      ├── test_demo.py
      ├── rapidocr_onnxruntime
      │   ├── __init__.py
      │   ├── ch_ppocr_v2_cls
      │   ├── ch_ppocr_v2_det
      │   ├── ch_ppocr_v2_rec
      │   ├── ch_ppocr_v3_rec
      │   └── rapid_ocr_api.py
      ├── rapidocr_openvino
      │   ├── __init__.py
      │   ├── README.md
      │   ├── ch_ppocr_v2_cls
      │   ├── ch_ppocr_v2_det
      │   ├── ch_ppocr_v2_rec
      │   └── rapid_ocr_api.py
      ├── requirements.txt
      ├── resources
      │    ├── fonts
      │    │   └── msyh.ttc
      │    ├── models
      │    │   ├── ch_PP-OCRv3_det_infer.onnx
      │    │   ├── ch_ppocr_mobile_v2.0_cls_infer.onnx
      │    │   └── ch_ppocr_mobile_v2.0_rec_infer.onnx
      │    └── rec_dict
      │        ├── en_dict.txt
      │        ├── japan_dict.txt
      │        ├── korean_dict.txt
      │        └── ppocr_keys_v1.txt
      └── test_images
          ├── det_images
          └── rec_images
      
  3. 安装运行环境

    • 基于onnxruntime推理所需环境安装:
      pip install onnxruntime>=1.7.0
      
      pip install -r requirements.txt -i https://pypi.douban.com/simple/
      
    • 基于OpenVINO推理所需环境安装:
      # Windows端
      pip install openvino==2022.1.0
      
      pip install -r requirements.txt -i https://pypi.douban.com/simple/
      
    • Note: 在Windows端,Shapely库可能自动安装会有问题,解决方案参见Q15
  4. 运行示例

    • 接口调用
      import cv2
      
      # 基于onnxruntime引擎推理
      from rapidocr_onnxruntime import TextSystem
      
      # 基于OpenVINO引擎推理
      # from rapidocr_openvino import TextSystem
      
      config_path = 'config.yaml'
      text_sys = TextSystem(config_path)
      
      image_path = r'test_images/det_images/ch_en_num.jpg'
      img = cv2.imread(image_path)
      dt_boxes, rec_res = text_sys(img)
      print(rec_res)
      
    • 直接运行test_demo.py,可直接可视化查看结果。
      python test_demp.py
      
    • rec部分,如果想要使用PPOCR-v3的话,需要将config.yaml中的Rec部分改为如下:
      module_name: ch_ppocr_v3_rec
      class_name: TextRecognizer
      model_path: resources/models/PPOCRv3/ch_PP-OCRv3_rec_infer.onnx
      
      rec_img_shape: [3, 48, 320]
      rec_batch_num: 6
      keys_path: resources/rec_dict/ppocr_keys_v1.txt
      

config.yaml中常用参数介绍

参数名称 建议取值范围 默认值 作用
box_thresh [0, 1] 0.5 文本检测所得框是否保留的阈值,值越大,召回率越低
unclip_ratio [1.6, 2.0] 1.6 控制文本检测框的大小,值越大,检测框整体越大
text_score [0, 1] 0.5 文本识别结果置信度,值越大,把握越大
use_cuda false 是否使用CUDA,加速推理

onnxruntime-gpu版推理配置

  1. onnxruntime-gpu需要严格按照与cuda、cudnn版本对应来安装,具体参考文档,这一步关乎后面是否可以成功调用GPU。

    $ pip install onnxruntime-gpu==1.xxx
    
  2. 更改config.yaml中对应部分的参数即可,详细参数介绍参见官方文档。

    use_cuda: true
    CUDAExecutionProvider:
        device_id: 0
        arena_extend_strategy: kNextPowerOfTwo
        gpu_mem_limit: 2 * 1024 * 1024 * 1024
        cudnn_conv_algo_search: EXHAUSTIVE
        do_copy_in_default_stream: true
    
  3. 推理时间粗略对比

    推理方式 推理图像数目 耗费时间(s/张)
    CPU 46张图像 191 s
    GPU 46张图像 52.38 s