news 2026/9/11 6:05:12

PaddleOCR PP-Structure 关键信息抽取(KIE)全流程实战:从 SER 语义实体识别到 RE 关系抽取

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
PaddleOCR PP-Structure 关键信息抽取(KIE)全流程实战:从 SER 语义实体识别到 RE 关系抽取

PaddleOCR PP-Structure 关键信息抽取(KIE)全流程实战:从 SER 语义实体识别到 RE 关系抽取

【免费下载链接】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

本篇技术指南以 PaddleOCR 仓库中的 Key Information Extraction Pipeline(关键信息抽取全流程) 博客文档为核心骨架,系统讲解文档图像关键信息抽取(KIE)的技术原理与完整落地方案:先厘清 SER(语义实体识别)与 RE(关系抽取)两个子任务的定义,再介绍 Grid / Token / GCN / 端到端四类主流深度学习路线,随后给出 PP-Structure 中"文本检测 + 文本识别 + KIE 模型"的两步式工程流水线,并附上基于仓库源码与配置文件验证的模型微调、数据标注、训练与预测命令。读完本文,你将掌握如何在身份证、发票、表单等固定版式场景中,从零搭建一套可用的关键信息抽取系统。

1. 什么是关键信息抽取(KIE)

关键信息抽取(Key Information Extraction, KIE)指从文本或图像中抽取出关键信息。作为 OCR 的下游任务,文档图像 KIE 拥有大量实际应用场景,例如表单识别、车票信息抽取、身份证信息抽取等。如果完全依赖人工从这些文档图像中提取关键信息,将非常耗时费力。因此,如何将视觉特征、版面布局、文本内容等多模态信息结合起来完成 KIE 任务,既充满挑战,又极具价值。

针对特定场景的文档图像,关键信息的位置与版面通常是相对固定的。因此早期研究大量采用基于模板匹配的方法来抽取关键信息,这类方法至今仍在许多简单场景中被广泛使用,但缺陷也很明显:面对不同场景需要花费大量时间调整模板,泛化能力差。

在 PaddleOCR 的 PP-Structure 体系中,文档图像 KIE 一般包含 2 个子任务:

  • (1)SER:语义实体识别(Semantic Entity Recognition),对检测出的每一行文本进行分类,例如把"姓名""Geoff Sample"分别划分为name_keyname_value两个类别,最终识别出的name_value类别对应文本字段就是我们需要的关键信息。
  • (2)RE:关系抽取(Relation Extraction),在 SER 结果的基础上进行问题(键)与答案(值)的匹配,例如将"姓名"与"Geoff Sample"建立键值对关系。

上图展示了 SER 与 RE 在身份证场景中的直观效果:不同颜色的框表示不同语义类别(红色框代表姓名、身份证号等关键字段),黄色箭头则表达问题与答案之间的匹配关系。图中测试图片来源于 XFUND 数据集、发票数据集以及合成的身份证数据集。

2. 主流的深度学习 KIE 方案

通用的 KIE 方法大多基于命名实体识别(NER),但这类方法只使用文本信息,忽略了位置与视觉特征,导致精度受限。近年来,学界的主流方向是融合多模态特征来提升 KIE 模型精度,主要分为以下四类:

  • (1)Grid 方法(网格法):聚焦于在图像层面融合多模态信息。多数文本为字符粒度,文本与结构信息的嵌入方式简单,代表算法如 chargrid [1]。
  • (2)Token 方法(令牌法):借鉴 BERT 等 NLP 方法,将位置、视觉等特征信息编码进多模态模型,并在大规模数据集上进行预训练,使得下游任务仅需少量标注数据即可获得优秀结果。代表算法包括 LayoutLM [2]、LayoutLMv2 [3]、LayoutXLM [4]、StrucTexT [5] 等。
  • (3)GCN 方法(图卷积法):尝试学习图像与字符之间的结构信息,以解决开放集合信息(训练集中未出现的模板)的抽取问题,代表算法如 GCN [6]、SDMGR [7]。
  • (4)端到端方法:将现有 OCR 文字识别与 KIE 信息抽取任务放入统一网络中进行共同学习,在学习过程中相互增强,代表算法如 TRIE [8]。

从仓库源码结构看,PaddleOCR 在configs/kie/目录下按算法族组织了对应的训练配置:layoutlm_series/(LayoutXLM 系列 SER/RE)、vi_layoutxlm/(VI-LayoutXLM 系列 SER/RE)以及sdmgr/(SDMGR 图卷积方案),可对照 configs/kie 目录查看。

3. PaddleOCR 中的 KIE 流水线

