菜单

文档理解模型

相关源文件

本文档涵盖了 PaddleOCR 中的文档理解模型,这些模型能够对文档结构、实体识别和关系抽取进行智能分析。这些模型超越了基本的文本检测和识别,能够提供文档内容的语义理解。

有关基本的文本检测和识别模型,请参阅 检测模型识别模型。有关完整的文档分析流程,请参阅 PP-StructureV3 文档分析

目的与范围

PaddleOCR 中的文档理解模型基于 Transformer 架构,特别是 LayoutLM 变体,用于执行

  • 语义实体识别 (SER):识别和分类文档中的关键信息字段(例如,姓名、日期、金额)
  • 关系抽取 (RE):理解已识别实体之间的关系
  • 视觉问答 (VQA):回答关于文档内容的问题

这些模型整合了视觉、文本和空间信息来理解文档语义,构成了智能文档处理工作流的基础。

模型架构概述

文档理解系统基于层次化架构构建,使用了 PaddleNLP 中的 LayoutLM 系列模型

模型演进与能力

模型视觉主干多语言主要用途
LayoutLM纯文本 SER
LayoutLMv2可选多模态 SER/RE
LayoutXLM可选多语言 SER/RE

来源:ppocr/modeling/backbones/vqa_layoutlm.py22-33 ppocr/modeling/backbones/vqa_layoutlm.py37-49

核心模型类

NLPBaseModel 基础

NLPBaseModel 类为所有文档理解模型提供了基础

来源:ppocr/modeling/backbones/vqa_layoutlm.py52-78

语义实体识别模型

LayoutLMForSer

基本 LayoutLM 模型,用于语义实体识别,不包含视觉特征

主要特性

  • use_visual_backbone = False - 仅处理文本和布局
  • 输入:input_ids, bbox, attention_mask, token_type_ids
  • 输出:用于实体识别的 Token 分类 logits

来源:ppocr/modeling/backbones/vqa_layoutlm.py80-104

LayoutLMv2ForSer

增强的模型,支持可选的视觉主干

  • 基于 use_visual_backbone 标志的条件视觉处理
  • 训练与推理输出格式
  • 支持纯文本和多模态处理

来源:ppocr/modeling/backbones/vqa_layoutlm.py107-147

LayoutXLMForSer

支持视觉主干的多语言文档理解

  • 扩展了 LayoutLMv2ForSer 的多语言能力
  • 支持预训练模型:layoutxlm-base-uncased, vi-layoutxlm-base-uncased
  • 与 LayoutLMv2ForSer 相同的正向传播逻辑

来源:ppocr/modeling/backbones/vqa_layoutlm.py149-188

关系抽取模型

LayoutLMv2ForRe

抽取已识别实体之间的关系

与 SER 模型的主要区别

  • 需要实体和关系标注
  • 使用 LayoutLMv2ForRelationExtraction 作为基础模型
  • num_classes 参数(关系类型是预定义的)

来源:ppocr/modeling/backbones/vqa_layoutlm.py191-221

LayoutXLMForRe

支持视觉主干的多语言关系抽取

来源:ppocr/modeling/backbones/vqa_layoutlm.py223-261

训练基础设施

优化器系统

优化器系统为文档理解模型提供了全面的训练配置

来源:ppocr/optimizer/__init__.py34-66

学习率调度

针对文档理解的专用调度器

LinearWarmupCosine:常用于 Transformer 训练

  • 线性预热阶段后接余弦衰减
  • 参数:warmup_steps, start_lr, min_lr

OneCycle:用于加速训练

  • 三阶段学习率调度
  • 支持 anneal_strategy: "cos" 或 "linear"

CyclicalCosine:用于改进收敛

  • 周期性余弦衰减,可配置周期
  • 适用于微调文档理解模型

来源:ppocr/optimizer/learning_rate.py116-163 ppocr/optimizer/learning_rate.py298-349 ppocr/optimizer/learning_rate.py252-295

高级优化器特性

AdamW 配合权重衰减控制

特性

  • 按参数名称选择性排除权重衰减
  • 一维参数排除(偏置项、层归一化)
  • 支持多精度训练

来源:ppocr/optimizer/optimizer.py230-292

数据处理与损失函数

VQA 令牌处理

VQA 令牌处理系统负责输入分块和准备

来源:ppocr/data/imaug/vqa/token/vqa_token_chunk.py18-49 ppocr/data/imaug/vqa/token/vqa_token_chunk.py52-134

损失函数

VQASerTokenLayoutLMLoss

带注意力掩码处理的交叉熵损失

主要功能

  • 注意力掩码过滤,用于忽略填充标记
  • 可通过 key 参数进行多任务场景配置
  • 与蒸馏训练集成

来源:ppocr/losses/vqa_token_layoutlm_loss.py23-61

后期处理

VQASerTokenLayoutLMPostProcess

将模型预测转换为结构化输出

特性

  • BIO 标签归一化,用于可视化
  • 基于片段的预测聚合
  • 与 OCR 边界框信息集成

来源:ppocr/postprocess/vqa_token_ser_layoutlm_postprocess.py19-94

与文档分析流水线集成

文档理解模型与 PaddleOCR 更广泛的文档分析生态系统集成

这种集成实现了端到端的文档理解工作流,将 OCR、布局分析和语义理解结合为全面的文档处理解决方案。

来源:ppocr/modeling/backbones/vqa_layoutlm.py1-261 ppocr/optimizer/__init__.py1-67 ppocr/postprocess/vqa_token_ser_layoutlm_postprocess.py1-117