PaddleOCR PP-Structure 基于 Python 预测引擎的推理实战:版面分析、表格识别与关键信息抽取 📅 发布时间:2026/9/19 15:20:09 👁 浏览次数: PaddleOCR PP-Structure 基于 Python 预测引擎的推理实战版面分析、表格识别与关键信息抽取【免费下载链接】PaddleOCR飞桨多语言OCR工具包实用超轻量OCR系统支持80种语言识别提供数据标注与合成工具支持服务器、移动端、嵌入式及IoT设备端的训练与部署 Awesome multilingual OCR toolkits based on PaddlePaddle (practical ultra lightweight OCR system, support 80 languages recognition, provide data annotation and synthesis tools, support training and deployment among server, mobile, embedded and IoT devices)项目地址: https://gitcode.com/paddlepaddle/PaddleOCRPP-Structure 是 PaddleOCR 提供的文档智能分析系统可将版面分析Layout Analysis、表格识别Table Recognition、OCR 文本识别与关键信息抽取KIE串成一条可复用的 Python 推理流水线。本文基于 python_infer.md 的官方说明结合ppstructure/目录下的实际源码完整讲解模型下载、predict_system.py两种模式structure/kie的用法、全部关键参数含义与结果文件组织方式。读完本文你可以独立完成从图片到“版面区域 可编辑表格 结构化信息”的整套 Python 推理任务。1. 环境准备进入ppstructure目录并下载推理模型所有推理命令都基于仓库中的ppstructure目录执行因此第一步是切换到该目录cd ppstructure与 PP-OCR 纯 OCR 推理不同PP-Structure 推理需要按需准备四类模型版面分析模型、文本检测模型、文本识别模型、表格识别模型。官方提供的一键下载命令如下mkdir inference cd inference # 下载 PP-StructureV2 版面分析模型并解压 wget https://paddleocr.bj.bcebos.com/ppstructure/models/layout/picodet_lcnet_x1_0_layout_infer.tar tar xf picodet_lcnet_x1_0_layout_infer.tar # 下载 PP-OCRv3 文本检测模型并解压 wget https://paddle-model-ecology.bj.bcebos.com/paddlex/official_inference_model/paddle3.0.0/PP-OCRv3_mobile_det_infer.tar tar xf PP-OCRv3_mobile_det_infer.tar # 下载 PP-OCRv3 文本识别模型并解压 wget https://paddle-model-ecology.bj.bcebos.com/paddlex/official_inference_model/paddle3.0.0/PP-OCRv3_mobile_rec_infer.tar tar xf PP-OCRv3_mobile_rec_infer.tar # 下载 PP-StructureV2 表格识别模型并解压 wget https://paddleocr.bj.bcebos.com/ppstructure/models/slanet/paddle3.0b2/ch_ppstructure_mobile_v2.0_SLANet_infer.tar tar xf ch_ppstructure_mobile_v2.0_SLANet_infer.tar cd ..下载完成后inference/下应包含四个模型目录模型目录用途在命令中的参数picodet_lcnet_x1_0_layout_infer版面分析检测文本、表格、图片等区域--layout_model_dirPP-OCRv3_mobile_det_infer文本检测--det_model_dirPP-OCRv3_mobile_rec_infer文本识别--rec_model_dirch_ppstructure_mobile_v2.0_SLANet_infer表格结构识别SLANet--table_model_dir说明关键信息抽取KIE所需的 SER / RE 模型不在这批模型中将在第 3 节单独下载。所有模型均为 Paddle Inference 格式_infer目录可直接被预测引擎加载无需再执行导出步骤。2. 版面信息抽取--modestructurepredict_system.py是 PP-Structure 的入口脚本其核心类是StructureSystem定义于 ppstructure/predict_system.py。当--modestructure时系统按“版面分析 → 区域分流表格走表格识别、其余区域走 OCR→ 结果输出”的流程工作。2.1 完整流程版面分析 表格识别同时启用版面分析、OCR 与表格识别可以一次性输出文档的版面区域划分、表格 Excel 与文本识别结果python3 predict_system.py --det_model_dirinference/PP-OCRv3_mobile_det_infer \ --rec_model_dirinference/PP-OCRv3_mobile_rec_infer \ --table_model_dirinference/ch_ppstructure_mobile_v2.0_SLANet_infer \ --layout_model_dirinference/picodet_lcnet_x1_0_layout_infer \ --image_dir./docs/table/1.png \ --rec_char_dict_path../ppocr/utils/ppocr_keys_v1.txt \ --table_char_dict_path../ppocr/utils/dict/table_structure_dict_ch.txt \ --output../output \ --vis_font_path../doc/fonts/simfang.ttf运行结果的组织方式每张输入图片都会在--output指定目录下的structure子目录中拥有一个同名目录图片中的每个表格会被存储为一个 Excel 文件图片区域会被裁剪后保存Excel 文件与裁剪图片的文件名即为其在原始图片中的坐标[x1,y1,x2,y2]形式详细的版面与识别结果统一写入res.txt文件。从源码save_structure_resppstructure/predict_system.py可以确认输出细节excel_save_folder os.path.join(save_folder, img_name)即output/structure/图片名/每个区域的 JSON 行写入res_{idx}.txt字段包含type区域类型、bbox坐标、img裁剪图、res识别结果、score等type为table且结果含html时将 HTML 表格转存为{bbox}_{idx}.xlsx调用to_excel见 ppstructure/table/predict_table.pytype为figure时将裁剪区域保存为{bbox}_{idx}.jpg。2.2 单独版面分析若只想得到版面区域划分、不执行表格识别与 OCR可关闭--table与--ocrpython3 predict_system.py --layout_model_dirinference/picodet_lcnet_x1_0_layout_infer \ --image_dir./docs/table/1.png \ --output../output \ --tablefalse \ --ocrfalse运行完成后每张图片在output/structure/图片名/下保留同名目录图片区域被裁剪保存文件名为坐标版面分析结果写入res.txt。版面分析由LayoutPredictor承担ppstructure/layout/predict_layout.py输入图片先按Resize800×608与 ImageNet 归一化预处理经 PicoDet 检测后由PicoDetPostProcess结合字符表、--layout_score_threshold默认 0.5与--layout_nms_threshold默认 0.5输出区域框。默认的版面类别词典位于 ppocr/utils/dict/layout_dict/layout_publaynet_dict.txt。2.3 单独表格识别若图片已知只包含表格或想对整图直接做表格识别可只启用表格链路、关闭版面分析python3 predict_system.py --det_model_dirinference/PP-OCRv3_mobile_det_infer \ --rec_model_dirinference/PP-OCRv3_mobile_rec_infer \ --table_model_dirinference/ch_ppstructure_mobile_v2.0_SLANet_infer \ --image_dir./docs/table/table.jpg \ --rec_char_dict_path../ppocr/utils/ppocr_keys_v1.txt \ --table_char_dict_path../ppocr/utils/dict/table_structure_dict_ch.txt \ --output../output \ --vis_font_path../doc/fonts/simfang.ttf \ --layoutfalse此时整图被当作一个表格区域处理。源码中有对应逻辑当--layoutfalse时StructureSystem.__call__会构造一个bboxNone、labeltable的默认区域ppstructure/predict_system.py随后交给TableSystem完成表格结构识别与单元格文字填充最终表格输出为 Excel 文件文件名为[0,0,img_h,img_w]即整图坐标范围。表格识别核心参数来自 ppstructure/utility.py--table_algorithm默认TableAttn、--table_max_len默认 488、--merge_no_span_structure默认 True以及表格结构字符表--table_char_dict_path默认 ppocr/utils/dict/table_structure_dict_ch.txt。3. 关键信息抽取--modekie关键信息抽取用于从票据、证件、报关单等文档中抽取“实体”与“实体关系”PP-Structure 提供了两类任务SER语义实体识别标注每个文本 token 的语义类别如姓名、金额、日期等RE关系抽取在 SER 基础上进一步抽取实体之间的关系如“发票号”指向具体编号。KIE 推理基于 LayoutXLM 模型。先下载 SER / RE 模型cd ppstructure mkdir inference cd inference # 下载 SER XFUND 模型并解压 wget https://paddleocr.bj.bcebos.com/ppstructure/models/vi_layoutxlm/ser_vi_layoutxlm_xfund_infer.tar tar -xf ser_vi_layoutxlm_xfund_infer.tar # 下载 RE 模型RESER 场景需要 wget https://paddleocr.bj.bcebos.com/ppstructure/models/vi_layoutxlm/re_vi_layoutxlm_xfund_infer.tar tar -xf re_vi_layoutxlm_xfund_infer.tar cd ..3.1 单独 SERpython3 predict_system.py \ --kie_algorithmLayoutXLM \ --ser_model_dir./inference/ser_vi_layoutxlm_xfund_infer \ --image_dir./docs/kie/input/zh_val_42.jpg \ --ser_dict_path../ppocr/utils/dict/kie_dict/xfund_class_list.txt \ --vis_font_path../doc/fonts/simfang.ttf \ --ocr_order_methodtb-yx \ --modekie运行完成后每张图片的可视化结果会存放在--output指定目录下的kie目录中文件名与输入图片一致。3.2 SER RE 联合推理python3 predict_system.py \ --kie_algorithmLayoutXLM \ --re_model_dir./inference/re_vi_layoutxlm_xfund_infer \ --ser_model_dir./inference/ser_vi_layoutxlm_xfund_infer \ --image_dir./docs/kie/input/zh_val_42.jpg \ --ser_dict_path../ppocr/utils/dict/kie_dict/xfund_class_list.txt \ --vis_font_path../doc/fonts/simfang.ttf \ --ocr_order_methodtb-yx \ --modekie与单独 SER 相比多传一个--re_model_dir。此时输出目录下会为每张图片建立同名目录其中包含可视化图片与预测结果文件res_{idx}_kie.txt见 ppstructure/predict_system.py。底层调用链--modekie时StructureSystem会实例化SerRePredictorppstructure/kie/predict_kie_token_ser_re.py其流程为先用SerPredictor得到 SER 结果与模型输入再通过make_input组装 RE 输入运行 RE 预测器后经VQAReTokenLayoutLMPostProcess后处理得到实体关系。若未传入--re_model_dirSerRePredictor.predictor为None此时自动退化为纯 SER 推理。KIE 参数说明定义于 ppstructure/utility.py参数含义默认值--kie_algorithmKIE 算法当前为LayoutXLMLayoutXLM--ser_model_dirSER 模型目录无--re_model_dirRE 模型目录不传则只做 SER无--ser_dict_pathSER 类别词典../train_data/XFUND/class_list_xfun.txtXFUND 场景词表见 ppocr/utils/dict/kie_dict/xfund_class_list.txt--ocr_order_methodOCR 文本排序方式取None或tb-yx自上而下、自左而右None--use_visual_backbone是否使用视觉骨干网络特征True4. 关键推理参数速查表predict_system.py的所有参数最终由 ppstructure/utility.py 的init_args统一解析其中检测/识别类参数继承自 tools/infer/utility.py。常用参数汇总如下参数默认值说明--modestructure推理模式可选structure版面信息抽取或kie关键信息抽取--output./output结果输出根目录--layoutTrue是否启用版面分析--tableTrue表格区域是否使用表格识别--ocrTrue非表格区域是否用 OCR 识别--layoutfalse时会被自动置为false--formulaFalse是否启用公式识别--image_orientationFalse是否启用图片方向识别90°/180°/270° 自动旋转校正--recoveryFalse是否启用版面恢复输出 Word/Markdown--layout_model_dir无版面分析模型目录--layout_dict_path../ppocr/utils/dict/layout_dict/layout_publaynet_dict.txt版面类别词典--layout_score_threshold0.5版面检测置信度阈值--layout_nms_threshold0.5版面检测 NMS 阈值--table_model_dir无表格结构识别模型目录--table_algorithmTableAttn表格识别算法--table_char_dict_path../ppocr/utils/dict/table_structure_dict_ch.txt表格结构字符表--table_max_len488表格识别输入最大边长--det_model_dir/--rec_model_dir无文本检测 / 识别模型目录--rec_char_dict_path../ppocr/utils/ppocr_keys_v1.txt识别字符表中文场景见 ppocr/utils/ppocr_keys_v1.txt--vis_font_path无可视化字体路径中文需用 doc/fonts/simfang.ttf5. 进阶predict_system.py的执行流程解析理解源码有助于按需裁剪流程。以structure模式为例StructureSystem.__call__ppstructure/predict_system.py的核心步骤为可选图像方向校正启用--image_orientation时调用 PaddleClas 的text_image_orientation模型判断旋转角度并校正版面分析LayoutPredictor输出各区域框及其类别table、figure、text、equation等与置信度全图 OCR先用TextSystem对整图做检测 识别再按版面区域框过滤出属于该区域的文本源码注释说明相比“逐区域单独 OCR”先整图 OCR 再按区域过滤可显著提升识别精度区域分流table区域送入TableSystem得到 HTML 结构并转为 Excelequation区域送入公式识别器--formulatrue时启用其余区域直接使用步骤 3 过滤后的文本结果结果落盘每个区域写入res.txt表格写为.xlsx图片区域裁剪为.jpg同时输出可视化图show_{idx}.jpg。main函数ppstructure/predict_system.py还支持批量/多进程推理--use_mptrue --total_process_numN会按进程 ID 切分图片列表并行推理版面恢复--recoverytrue时将各区域按坐标排序sorted_layout_boxes并调用convert_info_docx/convert_info_markdown输出 Word / Markdown 文档PDF 输入check_and_read支持解析 PDF 为多页图像逐页推理配合--use_pdf2docx_api可直接走pdf2docx转换。6. 常见问题与使用建议--layoutfalse与--ocr的联动源码中--layoutfalse时--ocr会被自动置为false并给出告警日志ppstructure/predict_system.py因为 OCR 文本需要依赖版面区域框做过滤纯表格识别场景直接关闭即可。中文可视化乱码务必通过--vis_font_path指定中文字体推荐仓库自带的 doc/fonts/simfang.ttf否则draw_structure_result绘制的中文标签会显示为方块。表格输出依赖字符表SLANet 表格识别依赖--table_char_dict_path指定的结构字符表ppocr/utils/dict/table_structure_dict_ch.txt更换不同语言或版本的表格模型时需同步替换词典。KIE 的阅读顺序--ocr_order_methodtb-yx表示按“从上到下、从左到右”排列 OCR 文本该排序结果会直接影响 LayoutXLM 对实体与关系的建模处理多栏票据时应显式指定。内存与显存脚本默认设置FLAGS_allocator_strategyauto_growth以按需分配显存批量推理时可配合多进程参数控制单进程负载。至此你已经掌握了 PP-Structure 基于 Python 预测引擎的完整推理链路下载四类模型 → 用--modestructure完成版面分析、表格识别与混合文档解析 → 用--modekie完成 SER / RE 关键信息抽取并能根据源码理解每个参数与输出文件的来龙去脉。更多部署形态C 推理、Paddle Serving可参考同目录下的 cpp_infer.md 与 paddle_server.md。【免费下载链接】PaddleOCR飞桨多语言OCR工具包实用超轻量OCR系统支持80种语言识别提供数据标注与合成工具支持服务器、移动端、嵌入式及IoT设备端的训练与部署 Awesome multilingual OCR toolkits based on PaddlePaddle (practical ultra lightweight OCR system, support 80 languages recognition, provide data annotation and synthesis tools, support training and deployment among server, mobile, embedded and IoT devices)项目地址: https://gitcode.com/paddlepaddle/PaddleOCR创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考