跳到正文

目录

PaddleOCR:全球领先 OCR 工具包与文档 AI 引擎完全指南

PaddleOCR:全球领先 OCR 工具包与文档 AI 引擎使用指南

§1 学习目标

完成本文档后,你将能够:

  • ✅ 理解 PaddleOCR 的定位与设计理念
  • ✅ 掌握 PaddleOCR 的核心功能与使用方法
  • ✅ 部署和配置 PaddleOCR 开发环境
  • ✅ 使用 PP-OCR 系列进行文本识别
  • ✅ 使用 PaddleOCR-VL 进行文档智能解析
  • ✅ 使用 PP-StructureV3 进行文档结构化
  • ✅ 优化推理性能和生产部署
  • ✅ 集成到 RAG 和 Agent 应用

§2 项目概述

2.1 什么是 PaddleOCR?

PaddleOCR(GitHub 仓库)是百度飞桨团队开发的全球领先 OCR 工具包与文档 AI 引擎,可将 PDF 文档和图像转换为结构化的、LLM 可用的数据(JSON/Markdown),具有行业领先的准确率。

官方描述:

PaddleOCR converts PDF documents and images into structured, LLM-ready data (JSON/Markdown) with industry-leading accuracy. With 70k+ Stars and trusted by top-tier projects like Dify, RAGFlow, and Cherry Studio, PaddleOCR is the bedrock for building intelligent RAG and Agentic applications.

官网:paddleocr.com

2.2 核心数据

指标数值
Stars74k (74,013)
Forks10.1k (10,100)
Watchers531
提交数6,861
分支34
Tags29
Releases29 (latest: v3.4.0)
贡献者293
许可证Apache-2.0

2.3 语言分布

语言占比
Python76.8%
C++14.1%
Shell5.4%
Java1.2%
Dockerfile0.8%
CMake0.4%

2.4 发展历程

日期版本重要更新
2026.01.29v3.4.0PaddleOCR-VL-1.5 (0.9B VLM) 发布,支持 111 种语言,OmniDocBench 94.5% 准确率
2025.10.16v3.3.0发布
2025.08.21v3.2.0发布
早期v2.x-v3.xPP-OCR 系列持续迭代

§3 核心功能详解

3.1 智能文档解析(LLM-Ready)

核心理念:将混乱的视觉内容转换为 LLM 时代的结构化数据。

3.1.1 PaddleOCR-VL-1.5(SOTA 0.9B VLM)

最新旗舰模型,用于文档解析:

指标数值
参数量0.9B
OmniDocBench 准确率94.5%
支持语言111 种(含藏文、孟加拉文等)

解决的五大"现实世界"挑战:

挑战说明
Warping(扭曲)曲面、卷曲文档
Scanning(扫描)扫描仪产生的阴影、噪点
Screen Photography(屏幕拍照)手机拍摄屏幕的摩尔纹、反光
Illumination(光照)不均匀光照、过曝、欠曝
Skewed(倾斜)任意角度倾斜

输出格式:Markdown 和 JSON,支持标题层级识别、表格结构、坐标信息。

3.1.2 PP-StructureV3

文档结构化解析引擎:

能力说明
表格识别表格检测、结构识别、Cell 坐标
文本坐标精确的文字位置信息
版面分析段落、标题、图像区域划分
公式识别LaTeX 公式提取
印章识别Seal Recognition(新增)
长文档处理跨页表格自动合并、标题层级识别

与 PaddleOCR-VL 的区别:

特性PaddleOCR-VLPP-StructureV3
输出粒度Markdown/JSON更精细的坐标信息
适用场景通用文档需要精确位置信息

3.2 通用文本识别(Scene OCR)

全球高速多语言文本识别的黄金标准。

3.2.1 PP-OCRv5

单模型多语言解决方案:

能力说明
语言支持100+ 种语言混合识别
场景覆盖证件、发票、街景、书籍、工业组件
准确率提升相比上一代提升 13%
效率保持保持 PaddleOCR 一贯的"极致效率"

支持的语言类型:

  • 中文、英文、日文、韩文等主流语言
  • 藏文、蒙文等少数民族语言
  • 阿拉伯文、波斯文等 RTL 语言

3.2.2 复杂场景支持

