RapidOCR 文字识别入门:三步跑通你的第一个 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 是一款开源免费、支持离线快速部署的文字识别(OCR,即从图片里提取文字)工具包,默认覆盖中英文。读完这篇文章,你会用一条命令装好它、跑通一次完整识别,并知道如何按需切换语言、推理引擎和输出格式。
快速上手:一条命令装好,跑通第一次文字识别
先准备环境:Python 3.8 以上即可,一行命令装好依赖。首次识别时模型文件会自动下载,不需要你手动管理:
pip install rapidocr onnxruntime
接下来是最小可运行示例。它只做三件事:创建识别引擎、对一张本地图片跑「检测 + 识别」、把画好文字框的结果图存到本地:
from rapidocr import RapidOCR engine = RapidOCR() result = engine("python/tests/test_files/japan.jpg") print(result) result.vis("vis_result.jpg")跑成功后,控制台会打印识别出的文字、置信度和耗时,当前目录多出一张vis_result.jpg,文字框直接画在原图上,效果一目了然。
项目里都有什么:核心目录速览
不用把整个仓库看完,日常使用只需要认准 Python 核心包 python/rapidocr/:
| 模块 | 一句话职责 | 新手是否需要关心 |
|---|---|---|
| main.py | RapidOCR 主类,串起「检测→方向分类→识别」全流程 | 需要,所有用法从这里开始 |
| ch_ppocr_det / ch_ppocr_cls / ch_ppocr_rec | 分别实现文字检测、方向分类、文字识别三个子任务 | 了解即可,默认不用动 |
| inference_engine/ | 推理引擎适配层,支持 ONNX Runtime、OpenVINO、TensorRT 等 | 想换引擎或用 GPU 时再看 |
| utils/ | 图片加载、预处理、结果转 JSON / Markdown 等工具 | 偶尔需要 |
辅助目录一行带过:python/tests/ 是测试用例和测试图片,docker/ 提供各引擎的现成镜像,docs/ 存放贡献指南等文档。
核心能力拆解:文字检测、文字识别与多语言支持
文字检测与方向分类:检测负责在整页图片里找出「文字在哪」,输出每个文字框的坐标;方向分类判断文字是横排还是竖排,竖排内容会被转正后再送去识别。这两步默认都开着,一般不用管。
文字识别:对每个裁出的文字区域跑出最终文本和置信度。结果对象自带格式转换:result.to_json()拿到坐标加文本的 JSON,result.to_markdown()直接生成带框位置的 Markdown,做文档解析时很省事。
多语言识别:默认模型识别中英文,日文、韩文、拉丁文、阿拉伯文、泰文等也都有现成模型,改一个lang_type参数就能切换。下面这张就是测试集里的日文示例图:
多推理引擎:同一套 API 底层可以跑 ONNX Runtime(默认,跨平台最省事)、OpenVINO(Intel CPU 优化)、TensorRT(NVIDIA GPU 加速)等引擎,换引擎只改配置,调用代码一行不动。
批处理友好:模型是懒加载的,第一次真正用到时才加载,你可以复用同一个 engine 实例批量喂图,配合多线程服务也没问题。
按需配置:切换识别语言、推理引擎与阈值
默认配置(见 python/rapidocr/config.yaml)已经覆盖绝大多数中英文场景,以下情况才需要动。初始化时通过params传一个字典,就能覆盖任意配置项:
| 参数 | 默认值 | 什么场景需要改 |
|---|---|---|
Rec.lang_type | ch | 识别日文、韩文等非中英文内容 |
Det.engine_type等 | onnxruntime | 想用 OpenVINO、TensorRT 加速 |
Global.use_det | true | 图片已是单行文字、只要识别时,关掉检测提速 |
Global.text_score | 0.5 | 误识别条目多时调高,漏识别时调低 |
Det.box_thresh | 0.5 | 文字框漏检或虚框多时微调 |
Global.return_word_box | false | 需要单词级而不是行级坐标 |
Global.model_root_dir | 包内 models | 想自己统一管理模型文件 |
一个典型示例——把识别模型切到日文:
engine = RapidOCR(params={ "Rec": {"lang_type": "japan"}, })也可以每次调用时临时覆盖,比如engine(img, use_det=False),不影响全局配置。
下一步
跑通之后推荐三个探索方向:一是把result.vis()或to_markdown()的输出接到你自己的业务里,试试文档解析的实际效果;二是翻翻 python/tests/ 里的测试用例,多语言、竖排文字、EXIF 旋转等边缘场景都有现成示例可参考;三是识别不准时,参考项目文档确认支持的模型列表,再切换lang_type或模型版本。遇到问题可以去仓库的 Issue 区提问,附上图片与配置信息,维护者通常会很快响应。
【免费下载链接】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),仅供参考