目录

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

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

§1 学习目标

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

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

§2 项目概述

2.1 什么是 PaddleOCR?

PaddleOCRGitHub 仓库)是百度飞桨团队开发的全球领先 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)