场景能力
身份证识别正面/背面、少数民族文字
票据识别发票、收据、银行卡
车牌识别国内车牌、国际车牌
街景文字复杂背景、多语言混合
手写文字多种手写风格

3.3 开发者生态

3.3.1 AI Agent 集成

深度集成以下顶级项目:

项目说明
Dify生产级 Agent 工作流开发平台
RAGFlow基于深度文档理解的 RAG 引擎
PathwayPython ETL 框架,支持流处理和实时分析
Cherry Studio桌面客户端,支持多 LLM 提供商

3.3.2 LLM Data Flywheel

完整的数据引擎,用于构建高质量数据集:

  • 文档解析 → 数据清洗 → 格式转换 → 微调数据
  • 为 LLM 微调提供可持续的数据支持

3.3.3 一键部署

多硬件后端支持:

后端说明
NVIDIA GPUCUDA 加速推理
Intel CPUOpenVINO 优化
昆仑芯 XPU国产硬件支持
其他 AI 加速器多种国产和国际加速器

§4 技术架构

4.1 核心模块

模块说明
ppocr/核心 OCR 算法实现
ppocr_vl/Vision-Language 文档解析
ppstructure/文档结构化解析
paddleocr/Python SDK 包
deploy/部署配置和脚本
configs/模型配置文件

4.2 PP-OCR 架构

输入图像
    ↓
预处理(缩放、归一化)
    ↓
文本检测(DB/DBV4)
    ↓
方向分类(角度分类)
    ↓
文本识别(CRNN/SVTR)
    ↓
后处理(过滤、拼接)
    ↓
输出文本/坐标

4.3 PP-StructureV3 架构

输入文档
    ↓
版面分析(PP-DocLayoutV3)
    ↓
表格检测与识别
    ↓
关键信息提取(KIE)
    ↓
公式识别(LaTeX)
    ↓
输出结构化 JSON/Markdown

4.4 PaddleOCR-VL 架构

输入图像/文档
    ↓
Vision Encoder(PP-LCNet)
    ↓
Text Decoder(LLM)
    ↓
结构化输出(Markdown/JSON)

§5 快速开始

5.1 在线体验

无需安装,直接访问官方体验中心:

👉 PaddleOCR 官网

5.2 本地部署

5.2.1 安装依赖

pip install paddlepaddle
pip install paddleocr

5.2.2 快速推理示例

Python SDK 使用:

from paddleocr import PaddleOCR

# 初始化(支持中文和英文)
ocr = PaddleOCR(use_angle_cls=True, lang='ch')

# 执行 OCR
image_path = 'your_image.jpg'
result = ocr.ocr(image_path)

# 输出结果
for line in result:
    print(line)

PP-OCRv5 文本识别:

from paddleocr import PaddleOCR

# 使用 PP-OCRv5
ocr = PaddleOCR(use_ppocr=True, lang='ch', use_angle_cls=True)

result = ocr.ocr('document.jpg')

PP-StructureV3 文档解析:

from ppstructure import analyze_doc, TableRecPredictor

# 文档智能解析
result = analyze_doc('document.pdf', mode='full')

PaddleOCR-VL 文档解析:

from paddleocr import PaddleOCRVL

# 初始化
ocr_vl = PaddleOCRVL(use_angle_cls=True)

# 解析文档
result = ocr_vl.ocr('document.jpg', return_word=True)

5.3 Docker 部署

# 拉取镜像
docker pull paddlepaddle/paddleocr:latest

# 运行容器
docker run -it --name paddleocr \
    -v /path/to/docs:/workspace \
    paddlepaddle/paddleocr:latest \
    python tools/infer/predict_system.py \
    --image_dir=/workspace/input.jpg

§6 使用指南

6.1 文本识别

6.1.1 通用文本识别

from paddleocr import PaddleOCR

ocr = PaddleOCR(lang='ch', use_angle_cls=True)

# 单张图像
result = ocr.ocr('receipt.jpg')

# 批量处理
results = ocr.ocr(['image1.jpg', 'image2.jpg'])

6.1.2 多语言识别

# 中文简体
ocr_cn = PaddleOCR(lang='ch')

# 中文繁体
ocr_tw = PaddleOCR(lang='cht')

# 英文
ocr_en = PaddleOCR(lang='en')

# 日文
ocr_jp = PaddleOCR(lang='japan')

# 韩文
ocr_kr = PaddleOCR(lang='korean')