PaddleOCR 实现了 LayoutXLM 等 Token 方法;更进一步,在PP-StructureV2中,团队简化了 LayoutXLM 模型并提出了VI-LayoutXLM移除视觉特征提取模块以加速推理,同时引入符合人类阅读顺序的文本行排序策略UDML 知识蒸馏策略来提升模型精度。

在非端到端的 KIE 方法中,KIE 至少需要2 步

  1. OCR 阶段:使用 OCR 模型提取文本及其位置;
  2. KIE 阶段:根据图像、文本位置与文本内容,使用 KIE 模型抽取关键信息。

下面的小节依次说明两个阶段中涉及的模型选型、数据准备与微调方法。

3.1 训练 OCR 模型

3.1.1 文本检测

(1)数据

PaddleOCR 提供的大多数模型都是通用模型。在文本检测过程中,相邻文本行的检测通常依据位置距离进行合并。如上文示例图所示,直接使用 PP-OCRv3 通用英文检测模型进行检测时,很容易把两个代表不同属性的字段检测为一行。因此在 KIE 任务中,建议先针对自己的场景微调一个检测模型

在数据标注时,必须将不同的关键信息分离开,否则会增加后续 KIE 任务的难度。

对于下游任务,一般来说,200~300张训练图像即可保证基本的训练效果。如果缺乏先验知识,可以先标注200~300张图像用于后续文本检测模型训练。

(2)模型

模型选择方面,推荐使用PP-OCRv3 检测模型。检测模型的训练方法详见 文本检测教程 与 PP-OCRv3 检测模型教程。

3.1.2 文本识别

相比自然场景,文档图像中的文本识别通常相对简单(背景不过于复杂),因此建议直接尝试PaddleOCR 提供的 PP-OCRv3 通用文本识别模型(见 PP-OCRv3 模型列表)。

(1)数据

但部分文档场景仍存在挑战,例如身份证场景中的生僻字、发票等场景中的特殊字体,这些都会增加文本识别的难度。此时若想保证或进一步提升模型精度,推荐基于特定文档场景的文本识别数据集对 PP-OCRv3 模型进行微调。

微调过程中,建议至少准备5000张垂直场景文本识别图像以保证基本的微调效果。若想进一步提升精度与泛化能力,可以合成更多与场景相似的文本识别图像,并从公开数据集中收集通用真实文本识别数据,一起加入训练。训练时建议每个 epoch 中真实数据、合成数据与通用数据的比例约为1:1:1,可通过设置不同数据源的采样比例来控制。例如有 3 个训练文本文件,分别包含 10k、20k、50k 条数据,可在配置文件中这样设置:

Train: dataset: name: SimpleDataSet data_dir: ./train_data/ label_file_list: - ./train_data/train_list_10k.txt - ./train_data/train_list_10k.txt - ./train_data/train_list_50k.txt ratio_list: [1.0, 0.5, 0.2] ...

其中ratio_listlabel_file_list一一对应,表示每个数据源每轮参与训练的比例;SimpleDataSet是 PaddleOCR 通用的简单数据集类(对应源码见 simple_dataset.py)。

(2)模型

模型选择方面,推荐使用PP-OCRv3 识别模型。识别模型的训练方法详见 文本识别教程 与 PP-OCRv3 模型列表。

3.2 训练 KIE 模型

从识别出的文本中抽取关键信息,主要有两种方法:

  1. 直接使用 SER 模型获取关键信息类别。例如身份证场景中,我们把"姓名"和"Geoff Sample"分别标注为name_keyname_value,最终识别出的name_value类别对应的文本字段就是需要的关键信息。
  2. 联合使用 SER 与 RE 模型。先用 SER 模型识别出图像文本中的所有问题(键)与答案(值),再用 RE 模型匹配所有键与值之间的关系,从而完成关键信息抽取。
3.2.1 SER(语义实体识别)

以身份证场景为例,关键信息通常包括nameDOB等。我们可以直接把对应字段标注为具体类别,标注示意如下。

标注要点:

  • 标注过程中,不包含 KIE 关键信息的文本内容必须标注为other,相当于背景信息。例如身份证场景中若不关注DOB信息,可以把DOBArea manager的类别都标为other
  • 标注时要求标注文本行(textline)的位置,而不是字符位置。

数据方面,一般来说,对于相对固定的场景,50张训练图像即可达到可接受的效果。可使用 PPOCRLabel 完成标注流程。

模型方面,推荐使用 PP-StructureV2 提出的VI-LayoutXLM模型。它基于 LayoutXLM 改进而来,移除了视觉特征提取模块,在精度没有明显下降的前提下显著提升了推理速度。更多教程请参考 VI-LayoutXLM 算法介绍 与 KIE 训练教程。

