PaddleOCR自发布以来凭借学术前沿算法和产业落地实践,受到了产学研各方的喜爱,并被广泛应用于众多知名开源项目,例如:Umi-OCR、OmniParser、MinerU、RAGFlow等,已成为广大开发者心中的开源OCR领域的首选工具。2025年5月20日,飞桨团队发布PaddleOCR 3.0,全面适配飞桨框架3.0正式版,进一步提升文字识别精度,支持多文字类型识别和手写体识别,满足大模型应用对复杂文档高精度解析的旺盛需求,结合文心大模型4.5 Turbo显著提升关键信息抽取精度,并新增对昆仑芯、昇腾等国产硬件的支持。
PaddleOCR 3.0新增三大特色能力::
- 🖼️全场景文字识别模型PP-OCRv5:单模型支持五种文字类型和复杂手写体识别;整体识别精度相比上一代提升13个百分点。
- 🧮通用文档解析方案PP-StructureV3:支持多场景、多版式 PDF 高精度解析,在公开评测集中领先众多开源和闭源方案。
- 📈智能文档理解方案PP-ChatOCRv4:原生支持文心大模型4.5 Turbo,精度相比上一代提升15.7个百分点。
PaddleOCR 3.0除了提供优秀的模型库外,还提供好学易用的工具,覆盖模型训练、推理和服务化部署,方便开发者快速落地AI应用。
您可直接快速开始,或查阅完整的 PaddleOCR 文档,或通过 Github Issues 获取支持,或在 AIStudio 课程平台 探索我们的 OCR 课程。
🔥🔥2025.05.20: PaddleOCR 3.0 正式发布,包含:
-
PP-OCRv5: 全场景高精度文字识别
- 🌐 单模型支持五种文字类型(简体中文、繁体中文、中文拼音、英文和日文)。
- ✍️ 支持复杂手写体识别:复杂连笔、非规范字迹识别性能显著提升。
- 🎯 整体识别精度提升 - 多种应用场景达到 SOTA 精度, 相比上一版本PP-OCRv4,识别精度提升13个百分点!
-
PP-StructureV3: 通用文档解析方案
- 🧮 支持多场景 PDF 高精度解析,在 OmniDocBench 基准测试中领先众多开源和闭源方案。
- 🧠 多项专精能力: 印章识别、图表转表格、嵌套公式/图片的表格识别、竖排文本解析及复杂表格结构分析等。
-
PP-ChatOCRv4: 智能文档理解方案
- 🔥 文档文件(PDF/PNG/JPG)关键信息提取精度相比上一代提升15.7%!
- 💻 原生支持文心大模型4.5 Turbo,还兼容 PaddleNLP、Ollama、vLLM 等工具部署的大模型。
- 🤝 集成 PP-DocBee2,支持印刷文字、手写体文字、印章信息、表格、图表等常见的复杂文档信息抽取和理解的能力。
历史更新记录
- 🔥🔥2025.03.07: PaddleOCR v2.10 发布:
- 新增 12 个自研模型:
- 版式检测系列(3 模型): PP-DocLayout-L/M/S - 支持 23 类中英文文档版式检测(论文/报告/试卷/图书/期刊/合同等),最高达 90.4% mAP@0.5,轻量化设计支持每秒处理 100+ 页面
- 公式识别系列(2 模型): PP-FormulaNet-L/S - 支持 50,000+ LaTeX 公式识别,涵盖印刷体与手写体。PP-FormulaNet-L 精度提升 6%;PP-FormulaNet-S 速度提升 16 倍且精度相当
- 表格结构识别系列(2 模型): SLANeXt_wired/wireless - 新型模型复杂表格识别精度提升 6%
- 表格分类模型(1 模型): PP-LCNet_x1_0_table_cls - 超轻量有线/无线表格分类器
- 新增 12 个自研模型:
首先,请参考PaddlePaddle框架安装指南完成PaddlePaddle 3.0的安装。
然后,安装paddleocr
# 1. 安装 paddleocr
pip install paddleocr
# 2. 安装完毕后自检
paddleocr --version
模型 | 昇腾 | 昆仑芯 | 更多建设中 |
---|---|---|---|
PP-OCRv5 | ✅ | ✅ | |
PP-StructureV3 | ✅ | ✅ | |
PP-ChatOCRv4 | ✅ | ✅ |
# 运行 PP-OCRv5 推理
paddleocr ocr -i https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/general_ocr_002.png
# 运行 PP-StructureV3 推理
paddleocr PP-StructureV3 -i https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/pp_structure_v3_demo.png
# 运行 PP-ChatOCRv4 推理
paddleocr pp_chatocrv4_doc -i https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/vehicle_certificate-1.png -k 驾驶室准乘人数 --qianfan_api_key your_api_key
# 查看 "paddleocr ocr" 详细参数
paddleocr ocr --help
5.1 PP-OCRv5 示例
from paddleocr import PaddleOCR
# 初始化 PaddleOCR 实例
ocr = PaddleOCR()
# 对示例图像执行 OCR 推理
result = ocr.predict("https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/general_ocr_002.png")
# 可视化结果并保存 json 结果
for res in result:
res.print()
res.save_to_img("output")
res.save_to_json("output")
5.2 PP-StructureV3 示例
from pathlib import Path
from paddleocr import PPStructureV3
pipeline = PPStructureV3()
# For Image
output = pipeline.predict("https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/pp_structure_v3_demo.png")
# 可视化结果并保存 json 结果
for res in output:
res.print()
res.save_to_json(save_path="output")
res.save_to_markdown(save_path="output")
# For PDF File
input_file = "./your_pdf_file.pdf"
output_path = Path("./output")
output = pipeline.predict(input_file)
markdown_list = []
markdown_images = []
for res in output:
md_info = res.markdown
markdown_list.append(md_info)
markdown_images.append(md_info.get("markdown_images", {}))
markdown_texts = pipeline.concatenate_markdown_pages(markdown_list)
mkd_file_path = output_path / f"{Path(input_file).stem}.md"
mkd_file_path.parent.mkdir(parents=True, exist_ok=True)
with open(mkd_file_path, "w", encoding="utf-8") as f:
f.write(markdown_texts)
for item in markdown_images:
if item:
for path, image in item.items():
file_path = output_path / path
file_path.parent.mkdir(parents=True, exist_ok=True)
image.save(file_path)
5.3 PP-ChatOCRv4 示例
from paddleocr import PPChatOCRv4Doc
chat_bot_config = {
"module_name": "chat_bot",
"model_name": "ernie-3.5-8k",
"base_url": "https://qianfan.baidubce.com/v2",
"api_type": "openai",
"api_key": "api_key", # your api_key
}
retriever_config = {
"module_name": "retriever",
"model_name": "embedding-v1",
"base_url": "https://qianfan.baidubce.com/v2",
"api_type": "qianfan",
"api_key": "api_key", # your api_key
}
mllm_chat_bot_config = {
"module_name": "chat_bot",
"model_name": "PP-DocBee",
"base_url": "http://127.0.0.1:8080/", # your local mllm service url
"api_type": "openai",
"api_key": "api_key", # your api_key
}
pipeline = PPChatOCRv4Doc()
visual_predict_res = pipeline.visual_predict(
input="https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/vehicle_certificate-1.png",
use_doc_orientation_classify=False,
use_doc_unwarping=False,
use_common_ocr=True,
use_seal_recognition=True,
use_table_recognition=True,
)
visual_info_list = []
for res in visual_predict_res:
visual_info_list.append(res["visual_info"])
layout_parsing_result = res["layout_parsing_result"]
vector_info = pipeline.build_vector(
visual_info_list, flag_save_bytes_vector=True, retriever_config=retriever_config
)
mllm_predict_res = pipeline.mllm_pred(
input="vehicle_certificate-1.png",
key_list=["驾驶室准乘人数"],
mllm_chat_bot_config=mllm_chat_bot_config,
)
mllm_predict_info = mllm_predict_res["mllm_res"]
chat_result = pipeline.chat(
key_list=["驾驶室准乘人数"],
visual_info=visual_info_list,
vector_info=vector_info,
mllm_predict_info=mllm_predict_info,
chat_bot_config=chat_bot_config,
retriever_config=retriever_config,
)
print(chat_result)
💗 PaddleOCR 的发展离不开社区贡献!衷心感谢所有开发者、合作伙伴与贡献者!
项目名称 | 简介 |
---|---|
RAGFlow |
基于RAG的AI工作流引擎 |
MinerU |
多类型文档转换Markdown工具 |
Umi-OCR |
开源批量离线OCR软件 |
OmniParser |
基于纯视觉的GUI智能体屏幕解析工具 |
QAnything |
基于任意内容的问答系统 |
PDF-Extract-Kit |
高效复杂PDF文档提取工具包 |
Dango-Translator |
屏幕实时翻译工具 |
更多项目 | 基于 PaddleOCR 的扩展项目 |
- 👫 加入 PaddlePaddle 开发者社区,与全球开发者、研究人员互动交流
- 🎓 通过 AI Studio 的 技术研讨会 学习前沿技术
- 🏆 参与 黑客马拉松 展示才能,赢取奖励
- 📣 关注 微信公众号 获取最新动态 让我们共同构建 AI 未来!🚀
本项目采用 Apache 2.0 协议 开源发布。