# 阿拉伯文
ocr_ar = PaddleOCR(lang='ar')

# 100+ 语言混合
ocr_multi = PaddleOCR(lang='ml')

6.2 文档解析

6.2.1 PDF 转 Markdown

from paddleocr import PaddleOCRVL

ocr_vl = PaddleOCRVL()

# 解析 PDF
result = ocr_vl.ocr('document.pdf', return_word=True)

# 输出为 Markdown
print(result)

6.2.2 表格识别

from ppstructure import TableRecPredictor

# 初始化表格识别器
table_rec = TableRecPredictor()

# 识别表格
result = table_rec.predict('table.jpg')

# 输出 HTML 表格
print(result['res']['html'])

6.3 高级用法

6.3.1 自定义模型

from paddleocr import PaddleOCR

# 使用自定义模型
ocr = PaddleOCR(
    det_model_dir='./inference/det',
    rec_model_dir='./inference/rec',
    rec_char_dict_path='./ppocr/utils/ppocr_keys_v1.txt'
)

result = ocr.ocr('image.jpg')

6.3.2 GPU 加速

# 启用 GPU
ocr = PaddleOCR(
    use_gpu=True,
    gpu_mem=5000,
    use_angle_cls=True,
    lang='ch'
)

result = ocr.ocr('image.jpg')

6.3.3 批处理优化

from paddleocr import PaddleOCR
import numpy as np

ocr = PaddleOCR(use_angle_cls=True, lang='ch')

# 批量处理图像
images = ['img1.jpg', 'img2.jpg', 'img3.jpg']
results = [ocr.ocr(img) for img in images]

§7 部署与优化

7.1 模型导出

7.1.1 导出为 ONNX

# 文本检测模型
paddle2onnx \
    --model_dir ./inference/ch_PP-OCRv4_det/ \
    --model_filename inference.pdiparams \
    --params_filename inference.pdiparams \
    --save_file ./onnx/det.onnx

# 文本识别模型
paddle2onnx \
    --model_dir ./inference/ch_PP-OCRv4_rec/ \
    --save_file ./onnx/rec.onnx

7.2 高性能推理

推理引擎说明
TensorRTNVIDIA GPU 高性能推理
ONNX Runtime跨平台高性能推理
OpenVINOIntel 硬件优化
Paddle Inference飞桨原生推理

7.2.1 TensorRT 部署

from paddleocr import PaddleOCR

ocr = PaddleOCR(
    use_gpu=True,
    use_tensorrt=True,
    lang='ch'
)

result = ocr.ocr('image.jpg')

7.3 并行推理

# 多 GPU 并行
from paddleocr import PaddleOCR

ocr = PaddleOCR(
    use_gpu=True,
    gpu_ids=[0, 1, 2, 3],
    lang='ch'
)

# 自动负载均衡
result = ocr.ocr_parallel('batch_images/')

7.4 服务化部署

# 启动 HTTP 服务
python tools/serving/ocr_serving.py \
    --port 8866 \
    --use_tensorrt=True

§8 应用场景

8.1 RAG 应用

文档智能解析:

from paddleocr import PaddleOCRVL
from langchain.document_loaders import PaddleOCRLoader

# 使用 PaddleOCR 解析文档
loader = PaddleOCRLoader('document.pdf')
documents = loader.load()

# 分割文档
text_splitter = RecursiveCharacterTextSplitter()
docs = text_splitter.split_documents(documents)

# 存入向量数据库
vectorstore = Chroma.from_documents(docs, embeddings)

8.2 Agent 应用

Tool 集成:

from paddleocr import PaddleOCR
from agent import tool

@tool
def ocr_document(image_path: str) -> str:
    """OCR 文档解析工具"""
    ocr = PaddleOCR(lang='ch', use_angle_cls=True)
    result = ocr.ocr(image_path)
    return str(result)

# 在 Agent 中使用
agent = Agent(tools=[ocr_document])

8.3 办公自动化

场景使用模块
发票处理PP-OCRv5 + 表格识别
合同解析PaddleOCR-VL
证照识别PP-OCR 系列
档案数字化PP-StructureV3

8.4 内容审核

# 检测敏感文字
ocr = PaddleOCR(lang='ch')

result = ocr.ocr('image.jpg')
text = ' '.join([line[1][0] for line in result[0]])

