ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

为什么你的模型得分低?ExtractBench五维标签体系帮你精准定位抽取失败的真正原因

为什么你的模型得分低?ExtractBench五维标签体系帮你精准定位抽取失败的真正原因

【免费下载链接】ExtractBench

项目地址:https://ai.gitcode.com/hf_mirrors/llamaindex/ExtractBench
点击查看免费下载

做文档抽取(Document Extraction)评测时,最常见的困惑是:模型整体分数不高,却说不清到底错在哪。是长文档撑不住?扫描件看不清?还是跨页表格处理不好?ExtractBench是一个面向 Schema 引导式企业文档结构化抽取的评测基准,它的五维标签体系(任务挑战、感知挑战、表格结构、长度、业务领域)可以把低分归因到具体原因,而不是只给你一个笼统的总分。

一分钟了解 ExtractBench 评测基准

ExtractBench 的任务定义很清晰:输入一份完整文档(born-digital 或扫描件)+ 用户编写的 JSON Schema,系统必须返回Schema 校验通过的 JSON,且每个值都要给出来源页码和 bounding box 作为证据。

数据集规模:

  • 370 份文档、4,869 页,覆盖 8 大业务领域、67 种文档类型
  • 每种文档类型有且只有一个 Schema,所有同类型文档共享
  • 6 个按长度划分的测试集文件,例如 short.jsonl(252 例,≤10 页)、medium.jsonl(98 例,11–50 页)、long.jsonl(20 例,>50 页)

其中 325 份为真实文档、45 份为合成长列表;另有 38 份是"干净版 + 降质版"配对文档——配对设计是后面归因分析的关键。

五维标签体系:每个文档打五个独立标签

ExtractBench 沿五个相互独立的维度给每份文档打标签(tags字段),例如"challenge:T3.b"、"domain:D1"。因为维度独立,低分才能被追溯到真实原因:

"tags": ["source:real", "challenge:T3.b", "length:short", "domain:D1"]

维度一:任务挑战(challenge)——抽取本身难在哪

  • T1 长列表完整性:找回跨越多页的重复结构中的每一条记录。典型失败:截断、重复/合并行、幻觉记录、值挂错记录
  • T2 大海捞针:长文档中找少数几个目标事实。失败模式:漏目标、抓错出现次数、同义改写未归一化
  • T3 密集文档:标签、空格、复选框、手写、扫描瑕疵挤满一页。典型失败:对空白字段"脑补"出值(过度抽取)

每类还细分了子类(T1.a–T1.e、T2.a–T2.d、T3.a–T3.e)。三类任务的文档量与预期值量级差异极大:

任务挑战文档数页数预期值数量
T1 长列表完整性1543,710813,792
T2 大海捞针391,10910,300
T3 密集文档21490531,200

一份文档可以带多个任务挑战标签,所以行之间有重叠。

维度二:感知挑战(perception)——页面是怎么被拍下来的

  • P1:旋转或纯图像捕捉
  • P2:扫描件图像
  • P3:手写内容(数据集含 134 份扫描页文档、55 份含手写)

维度三:表格结构(structure)——表格的"坑"

  • S1合并/层级表头
  • S2表头不在数据正上方
  • S3表格跨页续排
  • S4超过 1,000 行的超大表格
  • S5单元格内再塞一张表

维度四:文档长度(length)

  • short / L1:≤10 页medium / L2:11–50 页long / L3:>50 页
  • 该标签与数据集切分(category)始终一致,对应 docs/short/、docs/medium/、docs/long/ 下的 PDF 目录

维度五:业务领域(domain)

D1 金融与基金持仓(145 份)、D2 能源监管(98)、D3 政府采购与海关(49)、D4 汽车估值(27)、D5 供应链交易(20)、D6 医疗结算(15)、D7 法律与破产(10)、D8 房产过户披露(6)。

数据集还会额外记录交付要求(G1–G4)和来源属性(source:real325 份 /synthetic45 份)。

用标签归因:低分到底怪谁?

拿到评测报告后,用下面这套思路把"低分"拆成可执行的结论 👇

分数对比现象归因指向排查方向
short 分高、long 分低length:L3 + challenge:T1长列表截断、跨页记录合并/丢失
同一文档干净版得分高、*_corrupted版得分低perception:P1/P2/P3OCR 与版式感知,而非模型抽取逻辑
只在 S3/S4 文档上掉分structure:S3/S4跨页表格拼接、超长表上下文管理
T3 密集文档分数偏低challenge:T3空白字段误填(过度抽取)、复选框漏读
某 domain 全线偏低domain:Dx领域版式与术语适配

降质配对是感知归因的杀手锏:38 份文档同时提供干净版和降质重扫版(如real_ftx_full.pdf与 real_ftx_full_corrupted.pdf),两者的预期值完全一致——分差直接就是"捕捉质量退化"的影响量。

三个指标 × 标签:完整阅读评测结果

ExtractBench 的评分完全确定性(无模型参与),报告按 split、tag、system 三个口径输出:

  1. Unified value F1:抽取值是否正确,标量字段与记录数组用统一定义
  2. Word-level grounding F1:值正确且预测框与该字段验收框 IoU ≥ 0.5 才算"有证据"
  3. Page-level grounding F1:只需指对来源页

读结果时的建议:先看 value F1 找"抽错什么",再看 grounding F1 找"能不能证明来源",最后用 tags 切片锁定是哪类文档在拖后腿。

快速上手:加载数据与运行评测

from datasets import load_dataset import json ds = load_dataset("llamaindex/ExtractBench", split="short") case = ds[0] schema = json.loads(case["data_schema"]) expected = json.loads(case["expected_output"])

每条记录包含id、pdf(源文档路径)、data_schema、expected_output、field_rules(逐字段评分规则)、repeated_structure(重复记录的对齐键)与tags五个标签。完整字段说明见 README.md,评测任务配置见 eval.yaml。

跑通一条流水线:

uv run extract-bench download # 下载 data/<split>/<doc>.pdf + <doc>.test.json uv run extract-bench run <pipeline> # 推理 -> 评分 -> 按标签出报告

小结

  • ExtractBench 用370 份文档、8 大领域、67 种文档类型模拟真实企业级 Schema 引导抽取
  • 五维标签相互独立,低分可以归因到任务挑战、感知质量、表格结构、长度或领域,而不是"玄学"
  • 配合 value F1 与双粒度 grounding F1,按 tag 切片阅读报告,是最快的调优路径

下次模型得分偏低,先问一句:是哪个 tag 在拖后腿?答案往往就在那里。

【免费下载链接】ExtractBench

项目地址:https://ai.gitcode.com/hf_mirrors/llamaindex/ExtractBench
点击查看免费下载

相关推荐

上一篇:MediaPipe Tasks Text Web SDK 实战:语言检测、文本分类与文本嵌入的 JavaScript API 全解析
下一篇:jupyter_contrib_nbextensions 的 Exercise2 扩展:用滑动开关隐藏/显示练习解答单元格

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进