3.2.2 SER + RE(语义实体识别 + 关系抽取)

SER 模型主要用于识别文档图像中的所有键与值,RE 模型主要用于匹配所有键与值。

仍以身份证场景为例,关键信息通常包括nameDOB等。在 SER 阶段,需要识别出所有问题(键)与答案(值),演示标注如下:所有键可标注为question,所有值可标注为answer

在 RE 阶段,需要标注每个字段的 ID 与连接信息,标注示意如下。

每个文本行需要添加IDlinking字段信息

  • ID记录该文本行的唯一标识,同一图像中不同文本内容的 ID 不能重复;
  • linking是一个列表,记录不同文本之间的连接信息。如果字段"name"的 ID 为 0、字段"Geoff Sample"的 ID 为 1,那么它们都带有[[0, 1]]的 linking 标记,表示id=0id=1的字段构成键值关系(DOB、Expires 等字段同理)。

注意:标注时如果某个值是多个文本行,可以在 linking 中添加多个键值对,例如[[0, 1], [0, 2]]

数据方面,一般来说,对于相对固定的场景,约50张训练图像即可达到可接受的效果。

模型方面,同样推荐使用VI-LayoutXLM模型(参考 VI-LayoutXLM 算法介绍 与 KIE 训练教程)。

从仓库中 XFUND 数据转换脚本 的源码可以看到 PaddleOCR 的 KIE 标注格式:每条文本行记录包含transcription(文本内容)、label(类别)、points(四点坐标)、id(唯一标识)与linking(连接关系),这正是上述标注规范在数据文件中的具体落地。

4. 仓库实操:数据、训练、评估与预测

围绕上文的两步流程,PP-Structure 提供了完整的可运行脚本与配置。以下命令均来自仓库中的 KIE 模块 README 与 KIE 训练教程,可直接复现。

4.1 环境准备

git clone https://github.com/PaddlePaddle/PaddleOCR.git cd PaddleOCR pip install -r requirements.txt pip install -r ppstructure/kie/requirements.txt # 安装PaddleOCR引擎用于预测 pip install "paddleocr<3.0"

注意:对于 KIE 任务需要降低 Paddle 框架版本(Paddle<2.6)与 PaddleNLP 版本(PaddleNLP<2.6)。

4.2 准备数据与预训练模型

使用 XFUND 数据集快速体验 SER 与 RE 模型:

mkdir train_data cd train_data # 下载与解压数据 wget https://paddleocr.bj.bcebos.com/ppstructure/dataset/XFUND.tar && tar -xf XFUND.tar cd .. mkdir pretrained_model cd pretrained_model # 下载并解压 SER 预训练模型 wget https://paddleocr.bj.bcebos.com/ppstructure/models/vi_layoutxlm/ser_vi_layoutxlm_xfund_pretrained.tar && tar -xf ser_vi_layoutxlm_xfund_pretrained.tar # 下载并解压 RE 预训练模型 wget https://paddleocr.bj.bcebos.com/ppstructure/models/vi_layoutxlm/re_vi_layoutxlm_xfund_pretrained.tar && tar -xf re_vi_layoutxlm_xfund_pretrained.tar cd ..

使用官方数据转换脚本也可以将 XFUND 或 FUNSD 原始标注转换为 PaddleOCR 格式(参考 trans_xfun_data.py 与 trans_funsd_label.py)。

4.3 训练 SER 与 RE 模型

以 VI-LayoutXLM 为例,直接训练 SER 模型:

# 单卡训练 SER 模型 python3 tools/train.py -c configs/kie/vi_layoutxlm/ser_vi_layoutxlm_xfund_zh.yml # 多卡训练 SER 模型 python3 -m paddle.distributed.launch --gpus '0,1,2,3' tools/train.py -c configs/kie/vi_layoutxlm/ser_vi_layoutxlm_xfund_zh.yml # 单卡训练 RE 模型 python3 tools/train.py -c configs/kie/vi_layoutxlm/re_vi_layoutxlm_xfund_zh.yml

在 ser_vi_layoutxlm_xfund_zh.yml 中可以看到 SER 模型的核心配置:

  • Architecture.Backbone.name: LayoutXLMForSermode: vinum_classes需按字典类别数设置为2n-1(n 为包含other在内的类别数,该示例为 7);
  • PostProcess.class_path指向类别字典文件(如class_list_xfun.txt);
  • Train.dataset通过data_dirlabel_file_list指定训练图像目录与标注文件;
  • 评估指标为VQASerTokenMetric,主指标hmean

