前期《文档智能》专栏详细中介绍了文档智能解析详细pipline链路技术方案,如下图:
pipline链路

现在来看一个新思路,指出pipline链路依赖大量标注数据、并且会出现错误传播问题,导致解析效果不佳,故提出一个基于布局强化学习(layoutRL)的多模态大模型的端到端的解析框架,通过强化学习(GRPO)的方式训练模型的布局感知能力。(ps:笔者看来,在通用场景下解析效果也能并不会有文中评价的那么好,但这个数据合成思路及强化学习的训练方式可以参考。)

方法

如下图所示,方法分两步走:数据合成和GRPO强化学习训练多模态文档解析模型。

1、数据集构建

为了构建Infinity-Doc-55K,设计了一个双管道框架,结合了合成和真实世界文档生成。数据细节如上图:数据集涵盖了七个不同的文档领域(ps:说实话,这个场景数量还不够多)。

1.1、真实世界数据

这一个还是联合了pipline解析流程中的专家小模型,收集了来自金融报告、医疗记录、学术论文、书籍、杂志和网页等多样化的扫描文档。为了生成标注数据,其中专业模型处理不同的结构元素,如布局块、文本、公式和表格。

  • 布局分析:使用视觉布局模型分析整体布局。
  • 公式识别:使用专门的公式识别模型处理公式区域。
  • 表格解析:使用基于Transformer的表格提取器解析表格。

然后通过交叉验证机制,比较专家模型和VLM的输出,过滤掉不一致的结果,只保留跨模型预测一致的区域的注释作为高置信度的伪GT。

1.2、合成数据

合成数据构建管道通过将采样内容注入预定义的单列、双列或三列HTML布局中,使用Jinja模板从维基百科、网络爬虫和在线语料库中收集文本和图像。这些页面使用浏览器引擎渲染成扫描文档,随后自动过滤掉低质量或重叠的图像。通过解析原始HTML生成对齐的Markdown表示作为真实注释。

2、采用布局感知的强化学习

布局感知的强化学习框架(layoutRL),通过优化多方面的奖励函数来训练模型,使其能够更好地理解和解析文档的布局结构。使用GRPO方法,通过从基于规则的奖励信号中学习训练架构如下:

layoutRL训练架构

那么这一部分的核心就是奖励函数的设计了。主要分三部分:

2.1、编辑距离奖励

编辑距离奖励基于预测输出与参考输出之间的归一化Levenshtein距离。该奖励通过计算将预测输出转换为参考输出所需的最小插入、删除或替换操作的数量来衡量预测的准确性。

R d i s t = 1 − D ( y , y ^ ) max ⁡ ( N , M ) R_{dist}=1-\frac{D(y,\hat{y})}{\max(N,M)} Rdist=1max(N,M)D(y,y^)

其中, N N N M M M 分别是参考和预测序列的长度, D ( y , y ^ ) D(y,\hat{y}) D(y,y^) 是Levenshtein距离。该奖励的范围在[0,1]之间,值越高表示预测与参考的对齐程度越好。

2.2、段落计数奖励

目的是鼓励模型准确地分割段落。该奖励通过比较预测段落数量与参考段落数量的差异来计算:

R c o u n t = 1 − ∣ N Y − N Y ^ ∣ N Y R_{count}=1-\frac{\left|N_{Y}-N_{\hat{Y}}\right|}{N_{Y}} Rcount=1NY NYNY^

其中, N Y N_Y NY N Y ^ N_{\hat{Y}} NY^ 分别是参考和预测的段落数量。该奖励惩罚缺失或多余的段落。

2.3、顺序奖励

通过计算预测段落与参考段落之间的顺序反转次数来衡量阅读顺序的保真度。公式如下:

R o r d e r = 1 − D o r d e r max ⁡ i n v R_{order}=1-\frac{D_{order}}{\max_{inv}} Rorder=1maxinvDorder

其中, D o r d e r D_{order} Dorder 是顺序反转次数, max ⁡ i n v \max_{inv} maxinv 是最大可能的反转次数。该奖励鼓励模型保持原始的阅读顺序。

  1. 最终奖励计算

最终的奖励是上述三个部分的加权和,通过匈牙利算法确定预测与参考段落之间的最佳匹配,然后计算每个匹配对的编辑相似性、段落数量和顺序保真度。公式如下:

