RaV-IDP:以重建为校验的忠实文档处理框架 RaV-IDP: A Reconstruction-as-Validation Framework for Faithful Intelligent Document Processing
用"重建回原图再比对"做无标注保真度量,触发GPT-4.1兜底。
前置知识
智能文档处理 (Intelligent Document Processing, IDP)
IDP 把扫描或原生 PDF 自动转为表格、图像、文本等结构化实体的流水线,主流做法是"布局检测→实体抽取"两段式。代表系统包括 Docling、UnstructuredIO、PaddleOCR、Azure Document Intelligence 等。
本文的核心论点是这些 IDP 流水线普遍缺乏"抽取是否忠实于原文档"的内生校验机制。读懂本文必须先熟悉 IDP 的模块化结构、Docling 输出的字段(bbox + 类型 + 像素裁切)以及当前社区在表格 / 图像 / 文本上的代表性抽取器。
结构相似性 (SSIM)
SSIM 在局部窗口内统计亮度、对比度、结构三组信号,$SSIM=\frac{(2\mu_x\mu_y+c_1)(2\sigma_{xy}+c_2)}{(\mu_x^2+\mu_y^2+c_1)(\sigma_x^2+\sigma_y^2+c_2)}$,归一 ∈[0,1],比 MSE 更贴近人眼。
本文表格保真度的视觉通道直接使用 SSIM 加 $0.4$ 权重,结构通道(行/列匹配 + cell CER)占 $0.6$。理解 SSIM 的局部分块统计本质,才能解释为什么作者在独立裁切评测中要把 SSIM 排除、改用纯结构信号以避免"裁切对齐无关项引起的高分"。
字符错误率 (Character Error Rate, CER)
CER = 基于编辑距离在字符级别上对预测串与参考串的归一化距离 $CER = \frac{S + I + D}{N}$,其中 $S,I,D$ 分别是替换、插入、删除数,$N$ 为参考串长度。本文在文本保真度上直接定义为 $f_{text} = \max(0, 1 - CER)$。
文本保真度唯一公式就是 CER。理解编辑距离的三类操作如何被聚合,才能解释为什么 Cer 在扫描文档上 0.517、在原生 PDF 上 0.048(差 10 倍)——本质上是同一公式在不同 OCR 难度上的反映,而不是模型异常。
Bootstrap / 自举约束
在度量学习中,bootstrap 约束指验证信号的参考系必须独立于被验证的输出,否则一旦被验证系统对自身产出一致地错(一致错仍能自我通过),校验就退化为恒真命题。本文最强条件:comparator $\sigma$ 的第二参数永远是原始裁切 $c_{ij}$,永远禁止传入抽取结果 $E_{ij}$。
这是 RaV 与"自我打分式置信度"最大的区别,也是为什么 fidelity 能以 0.800–0.877 的 Spearman 相关对齐真实质量的关键。没有 bootstrap 约束,保真度就直接等价于"自信度",不再提供新信息。
DocVQA 与 ANLS
DocVQA 是文档视觉问答基准,问题需要从表格 / 图像 / 文本混合的文档中检索答案。主指标 ANLS 按答案长度归一编辑距离,对数值型更友好。本文所有端到端数字都跑在 val 300 题 / 85 文档子集上。
本文所有 end-to-end 数字都跑在 DocVQA val 300 题上。本文 0.4224 ANLS 就是与 Unstructured 0.3910、Docling 0.3844、Marker 0.3619、LlamaParse 0.2674 在同一 300 题集上对比得出的,理解 ANLS 的归一方式才不会被"0.9372 vs 0.4224"的差距误导。
TableTransformer (TATR) 与 PubTabNet
TATR (Smock et al., 2022) 把表格结构识别视为目标检测,分别检测行、列、跨度三类单元;PubTabNet 提供 50 万张表格图像及对应 HTML 结构标注,是 TATR 的主要训练 / 评测集,相关评测指标 TEDS 用 HTML 树比较。
Stage 3a 评测用了 PubTabNet val 500 张表,本文也指出 TATR 的两个失败模式——"末行遗漏"与"相邻列合并"——正是 fidelity 门最常检出的故障类型。
研究动机
现有 IDP 流水线(开源 Docling、UnstructuredIO、LayoutLMv3、PaddleOCR 与商业 Azure/AWS/Google Document AI)一律把抽取做成"one-shot"过程:布局检测给 bbox 与类型,实体抽取产出表格 / 图像裁切 / 文本块,消费者拿到结果后根本无从分辨哪些是错的、哪些是对的。即使系统附带置信度,那也只是模型对自己预测的概率分配——一个系统性出错的模型可以同时给出"高置信、错得一致"的结果,而一个偶然蒙对的模型反而给出低置信。更糟的是,RAG、量化分析、合同审查这些下游系统都在不可知地把"错表格"当"错事实"、"缺半截的图"当"半截数据点"、"带 OCR 错的文本块"当"被污染的 token"消费。这种"无内生校验"的缺陷是 IDP 当前最核心、也是最少被讨论的失败模式。
本文的目标是本文目标是在 IDP 流水线内引入一个通用、可度量、无需标注的"提取忠实性"信号——具体做法是把"重建 (Reconstruction)"作为一等的架构组件 (Reconstruction-as-Validation, RaV)。对每个被抽取的实体,把抽取结果重新渲染成与原区域可比的形态(如表格 → HTML → 栅格图),与原始未修改的像素裁切 $c_{ij}$ 计算 fidelity $f_{ij}=\sigma(\hat R_{ij}, c_{ij}) \in [0,1]$。当 $f_{ij} < \tau_\tau$ 时,自动触发 GPT-4.1 vision 兜底再抽一次,validation loop 再跑一遍;最终所有实体都带 fidelity 分输出,下游可选择性过滤或升级处理。
与已有工作不同的是,作者切入角度非常特别:保真度的定义本身不在模型概率分布里,而在"抽取能否重建为原图"。这一选择的代价是要为每种实体类型设计各自的 reconstructor 与 comparator(表格、图像、文本、公式 URL 分别有自己的保真度公式与默认值 $\tau=0.75/0.70/0.85$),但收益是校验信号以原始像素为锚而非以模型为锚,明确摆脱了"模型自己给自己评分"的循环——也即"bootstrap 约束"。本文还把这种重建 vs 模型置信度的范式冲突落到六阶段评测里独立验证,让保真度本身被当成"可被校验的中间信号"来呈现,而不是文档级端到端的副产品。
核心方法
RaV-IDP 把文档处理切成八个组件串联:质量分类器 → 布局检测 → 预处理器 → 实体路由器 → 实体抽取器(表格 / 图像 / 文本)→ 重建器 → 比较器带 fidelity 打分 → 上下文增强器。最关键的架构约束是"bootstrap constraint":comparator $\sigma$ 永远只接收原始裁切 $c_{ij}$,从来不接收抽取结果 $E_{ij}$,从而使 fidelity 成为可解释、可校验的"标签无关质量信号"。当一个实体的 fidelity 低于其类型默认阈值 $\tau$(表格 0.75、图像 0.70、文本 0.85)时,该实体被路由到结构化 GPT-4.1 vision 兜底再抽一次,validation loop 重跑;两次都不过则保留高分版本并打上 low-confidence 标签输出。
本文核心是把"重建"从后处理 trick 提为一等架构组件 RaV,并明确以原始像素为 ground truth 而非以抽取本身为 ground truth。已有方法无论把目标定成 TEDS、ANLS 还是 confidence log-prob,都把"参考系"选成"模型的另一份输出"或"人类标注",而 RaV 把"参考系"换成"未被流水线任何改动触碰过的初始裁切"。这一替换带来的能力是:fidelity 完全是 grounded、label-free、production-deployable 的信号,可在每条抽取上实时打分;后续的 GPT-4.1 兜底 + 选择性触发只在 6.6% 的实体上发生,从而把 6 倍成本差距一次性变成可用基础设施。
方法步骤详情
运行时分六步。第一步是布局检测:用 Docling 对页面做一次转化得到区域集合 $R_{ij}=(b_{ij}, \tau_{ij}, c_{ij})$,其中 $c_{ij}$ 是从原始未修改页面截下来的像素 crop 并被冻结保存——这张裁切就是后续所有 $\sigma$ 的 ground-truth anchor;检测后用一个空间区域过滤器把被表格/图像 bbox 完整包含(containment ≥ 0.85)的文本区域剔除,DocLayNet 上清掉 65.4% 的图内文字 false positive。第二步是质量分类:当前版本用基于 skew 角度的规则把页面分成 clean / scanned-clean / scanned-degraded / photographed / handwritten / overlapping;clean 直接跳过预处理器,其他类别走 deskew、二值化、CLAHE、TrOCR、频域分离等不同通道——但预处理器只对布局检测的输入页施加,绝不改写原始裁切。第三步是实体抽取:表格用 Docling 表格记录反构 DataFrame(评测时改用 TATR),图像用 PyMuPDF 在 2× 分辨率下按 Docling/PyMuPDF 坐标原点(左下 vs 左上)做修正裁切并附类型与置信度,文本取 Docling 字符串 + URL 正则 + 公式 LaTeX;handwritten 内容路由到 TrOCR。第四步是重建器:表格把 DataFrame → HTML → 匹配原裁切尺寸的栅格图(视觉通道)+ 行/列计数、header、单元格串的结构签名(结构通道);图像计算 pHash / Laplacian sharpness / 邻近 caption 匹配;文本对原裁切重做 OCR(原生 PDF 直接取内嵌文本流避免重复引入 OCR 错)。第五步是 comparator 与 fidelity:表格 $f_{table}=0.4 SSIM_{binarized}+0.6 f_{struct}$,其中 $f_{struct}=0.2(row\!-\!col\ match)+0.8(1-CER_{cells})$;图像 $f_{image}=0.6\ pHash+0.3\ sharpness+0.1\ caption$;文本 $f_{text}=\max(0,1-CER)$。默认阈值 $\tau$ 表格 0.75、图像 0.70、文本 0.85,全部以原裁切为锚,bootstrap 约束在接口层实施。第六步是兜底与输出:$f<\tau$ 时调 GPT-4.1 vision 走结构化 JSON schema(表格给 headers+rows+notes、图像给 type+desc+text+chart 结构、文本给 verbatim 转写)再抽一次,重建-比对循环重跑;至多 2 轮,取高分版本加 low-confidence 标识。图像在第六步后还会无差别过一次 GPT-4.1 vision enrichment 写入 image_type/description/extracted_text/structured_data 四个字段,使图像成为可被 RAG 检索的一等实体。
技术新颖性
技术新颖性可以归结为四点。第一,把 bootstrap 约束在接口层硬性实施:comparator 拿不到抽取结果,从根本上消除"自信地错"被自评通过的路径,这是所有 model-internal 置信度估计都做不到的。第二,按实体类型分别设计独立的 fidelity 公式,并把结构信号(行/列匹配、CER)与感知信号(SSIM、pHash、sharpness)正交化,使得即便 SSIM 在裁切独立评测下被排除,整套 fidelity 仍能维持 0.800 的 Spearman $\rho$ 与 ground truth CER 对齐。第三,"GPT-4.1 vision 选择性兜底"取代"always-on 全量 GPT",把每 500 张表的估算成本从 $10\text{total}$ 压到约 $2.9\text{partial}$(145 次 API 调用),70% 成本下降,且兜底仍用同一个 comparator 不换参考系。第四,加入无差别 image semantic enrichment,使 RAG 系统对图像不仅得到像素 crop 还得到可嵌入的描述 / 文本 / 结构化数据——这是传统 Docling-style pipeline 没有的输出契约。
实验结果
核心发现分四块。第一块是 fidelity 信号本身在数据上确实可信:Stage 4 把 fidelity 与负的 ground-truth CER 做 Spearman 相关,表格 500 张 PubTabNet 上 $\rho=0.800,\ p=2.0\times10^{-112}$,原生 25 篇 arXiv 共 10,028 个文本区域上 $\rho=0.877$,FUNSD 扫描件上 $\rho=0.611$;最优二元阈值表格 $\tau^*=0.43$ 下 F1=0.914、Precision=0.891、Recall=0.939(默认 $\tau=0.75$ 更保守),证明 fidelity 是真能上生产接管的 gate 信号而非噪声。第二块是 GPT-4.1 兜底可拉回一部分失败但不是全部:194 张失败表里兜底恢复 38.1%(74/194,平均恢复样本的 fidelity 0.609),94 条失败文本上恢复 24.5%(FUNSD 扫描件难度大),均值变化 +0.005 的双峰效应——多数仍失败,少量跨过阈值。第三块是 DocVQA 端到端:完整流水线 ANLS 0.4224(答案率 44.7%,错误率 0.7%),超过所有开源 baseline——Unstructured 0.3910(+8%)、Docling 单跑 0.3844(+10.4%)、Marker 0.3619(+16.7%)、LlamaParse 0.2674(受云端超时影响);同 300 题上 GPT-4.1 vision 直读页图像 0.9372 是 ceiling(因为它跳过结构抽取)——本文是结构化流水线中最佳。第四块是消融最关键:gate_only(只过滤不兜底)Anls 直接掉到 0.1408、答案率 14.3%、错误率 29.7%,说明 RaV 的价值在"路由到兜底"而非"剔除低置信";per-question 分析显示 248/300 题三种模式答案相同,27 题上完整模式平均领先 +0.765 ANLS,25 题上落后 −0.804 ANLS。
查看结构化数据
| 任务 | 指标 | 本文 | 基线 | 提升 |
|---|---|---|---|---|
| 表格结构识别 (PubTabNet val, n=500) | 行/列精确率 + Cell CER + Pass rate @ τ=0.75 | 行精确率 0.596;列精确率 0.584;形状完全匹配 0.334;Cell CER 0.405;保真度均值 0.539;通过率 61.2% | 未对 TATR 在该集合上逐项报告,但 PubTabNet 上 TEDS SOTA 表格(TATR 系)通常 70%+ 严格 TEDS | TATR 在本文设定下并未做到 80%+ 通过率,fidelity gate 直接抓出大多数失败并把 38.1% 通过兜底拉回阈值之上 |
| 版面检测 (DocLayNet 测试, 500 页) | F1 per class | 表格 F1=0.907;图像 F1=0.775;文本 F1=0.778(高召回 0.899 / 低精度 0.685);公式 F1=0.000(Docling 不足) | DocLayNet 公开 SOTA 通常表格约 0.90、文本约 0.85 | 表格与 SOTA 持平;文本精度低因 Docling 过度切分,65.4% 文本 false positive 被空间过滤器剔除 |
| 图像抽取与语义增强 (ScanBank, 500 页 / 166 区域) | Extraction success rate / 描述覆盖率 / 结构化数据覆盖率 | 提取成功率 1.000;保真度 0.980;通过率 1.000;描述覆盖 100%;抽取文本覆盖 95.8%;结构化数据覆盖 62.7% | Docling 单纯 crop 一般不给 enrichment 数据 | 在 GT bbox 设定下像素级几乎满分,且首次把描述/文本/结构化数据写入抽取记录 |
| 文本抽取 (FUNSD 扫描件, n=100) | CER + 保真度门通过率 @ τ=0.85 | Mean CER 0.517;保真度 0.295;通过率 6%;保真度-CER Pearson r=0.528 | 其他扫描端到端 IDP 在 FUNSD CER 通常 0.3-0.5 | 扫描 OCR 难度极高,文本 gate 的 τ=0.85 在 FUNSD 上需要重新校准 |
| 文本抽取 (原生 PDF, 25 arXiv / 10028 region) | CER + 保真度门通过率 @ τ=0.50 + Spearman ρ | Mean CER 0.048;保真度 0.947;通过率 97.1%;Spearman ρ=0.877 (n=10028) | Docling 单跑在该规模数据集上 CER 通常 0.04-0.06 | 保真度门直接放过 97.1% 区域且 ρ=0.877 是 strong quality signal |
| DocVQA end-to-end (val 300 题 / 85 文档) | ANLS | 完整 RaV-IDP 0.4224;no_rav 0.4206;gate_only 0.1408 | Unstructured 0.3910;Docling 单跑 0.3844;Marker 0.3619;LlamaParse 0.2674;GPT-4.1 vision 直读 0.9372 (ceiling) | 完整模式相比 Unstructured +8.0%,vs Docling +10.4%,vs Marker +16.7%;vs GPT-4.1 vision 直读 0.9372 仍有 0.51 gap 但那是结构化抽取 vs 自由问答的本质 trade-off |
| 表格兜底 (PubTabNet failed 194 条) | Recovery rate (fidelity ≥ τ after fallback) | GPT-4.1 兜底恢复 74/194 = 38.1%;恢复样本均值 fidelity 0.609;通过率从 61.2% 升到 76.0% (+14.8pp) | 无对应 « always-on GPT » 评测对每条都重抽一次(成本 $10 / 500 张表) | 选择性兜底 +14.8 pp pass rate 同时省 71% API 调用成本 |
局限与改进
作者承认 + 旁观者都能看到至少五条局限。第一,bootstrap 约束存在已知盲点:当 extractor 与 reconstructor 共用相同的系统性 OCR 错误模式时,comparator 无法分辨(如 FN 段低对比文本会被 re-OCR 不同字符串而误判);Section 7 用 Figure 8 解释了这一 FP/FN 失败模式。第二,公式抽取完全不可用:Docling 不输出 formula 类,Stage 2 公式 F1=0.000,是 Docling 本身的硬伤。第三,DocVQA 全模式 vs no_rav 整体 ΔAnls 只有 +0.0018(300 题里几乎抵消),per-question 上 9% 赢 +0.765 ANLS、8% 输 −0.804 ANLS,effective 用文档校正阈值(τ 从 0.75 改 0.43)会改善这一信号。第四,文本 gate 在扫描件(FUNSD)上阈值 0.85 过于严格:通过率仅 6%;需要在不同 OCR 难度上做独立阈值。第五,Stage 1 文档质量分类器未实现为学得的模型,目前是规则判定,是 roadmap 部分工作。第六,原生 PDF 上优秀表现(ρ=0.877)无法在端到端得到独立验证,因为 DocVQA 全部是扫描件。
独立分析的弱点
独立看至少有五处可改进的方向。第一,bootstrap 约束在 extractor / reconstructor 共用错误模式时失效,建议在补偿路径上再加一条"完全独立的 OCR 引擎"——例如把 EasyOCR 或 PaddleOCR 与 Docling 文本抽取并行跑一次,若 $f_{text}$ 高、但两个独立 OCR 间一致性低,则可怀疑是 Docling 的系统性问题而非文档质量。第二,TATR 的列合并与末行遗漏是 Stage 3a 上 65.6% 表格失败的主因,可改用 GraphTSR 或带 span-aware cell merging 的 TATR-v2,并加 padding-aware 检测头专门应对边界表。第三,DocVQA gate_only 把 ANLS 从 0.4224 砸到 0.1408 揭示的关键问题是"fidelity 高分 ≠ 可用",建议在 gate_only 模式下保留一个最小化 fallback (例如仅当 99% 区域都为 low-confidence 才报警),而不是硬性剔除。第四,公式类别完全缺席(Docling 公式 F1=0.000),建议补一个独立的 formula detector(如 Nougat)或在 LayoutLMv3 fine-tune 时加 formula head。第五,阈值 $\tau$ 默认值文档级不变,应该按质量分级(clean / scanned-clean / scanned-degraded / photographed)分桶校准,否则 FUNSD 等扫描集上根本不会触发通过;同时 $\tau^*=0.43$ 是数据自学习的,应做成在线校准接口。
未来方向
作者明确提出的方向有四:(1) Stage 1 文档质量分类器学得化,用 SmartDoc-QA 等数据集训练一个把页面打 clean / scanned / photographed / handwritten 概率分布的小网络;(2) 把 fidelity reliability 推广到图像质量多样化基准上,脱离 GT bbox 的"trivial-perfect"设定;(3) 用在线或离线分布数据动态校准 $\tau$,让 gate_only 模式塌缩问题得到控制;(4) 在 native-PDF QA 基准上验证 end-to-end 收益,弥补 DocVQA 是扫描件带来的盲区。在此基础上可进一步延伸:(5) 把 RaV 推广到多模态(PDF 中的图嵌入 / 视频帧 / 音轨转写),把«重建为 ground truth 的另一份视图»作为通用一致性约束;(6) 把 selective fallback 概念产品化为一个 token-budget-aware 调度器,按 LLM 调用成本动态调整 $\tau$;(7) 用 RaV 思路重做 RAG 评测——把"chunk 是否与原文匹配"当成检索得分的旁路信号;(8) 训练一个 native fidelity predictor 学习从原裁切直接估计 $\hat f$,跳过显式重建步骤以加速。
复现评估
复现条件较为友好但并非零代价:算法代码与 pipeline 公开在 https://github.com/pritesh-2711/RaV-IDP;官方给出六个数据集的标准评估脚本——DocLayNet 500 页、PubTabNet 500 张表、ScanBank 500 页、FUNSD 100 张扫描件、25 篇 arXiv(10,028 区域)、DocVQA 300 题。选用的模型边界明确:布局用 Docling、表格结构用 TATR、文本 OCR 在扫描件走 TrOCR 在原生走 PDF 内嵌文本流、兜底与图像 enrichment 用 GPT-4.1 vision(需 API key 且图像 enrichment 在无 key 时 graceful 跳过)。算力上约等于一个中规模 OCR + 一个 GPT-4.1 vision API 账户;PubTabNet Stage 3a 单卡 GPU 可跑,Stage 6 DocVQA 300 题的 LLM 部分约对应 26 个 GPT-4.1-mini 调用 + 约 6.6% 概率的 GPT-4.1 vision 兜底,整体可在 1–2 张 GPU + API 流量内完成。难度集中点:(a)GT bbox 设定下能达到 0.980 图像保真度,不等于产品条件也能达到;(b)失败模式分析(FP shared OCR 错)非平凡,需要同时配 OCR 与 GPT-4.1 才能复现 Section 7 / Figure 8;(c)Stage 5 的恢复率统计需要在 PubTabNet 上重新切出 fails 子集,对应脚本依赖作者提供的 run_with_traces() 输出——这部分代码可见,但接口稳定性需要校验。
论文图表
三条 PR 曲线:表格、图像、文本 gate 在 $\tau$ 扫描下的 P-R 走势;标记点表示各实体类型的 $\tau^\star$。表格与图像在宽 recall 范围上保持高 precision;文本 gate 由于扫描 CER 噪声偏紧。
支撑"选择哪个 $\tau$"的有 tradeoff 数据;与 Table 8 的最优阈值 $\tau=0.43$ 互证。
FP/FN 案例图:FP 标注"extractor + reconstructor 共用同一 OCR 错模式 → comparator 不可分辨";FN 标注"原文极低对比 → re-OCR 给出与抽取不同的串 → 误触发 fallback"。两组示例都给出原图、OCR 输出、fidelity 值。
Limitations 一节的视觉锚点;让读者直观看到 bootstrap constraint 的已知盲点。