RE 模型配置见 re_vi_layoutxlm_xfund_zh.yml:Backbone 为LayoutXLMForRe,数据变换链中多出VQAReTokenRelationVQAReTokenChunkTensorizeEntitiesRelations等算子,用于组织实体与关系张量。

训练中断后续训,或微调、评估时加载权重,通过-o覆盖Architecture.Backbone.checkpoints

python3 tools/train.py -c configs/kie/vi_layoutxlm/ser_vi_layoutxlm_xfund_zh.yml -o Architecture.Backbone.checkpoints=./output/ser_vi_layoutxlm_xfund_zh/best_accuracy

评估命令:

python3 tools/eval.py -c configs/kie/vi_layoutxlm/ser_vi_layoutxlm_xfund_zh.yml -o Architecture.Backbone.checkpoints=./output/ser_vi_layoutxlm_xfund_zh/best_accuracy

评估会打印 precision、recall、hmean、fps 等指标;训练过程中eval_batch_step控制评估间隔,hmean 最优的模型会自动保存到Global.save_model_dir下的best_accuracy/目录。

另外,PP-Structure 还提供 UDML 联合互学习蒸馏训练配置(ser_vi_layoutxlm_xfund_zh_udml.yml 与 re_vi_layoutxlm_xfund_zh_udml.yml),可进一步提升精度。

4.4 端到端预测(OCR + KIE)

(1)基于动态图的预测,使用 PaddleOCR 引擎先完成检测与识别,再送入 KIE 模型:

# 仅预测 SER 模型 python3 tools/infer_kie_token_ser.py \ -c configs/kie/vi_layoutxlm/ser_vi_layoutxlm_xfund_zh.yml \ -o Architecture.Backbone.checkpoints=./pretrained_model/ser_vi_layoutxlm_xfund_pretrained/best_accuracy \ Global.infer_img=./ppstructure/docs/kie/input/zh_val_42.jpg # SER + RE 模型串联 python3 ./tools/infer_kie_token_ser_re.py \ -c configs/kie/vi_layoutxlm/re_vi_layoutxlm_xfund_zh.yml \ -o Architecture.Backbone.checkpoints=./pretrained_model/re_vi_layoutxlm_xfund_pretrained/best_accuracy \ Global.infer_img=./train_data/XFUND/zh_val/image/zh_val_42.jpg \ -c_ser configs/kie/vi_layoutxlm/ser_vi_layoutxlm_xfund_zh.yml \ -o_ser Architecture.Backbone.checkpoints=./pretrained_model/ser_vi_layoutxlm_xfund_pretrained/best_accuracy

其中-c_ser指定 SER 配置文件,-o_ser覆盖 SER 配置中的对应项(该参数由 infer_kie_token_ser_re.py 中的ReArgsParser解析)。预测结果与可视化图保存在Global.save_res_path目录。

从源码看,infer_kie_token_ser.py 中的SerPredictor会加载kie_rec_model_dir/kie_det_model_dir指定的自定义 OCR 模型;若想直接加载已标注好的文本检测与识别结果(跳过 OCR 引擎),把Global.infer_img指向标注文件并把Global.infer_mode=False即可:

python3 tools/infer_kie_token_ser.py \ -c configs/kie/vi_layoutxlm/ser_vi_layoutxlm_xfund_zh.yml \ -o Architecture.Backbone.checkpoints=./pretrained_model/ser_vi_layoutxlm_xfund_pretrained/best_accuracy \ Global.infer_img=./train_data/XFUND/zh_val/val.json \ Global.infer_mode=False

(2)基于 PaddleInference 的预测(先下载推理模型ser_vi_layoutxlm_xfund_inferre_vi_layoutxlm_xfund_infer):

cd ppstructure # SER python3 kie/predict_kie_token_ser.py \ --kie_algorithm=LayoutXLM \ --ser_model_dir=../inference/ser_vi_layoutxlm_xfund_infer \ --image_dir=./docs/kie/input/zh_val_42.jpg \ --ser_dict_path=../train_data/XFUND/class_list_xfun.txt \ --vis_font_path=../doc/fonts/simfang.ttf \ --ocr_order_method="tb-yx" # SER + RE python3 kie/predict_kie_token_ser_re.py \ --kie_algorithm=LayoutXLM \ --re_model_dir=../inference/re_vi_layoutxlm_xfund_infer \ --ser_model_dir=../inference/ser_vi_layoutxlm_xfund_infer \ --use_visual_backbone=False \ --image_dir=./docs/kie/input/zh_val_42.jpg \ --ser_dict_path=../train_data/XFUND/class_list_xfun.txt \ --vis_font_path=../doc/fonts/simfang.ttf \ --ocr_order_method="tb-yx"

