PaddleOCR 关键信息抽取算法解读与实战:LayoutXLM 的 SER/RE 训练与部署指南 📅 发布时间:2026/9/18 18:10:19 👁 浏览次数: PaddleOCR 关键信息抽取算法解读与实战LayoutXLM 的 SER/RE 训练与部署指南【免费下载链接】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本文聚焦 PaddleOCR 中对多语言视觉丰富文档理解模型LayoutXLMLayoutXLM: Multimodal Pre-training for Multilingual Visually-rich Document Understanding的完整落地链路从算法原理、XFUND 数据集上的复现效果到基于 configs/kie/layoutlm_series/ 配置文件的 SER语义实体抽取与 RE关系抽取训练、评估、推理以及 Python 端部署。读完本文你将能够独立完成 LayoutXLM 模型的导出与推理并能结合源码理解其视觉-文本-布局多模态融合的实现细节。1. 算法简介LayoutXLM 是 LayoutLM 系列LayoutLM、LayoutLMv2的跨语言扩展通过在大规模多语言文档语料上进行多模态预训练将文本语义、版面布局bbox 坐标与视觉特征统一建模从而显著提升票据、证件、合同等视觉丰富文档上的关键信息抽取能力。其论文信息如下LayoutXLM: Multimodal Pre-training for Multilingual Visually-rich Document UnderstandingYiheng Xu, Tengchao Lv, Lei Cui, Guoxin Wang, Yijuan Lu, Dinei Florencio, Cha Zhang, Furu Wei2021在 XFUND_zh 数据集上PaddleOCR 的算法复现效果如下hmean 为 PaddleOCR 关键信息抽取任务的主指标兼顾精确率与召回率| 模型 | 骨干网络 | 任务 | 配置文件 | hmean | 下载链接 | | --- | --- |--|--- | --- | --- | | LayoutXLM | LayoutXLM-base | SER | ser_layoutxlm_xfund_zh.yml | 90.38% | 训练模型 / 推理模型 | | LayoutXLM | LayoutXLM-base | RE | re_layoutxlm_xfund_zh.yml | 74.83% | 训练模型 / 推理模型 |其中 SER 任务的目标是给文档中的每个 token文本片段打上语义标签如问题、答案、标题等RE 任务则在 SER 结果基础上进一步抽取实体之间的关联关系如某个问题实体与哪个答案实体配对。两个任务共享 LayoutXLM-base 多模态编码器仅在任务头与数据处理上有所区别。从源码结构看PaddleOCR 在 ppocr/modeling/backbones/vqa_layoutlm.py 中分别定义了LayoutXLMForSer与LayoutXLMForRe两个模型类它们均基于LayoutXLMModel多模态主干分别叠加LayoutXLMForTokenClassificationtoken 级分类头与LayoutXLMForRelationExtraction关系抽取头实现了一套主干、两种任务头的模块化设计。2. 环境配置请先参考 《运行环境准备》 配置 PaddleOCR 运行环境参考 《项目克隆》 克隆项目代码。LayoutXLM 属于 VQAVisual Question Answering类文档理解模型训练与推理需要额外的依赖pip install -r ppstructure/kie/requirements.txt该文件在 ppstructure/kie/requirements.txt 中集中声明了关键信息抽取相关的依赖包主要包括paddlenlp等用于加载 LayoutXLM 预训练模型权重与 tokenizer。LayoutXLM 预训练权重在LayoutXLMForSer/LayoutXLMForRe中通过pretrained: True自动加载无需手动下载。3. 模型训练、评估、预测请参考 关键信息抽取教程。PaddleOCR 对代码进行了模块化训练不同的关键信息抽取模型只需要更换配置文件即可。3.1 配置文件解读SER 任务SER 任务对应 configs/kie/layoutlm_series/ser_layoutxlm_xfund_zh.yml其关键配置如下Global: use_gpu: True epoch_num: epoch_num 200 print_batch_step: 10 save_model_dir: ./output/ser_layoutxlm_xfund_zh eval_batch_step: [ 0, 19 ] # 第 0 次迭代后每 19 次迭代评估一次 infer_img: ppstructure/docs/kie/input/zh_val_42.jpg save_res_path: ./output/ser_layoutxlm_xfund_zh/res Architecture: model_type: kie algorithm: algorithm LayoutXLM Backbone: name: LayoutXLMForSer # 对应 ppocr/modeling/backbones/vqa_layoutlm.py pretrained: True num_classes: num_classes 7 # XFUND 数据集上的 7 类语义标签 Loss: name: VQASerTokenLayoutLMLoss # 实现于 ppocr/losses/vqa_token_layoutlm_loss.py num_classes: *num_classes key: backbone_out Optimizer: name: AdamW lr: name: Linear learning_rate: 0.00005 warmup_epoch: 2 PostProcess: name: VQASerTokenLayoutLMPostProcess # 实现于 ppocr/postprocess/vqa_token_ser_layoutlm_postprocess.py class_path: class_path train_data/XFUND/class_list_xfun.txt数据侧的核心变换链Train/Eval 的transforms体现了 SER 的多模态输入组织方式VQATokenLabelEncode将 OCR 结果与标签文件编码为input_ids、bbox、attention_mask、token_type_ids等文本布局特征并通过contains_re: False指定本任务不包含关系标注VQATokenPad将序列 padding 到max_seq_len: 512VQASerTokenChunk对超长序列按max_seq_len分块Resize: [224, 224]NormalizeImageToCHWImage处理视觉分支输入图像。num_classes: 7对应 XFUND_zh 中 7 类实体标签问题、答案、标题、其他等类别列表由 train_data/XFUND/class_list_xfun.txt 提供需自行准备 XFUND 数据集并置于该目录。3.2 配置文件解读RE 任务RE 任务对应 configs/kie/layoutlm_series/re_layoutxlm_xfund_zh.yml与 SER 的主要差异在于Architecture: Backbone: name: LayoutXLMForRe Loss: name: LossFromOutput key: loss reduction: meanRE 配置中VQATokenLabelEncode设置contains_re: True以读取实体与关系标注并在变换链中额外加入了VQAReTokenRelation、TensorizeEntitiesRelations两个算子将实体与关系张量化模型输出经VQAReTokenLayoutLMPostProcess见 ppocr/postprocess/vqa_token_re_layoutlm_postprocess.py解码把预测的关系索引映射回 SER 结果中的具体 token 对最终得到(head_ocr_info, tail_ocr_info)形式的关系列表。RE 任务训练数据量更大因此配置中batch_size_per_card: 2、num_workers: 8且学习率采用warmup_epoch: 10的更长预热Optimizer中clip_norm: 10用于梯度裁剪防止关系头训练不稳定。3.3 训练、评估、预测命令按 关键信息抽取教程 准备 XFUND 数据集后训练只需指定配置文件与是否评估即可# 单卡训练 SER python3 tools/train.py -c configs/kie/layoutlm_series/ser_layoutxlm_xfund_zh.yml # 训练中评估每 eval_batch_step 间隔执行 python3 tools/train.py -c configs/kie/layoutlm_series/ser_layoutxlm_xfund_zh.yml -o Global.do_evalTrue # 独立评估 python3 tools/eval.py -c configs/kie/layoutlm_series/ser_layoutxlm_xfund_zh.yml \ -o Global.checkpoints./output/ser_layoutxlm_xfund_zh/best_accuracy指标由配置中的Metric: VQASerTokenMetricRE 为VQAReTokenMetric计算main_indicator: hmean表明以 hmean 作为模型筛选与报告的主指标。4. 推理部署4.1 Python 推理SER首先将训练得到的模型转换成 inference model。以 LayoutXLM 模型在 XFUND_zh 数据集上训练的模型为例模型下载地址可以使用下面的命令进行转换wget https://paddleocr.bj.bcebos.com/pplayout/ser_LayoutXLM_xfun_zh.tar tar -xf ser_LayoutXLM_xfun_zh.tar python3 tools/export_model.py -c configs/kie/layoutlm_series/ser_layoutxlm_xfund_zh.yml \ -o Architecture.Backbone.checkpoints./ser_LayoutXLM_xfun_zh \ Global.save_inference_dir./inference/ser_layoutxlm_inferLayoutXLM 模型基于 SER 任务进行推理可以执行如下命令cd ppstructure python3 kie/predict_kie_token_ser.py \ --kie_algorithmLayoutXLM \ --ser_model_dir../inference/ser_layoutxlm_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推理入口 ppstructure/kie/predict_kie_token_ser.py 的实现要点如下内部会先创建PaddleOCR检测识别引擎SerPredictor.__init__中self.ocr_engine PaddleOCR(...)用 OCR 结果替代数据集中的标注实现无标注的端到端关键信息抽取预处理算子VQATokenLabelEncode、VQATokenPad、VQASerTokenChunk等与训练配置保持一致其中order_method参数控制 OCR 结果的版面排序方式推理结果经VQASerTokenLayoutLMPostProcess后处理结合segment_offset_ids与ocr_infos将 token 级预测还原为可读的实体结果最终由draw_ser_results绘制可视化结果并保存。SER 可视化结果默认保存到./output文件夹里面结果示例如下RE首先将训练得到的模型转换成 inference model。以 LayoutXLM 模型在 XFUND_zh 数据集上训练的模型为例模型下载地址可以使用下面的命令进行转换wget https://paddleocr.bj.bcebos.com/pplayout/re_LayoutXLM_xfun_zh.tar tar -xf re_LayoutXLM_xfun_zh.tar python3 tools/export_model.py -c configs/kie/layoutlm_series/re_layoutxlm_xfund_zh.yml \ -o Architecture.Backbone.checkpoints./re_LayoutXLM_xfun_zh \ Global.save_inference_dir./inference/re_layoutxlm_inferLayoutXLM 模型基于 RE 任务进行推理可以执行如下命令cd ppstructure python3 kie/predict_kie_token_ser_re.py \ --kie_algorithmLayoutXLM \ --re_model_dir../inference/re_layoutxlm_infer \ --ser_model_dir../inference/ser_layoutxlm_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.ttfRE 推理脚本 ppstructure/kie/predict_kie_token_ser_re.py 采用两阶段级联结构SerRePredictor内部先复用SerPredictor完成 SER 预测再由make_input将 SER 结果与输入特征组装成 RE 模型的输入input_ids、bbox、attention_mask、token_type_ids、image、entities、relationsRE 模型输出pred_relations后交由VQAReTokenLayoutLMPostProcess与 SER 结果融合得到最终的实体-实体关系对。RE 可视化结果默认保存到./output文件夹里面结果示例如下4.2 C 推理部署暂不支持。4.3 Serving 服务化部署暂不支持。4.4 更多推理部署暂不支持。5. FAQQSER 与 RE 模型必须串联使用吗从实现看RE 推理脚本predict_kie_token_ser_re.py内部强制依赖 SER 模型提供实体定位结果因此 RE 任务需要同时指定--ser_model_dir与--re_model_dir而 SER 推理predict_kie_token_ser.py可独立运行。Q推理时是否必须提供真实 OCR 结果不需要。推理脚本会自动创建 PaddleOCR 引擎完成版面文本检测与识别--ser_dict_path只需提供类别列表文件如train_data/XFUND/class_list_xfun.txt。Quse_visual_backbone是什么这是是否启用 LayoutXLM 视觉主干分支的开关可见于 vqa_layoutlm.py 中对use_visual_backbone的判断。关闭时模型退化为纯文本布局输入可显著降低计算量适合对视觉信息依赖较弱的场景。引用article{DBLP:journals/corr/abs-2104-08836, author {Yiheng Xu and Tengchao Lv and Lei Cui and Guoxin Wang and Yijuan Lu and Dinei Flor{\^{e}}ncio and Cha Zhang and Furu Wei}, title {LayoutXLM: Multimodal Pre-training for Multilingual Visually-rich Document Understanding}, journal {CoRR}, volume {abs/2104.08836}, year {2021}, url {https://arxiv.org/abs/2104.08836}, eprinttype {arXiv}, eprint {2104.08836}, timestamp {Thu, 14 Oct 2021 09:17:23 0200}, biburl {https://dblp.org/rec/journals/corr/abs-2104-08836.bib}, bibsource {dblp computer science bibliography, https://dblp.org} } article{DBLP:journals/corr/abs-1912-13318, author {Yiheng Xu and Minghao Li and Lei Cui and Shaohan Huang and Furu Wei and Ming Zhou}, title {LayoutLM: Pre-training of Text and Layout for Document Image Understanding}, journal {CoRR}, volume {abs/1912.13318}, year {2019}, url {http://arxiv.org/abs/1912.13318}, eprinttype {arXiv}, eprint {1912.13318}, timestamp {Mon, 01 Jun 2020 16:20:46 0200}, biburl {https://dblp.org/rec/journals/corr/abs-1912-13318.bib}, bibsource {dblp computer science bibliography, https://dblp.org} } article{DBLP:journals/corr/abs-2012-14740, author {Yang Xu and Yiheng Xu and Tengchao Lv and Lei Cui and Furu Wei and Guoxin Wang and Yijuan Lu and Dinei A. F. Flor{\^{e}}ncio and Cha Zhang and Wanxiang Che and Min Zhang and Lidong Zhou}, title {LayoutLMv2: Multi-modal Pre-training for Visually-Rich Document Understanding}, journal {CoRR}, volume {abs/2012.14740}, year {2020}, url {https://arxiv.org/abs/2012.14740}, eprinttype {arXiv}, eprint {2012.14740}, timestamp {Tue, 27 Jul 2021 09:53:52 0200}, biburl {https://dblp.org/rec/journals/corr/abs-2012-14740.bib}, bibsource {dblp computer science bibliography, https://dblp.org} }【免费下载链接】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),仅供参考