PaddlePaddle/PaddleOCR · 上手攻略
- 仓库:PaddlePaddle/PaddleOCR
- 链接:https://github.com/PaddlePaddle/PaddleOCR
- 分类:multimodal(文档 OCR / 文档解析)
- 作者:Jay
- 更新:2026-07-07
是什么
PaddleOCR 是百度飞桨(PaddlePaddle)团队开源的多功能 OCR 与文档解析工具包,GitHub Stars 超 8.4 万,被 Dify、RAGFlow、Cherry Studio 等主流项目深度集成。它不只是一套光学字符识别引擎,更是一个覆盖"图片→结构化数据"完整流程的文档 AI 基础设施。
当前稳定版本为 PaddleOCR 3.6.0(2026-05-28),包含三大核心模块:
| 模块 | 定位 | 适用场景 |
|---|---|---|
| PP-OCRv6 | 超轻量文字识别(检测+识别端到端) | 通用图片、截图、身份证、票据 |
| PaddleOCR-VL | 视觉-语言大模型文档解析(0.9B) | 复杂文档、表格、公式、多语言 |
| PP-StructureV3 | 文档结构化(版面分析+表格+公式) | PDF 整页解析、论文、报告 |
解决什么问题
- 图片/PDF → 结构化文本:将扫描件、照片、截图转化为可编辑文本或 JSON
- 多语言文档处理:支持 100+ 语言,单一模型覆盖中英日韩等主流语言
- 复杂文档解析:表格、公式、印章、古文、稀有字符
- 与 LLM 无缝对接:输出 Markdown / JSON,直接喂给 RAG 或 Agent 流水线
快速安装
环境要求
- Python ≥ 3.8(建议 3.10+)
- PaddlePaddle ≥ 3.1.0
- CUDA 11.2+(GPU 推理,推荐)/ 仅 CPU 亦可
安装步骤
# 1. 安装 PaddlePaddle(GPU 版,以 CUDA 11.8 为例)
pip install paddlepaddle-gpu==3.1.1 -i https://mirror.baidu.com/pypi/simple
# 2. 安装 PaddleOCR(核心包)
pip install "paddleocr>=3.6.0"
# 3. 分离依赖(可选,仅基础文字识别不需要全文安装)
# 基础识别:无需额外安装
# 文档解析功能:额外安装
pip install paddleocr[layout] paddleocr[table] paddleocr[formula]
⚠️ 注意:百度镜像源 (
mirror.baidu.com) 在部分网络环境下可用,如遇超时可换回官方 PyPI:pip install paddlepaddle-gpu==3.1.1 -i https://pypi.org/simple
核心用法
1. PP-OCRv6:通用文字识别(最常用)
from paddleocr import PaddleOCR
# 初始化(首次运行自动下载模型,约 150MB)
ocr = PaddleOCR(
use_angle_cls=True, # 自动旋转纠正
lang='ch', # 'ch'/'en'/'japan'/'korean',或 'multi_lang'(50语言)
use_gpu=True, # GPU 加速,设为 False 则用 CPU
show_log=False, # 关闭日志
)
# 识别单张图片
result = ocr.ocr("path/to/image.jpg", cls=True)
# 遍历结果
for line in result[0]:
box, (text, confidence) = line
print(f"文字: {text}, 置信度: {confidence:.2f}")
# 输出示例:文字: 百度, 置信度: 0.98
命令行快速调用(无需写代码):
# 图片文件
paddleocr --image_dir ./demo.jpg --lang ch
# 文件夹批量处理
paddleocr --image_dir ./images/ --lang ch --batch_size 10
# 输出为 JSON
paddleocr --image_dir ./demo.jpg --lang ch --use_json=True
2. PaddleOCR-VL:文档理解(2026 版旗舰)
# 文档整页解析,返回 Markdown
from paddleocr import PaddleOCR
ocr_vl = PaddleOCR(
use_ocr_vl=True, # 启用 PaddleOCR-VL 模式
use_gpu=True,
lang='ch',
)
# 图片路径或 URL
result = ocr_vl.ocr("path/to/document.jpg", cls=True)
# 返回结构化结果(文字块、表格位置、公式等)
for line in result[0]:
print(line)
⚠️ 注意:PaddleOCR-VL 需要更大的显存(建议 ≥ 4GB GPU 显存),tiny 模型可降至 ~2GB。版本 3.6.0 中模型已上传 HuggingFace,可从
PaddlePaddle/PaddleOCR-VL-1.6直接加载。
3. PP-StructureV3:复杂文档结构化
from paddleocr import PaddleOCR
from ppstructure import analyze_documents
# 分析文档(版面 + 表格 + 公式)
results = analyze_documents(
"path/to/paper.pdf",
ocr=True,
layout=True,
table=True,
formula=True,
)
# results 包含:
# - html:原始版面结构
# - markdown:融合文字+表格+公式的 Markdown
# - json:完整坐标与属性
4. Python API 进阶:批量 + 输出控制
from paddleocr import PaddleOCR
from tqdm import tqdm
ocr = PaddleOCR(use_angle_cls=True, lang='ch', use_gpu=True, show_log=False)
import os
image_dir = "./docs/"
outputs = []
for img_name in tqdm(os.listdir(image_dir)):
if img_name.endswith(('.jpg', '.png', '.pdf')):
result = ocr.ocr(os.path.join(image_dir, img_name))
outputs.append({
"file": img_name,
"texts": [line[1][0] for line in result[0]] if result[0] else [],
})
# 导出 JSON
import json
with open("ocr_results.json", "w", encoding="utf-8") as f:
json.dump(outputs, f, ensure_ascii=False, indent=2)
典型适用场景
| 场景 | 推荐模块 | 说明 |
|---|---|---|
| RAG 文档注入 | PP-OCRv6 + PP-StructureV3 | 将 PDF/扫描件转为 Markdown/JSON 供向量检索 |
| 身份证/银行卡识别 | PP-OCRv6 (ch) | 票据、证件、验证码识别 |
| 多语言文档处理 | PaddleOCR-VL (multi_lang) | 跨境单据、合同、论文 |
| 表格密集型文件 | PP-StructureV3 | 财报、统计表、Excel 导出 |
| Agent 工具调用 | PP-OCRv6 API | 作为 LLM Agent 的"眼睛"读取图片/截图 |
| 低资源/边缘部署 | PP-OCRv6 tiny (1.5M) | 树莓派、移动端、嵌入式设备 |
坑与注意
-
首次运行慢:首次调用
PaddleOCR()会自动下载模型文件(100-300MB),需确保网络畅通或提前手动下载。 -
CUDA 版本不匹配:
paddlepaddle-gpu对 CUDA 版本敏感。如果报CUDA error,确认nvcc --version与安装的 paddlepaddle-gpu 版本对应(推荐 paddlepaddle-gpu==3.1.1 + CUDA 11.8)。 -
CPU 推理速度:完整 PP-OCRv6 在 CPU 上单图约 0.5-2s,GPU 可降至 0.1s 以内。批量处理优先用 GPU。
-
表格识别精度:PP-StructureV3 的表格识别对无线框表格效果较差,建议配合后处理校验。
-
PaddleOCR-VL 显存:1.6B 参数版(VL-1.6)需较大显存;服务器部署建议用
medium或small档位。 -
模型下载源:默认从百度源下载模型,HuggingFace 镜像为
https://hf-mirror.com,可在huggingface.co/PaddlePaddle手动下载。 -
Docker 部署:官方提供 PaddleOCR Docker 镜像,避免环境依赖问题:
bash docker pull paddlepaddle/paddleocr:latest docker run -it --rm -v $(pwd):/workspace paddlepaddle/paddleocr python your_script.py
与同类对比
| 方案 | Stars | 优势 | 劣势 |
|---|---|---|---|
| PaddleOCR | 84k | 功能最全(检测+识别+版面+公式+表格)、中文优化、100+语言 | 依赖 PaddlePaddle 生态,部分场景比 EasyOCR 重量 |
| EasyOCR | 26k | 纯 PyTorch、轻量、支持 80+ 语言 | 精度低于 PaddleOCR,文档解析能力弱 |
| TrOCR (Microsoft) | — | 与 GPT-4V 集成好 | 仅支持印刷体,中文弱,需 Azure API |
| RapidOCR | 3k | 跨平台(PC/移动/小程序)、超轻量 | 复杂文档解析能力有限 |
| PaddlePaddle 自己的 PaddleX | — | Low-code 拖拽式 | 定位不同,偏无代码平台 |
一句话总结:如果你需要的是"把各种图片/PDF 变成 LLM 能用的结构化数据",PaddleOCR 是开源最优解;如果只是简单截图文字提取,EasyOCR 更轻量。
一句话推荐结论
PaddleOCR 是当前开源生态中功能最完整、精度最高的文档 OCR + 解析方案,尤其适合 RAG/Agent 流水线中"非结构化文档 → LLM 可读数据"这一核心环节,推荐所有做文档 AI 的开发者优先掌握。