# 关键词过滤
sensitive_keywords = ['敏感词1', '敏感词2']
for keyword in sensitive_keywords:
    if keyword in text:
        print(f"发现敏感词: {keyword}")

§9 开发扩展

9.1 自定义训练

9.1.1 数据准备

# 准备标注数据
mkdir -p train_data/images
# 放入训练图像
# 标注格式:image.jpg.txt
# 每行:文本内容或 "label.json" 用于中文

9.1.2 训练检测模型

python tools/train.py \
    -c configs/det/ch_PP-OCRv4/ch_PP-OCRv4_det.yml \
    -o Global.pretrained_model=./pretrained_model/ch_PP-OCRv4_det_train/best_accuracy.pdparams

9.1.3 训练识别模型

python tools/train.py \
    -c configs/rec/PP-OCRv4/ch_PP-OCRv4_rec.yml \
    -o Global.pretrained_model=./pretrained_model/ch_PP-OCRv4_rec_train/best_accuracy.pdparams

9.2 模型优化

9.2.1 模型剪枝

# 使用 PaddleSlim 进行剪枝
from paddleslim.dygraph import Pruner

pruner = Pruner(model)
pruned_model = pruner.prune(model, params=['conv1_weights', 'conv2_weights'])

9.3 新语言支持

# 添加新语言
python tools/add_lang.py \
    --lang=新语言代码 \
    --label_file=新语言字典.txt

§10 推荐做法

10.1 性能优化

优化策略说明
使用 GPU启用 GPU 加速
TensorRT高性能推理引擎
批处理批量处理图像
模型量化INT8/FP16 量化
缓存结果缓存避免重复计算

10.2 准确率优化

策略说明
数据增强使用丰富的训练数据增强
后处理优化调整后处理参数
模型选择根据场景选择合适模型
多模型融合检测+识别组合

10.3 常见问题

问题解决方案
检测不到文字检查图像质量,调整检测阈值
识别错误使用对应语言的字典
速度慢启用 GPU,使用 TensorRT
内存不足减小 batch_size,使用轻量模型

§11 生态集成

11.1 Dify 集成

Dify 是一个生产级的 Agent 工作流开发平台,深度集成 PaddleOCR:

# 在 Dify 中使用
1. 进入工作室 → 添加节点 → OCR 工具
2. 选择 PaddleOCR 提供商
3. 配置语言和识别参数
4. 在工作流中调用

11.2 RAGFlow 集成

RAGFlow 是基于深度文档理解的 RAG 引擎:

# RAGFlow 自动使用 PaddleOCR 进行文档解析
# 上传文档后,RAGFlow 自动调用 PaddleOCR
# 解析结果直接用于检索

11.3 LangChain 集成

from langchain_community.document_loaders import PaddleOCRLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter

# 加载文档
loader = PaddleOCRLoader(file_path='document.pdf')
documents = loader.load()

# 分割
splitter = RecursiveCharacterTextSplitter(chunk_size=1000)
docs = splitter.split_documents(documents)

§12 总结

12.1 主要优势

优势说明
高精度行业领先的 OCR 准确率
多语言支持 100+ 种语言
全场景文本识别、文档解析、表格识别
易集成Python SDK、Docker、API
高性能GPU 加速、TensorRT 优化
开源免费Apache-2.0 许可证

12.2 适用场景

场景推荐模块
通用文本识别PP-OCRv5
复杂文档解析PaddleOCR-VL-1.5
表格识别PP-StructureV3
RAG 应用PaddleOCR-VL + PP-StructureV3
Agent 工具Python SDK

12.3 项目信息

项目信息
Stars74k
Forks10.1k
许可证Apache-2.0
语言Python 76.8%, C++ 14.1%
最新版本v3.4.0
最新更新Jan 29, 2026

12.4 相关链接

资源链接
GitHubhttps://github.com/PaddlePaddle/PaddleOCR
官网https://www.paddleocr.com
文档https://paddlepaddle.github.io/PaddleOCR/
论文arXiv:2507.05595 (v3.0), arXiv:2510.14528 (VL), arXiv:2601.21957 (VL-1.5)

文档版本 1.0 | 撰写日期:2026-04-01 | 基于 PaddleOCR (74k Stars, Apache-2.0)

参与讨论

使用 GitHub 登录。欢迎补充事实、异议与实践。