PaddleOCR:百度开源的超轻量 OCR 工具套件
📖 简介
📝 详细介绍
一个让图片文字提取开箱即用的OCR工具
如果你需要在Python项目里从图片、PDF或摄像头中提取文字,PaddleOCR是目前门槛最低、文档最全的端到端方案。它把文字检测+文字识别两条管线压到一个ocr()调用里,训练和部署都带了开箱即用的模型和脚本。
GitHub 数据卡片
| 指标 | 值 |
|---|---|
| Stars | 46k+ |
| 语言 | Python(核心),C++(推理后端) |
| 协议 | Apache 2.0 |
| 最近更新 | 2025年2月(持续月度迭代) |
项目背景
百度深度学习团队在内部业务(如文档识别、发票录入、AI拍照解题)中积累了OCR工业化落地的经验后,于2020年开源了PaddleOCR。当时市面上的开源OCR要么模型笨重(检测+识别独立模型,需拼装),要么只支持英文。PaddleOCR的初衷是提供一个多语言、轻量、可直接商用的OCR工具箱,并且把训练、量化、部署整条链路都打包进一个仓库。
它的核心痛点是:开发者不需要再自己组Detection + Recognition两个模型,也不用为不同的部署环境(CPU/GPU/手机)重复适配。
核心功能解析
1. paddleocr 一键推理
最常用的接口就是导入PaddleOCR类,指定语言后直接调用。内部自动加载检测+识别模型,输出结构化结果(文本框、置信度、识别文本)。
from paddleocr import PaddleOCR
ocr = PaddleOCR(use_angle_cls=True, lang='ch')
result = ocr.ocr('sample.jpg', cls=True)
for line in result[0]:
print(line[1][0]) # 识别文本
2. 全流程可训练脚本
项目提供了独立的tools/train.py、tools/eval.py、tools/infer.py,支持对检测、识别、分类模型分别或在联合模式下微调。数据格式采用PPOCRLabel标注工具导出的标准JSON格式,不需要自己写数据加载器。
# 训练检测模型(在PaddleOCR根目录)
python tools/train.py -c configs/det/ch_ppocr_v2.0/ch_det_lite_train_v2.0.yml
3. 模型量化与端侧部署
内置Paddle-Lite导出脚本,可以将模型转换为.nb格式,在Android/iOS端运行。同时支持ONNX导出,适配其他推理后端。对于服务端,提供了paddle_inference的GPU TensorRT加速配置。
# 导出推理模型
python tools/export_model.py -c configs/rec/ch_ppocr_v2.0/rec_chinese_lite_train_v2.0.yml
-o Global.pretrained_model=./pretrain/best_accuracy Global.save_inference_dir=./inference/rec
快速上手
推荐使用Python 3.8+,安装前确保PaddlePaddle已安装(pip install paddlepaddle-gpu或CPU版)。
# 安装PaddleOCR(包含所有依赖)
pip install paddleocr
# 或者从源码安装(获取最新更新)
git clone https://github.com/PaddlePaddle/PaddleOCR.git
cd PaddleOCR
pip install -r requirements.txt
python setup.py install
# 一行命令测试
paddleocr --image_dir ./doc/imgs/11.jpg --lang ch --use_angle_cls True
第一次运行会自动下载检测、识别和方向分类模型(总共约15MB,根据语言包会再加几MB)。输出结果会打印到终端,同时生成带框的标注图。
技术亮点
轻量模型设计
PaddleOCR的检测模型基于DB(Differentiable Binarization)变体,骨干网络使用MobileNetV3或PPLCNet(百度自研轻量CNN)。识别模型是CRNN + CTC结构,但引入了STN(空间变换网络)应对不规则文字。模型通过剪枝、蒸馏和量化,在保持精度的情况下,全部模型打包后仅15MB(中英文)。
端到端管线解耦但统一
项目并不像Tesseract那样把检测和识别糅在一个二进制里,而是拆成三个独立子模型(检测→方向分类→识别)。但通过PaddleOCR类封装成单一入口,用户不需要关心内部流程。同时每个子模型都提供了独立的配置文件(YAML格式),可以单独替换或训练。
设计决策:解耦的关键是TextDetector、TextRecognizer、TextClassifier三个接口,它们共享同一个PaddlePredictor后端,确保推理链不产生冗余内存复制。
多语言支持与自动语言检测
预训练模型覆盖80种语言(包括繁体、日、韩、阿拉伯语等),通过lang参数指定。还可以开启自动语言检测(基于分类器),在未知混合语言场景下自动选择模型。这个能力在同类开源项目中属于第一梯队。
同类对比
| 项目 | 文件大小 | 支持语言 | 训练可定制 | 部署便捷性 | GitHub Stars |
|---|---|---|---|---|---|
| PaddleOCR | ~15MB(中英文) | 80种 | 完整训练+微调脚本 | pip install + 一行推理 | 46k+ |
| Tesseract OCR | ~40MB(基础包) | 100+种 | 需要训练工具(jTessBoxEditor) | 需安装系统库,Python绑定不稳定 | 65k+ |
| EasyOCR | ~80MB(含所有语言) | 80+种 | 支持微调,但文档薄弱 | pip install,但首次下载慢 | 25k+ |
| Surya(OCR) | ~300MB | 40+种 | 有限支持 | pip install,但依赖重 | 12k+ |
总结对比:Tesseract历史悠久但集成困难,EasyOCR精度略低于PaddleOCR且体积大,Surya偏向文档级OCR。PaddleOCR在轻量、易用、定制化三者中取得了最佳平衡。
总结
如果你需要一个开箱即用、能上生产、还能自己微调的OCR方案,PaddleOCR是当前最务实的选择。特别推荐给需要快速集成图片文字提取的Python后端、移动端或边缘计算开发者。
AI 项目推荐
大模型- 标签
- #OCR #文字识别 #深度学习 #百度
- 浏览
- 👁️ 8
- 发布日期
- 2026-07-30