R M u l t i − A s p e c t = R d i s t + R c o u n t + R o r d e r R_{Multi-Aspect}=R_{dist}+R_{count}+R_{order} RMultiAspect=Rdist+Rcount+Rorder

该设计平衡了内容保真度与结构正确性和顺序保真度,为端到端的文档解析提供监督。

实验评估

  • OmniDocBench评估:在OmniDocBench基准上,Infinity-Parser-7B在所有子任务中表现均衡

  • 表格识别评估

  • 文档级OCR评估

示例

参考文献:Infinity-Parser: Layout-Aware Reinforcement Learning
for Scanned Document Parsing,https://arxiv.org/pdf/2506.03197

repo:https://github.com/infly-ai/INF-MLLM/tree/main/Infinity-Parser

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/87255.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/87255.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/87255.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【超详细】讯飞智能车PC电脑烧录指南(高级系统部署与恢复)

本指南旨在详细指导您如何使用PC电脑上的瑞芯微开发工具,对讯飞智能车进行固件烧录、分区镜像烧写和设备擦除等高级操作。这些操作通常用于系统出现严重问题、需要全新部署固件或进行底层恢复时。 一、所需设备与工具 在开始操作之前,请确保您准备好以…

【亲测可用】html+css3+ajax+php文件夹拖放上传系统(保持文件结构上传)

文件夹拖放上传系统&#xff08;保持文件结构&#xff09; 下面是一个完整的HTML5CSS3AJAXPHP实现&#xff0c;支持拖放文件夹上传并保持原有文件结构的解决方案。 前端部分 (index.html) <!DOCTYPE html> <html lang"zh-CN"> <head><meta c…

什么是数据清洗?数据清洗有哪些步骤?

目录 一、数据清洗的定义和重要性 1. 数据清洗的定义 2. 数据清洗的重要性 二、数据清洗的前期准备 1. 明确清洗目标 2. 了解数据来源和背景 3. 制定清洗计划 三、数据清洗的具体步骤 1. 数据审计 2. 处理缺失值 3. 处理重复值 4. 处理异常值 5. 数据标准化 6. 数…

Vue3+TypeScript中v-bind()的原理与用法

在 Vue 3 的单文件组件&#xff08;SFC&#xff09;中&#xff0c;v-bind() 用于在 <style> 块中动态绑定 CSS 值到组件的响应式数据&#xff0c;实现了状态驱动样式的能力。下面详细讲解其原理和用法&#xff1a; 一、核心原理 CSS 变量注入 Vue 编译器会将 v-bind() 转…

2 geotools入门示例

1. 设置 Spring Boot 项目并集成 GeoTools 依赖 首先&#xff0c;你需要创建一个新的 Spring Boot 项目。你可以使用 Spring Initializr 来快速生成项目骨架。 选择以下依赖&#xff1a; Web: Spring Web (用于创建 REST API)Developer Tools: Spring Boot DevTools (可选&a…

深度解析String不可变性:从Java底层到设计哲学

一、String不可变性的直观理解 在Java中,String对象一旦创建,其内容就不可更改。任何看似"修改"String的操作,实际上都是创建了一个全新的String对象。这种设计是Java语言基础架构的重要部分,理解其底层原理对编写高效、安全的Java程序至关重要。 String str =…

C++并发编程-2.C++ 线程管控

参考&#xff1a;https://llfc.club/category?catid225RaiVNI8pFDD5L4m807g7ZwmF#!aid/2Tuk4RfvfBC788LlqnQrWiPiEGW 1. 简历 本节介绍C线程管控&#xff0c;包括移交线程的归属权&#xff0c;线程并发数量控制以及获取线程id等基本操作。 2. 线程归属权 比如下面&#xff…

Qt面试常问

1.QT信号与槽的底层原理&#xff1f; 底层通过元对象系统和事件循环完成的&#xff0c;能够在运行期间动态处理信号槽之间的连接与断开&#xff0c;而不是像函数调用那样在编译期间就完全确定了。元对象系统包含&#xff1a;QObject类、Q_OBJECT宏定义、moc编译器当发送一个信…

【git】错误

【成功解决】开代理 unable to access ‘https://github.com/laigeoffer/pmhub.git/’: Recv failure: Connection was reset

什么是状态机?状态机入门

