资讯动态

RapidOCR 实时部署:按硬件选引擎,把单张识别压到 10ms 内

发布时间:2026/9/20 21:38:23 来源:尧图企业网站定制
RapidOCR 实时部署按硬件选引擎把单张识别压到 10ms 内【免费下载链接】RapidOCR Awesome OCR multiple programing languages toolkits based on ONNX Runtime, OpenVINO, MNN, PaddlePaddle, TensorRT and PyTorch.项目地址: https://gitcode.com/GitHub_Trending/ra/RapidOCRRapidOCR 是一个跨平台、轻量级的 OCR 库一套代码同时支持 ONNX Runtime、OpenVINO、TensorRT、PyTorch、PaddlePaddle、MNN 六个推理引擎开箱即用地完成文字检测、方向分类和识别。这篇短文回答一个实际问题在实时场景里延迟到底卡在哪、该选哪个引擎、哪些参数值得动。一、先看耗时都花在了哪三段上拿移动端拍照识别文档举例用户拍完照片期望几百毫秒内看到结果。实际测下来超时的原因往往不是某一个模型慢而是 OCR 这条链路天然是三段式检测det先找出图里所有文字区域的位置框方向分类cls判断每个文本行是正置还是 180° 倒置48×192 的小图开销不大但多一段就是多一段识别rec把裁剪出的文本行喂给识别模型输出文字。三段各自加载一个模型、各自跑一次推理前处理缩放、裁剪又占掉一部分。任何一环拖后腿总耗时都会跟着拖。RapidOCR 的思路是对每一环都能单独优化而不是只盯着识别模型。顺带一提上面这张日文测试图就出自仓库自带的测试集多语言识别是它的日常能力。三段的取舍都有独立开关use_det、use_cls、use_rec。如果你的业务里文本方向已知比如都是横排文档关掉分类这一环就能直接省下一段推理检测框已经由上游给定时也可以跳过 det。能少跑一段就少跑一段。二、按硬件选引擎三条规则引擎是每个环节独立指定的Det、Cls、Rec三段各自有engine_type默认全是 onnxruntime见 python/rapidocr/config.yaml。选型不必纠结按硬件对号入座NVIDIA GPU 选 TensorRT。它把模型编译成 GPU 专用的 engine 文件支持 FP16 和 INT8 精度INT8 是量化用 8 位整数近似原来 32 位浮点的计算精度略损但计算更快、更省。use_fp16默认开启编译后的 engine 会缓存下来第二次启动直接加载不重复编译。Intel CPU 选 OpenVINO。它是 Intel 官方优化栈对自家 CPU 的指令集有额外优化通常比通用 CPU 路径快一截。其他情况选 ONNX Runtime。它是覆盖面最广的引擎并且会自动探测可用的加速路径NVIDIA 卡走 CUDA、Windows 显卡走 DirectML、华为 NPU 走 CANN、苹果芯片走 CoreML探测不到就回落到 CPU实现见 python/rapidocr/inference_engine/onnxruntime/provider_config.py。PyTorch 和 PaddlePaddle 引擎主要用于换模型、换词表这类开发调试场景上线推理一般不用它们MNN 面向移动端部署。移动端侧的说明可以看 android/README.mdDocker 各引擎镜像在 docker/ 目录下都有对应 Dockerfile。三、想再快一点这几个旋钮可以拧各引擎的常用参数都集中在EngineConfig里常用的有这么几个参数引擎作用什么时候调intra_op_num_threads/inter_op_num_threadsONNX Runtime控制单算子内部、算子之间的并发线程数单张图延迟优先一般从核心数的一半开始试enable_cpu_mem_arenaONNX Runtime开关 CPU 内存池复用它减少重复分配连续处理多张图的批量服务inference_num_threadsOpenVINO推理并发线程数同上performance_hintLATENCY / THROUGHPUTOpenVINO声明优化目标延迟优先还是吞吐优先实时交互选 LATENCY批量吞吐选 THROUGHPUTuse_fp16/use_int8TensorRT数值精度档位有 NVIDIA GPU 时默认开启 FP16max_side_len全局预处理图片最长边上限超过就等比缩小输入图普遍偏大时这里收益最大ONNX Runtime 侧的图优化把图里可合并的算子合并、常量提前算掉减少一次推理的计算量在默认配置里就已经开到最大档源码见 python/rapidocr/inference_engine/onnxruntime/main.py。想限制线程时这样配EngineConfig: onnxruntime: intra_op_num_threads: 4另外两个不显眼但很值的点。一个是输入尺寸检测环节的计算量和输入面积成正比默认max_side_len是 2000如果你的图普遍是 4000 像素的手机原图把它降到 1000~1500检测耗时接近减半文字又不至于糊。另一个是批量识别环节默认一次最多处理 6 张文本行rec_batch_num短文本行多的图这一项能明显摊薄耗时。四、上线前照这份清单走一遍把前面的内容收敛成一份可以直接照做的清单选引擎NVIDIA GPU 选 TensorRTIntel CPU 选 OpenVINO其余选 ONNX Runtime模型预下载首次运行会自动下载模型并校验 SHA256上线前跑一次空请求把模型拉进缓存目录model_root_dir避免线上用户替你承担下载时间确认加速路径真的生效ONNX Runtime 会记录当前实际使用的 provider日志里没看到 CUDA 之类字样说明还在 CPU 上跑按场景裁环节方向已知就关use_cls有现成检测框就关use_det预热一次各引擎的首次推理包含编译、缓存、内存分配等一次性开销计时前先跑一张图热身验证用仓库自带的测试集python/tests/test_files/覆盖多语言、竖排、透明底等场景端到端计时一轮别只测单环节。下一步建议挑三张自己业务的典型图片每个候选引擎各计时一轮把耗时最长的那一环找出来再针对它调对应的参数。【免费下载链接】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),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价