RapidOCR 快速上手:5 行代码跑通离线多语言 OCR 识别
【免费下载链接】RapidOCR📄 Awesome OCR multiple programing languages toolkits based on ONNX Runtime, OpenVINO, MNN, PaddlePaddle, TensorRT and PyTorch.项目地址: https://gitcode.com/GitHub_Trending/ra/RapidOCR
RapidOCR 把 PaddleOCR 的模型转成 ONNX 等跨平台格式,装一个 Python 包就能离线跑图片文字识别,识别语言覆盖中英文等 16 种。它解决的是 PaddleOCR 模型直接部署时工程链路较长的问题:作者将模型转成 ONNX、Paddle、Torch 等格式并做了 Python、C++、Java、C# 的多端移植,降低终端设备上的推理部署成本。做本地文档数字化、截图文字提取,或在 Android 等端侧设备做识别、不想依赖云端 OCR API 的开发者,可以直接用。
30 秒看到第一份识别结果
装好后 5 行代码就能看到结果:
from rapidocr import RapidOCR engine = RapidOCR() result = engine("python/tests/test_files/black_font_color_transparent.png") print(result) result.vis("vis_result.jpg")engine 传入本地路径、URL、bytes 或 numpy 数组都行,输出 boxes(文字行四角坐标)、txts(文本)、scores(置信度);最后一行把框和文字画回原图并保存为 vis_result.jpg。
能力全景:场景与模块对照
下表把常见场景映射到仓库内对应模块,读源码时可以按图索骥:
| 场景 | 能力 | 模块路径 |
|---|---|---|
| 文字区域检测 | 定位图中文字行,输出四角坐标框 | ch_ppocr_det/ |
| 方向矫正 | 判断文字行是否倒置 180°,识别前先摆正 | ch_ppocr_cls/ |
| 文字识别 | 逐行输出文本与置信度 | ch_ppocr_rec/ |
| 多语言识别 | 16 种识别语言:中、英、日、韩、繁体中文、阿拉伯文、西里尔文等 | utils/typings.py |
| 后端切换 | onnxruntime、openvino、paddle、pytorch、tensorrt、mnn 六套推理引擎 | inference_engine/ |
| 词级定位 | 返回词框或单字符框 | cal_rec_boxes/ |
左图用默认中文模型即可识别;日文、韩文等只需切换语言参数,下面进阶部分有说明。
从零到跑通:克隆、安装与首跑
git clone https://gitcode.com/GitHub_Trending/ra/RapidOCR cd RapidOCR/python pip install -r requirements.txt onnxruntime要求 Python 3.8 以上,Linux、Windows、macOS 都支持。首次调用 engine 时会自动从 ModelScope 下载 det、cls、rec 三个模型到 models/ 目录,默认组合是 PP-OCRv6 small 的检测与识别模型加 PP-OCRv4 mobile 的方向分类模型,之后每次运行都是纯本地。如果网络访问不到 ModelScope 导致下载失败,可以用命令行入口的 download_models 子命令预下载,或把模型文件手动放入该目录。
首跑报No module named 'onnxruntime'的话,说明只装了 rapidocr 主包没装推理引擎,按上面第二条命令补装 onnxruntime 即可。
最常改的 3 个参数
完整参数在 config.yaml,日常真正会动的就下面三个:
- Rec.lang_type(默认 "ch"):决定识别模型的语言。识别日文、韩文等时改成 japan、korean 等,合法取值见 LangRec 枚举;检测端有 ch、en、multi(多语言)三档。
- Global.text_score(默认 0.5):识别置信度的过滤下限,低于该值的结果直接丢弃。漏检多就调低,误检多就调高,调用 engine 时也可以按次传入。
- Det / Rec.engine_type(默认 "onnxruntime"):按部署设备换后端,openvino 适合 Intel CPU,tensorrt 适合 NVIDIA GPU(默认启用 fp16),mnn 适合移动端。
这三个不写进配置文件也能按次覆盖,仓库还提供了命令行等价入口:
python -m rapidocr.main -img path/to/img.jpg -vis架构速览:一条识别管线如何串起来
main.py 里的 RapidOCR 类是编排层:先把图像做预处理和缩放,再依次跑 det(检测)→ cls(方向)→ rec(识别),各阶段输出传给下游。三个阶段各自懒加载模型,关掉 use_det 就整段跳过检测,也不会加载检测模型。底层 inference_engine/ 用统一接口封装六套推理后端,模型清单与 SHA256 校验值集中在 default_models.yaml,它决定了下载哪个语言、哪个版本(PP-OCRv4/v5/v6)和哪个规格(mobile、server、tiny、small、medium)的模型。
常见问题
首次运行很慢,正常吗?首次要下载 det、cls、rec 三个模型并初始化推理引擎;之后模型缓存在 models/ 目录,耗时恢复常态。
能识别哪些语言?typings.py 的 LangRec 枚举列了 16 种:中文、英文、日文、韩文、繁体中文、阿拉伯文、西里尔文、拉丁文、天城文、泰文、希腊文等;识别模型和语言字典按 language 下载,切换语言时注意模型体积会随之变化。
图里没有文字会怎样?管线返回空结果而不是报错,仓库测试目录里的 empty_black.jpg 就是覆盖这个场景的样例,配套用例在 tests/。
能用 GPU 吗?可以。onnxruntime 配置里有 use_cuda 开关,paddle、pytorch 也有 cuda 配置;docker/ 目录提供了各引擎的 GPU 镜像与一键构建脚本。
本地文档数字化、截图文字提取、端侧离线识别这几类场景,走"pip 安装 + 5 行代码"这条路径就能落地;参数细节以 config.yaml 为准,参与 Python 端开发的流程见 docs/CONTRIBUTING.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),仅供参考