状态机&#xff1a;优雅管理复杂逻辑的Python实践 在软件开发中&#xff0c;状态机&#xff08;Finite State Machine, FSM&#xff09; 是管理多状态转换的利器。它将行为分解为离散的状态、事件和转移规则&#xff0c;大幅提升代码的可读性与可维护性。本文通过Python示例解析…

【Python打卡Day41】简单CNN@浙大疏锦行

可以看到即使在深度神经网络情况下&#xff0c;准确率仍旧较差&#xff0c;这是因为特征没有被有效提取----真正重要的是特征的提取和加工过程。MLP把所有的像素全部展平了&#xff08;这是全局的信息&#xff09;&#xff0c;无法布置到局部的信息&#xff0c;所以引入了卷积神…

MySQL中InnoDB存储引擎底层原理与MySQL日志机制深入解析

MySQL的内部组件结构如下&#xff1a; 大体来说&#xff0c;MySQL 可以分为 Server 层和存储引擎层两部分。 Server层 主要包括连接器、查询缓存、分析器、优化器、执行器等&#xff0c;涵盖 MySQL 的大多数核心服务功能&#xff0c;以及所有的内置函数&#xff08;如日期、…

MCP基本概念

基本概念 现在大模型交互的热门形式&#xff1a; 第一、Agent与Tools(工具)的交互Agent需要调用外部工具和APl、访问数据库、执行代码等。> MCP 第二、Agent与Agent(其他智能体或用户)的交互Agent需要理解其他Agent的意图、协同完成任务、与用户进行自然的对话。 > A2A…

Docker容器相关命令介绍和示例

Docker 容器是镜像的运行实例。以下是常用的 Docker 容器命令及其示例&#xff1a; 1. 运行容器 docker run [选项] <镜像名> [命令]常用选项&#xff1a; -d&#xff1a;后台运行&#xff08;守护模式&#xff09;-it&#xff1a;交互式终端--name&#xff1a;指定容…

【Akshare】高效下载股票和ETF数据

在量化投资与金融数据分析的世界里&#xff0c;获取高质量的市场数据是构建有效策略的关键。Python库Akshare为我们提供了一个强大且易于使用的接口&#xff0c;可以轻松地从网络上抓取各类金融数据。本文将详细介绍如何利用Akshare下载股票和ETF的历史行情数据。 安装Akshare…

分布式--3--分布式事务

1 简介 事务在单系统中的表现&#xff1a;多次数据库操作用事务进行管理&#xff0c;来保证ACID原则。 但是如果各个模块都是单独独立出来的微服务&#xff0c;进行了分布式部署&#xff0c;单系统里的事务将不能保证各个数据库操作的一致性&#xff0c;因此就需要分布式事务来…

不同建模方式的介绍 RTL建模笔记(1)

说明&#xff1a;该专栏"RTL建模笔记"是《RTL Modeling with SystemVerilog for Simulation and Synthesis》的翻译&#xff1b;该笔记略过了第一章第一小节中背景介绍内容&#xff0c;以及第二小节前面部分的门级、RTL级建模介绍&#xff0c;对于后续学习不影响。 …

<13>-MySQL用户管理

目录 一&#xff0c;用户管理操作 1&#xff0c;创建用户 2&#xff0c;查询用户 3&#xff0c;修改密码 4&#xff0c;删除用户 二&#xff0c;数据库权限 1&#xff0c;用户授权 2&#xff0c;回收权限 一&#xff0c;用户管理操作 1&#xff0c;创建用户 --创建用户…

如何使用超低噪声电源提高AD 时钟电路质量,改善超声系统的图像质量

超声波技术是医疗诊断和其他应用中广泛使用的无创工具&#xff0c;已经从静态图像进化到动态图像&#xff0c;从黑白呈现变为彩色多普勒图像。这些重大进步主要是由于引入了数字超声技术。虽然这些进步提高了超声成像的有效性和通用性&#xff0c;但同样重要的是&#xff0c;这…

【解决方案】Kali 2022.3修复仓库密钥一键安装docker,docker compose

1、Kali 2022.3 2、一键安装docker&#xff0c;docker compose #!/bin/bashecho " 安全的Kali Docker安装脚本 "# 备份重要配置 cp /etc/apt/sources.list /etc/apt/sources.list.backup.$(date %Y%m%d)# 修复Kali仓库配置 echo "修复Kali仓库配置..." ca…