RapidOCR
Project description
Python版RapidOCR
简介和说明
- 各个版本的ONNX模型下载地址:百度网盘 | Google Drive
- 所有常用的参数配置都在
config.yaml
下,一目了然,更加便捷 - 目前
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
部分:rec
中mobile
和server
版本,推理代码一致,直接更改配置文件中模型路径即可rec
中v2
和v3
两个版本,共用同一个推理代码。- 两版本差别仅在输入shape和模型。经过测试,采用
v3 rec模型
+[3, 48, 320]
效果最好。 - 目前配置文件
config.yaml
中(如下所示)已经改为该最优组合。
module_name: ch_ppocr_v2_rec class_name: TextRecognizer model_path: resources/models/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
- 两版本差别仅在输入shape和模型。经过测试,采用
- onnxruntime和openvino调用方式如下:
# 基于onnxruntime引擎推理 from rapidocr_onnxruntime import TextSystem # 基于openvino引擎推理 from rapidocr_openvino import TextSystem
- 值得说明的是,基于openvino推理部分中
ch_ppocr_v2_cls
部分仍然是基于onnxruntime的,原因是openvino有bug,详情见openvino/issue
使用步骤
-
下载当前下的
rapidocr_onnxruntime
/rapidocr_openvino
目录到本地 -
下载链接下的
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 │ └── 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_PP-OCRv3_rec_infer.onnx │ └── rec_dict │ └── ppocr_keys_v1.txt └── test_images ├── ch_en_num.jpg └── single_line_text.jpg
-
安装运行环境
- 基于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
- 基于onnxruntime推理所需环境安装:
-
运行示例
- 运行单元测试
cd tests pytest test_*.py
- 接口调用
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
- 运行单元测试
config.yaml
中常用参数介绍
-
Global
部分参数名称 取值范围 默认值 作用 text_score
[0, 1] 0.5 文本识别结果置信度,值越大,把握越大 use_angle_cls
bool
true
是否使用文本行的方向分类 print_verbose
bool
true
是否打印各个部分耗时信息 min_height
int
30 图像最小高度(单位是像素)
低于这个值,会跳过文本检测阶段,直接进行后续识别-
min_height
是用来过滤只有一行文本的图像(如下图),这类图像不会进入文本检测模块,直接进入后续过程。
-
-
Det
部分参数名称 取值范围 默认值 作用 use_cuda
bool
false
是否使用CUDA,加速推理 limit_side_len
- 736 限制图像边的长度的像素值 limit_type
[min, max]
min
限制图像的最小边长度还是最大边为 limit_side_len
示例解释:当limit_type=min
和limit_side_len=736
时,图像最小边小于736时,
会将图像最小边拉伸到736,另一边则按图像原始比例等比缩放。thresh
[0, 1] 0.3 图像中文字部分和背景部分分割阈值
值越大,文字部分会越小box_thresh
[0, 1] 0.5 文本检测所得框是否保留的阈值,值越大,召回率越低 max_candidates
- 1000 图像中最大可检测到的文本框数目,一般够用 unclip_ratio
[1.6, 2.0] 1.6 控制文本检测框的大小,值越大,检测框整体越大 use_dilation
bool
true
是否使用形态学中的膨胀操作,一般采用默认值即可 -
Cls
部分参数名称 取值范围 默认值 作用 cls_img_shape
- [3, 48, 192]
输入方向分类模型的图像Shape(CHW) cls_batch_num
- 6 批次推理的batch大小,一般采用默认值即可,太大并没有明显提速,效果还可能会差 cls_thresh
[0, 1]
0.9 方向分类结果的置信度 label_list
- [0, 180] 方向分类的标签,0°或者180°,该参数不能动 -
Rec
部分参数名称 取值范围 默认值 作用 rec_img_shape
- [3, 48, 320]
输入文本识别模型的图像Shape(CHW) rec_batch_num
- 6 批次推理的batch大小,一般采用默认值即可,太大并没有明显提速,效果还可能会差 keys_path
- - 文本识别模型推理所使用字典文件,始识别哪种类型文本而定(中英、日文等)
onnxruntime-gpu版推理配置
-
onnxruntime-gpu需要严格按照与cuda、cudnn版本对应来安装,具体参考文档,这一步关乎后面是否可以成功调用GPU。
$ pip install onnxruntime-gpu==1.xxx
-
更改
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
-
推理情况
- 下载基准测试数据集(
test_images_benchmark
),放到tests/benchmark
目录下。- 百度网盘 | Google Drive
- 最终目录结构如下:
tests/benchmark/ ├── benchmark.py ├── config_gpu.yaml ├── config.yaml └── test_images_benchmark
- 运行以下代码(
python
目录下运行):# CPU python tests/benchmark/benchmark.py --yaml_path config.yaml # GPU python tests/benchmark/benchmark.py --yaml_path config_gpu.yaml
- 运行相关信息汇总:(以下仅为个人测试情况,具体情况请自行测试)
- 来自zhsunlight的测试,感谢
- 设备型号:宏碁(Acer) 暗影骑士·威N50-N93游戏台式机
- CPU型号:十代i5-10400F 16G 512G SSD
- GPU型号:NVIDIA GeForce GTX 1660Super 6G
- onnxruntime-gpu: 1.11.0
- 耗时情况:
设备 总耗时(s) 平均耗时(s/img) CPU 296.8841 1.18282 GPU 646.14667 2.57429
- 来自SWHL的测试
- 设备型号:Docker
- CPU型号:-
- GPU型号:NVIDIA V100S 16G
- onnxruntime-gpu: 1.7.0
- 耗时情况:
设备 总耗时(s) 平均耗时(s/img) CPU 1079.4726 4.3001 GPU 525.8244 2.0989
- 来自zhsunlight的测试,感谢
- 下载基准测试数据集(
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
No source distribution files available for this release.See tutorial on generating distribution archives.
Built Distribution
Close
Hashes for rapidocr_onnxruntime-1.0.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6abc9556bee954204e6819698bf91b446f99ee51ac7ad9932333f848db050622 |
|
MD5 | 8dbf8ca08c2d92d48d1705575a367a89 |
|
BLAKE2b-256 | 66e7af05d833d87ddb216b5cf4384d1fcb44cd68ff0f2d59b8ce6cde638a0d45 |