GRPO訓練布局感知的強化學習多模態文檔解析框架-Infinity-Parser

前期《文檔智能》專欄詳細中介紹了文檔智能解析詳細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?=1?max(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?=1?NY? ?NY??NY^? ??

其中, 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?=1?maxinv?Dorder??

其中, 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} RMulti?Aspect?=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…