资讯详情

PP-Structure 文档分析系统实战指南:版面分析、表格识别、关键信息抽取与版面恢复

📅 2026/9/12 1:53:12 | 华诺云谱 👁 阅读
PP-Structure 文档分析系统实战指南:版面分析、表格识别、关键信息抽取与版面恢复
PP-Structure 文档分析系统实战指南版面分析、表格识别、关键信息抽取与版面恢复【免费下载链接】PaddleOCRTurn any PDF or image document into structured data for your AI. A powerful, lightweight OCR toolkit that bridges the gap between images/PDFs and LLMs. Supports 100 languages.项目地址: https://gitcode.com/GitHub_Trending/pa/PaddleOCRPP-Structure 是 PaddleOCR 团队自研的智能文档分析系统本文以其系统总览文档docs/version2.x/ppstructure/overview.md为核心骨架结合仓库中的快速开始、模型库、版面恢复等文档与 ppstructure 源码目录完整讲解 PP-StructureV2 的系统流程、核心特性、命令行/Python 调用方式、返回结果格式与模型选型。读完本文你将掌握如何把一张图片或 PDF 文档拆解为版面区域、结构化表格、关键信息乃至可编辑的 Word/PDF 文件并知道每个能力对应的源码与模型在哪里。1. 系统概述从文档图像到结构化信息PP-Structure 是 PaddleOCR 团队自研的智能文档分析系统目标在于帮助开发者更好地完成版面分析Layout Analysis、表格识别Table Recognition、关键信息抽取Key Information ExtractionKIE等文档理解任务把非结构化的文档图像转换为结构化的数据表达。PP-StructureV2 的系统流程如下文档图像首先经过图像矫正模块Image Orientation Correction判断整图方向并完成转正随后进入两条任务主线——版面信息分析与关键信息抽取版面分析任务图像首先经过版面分析模型被划分为文本、表格、图像等不同区域随后对这些区域分别处理——表格区域送入表格识别模块进行结构化识别文本区域送入 OCR 引擎进行文字识别最后使用版面恢复模块Layout Recovery将其恢复为与原始图像布局一致的 Word 或 PDF 文件关键信息抽取任务首先使用 OCR 引擎提取文本内容然后由语义实体识别模块Semantic Entity RecognitionSER获取图像中的语义实体最后经关系抽取模块Relation ExtractionRE获取语义实体之间的对应关系从而提取出需要的关键信息。从源码结构看上述两条任务线对应 ppstructure 目录下的 predict_system.py系统入口与任务编排、layout/predict_layout.py版面分析、table/predict_table.py表格识别、kie关键信息抽取与 recovery版面恢复等模块。需要说明的是PP-Structure 系列模型自 2021 年推出以来已迭代三代。当前仓库中的 ppstructure/README.md 明确指出本页V2代码与文档基于第二代 PP-StructureV2后续将在适当时机停止维护第三代 PP-StructureV3 提供更强大的文档解析能力推荐通过集成 wheel 包使用。本文以 V2 文档与代码为准展开讲解。PP-StructureV2 支持各个模块独立使用或灵活搭配例如可以单独使用版面分析或单独使用表格识别。对应各独立模块的教程入口为版面分析训练教程表格识别训练教程关键信息抽取训练教程版面恢复教程2. 核心特性PP-StructureV2 的主要特性可归纳为以下几点版面分析支持对图片/PDF 形式的文档进行版面分析可以划分文字、标题、表格、图片、公式等区域表格检测支持通用的中英文表格检测任务表格结构化识别支持对表格区域进行结构化识别最终结果输出为Excel 文件关键信息抽取KIE支持基于多模态的语义实体识别SER与关系抽取RE版面恢复支持恢复为与原始图像布局一致的 Word 或 PDF 格式文件灵活部署支持自定义训练及 Python whl 包调用等多种推理部署方式简单易用数据标注打通与半自动数据标注工具 PPOCRLabel 打通支持版面分析、表格识别、SER 三种任务的标注。从系统入口看这些特性在 ppstructure/predict_system.py 中被组织为可开关的组件layout版面分析、table表格识别、ocr非表格区域文字识别、recovery版面恢复、image_orientation图像方向分类等用户可通过参数自由组合这正是“模块独立使用或灵活搭配”的工程实现基础。3. 典型效果展示PP-StructureV2 支持各模块独立使用或灵活搭配下面仅展示几种代表性使用方式的可视化效果。3.1 版面分析与表格识别下图展示了“版面分析 表格识别”的整体流程图片先由版面分析划分为图像、文本、标题和表格四种区域然后对图像、文本和标题三种区域执行 OCR 检测识别对表格区域执行表格识别其中图像区域还会被单独裁剪存储下来以便后续使用。在 predict_system.py 的__call__流程中可以看到这一编排逻辑先调用layout_predictor得到layout_res区域列表源码约 L129-L134随后对每个区域判断labeltable区域交给table_system做结构化识别其余区域使用text_system做 OCR 检测识别源码约 L143-L178。版面识别返回单字坐标基于版面分析结果还可以进一步对文字区域进行单字粒度的定位效果示意如下详细用法可参考 return_word_pos 文档。3.2 版面恢复下图展示了基于上一节版面分析和表格识别结果进行版面恢复Layout Recovery的效果输出为与原始图像布局一致的 Word 文档3.3 关键信息抽取SER 与 RESER语义实体识别图中不同颜色的框表示不同的类别模型为每个文本片段打上实体类别标签如姓名、日期、地址等RE关系抽取图中红色框表示问题Question蓝色框表示答案Answer问题和答案之间使用绿色线连接模型抽取出实体之间的对应关系。SER 与 RE 的更多效果图、训练与推理细节可参见 train_kie 教程 与 KIE 推理部署文档。4. 环境准备与安装4.1 安装 PaddlePaddle在安装 PP-Structure 前请先根据本机环境安装对应版本的 PaddlePaddleCUDA 11.8 环境python3 -m pip install paddlepaddle-gpu2.6 -i https://www.paddlepaddle.org.cn/packages/stable/cu118/CUDA 12.3 环境python3 -m pip install paddlepaddle-gpu2.6 -i https://www.paddlepaddle.org.cn/packages/stable/cu123/纯 CPU 机器python3 -m pip install paddlepaddle2.6 -i https://www.paddlepaddle.org.cn/packages/stable/cpu/更多版本需求请参照飞桨官网安装文档中的说明进行操作。若无基础 Python 运行环境可先参考运行环境准备文档完成环境搭建。4.2 安装 PaddleOCR whl 包python3 -m pip install paddleocr3.0 # 安装图像方向分类依赖包 paddleclas如不需要图像方向分类功能可跳过 python3 -m pip install paddleclas说明上述版本约束来自 quick_start 文档PP-StructureV2 的功能通过paddleocr3.0版本提供。5. 命令行快速体验安装完成后即可通过paddleocr命令行在--typestructure模式下按需组合各模块。5.1 图像方向分类 版面分析 表格识别# 暂时关闭新 IR 功能 export FLAGS_enable_pir_api0 paddleocr --image_dirppstructure/docs/table/1.png --typestructure --image_orientationtrue--image_orientationtrue会先对整图做方向分类并转正再进入版面分析与表格识别流程。若不需要图像方向分类直接执行paddleocr --image_dirppstructure/docs/table/1.png --typestructure5.2 仅版面分析paddleocr --image_dirppstructure/docs/table/1.png --typestructure --tablefalse --ocrfalse5.3 仅表格识别paddleocr --image_dirppstructure/docs/table/table.jpg --typestructure --layoutfalse当--layoutfalse时整张图会被视为一个表格区域直接送入表格识别模块这一点与 predict_system.py 中“layout 为空时默认整图作为 table 区域”的实现一致源码约 L132-L134。5.4 版面恢复版面恢复提供两种方法详细介绍参考 版面恢复教程PDF 解析只支持 PDF 格式输入paddleocr --image_dirppstructure/docs/recovery/UnrealText.pdf --typestructure --recoverytrue --use_pdf2docx_apitrueOCR 技术支持图片与 PDF# 中文测试图 paddleocr --image_dirppstructure/docs/table/1.png --typestructure --recoverytrue # 英文测试图 paddleocr --image_dirppstructure/docs/table/1.png --typestructure --recoverytrue --langen # pdf 测试文件 paddleocr --image_dirppstructure/docs/recovery/UnrealText.pdf --typestructure --recoverytrue --langen5.5 版面恢复 转换为 Markdown 文件不使用 LaTeXOCR 模型进行公式识别paddleocr --image_dirppstructure/docs/recovery/UnrealText.pdf --typestructure --recoverytrue --recovery_to_markdowntrue --langen使用 LaTeXOCR 模型进行公式识别此时必须使用中文 layout 模型paddleocr --image_dirppstructure/docs/recovery/UnrealText.pdf --typestructure --recoverytrue --formulatrue --recovery_to_markdowntrue --langch5.6 关于关键信息抽取关键信息抽取暂不支持通过 whl 包调用详细使用教程请参考 关键信息抽取教程 与 KIE 推理部署文档。6. Python API 调用与返回结果6.1 基础调用图像方向分类 版面分析 表格识别import os import cv2 from paddleocr import PPStructure, draw_structure_result, save_structure_res table_engine PPStructure(show_logTrue, image_orientationTrue) save_folder ./output img_path ppstructure/docs/table/1.png img cv2.imread(img_path) result table_engine(img) save_structure_res(result, save_folder, os.path.basename(img_path).split(.)[0]) for line in result: line.pop(img) print(line) from PIL import Image font_path doc/fonts/simfang.ttf # PaddleOCR 下提供字体包 image Image.open(img_path).convert(RGB) im_show draw_structure_result(image, result, font_pathfont_path) im_show Image.fromarray(im_show) im_show.save(result.jpg)其中save_structure_res负责把表格保存为 Excel、把图片区域裁剪保存draw_structure_result负责把区域框与文字可视化到原图上。6.2 常用变体仅版面分析tableFalse, ocrFalse不执行表格识别与 OCRfrom paddleocr import PPStructure, save_structure_res table_engine PPStructure(tableFalse, ocrFalse, show_logTrue) result table_engine(img)版面分析 OCR不识别表格可处理 PDF 输入会按页渲染为图像再逐页处理ocr_engine PPStructure(tableFalse, ocrTrue, show_logTrue) result ocr_engine(img_path) # img_path 可为 PDF 文件仅表格识别table_engine PPStructure(layoutFalse, show_logTrue) result table_engine(img)版面恢复依赖sorted_layout_boxes排序与convert_info_docx重建 Word 文档from paddleocr.ppstructure.recovery.recovery_to_doc import sorted_layout_boxes, convert_info_docx table_engine PPStructure(recoveryTrue) # 英文图可加 langen result table_engine(img) save_structure_res(result, save_folder, os.path.basename(img_path).split(.)[0]) h, w, _ img.shape res sorted_layout_boxes(result, w) convert_info_docx(img, res, save_folder, os.path.basename(img_path).split(.)[0])版面恢复并输出 Markdown改用convert_info_markdownfrom paddleocr.ppstructure.recovery.recovery_to_markdown import convert_info_markdown res sorted_layout_boxes(result, w) convert_info_markdown(res, save_folder, os.path.basename(img_path).split(.)[0])6.3 返回结果结构说明PP-Structure 的返回结果是一个由 dict 组成的 list示例如下[ { type: Text, bbox: [34, 432, 345, 462], res: ([[36.0, 437.0, 341.0, 437.0, 341.0, 446.0, 36.0, 447.0], [41.0, 454.0, 125.0, 453.0, 125.0, 459.0, 41.0, 460.0]], [(Tigure-6. The performance of CNN and IPT models using difforen, 0.90060663), (Tent , 0.465441)]) } ]各字段含义如下字段说明type图片区域的类型bbox图片区域在原图的坐标依次为[左上角x, 左上角y, 右下角x, 右下角y]res图片区域的 OCR 或表格识别结果。表格一个 dicthtml字段为表格的 HTML 字符串在代码使用模式下前向传入return_ocr_result_in_tableTrue还可以拿到表格中每个文本的检测识别结果对应boxes文本检测坐标与rec_res文本识别结果字段。OCR一个包含各个单行文字的检测坐标和识别结果的元组运行完成后每张图片会在output字段指定的目录下生成一个同名子目录图片里的每个表格会保存为一个 Excel 文件图片区域会被裁剪后保存Excel 与图片文件名即该区域在原图中的坐标例如/output/table/1/ └─ res.txt └─ [454, 360, 824, 658].xlsx 表格识别结果 └─ [16, 2, 828, 305].jpg 被裁剪出的图片区域 └─ [17, 361, 404, 711].xlsx 表格识别结果6.4 核心参数说明PP-Structure 的常用参数及其默认值如下大部分参数与 PaddleOCR whl 包保持一致字段说明默认值output结果保存地址./output/tabletable_max_len表格结构模型预测时图像的长边 resize 尺度488table_model_dir表格结构模型 inference 模型地址Nonetable_char_dict_path表格结构模型所用字典地址ppocr/utils/dict/table_structure_dict.txtmerge_no_span_structure表格识别模型中是否对td和/td进行合并Falseformula_model_dir公式识别模型 inference 模型地址Noneformula_char_dict_path公式识别模型所用字典地址ppocr/utils/dict/latex_ocr_tokenizer.jsonlayout_model_dir版面分析模型 inference 模型地址Nonelayout_dict_path版面分析模型字典ppocr/utils/dict/layout_publaynet_dict.txtlayout_score_threshold版面分析模型检测框阈值0.5layout_nms_threshold版面分析模型 nms 阈值0.5kie_algorithmKIE 模型算法LayoutXLMser_model_dirSER 模型 inference 模型地址Noneser_dict_pathSER 模型字典train_data/XFUND/class_list_xfun.txtmodestructure 或 kiestructureimage_orientation前向中是否执行图像方向分类Falselayout前向中是否执行版面分析Truetable前向中是否执行表格识别Trueformula前向中是否执行公式识别Falseocr对版面分析中的非表格区域是否执行 OCR当 layout 为 False 时会被自动设置为 FalseTruerecovery前向中是否执行版面恢复Falserecovery_to_markdown是否将版面恢复结果转换为 markdown 文件Falsesave_pdf版面恢复导出 docx 文件的同时是否导出 pdf 文件Falsestructure_version模型版本可选 PP-structure 和 PP-structurev2PP-structure对应地ppstructure/predict_system.py 的__init__会根据这些参数按需初始化image_orientation_predictor、layout_predictor、table_system、text_system等组件源码约 L45-L96并在__call__中按“方向分类 → 版面分析 → 表格/文本分区处理 → 版面恢复”的顺序串联执行time_dict会分别统计各阶段耗时。7. 模型选型与模型库部分任务需要同时使用结构化分析模型和OCR 模型。例如表格识别既需要表格识别模型做结构化解析也需要 OCR 模型识别表格内的文字请根据具体需求选择合适的模型结构化分析相关模型参考 PP-Structure 模型库OCR 相关模型参考 PP-OCR 模型库。7.1 版面分析模型模型名称模型简介推理模型大小dict pathpicodet_lcnet_x1_0_fgd_layout基于 PicoDet LCNet_x1_0 和 FGD 蒸馏在 PubLayNet 数据集上训练的英文版面分析模型可划分文字、标题、表格、图片、列表5 类区域9.7Mlayout_publaynet_dict.txtppyolov2_r50vd_dcn_365e_publaynet基于 PP-YOLOv2 在 PubLayNet 数据集上训练的英文版面分析模型221.0M同上picodet_lcnet_x1_0_fgd_layout_cdlaCDLA 数据集训练的中文版面分析模型可划分表格、图片、图片标题、表格标题、页眉、脚本、引用、公式等 10 类区域9.7Mlayout_cdla_dict.txtpicodet_lcnet_x1_0_fgd_layout_table表格数据集训练的版面分析模型支持中英文文档表格区域的检测9.7Mlayout_table_dict.txtppyolov2_r50vd_dcn_365e_tableBank_word基于 PP-YOLOv2 在 TableBank Word 数据集训练的版面分析模型支持英文文档表格区域的检测221.0M同上ppyolov2_r50vd_dcn_365e_tableBank_latex基于 PP-YOLOv2 在 TableBank Latex 数据集训练的版面分析模型支持英文文档表格区域的检测221.0M同上上述三份版面分析字典均位于 ppocr/utils/dict/layout_dict 目录与 quick_start 参数表 中layout_dict_path的取值一一对应。7.2 OCR 与表格识别模型表格场景专用 OCR 模型PubTabNet 数据集训练模型名称模型简介推理模型大小en_ppocr_mobile_v2.0_table_det英文表格场景的文字检测4.7Men_ppocr_mobile_v2.0_table_rec英文表格场景的文字识别6.9M如需使用其他 OCR 模型可在 PP-OCR 模型库 下载模型或使用自己训练好的模型配置到det_model_dir、rec_model_dir两个字段即可。表格识别模型模型名称模型简介推理模型大小en_ppocr_mobile_v2.0_table_structure基于 TableRec-RARE 在 PubTabNet 数据集上训练的英文表格识别模型6.8Men_ppstructure_mobile_v2.0_SLANet基于 SLANet 在 PubTabNet 数据集上训练的英文表格识别模型9.2Mch_ppstructure_mobile_v2.0_SLANet基于 SLANet 的中文表格识别模型9.3M7.3 KIE 模型在 XFUND_zh 数据集上的精度hmean与 V100 GPU 推理耗时如下数据来自 models_list 文档耗时仅统计 inference 模型推理不含预处理与后处理模型名称模型简介推理模型大小精度(hmean)预测耗时(ms)ser_VI-LayoutXLM_xfund_zh基于 VI-LayoutXLM 在 XFUND 中文数据集上训练的 SER 模型1.1G93.19%15.49re_VI-LayoutXLM_xfund_zh基于 VI-LayoutXLM 在 XFUND 中文数据集上训练的 RE 模型1.1G83.92%15.49ser_LayoutXLM_xfund_zh基于 LayoutXLM 在 XFUND 中文数据集上训练的 SER 模型1.4G90.38%19.49re_LayoutXLM_xfund_zh基于 LayoutXLM 在 XFUND 中文数据集上训练的 RE 模型1.4G74.83%19.49ser_LayoutLMv2_xfund_zh基于 LayoutLMv2 在 XFUND 中文数据集上训练的 SER 模型778.0M85.44%31.46re_LayoutLMv2_xfund_zh基于 LayoutLMv2 在 XFUND 中文数据集上训练的 RE 模型765.0M67.77%31.46ser_LayoutLM_xfund_zh基于 LayoutLM 在 XFUND 中文数据集上训练的 SER 模型430.0M77.31%-此外在 wildreceipt 数据集上还提供了SDMGR关键信息提取模型78.0M精度 86.70%。各模型的下载地址请以 PP-Structure 模型库 页面为准。8. 源码视角PP-Structure 的模块化实现PP-StructureV2 的工程实现集中在仓库的 ppstructure 目录主要模块与对应文件如下系统入口与任务编排predict_system.py —— 定义StructureSystem类负责解析命令行参数、按需初始化各子模型并在__call__中完成“方向分类 → 版面分析 → 表格识别 / OCR → 版面恢复”的完整调用链通用工具utility.py —— 提供parse_args参数解析、draw_structure_result结果可视化、cal_ocr_word_box单字坐标计算等函数版面分析layout/predict_layout.py —— 版面区域检测表格识别table/predict_table.py 与 table/matcher.py、table/table_master_match.py —— 表格结构解析、单元格匹配与 Excel 导出关键信息抽取kie —— SER 与 RE 的训练/推理脚本如 predict_kie_token_ser.py、predict_kie_token_ser_re.py版面恢复recovery/recovery_to_doc.py、recovery/recovery_to_markdown.py、recovery/table_process.py —— 将版面分析与表格识别结果重建为 Word/Markdown 文档另有 pdf2word 提供基于 pdf2docx 的 PDF 解析路径。一个值得注意的实现细节是旧版实现直接从版面区域中做 OCR存在识别精度问题当前 predict_system.py 改为先对整图做文本检测识别再根据版面区域过滤出属于各区域的文本源码注释见 L136-L142从而提升 OCR 精度。9. 深入拓展训练、恢复与部署围绕本文主线可以继续深入以下主题均为仓库内文档可直接跳转阅读快速开始完整的环境安装、命令行与 Python 调用示例、参数说明版面恢复教程标准 PDF 解析与图片格式 PDF 解析两种恢复方法的对比、模型下载与predict_system.py命令行恢复示例版面分析训练教程、表格识别训练教程、关键信息抽取训练教程各模块的自定义训练、评估与推理方法PP-Structure 模型库 与 PP-OCR 模型库全部可用模型的下载与字典配置Python 推理部署、C 推理部署、Paddle Serving 部署不同生产环境下的部署方式return_word_pos 文档版面识别返回单字坐标的进阶用法。通过本文你已经掌握了 PP-StructureV2 的系统架构、核心特性、命令行动手方式、Python API、返回结果与参数体系并了解每个模块在仓库中的源码位置与模型选型依据可以据此在图片/PDF 文档理解任务中组合出适合自己场景的解决方案。【免费下载链接】PaddleOCRTurn any PDF or image document into structured data for your AI. A powerful, lightweight OCR toolkit that bridges the gap between images/PDFs and LLMs. Supports 100 languages.项目地址: https://gitcode.com/GitHub_Trending/pa/PaddleOCR创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。