--ocr_order_method="tb-yx"对应文档中提到的"符合人类阅读顺序的文本行排序策略",从 predict_kie_token_ser.py 的预处理链可以看到它被传入VQATokenLabelEncode算子。若想使用自定义 OCR 模型,通过--det_model_dir--rec_model_dir指定检测与识别推理模型路径即可。

5. 小结与参考

至此,一条完整的 KIE 落地路径已经打通:场景化检测模型微调 → 场景化识别模型微调 → SER(或 SER+RE)数据标注与模型训练 → 端到端预测。PP-Structure 的 KIE 模块特性总结如下:

  • 集成 LayoutXLM、VI-LayoutXLM 等多模态模型以及 PP-OCR 预测引擎;
  • 支持基于多模态方法的 SER 与 RE 任务,SER 可完成文本识别与分类,RE 可完成键值对关系提取;
  • 支持 SER 与 RE 任务的自定义训练,支持 OCR+SER 端到端系统预测与评估、OCR+SER+RE 端到端系统预测;
  • 支持 SER 模型的动转静导出与基于 PaddleInference 的模型推理。

更多细节可继续阅读仓库内的 KIE 训练教程、VI-LayoutXLM 算法介绍、关键信息抽取全流程指南(中文版) 以及 KIE 模块 README。

6. References

[1] Katti A R, Reisswig C, Guder C, et al. Chargrid: Towards understanding 2d documents[J]. arXiv preprint arXiv:1809.08799, 2018.

[2] Xu Y, Li M, Cui L, et al. Layoutlm: Pre-training of text and layout for document image understanding[C]//Proceedings of the 26th ACM SIGKDD International Conference on Knowledge Discovery & Data Mining. 2020: 1192-1200.

[3] Xu Y, Xu Y, Lv T, et al. LayoutLMv2: Multi-modal pre-training for visually-rich document understanding[J]. arXiv preprint arXiv:2012.14740, 2020.

[4] Xu Y, Lv T, Cui L, et al. Layoutxlm: Multimodal pre-training for multilingual visually-rich document understanding[J]. arXiv preprint arXiv:2104.08836, 2021.

[5] Li Y, Qian Y, Yu Y, et al. StrucTexT: Structured Text Understanding with Multi-Modal Transformers[C]//Proceedings of the 29th ACM International Conference on Multimedia. 2021: 1912-1920.

[6] Liu X, Gao F, Zhang Q, et al. Graph convolution for multimodal information extraction from visually rich documents[J]. arXiv preprint arXiv:1903.11279, 2019.

[7] Sun H, Kuang Z, Yue X, et al. Spatial Dual-Modality Graph Reasoning for Key Information Extraction[J]. arXiv preprint arXiv:2103.14470, 2021.

[8] Zhang P, Xu Y, Cheng Z, et al. Trie: End-to-end text reading and information extraction for document understanding[C]//Proceedings of the 28th ACM International Conference on Multimedia. 2020: 1413-1422.

【免费下载链接】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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/11 6:04:55

LSTM时间序列预测实战:从数据预处理到滚动预测全流程

简介&#xff1a;本资源是一份面向Python数据科学初学者与中级开发者的LSTM时间序列预测实战教程&#xff0c;聚焦金融、电力负荷及趋势分析等典型场景&#xff0c;系统解决长周期依赖建模难题。压缩包共12个文件&#xff0c;含5个核心Python脚本&#xff08;涵盖数据预处理、模…

作者头像 李华
网站建设 2026/9/11 6:03:48

从零搭建AI设计引擎:UI-UX Pro Max Skill实战教程

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/11 6:01:52

Hermes Cron记忆机制:让定时任务从“金鱼”进化成“实习生”

周一你配好了一个每天早上 8 点跑数并生成摘要的定时任务&#xff0c;周二一查结果&#xff0c;它把昨天跑出来的数全忘了&#xff0c;分析结论也没接上&#xff0c;等于每天晚上都失忆一次。这就是典型的“金鱼型”定时任务&#xff1a;每天都在执行&#xff0c;但从不记得自己…

作者头像 李华
网站建设 2026/9/11 6:01:41

制造业数字化转型:痛点解析与三步走方案

1. 数字化转型的行业痛点与破局思路最近三年&#xff0c;我走访了47家不同规模的制造企业&#xff0c;发现一个惊人的共同点&#xff1a;83%的企业仍在使用纸质工单流转&#xff0c;65%的仓库管理依赖手工台账。某中型食品厂甚至出现过因为一张发货单遗失&#xff0c;导致整批货…

作者头像 李华