ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

RapidOCR 多引擎 OCR 实战:如何把 6 个推理后端接进同一套代码

RapidOCR 多引擎 OCR 实战:如何把 6 个推理后端接进同一套代码 RapidOCR 多引擎 OCR 实战如何把 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 机器、移动设备、NVIDIA 显卡各有各的推理栈。RapidOCR 是一款开源多引擎 OCR 工具包它把 PaddleOCR 的检测、分类、识别模型转成 ONNX 等便携格式再用统一接口接上 ONNX Runtime、OpenVINO、PyTorch、PaddlePaddle、TensorRT、MNN 六种推理后端pip 装上就能跑默认支持中英文混排识别。能力与数字一览它能做到什么程度维度具体数字推理后端6 种onnxruntime / openvino / torch / paddle / tensorrt / mnn且检测、分类、识别三个阶段可分别指定模型版本PP-OCRv4 / v5 / v6 三代v6 为多语言模型单文件覆盖 50 种语言模型档位检测与识别提供 tiny / small / medium 三档默认 small默认参数text_score 0.5输入图边长压缩在 30~2000 px 之间方向分类置信度阈值 0.9运行平台Linux / Windows / macOS另有 C、Java、C#、Android、iOS 组件RapidOCR 默认中英文模型可直接识别的高对比度文本样例三分钟安装步骤让 RapidOCR 跑起来pip install rapidocr onnxruntimefrom rapidocr import RapidOCR engine RapidOCR() result engine(python/tests/test_files/black_font_color_transparent.png) print(result.txts) # 识别出的文本 print(result.elapse_list) # 检测/分类/识别各阶段耗时 result.vis(vis_result.jpg)首次运行会自动下载检测、分类、识别三个模型逐个做 SHA256 校验后缓存到本地第二次起就是纯本地离线推理。内网环境可以先用download_models命令把模型拉全。输入除了本地路径也接受 URL 和 ndarray不想写 Python 的话命令行rapidocr -img xx.jpg -vis也能直接出结果。它是怎么工作的引擎层与模型管理的设计动机核心思路是模型和运行方式解耦。模型本质上只是文件怎么执行交给推理库。六种引擎在代码里都是继承同一抽象接口InferSession的薄适配层由get_engine()按名字分发入口在python/rapidocr/inference_engine/base.py。所以换后端只是改配置字段业务代码一行不动。检测、分类、识别拆成三段动机也在这三段是三个不同的模型计算特征完全不同可以各用各的引擎——比如检测走 onnxruntime、识别走 TensorRT——任意一段还能直接关掉。python/rapidocr/main.py里对三个模型做了懒加载哪一段第一次被用到才加载哪一段避免没必要的初始化开销。模型清单集中在python/rapidocr/default_models.yaml按引擎 × 版本 × 任务 × 语言 × 档位的组合登记模型下载地址与 SHA256。选哪个文件这件事由python/rapidocr/utils/model_resolver.py接管语言别名它也处理传ja会自动归一到japan。想搞懂当前配置到底加载了哪几个模型读这两个文件就够。选 ONNX 做通用格式的原因同样简单一种文件格式能被六个引擎消费语言维度则靠 v6 的多语言模型兜住不需要每种语言单独备一份文件。三个典型部署场景与调优关键点场景一CPU 服务器批量处理文档。调线程和内存。onnxruntime 侧是intra_op_num_threads/inter_op_num_threads默认 -1 表示自动配合enable_cpu_mem_arena减少反复申请内存的开销换成 OpenVINO对应的旋钮是inference_num_threads、performance_hint单张低延迟选 LATENCY批量吞吐选 THROUGHPUT和num_streams。注意手动填的线程数如果超过 CPU 核数会被直接忽略别指望无脑拉满调参前先看elapse_list里哪一段耗时高对症下药。场景二NVIDIA GPU 整机加速或按阶段混搭引擎。需要加速的阶段把engine_type改成 tensorrt 即可FP16 默认开启INT8 可选引擎文件支持缓存不必每次启动重新构建。想整体切换后端用 params 覆盖配置engine RapidOCR(params{ Det.engine_type: openvino, Rec.engine_type: openvino, EngineConfig.openvino.performance_hint: THROUGHPUT, })全部可调字段和默认值在python/rapidocr/config.yaml容器化环境仓库自带各后端的 Dockerfilemake build-onnxruntime-cpu一条命令构建加测试。场景三多语言文本与旋转文字。v6 的检测和识别是多语言模型一个文件覆盖 50 种语言调用时指定语言代码即可比如params{Rec.lang_type: japan}别名ja、jp都能认。RapidOCR 对日文文本的识别测试样例旋转、倒置的文字交给分类阶段处理它做 0° / 180° 两分类置信度超过 0.9 就自动把图片转回正向再送识别。RapidOCR 对倒置180° 旋转文本的测试样例注意识别出的文字会被text_score默认 0.5过滤漏检多就调低它误检多就调高需要词级定位的场景开启return_word_box可以拿到单词级别的框。写在最后RapidOCR 是一个重移植性、轻单点算法的多引擎离线 OCR 工具包模型转成跨平台格式执行权交给六个后端一份配置管到底。如果你的 OCR 要落在多种硬件形态的机器上又不想为每种硬件维护一套部署它值得第一个试。源码可通过git clone https://gitcode.com/GitHub_Trending/ra/RapidOCR获取用法看python/README.md容器部署看docker/README.md。【免费下载链接】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),仅供参考
返回列表