资讯动态

PaddleOCR 关键信息抽取算法 VI-LayoutXLM:原理、配置与 SER/RE 全流程实战指南

发布时间:2026/9/10 2:14:36 来源:尧图企业网站定制
PaddleOCR 关键信息抽取算法 VI-LayoutXLM原理、配置与 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 中的VI-LayoutXLM 关键信息抽取算法视觉无关版 LayoutXLM系统讲解其在语义实体识别SER与关系抽取RE两大任务上的模型原理、数据集准备、配置详解、训练/评估/预测以及 inference 模型导出与推理部署的完整链路。读完本文你将能够基于configs/kie/vi_layoutxlm/下的配置文件在 XFUND_zh 等数据集上独立完成 VI-LayoutXLM 从训练到 Python 推理部署的端到端实战并理解其去掉视觉骨干、精度无损、推理加速的设计动机与底层实现。1. 算法简介从 LayoutXLM 到 VI-LayoutXLM1.1 算法定位VI-LayoutXLMVisual-Independent LayoutXLM是 PaddleOCR 中对LayoutXLM多模态文档理解模型的关键信息抽取改进。其核心思路是在下游任务SER/RE的训练过程中去除视觉骨干网络visual backbone模块仅依赖文本与布局bbox两种模态完成文档关键信息抽取。由于视觉特征不再参与计算模型在最终精度基本无损的前提下推理速度进一步提升。从源码结构看该改进体现在 vqa_layoutlm.py 中LayoutXLMForSer与 vqa_layoutlm.py 中LayoutXLMForRe的实现if ( hasattr(self.model.layoutxlm, use_visual_backbone) and self.model.layoutxlm.use_visual_backbone is False ): self.use_visual_backbone False def forward(self, x): if self.use_visual_backbone is True: image x[4] else: image None当检测到底层 PaddleNLP 预训练模型的use_visual_backbone为False时image输入被置为None网络跳过图像特征分支。而 VI-LayoutXLM 系列预训练模型vi-layoutxlm-base-uncased恰好以无视觉骨干的形式发布从而在训练与推理中省去整个视觉特征提取的计算开销。1.2 复现精度在XFUND_zh数据集上PaddleOCR 官方复现效果如下模型骨干网络任务配置文件hmean下载链接VI-LayoutXLMVI-LayoutXLM-baseSERser_vi_layoutxlm_xfund_zh_udml.yml93.19%训练模型 / 推理模型VI-LayoutXLMVI-LayoutXLM-baseREre_vi_layoutxlm_xfund_zh_udml.yml83.92%训练模型 / 推理模型说明上表两个配置均为U-DML 知识蒸馏训练配置后缀udmlhmean 为该配置下的复现结果。此外configs/kie/vi_layoutxlm/目录还提供对应的非蒸馏基础配置ser_vi_layoutxlm_xfund_zh.yml与re_vi_layoutxlm_xfund_zh.yml。1.3 算法家族与技术背景VI-LayoutXLM 属于 PaddleOCR 关键信息抽取KIE算法家族中的 LayoutXLM 系列。LayoutXLM论文 arXiv:2104.08836是面向**多语言视觉丰富文档理解Visually-rich Document Understanding**的多模态预训练模型其前置工作包括 LayoutLMarXiv:1912.13318与 LayoutLMv2arXiv:2012.14740。该系列模型将文本text、布局layout/bbox与图像image三种模态统一建模用于票据、证件、表格等场景的文档信息抽取。论文引用格式见本文最后一节。2. 环境配置与项目克隆训练与推理 VI-LayoutXLM 前需要先完成 PaddleOCR 的运行环境准备与项目克隆运行环境准备请参考《运行环境准备》安装 PaddlePaddle 与 PaddleOCR 依赖PaddleOCR 的 KIE 模型通过 PaddleNLP 加载 LayoutXLM 预训练模型需确保 PaddleNLP 正确安装。项目克隆请参考《项目克隆》获取仓库代码。完成上述两步后后续所有训练、评估、预测与导出命令均在该仓库根目录下执行。3. 数据准备从 XFUND 原始数据到 PaddleOCR 训练格式VI-LayoutXLM 训练使用SimpleDataSet文本文件存储的通用数据格式。PaddleOCR 对代码进行了模块化训练不同的 KIE 模型只需要更换配置文件即可数据格式完全通用。完整的数据准备细节可参考关键信息抽取教程。3.1 数据集目录组织训练数据默认存放在train_data目录。若本地已有数据集可创建软链接# linux and mac os ln -sf path/to/dataset path/to/paddle_ocr/train_data/dataset # windows mklink /d path/to/paddle_ocr/train_data/dataset path/to/dataset最终数据集推荐结构如下|-train_data |-data_name |- train.json |- train |- zh_train_0.png |- zh_train_1.jpg | ... |- val.json |- val |- zh_val_0.png |- zh_val_1.jpg | ...3.2 标注文件格式训练集与验证集各用一个文本文件记录图片路径 标注信息二者用\t分割不可使用其他分隔符否则训练报错标注信息为 JSON 字符串图像文件名\t图像标注信息 zh_train_0.jpg [{transcription: 汇丰晋信, label: other, points: [[104, 114], [530, 114], [530, 175], [104, 175]], id: 1, linking: []}, {transcription: 受理时间:, label: question, points: [[126, 267], [266, 267], [266, 305], [126, 305]], id: 7, linking: [[7, 13]]}, {transcription: 2020.6.15, label: answer, points: [[321, 239], [537, 239], [537, 285], [321, 285]], id: 13, linking: [[7, 13]]}]每个元素字典字段含义如下字段含义transcription文本行的文字内容label该文本行所属的类别SER 标签points文本行的四点左上、右上、右下、左下坐标id文本行 id用于 RE 任务的实体配对linking文本行之间的连接信息实体关系对用于 RE 任务3.3 字典文件所有标签的类别列表存放在字典文件中如class_list.txt每行一个类别。以 XFUND_zh 为例共 4 类OTHER QUESTION ANSWER HEADER注意两点类别信息不区分大小写HEADER与header会被解析为同一类别 id因此不能用仅大小写不同的字符串表示不同类别建议将other类别放在第一行解析时other的类别 id 为 0后续可视化时该类别不会被绘制。3.4 公开数据下载与格式转换没有本地数据时可从 XFUND 或 FUNSD 官网下载原始数据再用仓库内转换脚本生成 PaddleOCR 训练格式XFUND 转换脚本trans_xfun_data.pyFUNSD 转换脚本ppstructure/kie/tools/trans_funsd_label.py以 XFUND 为例转换脚本会将原始 json 中的box转为四点points并保留id、linking字段输出图片路径\t标注json格式python3 ppstructure/kie/tools/trans_xfun_data.py \ --ori_gt_path XFUND原始gt.json \ --output_path train_data/XFUND/zh_train/train.json更多公开数据集说明见关键信息抽取数据集文档。如需人工标注可使用 PPOCRLabel。3.5 快速下载已处理好的 XFUND_zh 数据集mkdir train_data cd train_data wget https://paddleocr.bj.bcebos.com/ppstructure/dataset/XFUND.tar tar -xf XFUND.tar cd ..4. 模型训练4.1 下载预训练模型可选如果只想体验评估、预测、动转静、推理流程可跳过数据训练直接下载基于 XFUND 的 SER 与 RE 预训练模型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.tar4.2 启动训练若安装的是 CPU 版本 PaddlePaddle请将配置文件中的use_gpu改为FalsePaddleOCR 训练时会自动下载 VI-LayoutXLM 预训练模型基于 PaddleNLP 加载vi-layoutxlm-base-uncased无需预先手动下载训练日志会自动保存到配置文件中Global.save_model_dir目录下的train.log。# SER 单卡训练 python3 tools/train.py -c configs/kie/vi_layoutxlm/ser_vi_layoutxlm_xfund_zh.yml # SER 多卡训练通过--gpus参数指定卡号 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 为例正常启动训练后日志如下[2022/08/08 16:28:28] ppocr INFO: epoch: [1/200], global_step: 10, lr: 0.000006, loss: 1.871535, avg_reader_cost: 0.28200 s, avg_batch_cost: 0.82318 s, avg_samples: 8.0, ips: 9.71838 samples/s, eta: 0:51:59 [2022/08/08 16:28:33] ppocr INFO: epoch: [1/200], global_step: 19, lr: 0.000018, loss: 1.461939, avg_reader_cost: 0.00042 s, avg_batch_cost: 0.32037 s, avg_samples: 6.9, ips: 21.53773 samples/s, eta: 0:37:55 [2022/08/08 16:28:39] ppocr INFO: cur metric, precision: 0.11526348939743859, recall: 0.19776657060518732, hmean: 0.14564265817747712, fps: 34.008392345050055 [2022/08/08 16:28:45] ppocr INFO: save best model is to ./output/ser_vi_layoutxlm_xfund_zh/best_accuracy日志字段含义字段含义epoch当前迭代轮次iter当前迭代次数lr当前学习率loss当前损失函数值reader_cost当前 batch 数据处理耗时batch_cost当前 batch 总耗时samples当前 batch 内的样本数ips每秒处理图片的数量PaddleOCR 支持训练与评估交替进行可在配置文件中修改eval_batch_step设置评估频率ser_vi_layoutxlm_xfund_zh.yml默认每 19 个 iter 评估一次。评估过程中默认将最佳 hmean 模型保存为output/ser_vi_layoutxlm_xfund_zh/best_accuracy/。若验证集很大建议减少评估次数或训练完再评估。4.3 自定义数据集的配置修改训练自己的数据集时需要修改配置文件中的数据配置、字典文件与类别数。以configs/kie/vi_layoutxlm/ser_vi_layoutxlm_xfund_zh.yml为例核心修改点如下Architecture: Backbone: name: LayoutXLMForSer pretrained: True mode: vi # 采用BIO标注时字典含n个字段含other则类别数为2n-1不含other则为2n1。 # 否则训练会报 IndexError: (OutOfRange) label value should less than the shape of axis dimension num_classes: num_classes 7 PostProcess: name: VQASerTokenLayoutLMPostProcess # 修改为自定义数据集的字典路径 class_path: class_path train_data/XFUND/class_list_xfun.txt Train: dataset: name: SimpleDataSet data_dir: train_data/XFUND/zh_train/image # 修改为训练数据目录 label_file_list: - train_data/XFUND/zh_train/train.json # 修改为训练标签文件 loader: batch_size_per_card: 8 # 训练单卡 batch_size Eval: dataset: name: SimpleDataSet data_dir: train_data/XFUND/zh_val/image # 修改为验证数据目录 label_file_list: - train_data/XFUND/zh_val/val.json # 修改为验证标签文件 loader: batch_size_per_card: 8 # 验证单卡 batch_size注意预测/评估时的配置文件务必与训练保持一致。4.4 断点训练训练中断后可通过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重要注意事项Architecture.Backbone.checkpoints的优先级高于Architecture.Backbone.pretrained。加载之前训练好的模型做微调/恢复训练/评估时必须用checkpoints指定参数路径若使用默认通用预训练模型从头训练则pretrained设为True且checkpoints设为空nullLayoutXLM 系列模型均调用 PaddleNLP 中的预训练模型模型加载与保存逻辑与 PaddleNLP 一致因此无需指定Global.pretrained_model或Global.checkpointsLayoutXLM 系列模型的蒸馏训练目前不支持断点训练。4.5 分布式训练多机多卡训练时通过--ips指定机器 IP、--gpus指定 GPU IDpython3 -m paddle.distributed.launch --ipsxx.xx.xx.xx,xx.xx.xx.xx --gpus 0,1,2,3 \ tools/train.py -c configs/kie/vi_layoutxlm/ser_vi_layoutxlm_xfund_zh.yml注意1需将ips替换为实际机器地址机器之间需能相互 ping 通可用ifconfig查看 IP2需在多台机器上分别启动命令3更多分布式训练性能说明参考分布式训练教程。4.6 基于 U-DML 的知识蒸馏训练PaddleOCR 支持基于 U-DML 知识蒸馏的 KIE 模型训练配置文件为 ser_vi_layoutxlm_xfund_zh_udml.yml 与 re_vi_layoutxlm_xfund_zh_udml.yml训练命令python3 tools/train.py -c configs/kie/vi_layoutxlm/ser_vi_layoutxlm_xfund_zh_udml.yml蒸馏配置文件采用DistillationModel结构同时定义Teacher与Student两个LayoutXLMForSer子模型并通过CombinedLoss组合多路蒸馏损失Architecture: name: DistillationModel algorithm: Distillation Models: Teacher: Backbone: name: LayoutXLMForSer pretrained: True mode: vi num_classes: num_classes 7 Student: Backbone: name: LayoutXLMForSer pretrained: True mode: vi num_classes: *num_classes Loss: name: CombinedLoss loss_config_list: - DistillationVQASerTokenLayoutLMLoss: weight: 1.0 model_name_list: [Student, Teacher] key: backbone_out num_classes: *num_classes - DistillationSERDMLLoss: weight: 1.0 act: softmax use_log: true model_name_pairs: - [Student, Teacher] key: backbone_out - DistillationVQADistanceLoss: weight: 0.5 mode: l2 model_name_pairs: - [Student, Teacher] key: hidden_states_5 - DistillationVQADistanceLoss: weight: 0.5 mode: l2 model_name_pairs: - [Student, Teacher] key: hidden_states_8该配置同时使用标签损失、SER-DML 损失以及中间层hidden_states_5、hidden_states_8的 L2 距离损失来约束学生模型逼近教师模型。更多知识蒸馏说明参考知识蒸馏文档。注意LayoutXLM 系列 KIE 模型与 PaddleNLP 的保存/加载逻辑保持一致蒸馏过程中仅保存学生模型参数。若用保存的模型进行评估需要使用学生模型对应的配置蒸馏配置对应的学生模型为 ser_vi_layoutxlm_xfund_zh.yml。4.7 其他训练环境Windows GPU/CPU仅支持单卡训练与预测指定 GPU 用set CUDA_VISIBLE_DEVICES0DataLoader 仅支持单进程需将num_workers设为 0macOS不支持 GPU需在配置文件中设置use_gpu: False其余命令与 Linux 相同Linux DCU需设置环境变量export HIP_VISIBLE_DEVICES0,1,2,3其余命令与 Linux GPU 相同。5. 模型评估与测试5.1 指标评估训练中模型参数默认保存在Global.save_model_dir目录下。评估时需用Architecture.Backbone.checkpoints指向保存的参数文件评估数据集通过配置文件中 Eval 段的data_dir/label_file_list设置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 等指标[2022/08/09 07:59:28] ppocr INFO: metric eval *************** [2022/08/09 07:59:28] ppocr INFO: precision:0.697476609016161 [2022/08/09 07:59:28] ppocr INFO: recall:0.8861671469740634 [2022/08/09 07:59:28] ppocr INFO: hmean:0.7805806758686339 [2022/08/09 07:59:28] ppocr INFO: fps:17.3673646068991055.2 训练产出的模型文件根据配置中的save_model_dir与save_epoch_step训练会保存以下文件output/ser_vi_layoutxlm_xfund_zh/ ├── best_accuracy │ ├── metric.states │ ├── model_config.json │ ├── model_state.pdparams ├── best_accuracy.pdopt ├── config.yml ├── train.log ├── latest │ ├── metric.states │ ├── model_config.json │ ├── model_state.pdparams ├── latest.pdopt其中best_accuracy.*是评估集上的最优模型latest.*是最新保存的模型。5.3 使用 OCR 引擎快速预测默认预测会加载 PP-OCRv3 检测/识别模型对图片做 OCR然后进行信息抽取python3 tools/infer_kie_token_ser.py -c configs/kie/vi_layoutxlm/ser_vi_layoutxlm_xfund_zh.yml \ -o Architecture.Backbone.checkpoints./output/ser_vi_layoutxlm_xfund_zh/best_accuracy \ Global.infer_img./ppstructure/docs/kie/input/zh_val_42.jpg预测图片会保存在Global.save_res_path指定路径中。若希望使用预先获取的或标注的OCR 结果而非在线运行 OCR 引擎可指定Global.infer_img为标注文件内含图片路径与 OCR 信息并设置Global.infer_modeFalsepython3 tools/infer_kie_token_ser.py -c configs/kie/vi_layoutxlm/ser_vi_layoutxlm_xfund_zh.yml \ -o Architecture.Backbone.checkpoints./output/ser_vi_layoutxlm_xfund_zh/best_accuracy \ Global.infer_img./train_data/XFUND/zh_val/val.json Global.infer_modeFalse使用标注 OCR 结果时部分检测框信息更准确但整体信息抽取结果基本一致。5.4 RE 任务的预测RE 预测需要先得到 SER 结果因此要同时加载 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./pretrain_models/re_vi_layoutxlm_udml_xfund_zh/best_accuracy/ \ Global.infer_img./train_data/XFUND/zh_val/image/ \ -c_ser configs/kie/vi_layoutxlm/ser_vi_layoutxlm_xfund_zh.yml \ -o_ser Architecture.Backbone.checkpointspretrain_models/ser_vi_layoutxlm_udml_xfund_zh/best_accuracy/其中-c_ser指定 SER 配置文件-o_ser后接待修改的 SER 模型参数如预训练权重。同理RE 也可通过Global.infer_modeFalse 标注文件方式使用预先获取的 OCR 结果直接使用标注 OCR 结果的 RE 预测通常更准确。6. 配置文件深度解析6.1 SER 配置 ser_vi_layoutxlm_xfund_zh.yml配置段关键字段说明Globalepoch_num: 200总训练轮数Globaleval_batch_step: [0, 19]从第 0 个 iter 起每 19 个 iter 评估一次Globalsave_model_dir: ./output/ser_vi_layoutxlm_xfund_zh模型保存目录Globalinfer_img: ppstructure/docs/kie/input/zh_val_42.jpg默认推理图片Globald2s_train_image_shape: [3, 224, 224]训练图像输入尺寸Globalamp_custom_white_list: [scale, concat, elementwise_add]AMP 混合精度自定义白名单算子Architecture.Backbonename: LayoutXLMForSerSER 骨干网络PaddleNLP 实现Architecture.Backbonemode: vi使用 VI-LayoutXLMvisual-independent预训练权重可选base或viArchitecture.Backbonenum_classes: 7BIO 标注下的类别数4 类含 other 时为 2×4−17Lossname: VQASerTokenLayoutLMLossSER token 级分类损失Optimizername: AdamW, lr: 0.00005, warmup_epoch: 2优化器与学习率策略PostProcessname: VQASerTokenLayoutLMPostProcessSER 后处理PostProcessclass_path: train_data/XFUND/class_list_xfun.txt类别字典路径Metricname: VQASerTokenMetric, main_indicator: hmean评估指标Train/Evalbatch_size_per_card: 8、num_workers: 4批大小与数据加载线程数训练与评估的transforms流水线SER为transforms: - DecodeImage: # 读取图像RGB、channel_firstFalse img_mode: RGB channel_first: False - VQATokenLabelEncode: # 将 OCR 文本/bbox/标签编码为 token 输入 contains_re: False # 非 RE 任务 algorithm: LayoutXLM class_path: train_data/XFUND/class_list_xfun.txt use_textline_bbox_info: True order_method: tb-yx # 文本行排序方式可选 None 或 tb-yx - VQATokenPad: # token padding 到 max_seq_len max_seq_len: 512 return_attention_mask: True - VQASerTokenChunk: # 超长序列分块 max_seq_len: 512 - Resize: size: [224, 224] - NormalizeImage: # ImageNet 归一化参数 scale: 1 mean: [123.675, 116.28, 103.53] std: [58.395, 57.12, 57.375] order: hwc - ToCHWImage: - KeepKeys: keep_keys: [input_ids, bbox, attention_mask, token_type_ids, image, labels]其中order_method: tb-yx表示按从上到下、从右到左top-bottom, y-x的规则对文本行排序用于将 2D 版面文本序列化为 token 序列。6.2 RE 配置 re_vi_layoutxlm_xfund_zh.yml配置段关键字段说明Globalepoch_num: 130总训练轮数Globalsave_model_dir: ./output/re_vi_layoutxlm_xfund_zh模型保存目录Architecture.Backbonename: LayoutXLMForReRE 骨干网络Lossname: LossFromOutput, key: loss, reduction: mean直接取模型输出 lossOptimizerclip_norm: 10、warmup_epoch: 10梯度裁剪范数与 warmupPostProcessname: VQAReTokenLayoutLMPostProcessRE 后处理解析实体关系对Metricname: VQAReTokenMetric, main_indicator: hmean评估指标Train loaderbatch_size_per_card: 2RE 任务显存占用较大批大小更小RE 任务的 transforms 在 SER 基础上额外加入关系标注处理算子transforms: - VQATokenLabelEncode: contains_re: True # 开启 RE 标签编码 ... - VQAReTokenRelation: # 构建实体-关系张量 - VQAReTokenChunk: max_seq_len: 512 - TensorizeEntitiesRelations: # 实体/关系张量化 - KeepKeys: keep_keys: [input_ids, bbox, attention_mask, token_type_ids, entities, relations]6.3 蒸馏配置与基础配置的关系*_udml.yml为知识蒸馏配置Architecture.name: DistillationModel含 Teacher/Student 双模型与多路损失基础配置为单模型直接训练。两者共享相同的数据路径、transforms 与num_classes设置蒸馏配置的训练批大小batch_size_per_card: 4因同时前向 Teacher 与 Student 而更小。SER 与 RE 的完整配置均位于 configs/kie/vi_layoutxlm/。7. 模型导出与 Python 推理部署7.1 inference 模型与 checkpoints 模型的区别inference 模型paddle.jit.save保存是模型结构与参数一并固化的模型多用于预测部署场景推理性能优越、便于系统集成checkpoints 模型只保存参数多用于恢复训练。因此部署前需要将训练产出的 checkpoints 导出为 inference 模型。7.2 SER 模型导出与推理# -c 训练算法yml配置文件-o 可选参数 # Architecture.Backbone.checkpoints 设置待转换的训练模型地址 # Global.save_inference_dir 设置转换后模型的保存地址 python3 tools/export_model.py -c configs/kie/vi_layoutxlm/ser_vi_layoutxlm_xfund_zh.yml \ -o Architecture.Backbone.checkpoints./output/ser_vi_layoutxlm_xfund_zh/best_accuracy \ Global.save_inference_dir./inference/ser_vi_layoutxlm转换成功后生成三个文件inference/ser_vi_layoutxlm/ ├── inference.pdiparams # inference模型的参数文件 ├── inference.pdiparams.info # inference模型的参数信息可忽略 └── inference.pdmodel # inference模型的模型结构文件也可以直接下载官方已提供的推理模型ser_vi_layoutxlm_xfund_infer.tar。以在 XFUND_zh 上训练的模型为例也可以这样转换wget https://paddleocr.bj.bcebos.com/ppstructure/models/vi_layoutxlm/ser_vi_layoutxlm_xfund_pretrained.tar tar -xf ser_vi_layoutxlm_xfund_pretrained.tar python3 tools/export_model.py -c configs/kie/vi_layoutxlm/ser_vi_layoutxlm_xfund_zh.yml \ -o Architecture.Backbone.checkpoints./ser_vi_layoutxlm_xfund_pretrained/best_accuracy \ Global.save_inference_dir./inference/ser_vi_layoutxlm_inferVI-LayoutXLM 基于 SER 任务进行推理cd ppstructure python3 kie/predict_kie_token_ser.py \ --kie_algorithmLayoutXLM \ --ser_model_dir../inference/ser_vi_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 \ --ocr_order_methodtb-yxSER 可视化结果默认保存到./output文件夹中效果示例如下从推理脚本 predict_kie_token_ser.py 的源码可以看到 SER 推理的完整流程SerPredictor内部通过PaddleOCR(use_angle_clsargs.use_angle_cls, det_model_dirargs.det_model_dir, rec_model_dirargs.rec_model_dir, ...)实例化 OCR 引擎对输入图片做文本检测与识别随后执行与训练一致的预处理算子链VQATokenLabelEncode→VQATokenPad→VQASerTokenChunk→Resize→NormalizeImage→ToCHWImage→KeepKeys将 OCR 结果编码为input_ids、bbox、attention_mask、token_type_ids、image等输入推理后经VQASerTokenLayoutLMPostProcess后处理得到每个 token 的类别最终调用draw_ser_results绘制可视化结果同时把结构化结果写入output/infer.txt。7.3 RE 模型导出与推理python3 tools/export_model.py -c configs/kie/vi_layoutxlm/re_vi_layoutxlm_xfund_zh.yml \ -o Architecture.Backbone.checkpoints./output/re_vi_layoutxlm_xfund_zh/best_accuracy \ Global.save_inference_dir./inference/re_vi_layoutxlm转换成功后同样生成inference.pdiparams、inference.pdiparams.info、inference.pdmodel三个文件。也可直接下载官方推理模型re_vi_layoutxlm_xfund_infer.tar并转换wget https://paddleocr.bj.bcebos.com/ppstructure/models/vi_layoutxlm/re_vi_layoutxlm_xfund_pretrained.tar tar -xf re_vi_layoutxlm_xfund_pretrained.tar python3 tools/export_model.py -c configs/kie/vi_layoutxlm/re_vi_layoutxlm_xfund_zh.yml \ -o Architecture.Backbone.checkpoints./re_vi_layoutxlm_xfund_pretrained/best_accuracy \ Global.save_inference_dir./inference/re_vi_layoutxlm_inferRE 推理需要同时加载 SER 与 RE 两个模型且需显式关闭视觉骨干--use_visual_backboneFalse即 VI 特性cd ppstructure python3 kie/predict_kie_token_ser_re.py \ --kie_algorithmLayoutXLM \ --re_model_dir../inference/re_vi_layoutxlm_infer \ --ser_model_dir../inference/ser_vi_layoutxlm_infer \ --use_visual_backboneFalse \ --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_methodtb-yxRE 可视化结果默认保存到./output文件夹中效果示例如下从推理脚本 predict_kie_token_ser_re.py 源码可以看到 RE 的级联流程SerRePredictor内部复用SerPredictor先得到 SER 结果与中间输入通过make_input构造 RE 模型输入当use_visual_backboneFalse时移除图像输入项re_input.pop(4)随后执行 RE 推理并经VQAReTokenLayoutLMPostProcess后处理得到实体关系对最后用draw_re_results绘制可视化并保存。该脚本同样支持仅加载 SER 模型--re_model_dir为空时退化为 SER 预测。7.4 其他部署方式C 推理部署暂不支持Serving 服务化部署暂不支持更多推理部署暂不支持。8. FAQQ1训练模型转 inference 模型之后预测效果不一致A该问题多为 trained model 预测时的预处理、后处理参数与 inference model 预测时的预处理、后处理参数不一致所致。可以对比训练使用的配置文件中的预处理、后处理与预测时的设置是否存在差异确保两者一致。9. 引用VI-LayoutXLM 及所在算法家族的相关论文引用如下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} } 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} } 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} }【免费下载链接】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),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价