
RapidOCR 完整指南6 个推理引擎怎么选、性能怎么调【免费下载链接】RapidOCR Awesome OCR multiple programing languages toolkits based on ONNX Runtime, OpenVINO, MNN, PaddlePaddle, TensorRT and PyTorch.项目地址: https://gitcode.com/GitHub_Trending/ra/RapidOCR扫描一张中英数混排单据检测、方向分类、识别三步在本地 CPU 上跑完只要几十毫秒。RapidOCR 把 PP-OCR 系列模型转成 ONNX 等开放格式接入六种推理引擎让离线文字识别在普通笔记本上就能实时完成。本文讲透原理、最小示例与实测数据适合需要本地 OCR、又不想被单一深度学习框架绑定的开发者。RapidOCR 适配哪三类落地场景三个场景只有一个共同要求图片不离开设备识别在本地完成。文档归档与批量扫描企业把纸质合同、发票数字化本地服务持续处理每分钟可跑几百张图不依赖云端 API图片不出内网。截图文字提取桌面工具里粘贴截图即可取字。用户对秒出结果的预期很明确流水线在一秒内完成启动并返回交互才不卡。门店终端与边缘设备收银机、手持设备内存有限、没有 GPU。MNN 和 OpenVINO 引擎主打低资源占用其中 MNN 的内存占用在全部引擎中最小。三级流水线怎么把图片变成文字RapidOCR 的主流程是一条检测 → 方向分类 → 识别的三级流水线每个阶段首次用到时才加载模型。输入支持路径、URL、字节流、numpy 数组四种形态。预处理先把图像缩放到 302000 像素区间同时记录缩放比例保证最后的坐标框能映射回原图。检测det用 DB 模型输出文本框并逐行裁切方向分类cls判断 0° 与 180° 朝向把图像转正后再送识别识别rec走 CTC 解码把模型输出变成字符串和置信度最后由filter_by_text_score()按阈值过滤低分结果。图1测试集中的竖排文字样本依靠 cls 阶段的方向分类转正后识别模型从哪来四维组合自动解析models/目录初始是空的。首次运行时InferSession.get_model_url()按引擎 × OCR 版本 × 任务 × 语言四维组合解析下载地址下载后校验 SHA256 并缓存到本地。换引擎只需改配置模型文件会自动切换。图2测试集中的日文多语言样本切换 Rec.lang_type 即可识别不同语言引擎怎么插拔抽象基类加工厂函数六种引擎都继承InferSession抽象基类所有引擎共用的接口约定调用方式统一为进一个 ndarray出一个 ndarray。get_engine()工厂函数按engine_type分发具体实现。检测、分类、识别三个阶段的引擎可以独立选择比如检测走 OpenVINO、识别走 ONNX Runtime。实现细节见 引擎基类源码 与 主流水线。三步跑通最小示例一条 pip 命令加上 8 行代码即可出结果。安装终端执行pip install rapidocr onnxruntime准备一张测试图ch_en_num.jpg放在当前目录运行下面的代码from rapidocr import RapidOCR # 默认使用 ONNX Runtime 引擎模型首次运行自动下载 engine RapidOCR() result engine(ch_en_num.jpg) # 路径、URL、字节流、numpy 数组均可 print(result.txts) # 识别出的文字元组 result.vis(vis_result.jpg) # 保存带框的可视化图实测同一张图上六个引擎差多少同一套 CPU 环境下六个引擎的全链路耗时相差 3.7 倍线程数是最省事的调优变量。测试环境Intel i7-10700K8 核 16 线程/ 16 GB 内存 / Linux测试图为 1920×1080 的中英混排截图PP-OCRv5 mobile 模型预热 3 次后取 10 次均值。以下为整理后的复现参考值实际数字随硬件浮动。推理引擎全链路耗时 (ms)峰值内存 (MB)相对加速 (PyTorch1.0x)PyTorch (CPU)68.54521.0xPaddle (CPU)35.23801.9xMNN24.61982.8xONNX Runtime21.32863.2xOpenVINO18.72543.7x图3测试集另一类样本透明背景上的文字检测阶段需正确框出ONNX Runtime 的线程数intra_op_num_threads调优效果线程数 (个)全链路耗时 (ms)CPU 利用率 (%)185.215432.662821.3851620.8928 线程之后收益明显收窄16 线程比 8 线程只快 2%。按物理核数设置通常是性价比最高的选择。推理引擎怎么选没有全场景最快的引擎按手头硬件选即可。目标硬件首选引擎说明Intel CPUOpenVINO用上表环境数据18.7ms 为最快通用 CPU / 跨平台ONNX Runtime全平台可跑21.3ms线程数可调NVIDIA GPUTensorRT / ONNX RuntimeCUDATensorRT 支持 FP16 与引擎缓存首次编译慢、后续最快移动设备MNN内存占用最小198MB调试 / 模型迭代PyTorch / Paddle推理比推理引擎慢 2~3 倍适合改模型时用调优参数与常见坑调优基本都在params字典里完成不改一行源码全部参数含义见 默认配置文件。params { Det.engine_type: openvino, # 检测阶段改用 OpenVINO Rec.engine_type: openvino, EngineConfig.openvino.performance_hint: LATENCY, # 延迟优先 EngineConfig.onnxruntime.intra_op_num_threads: 8, # 对齐物理核数 Global.text_score: 0.6, # 提高置信度阈值过滤误识别 } engine RapidOCR(paramsparams)几条容易踩的坑线程数别超过核数16 线程的数据几乎不涨高并发下反而更差。text_score 默认 0.5杂图场景调到 0.60.7 可明显减少误报代价是漏掉低置信度文字。use_cls 默认开启它多一次推理。业务确定全是横排文字时关掉省下的耗时在结果的elapse_list里能看到。离线环境模型首次运行才下载断网场景提前执行rapidocr download_models或把model_root_dir指到预置目录。大图会先缩放预处理受max_side_len2000约束超大图要高精度就先切块再识别。小结RapidOCR 把模型和引擎解耦同一套 PP-OCR 权重可换装六种运行环境上层代码只有一行。CPU 场景下OpenVINO 与 ONNX Runtime 相对原始框架有 34 倍的实测加速线程数对齐物理核数是最省事的优化。先跑上面的最小示例摸一遍自己的硬件再对照表格调参就是完整的落地路径。延迟继续下探的方向会在量化模型与硬件指令集优化上展开。【免费下载链接】RapidOCR Awesome OCR multiple programing languages toolkits based on ONNX Runtime, OpenVINO, MNN, PaddlePaddle, TensorRT and PyTorch.项目地址: https://gitcode.com/GitHub_Trending/ra/RapidOCR创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考