ExtractBench 数据集解剖:一行 JSONL 里的 8 个字段与 JSON Schema 定义完全详解

【免费下载链接】ExtractBench

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

做文档信息抽取(Information Extraction)评测时,你是否想知道一个基准数据集到底长什么样?这篇文章带你逐字段拆解ExtractBench 数据集:它的每一行 JSONL 里藏着 8 个字段——从id到tags,再到 JSON Schema 定义与评分规则,帮你快速看懂这套 schema 引导式企业文档抽取基准的完整结构。

ExtractBench 数据集简介:什么是 Schema 引导式文档抽取

ExtractBench 由 LlamaIndex 团队发布(Apache 2.0 协议),面向企业真实文档的结构化抽取:给定一份完整文档(born-digital 或扫描件)和一个由用户书写的 schema,系统必须返回一份通过 schema 校验的 JSON 对象,并为每个值附上**页码 + 边界框(bbox)**作为证据。

数据集规模:

  • 📄370 份文档、4,869 页,覆盖8 个业务领域(D1–D8)、67 种文档类型
  • 每种文档类型有且仅有一份 schema,被该类型下所有文档共享
  • 325 份真实文档 + 45 份合成长列表;134 份含扫描件、55 份含手写、38 份为退化重拍版本
  • 任务挑战分三类:T1 长列表完整性、T2 大海捞针、T3 密集文档

数据集元信息定义在 eval.yaml,三份分割文件分别是 short.jsonl、medium.jsonl 和 long.jsonl,源 PDF 按分割存放在 docs/short/、docs/medium/、docs/long/ 目录下,完整说明见 README.md。

一行 JSONL 的完整解剖:先看整体结构

JSONL 的每一行 = 一个文档 + schema 测试用例。下面是 README.md 中 Dataset Format 一节给出的结构示例(字段顺序与实际数据一致):

{ "id": "short/grafton_isotrope_invoice_19503", // 唯一用例 ID:<split>/<stem> "category": "short", // 分割名(short | medium | long) "pdf": "docs/short/grafton_isotrope_invoice_19503.pdf", // 源文档相对路径 "data_schema": "{...}", // JSON 编码的 JSON Schema "expected_output": "{...}", // JSON 编码的标准答案 "field_rules": "{...}", // JSON 编码的逐字段评分规则 "repeated_structure": "{...}", // JSON 编码的记录身份键配置 "tags": ["source:real", "challenge:T3.b", "length:short", "domain:D1"] }

8 大字段总览:谁负责什么

#字段类型一句话说明
1idstring测试用例唯一标识,格式<split>/<stem>
2categorystring分割名:short/medium/long
3pdfstring源 PDF 的相对路径
4data_schemastringJSON 编码的JSON Schema,输出必须通过它的校验
5expected_outputstringJSON 编码的标准答案(ground truth)
6field_rulesstringJSON 编码的逐字段评分规则
7repeated_structurestringJSON 编码的记录身份键配置(用于数组对齐)
8tagsstring[]多维标签数组,支持切片分析

按职责可以分三组:

  • 🎯输入侧(id/category/pdf):告诉你文件在哪、属于哪个长度桶
  • 📐任务与真值侧(data_schema/expected_output/field_rules/repeated_structure):定义"要抽什么、什么算对、怎么对齐记录"
  • 🏷️分析侧(tags):低分时帮你定位原因出在哪个维度

前 3 个字段详解:id、category 与 pdf

id是全局唯一标识,格式为<split>/<stem>。以"short/grafton_isotrope_invoice_19503"为例:前半段是分割名,后半段就是源文件去扩展名后的文件名(stem),例如docs/short/grafton_isotrope_invoice_19503.pdf。这意味着通过id就能直接定位到源文档,不需要任何额外索引。

category只取三个值:short(L1,≤10 页)、medium(L2,11–50 页)、long(L3,>50 页),与 JSONL 所在文件一一对应,且始终与tags里的length标签一致。

pdf是相对仓库根目录的源文档路径,指向 docs/short/ 等目录下的真实 PDF。评测框架会按这个路径下载文档;本地查看某份样例时,可直接打开 docs/short/grafton_isotrope_invoice_19503.pdf 对照字段理解抽取任务。

4 个 JSON 编码字段:为什么 schema 要"藏"在字符串里

data_schema、expected_output、field_rules、repeated_structure四个字段存的都是JSON 编码的字符串,而不是结构化列。这是理解整个数据集的关键:

每种文档类型的 schema 完全不同——电费单、SEC 13F 持仓表、海关 7501 表、购房披露表的字段结构天差地别,没法用一张统一表格装下所有字段。因此这四个字段采用 JSON-in-string 的形式,加载后用json.loads解码即可。

这也是一个实用提醒:在最大的长列表文档里,单个field_rules可高达21 MB,所以在线数据集查看器只能显示单元格预览,完整数据以下载的 JSONL 文件为准。

data_schema:输出的 JSON Schema 定义

data_schema解码后就是一份标准JSON Schema,规定输出 JSON 的字段名、类型、必填项、数组元素结构等。系统的输出必须通过这份 schema 校验,否则直接判错——这正是"Schema-Guided"(schema 引导式)的含义:schema 既是任务说明书,也是输出的硬约束。

field_rules:逐字段评分规则

field_rules把 schema 中每个字段路径映射到一条评分规则,决定"什么才算对":

子字段含义
comparator比较方式:exact、case_insensitive、number、date、boolean、enum等
evidence所有可接受的读法及出处,存为{page, bbox, quote, value};任一可接受读法都算正确
source_policy该值是否必须逐字出现在原文中
evidence_required/verified是否存在 grounding 证据,以及是否经过人工核验

evidence的设计很聪明:同一个值可能允许多种读法(比如日期写成2024-01-15或01/15/2024),标注时把每种可接受读法的页码、bbox、原文引文、规范化值都记录下来。这让评分既严格(值必须落在可接受集合内)又宽容(允许文档中真实存在的不同写法),同时天然支撑了 bbox 级别的 grounding 打分。

repeated_structure:重复记录的身份键

发票行项目、持仓列表这类"记录数组"是评分难点。repeated_structure为数组指定**身份键(identity key)**用于对齐期望记录。例如发票行项目可以用(description, amount)做身份键:预测记录与期望记录按键配对,数组顺序不影响得分。它同时记录列表的完整性要求——这正是 T1 长列表挑战"一条都不能少"的落点。

tags:多维标签,让低分可归因

tags是字符串数组,形如"source:real"、"challenge:T3.b"、"length:short"、"domain:D1",采用前缀:值的统一格式,覆盖五个独立分析维度:

  • challenge:T1.a–e长列表完整性 /T2.a–d大海捞针 /T3.a–e密集文档
  • perception:P1旋转或纯图像 /P2扫描件 /P3手写
  • structure:S1–S5各种表格结构难题(合并表头、跨页表格、超千行表格……)
  • length:short/medium/long,恒与category一致
  • domain:D1金融(145 份)→D8房地产(6 份)

此外还记录交付要求(G1–G4)与source(325 份 real / 45 份 synthetic)。一份文档可同时属于多个任务挑战,所以各挑战的文档数相加大于 370(总期望值 841,934 个,T1 一项就占 81 万+)。正因为维度独立,一个低分可以被精确归因——是长列表截断、表格跨页,还是扫描件识别出错。

如何加载与使用:3 行代码上手

用 Hugging Facedatasets库加载任意分割,每条记录就是一个上面的对象,四个字符串字段用json.loads解码即可:

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"])

跑完整评测则用官方框架两条命令:uv run extract-bench download拉取data/<split>/<doc>.pdf与<doc>.test.json,再uv run extract-bench run <pipeline>完成推理、评测与报告。评分是完全确定性的——同一份预测与真值永远得到同一个分数,流程中不引入任何模型。

三个核心指标各回答一个问题:

  • Unified value F1:提取的值对不对(标量字段与记录数组统一口径)
  • Word-level grounding F1:值对,且预测 bbox 与该字段某个可接受 box 的 IoU ≥ 0.5
  • Page-level grounding F1:至少把来源页找对

三个 split 的规模速览

分割测试案例数页数每篇页数
short.jsonl252615≤ 10
medium.jsonl982,43811–50
long.jsonl201,816> 50

写在最后

把 8 个字段串起来看:id/category/pdf指向输入,data_schema/expected_output/field_rules/repeated_structure定义任务与真值,tags负责切片归因。读懂这一行 JSONL,就理解了 ExtractBench 的全部评测逻辑——给定文档与 schema,返回 schema 合法的 JSON,值要全对、缺失要正确返回null、每个值都要有页码和 bbox 背书。

如果你想动手试试,可以克隆仓库后从 short.jsonl 的第一条记录开始,对照 docs/short/ 里的源 PDF 手工"抽"一遍,再回头读field_rules——你会发现评分规则比想象中细致得多。

【免费下载链接】ExtractBench

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

相关推荐

上一篇:智慧树刷课插件:5分钟实现课程自动化学习的终极解决方案
下一篇:使用 DhcpV4SetPolicy 更新 DHCP 服务器策略:Windows DHCP Server Management API 实战指南

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

相关新闻

什么是regnety_032.tv2_in1k?新手完整指南:从零认识这款19.4M参数的轻量级图像分类模型

什么是regnety_032.tv2_in1k?新手完整指南:从零认识这款19.4M参数的轻量级图像分类模型

【免费下载链接】regnety_032.tv2_in1k 项目地址&#xff1a; https://ai.gitcode.com/hf_mirrors/timm/regnety_032.tv2_in1k 点击查看 免费下载 regnety_032.tv2_in1k 是一个基于 timm 框架的轻量级图像分类模型&#xff0c;属于 RegNetY 家族&#xff0c;仅有 19.4M&#x…

2026/10/21 4:47:54 阅读更多 →
知识工作插件集:从采集到复用的信息管理方案

知识工作插件集:从采集到复用的信息管理方案

做知识工作的人&#xff0c;多半都有这种体验&#xff1a;浏览器里存了上百个网页&#xff0c;收藏夹像一个堆满旧报纸的房间&#xff0c;真正要找一条关键信息时&#xff0c;却连标题都想不起来&#xff1b;笔记软件里记了几千条碎片&#xff0c;但每次写方案还是从空白文档开…

2026/10/21 4:47:54 阅读更多 →
C#实现Modbus TCP主从站完整源码解析:无需手写协议栈

C#实现Modbus TCP主从站完整源码解析:无需手写协议栈

简介&#xff1a;一份基于TCP协议的Modbus通信C#完整源码&#xff0c;面向工业自动化领域的C#开发者&#xff0c;亦适合需要实现PLC、现场设备网络通信的工程人员。代码围绕Modbus_TCP_class_demo展开&#xff0c;覆盖连接管理、请求报文构造、NetworkStream数据收发、报文解析…

2026/10/21 4:47:54 阅读更多 →

最新新闻

Linux网络学习【传输层协议UDP】

Linux网络学习【传输层协议UDP】

&#x1f525;承渊政道&#xff1a;个人主页 ❄️个人专栏: 《C语言基础语法知识》 《数据结构与算法》 《C知识内容》 《Linux系统与网络知识》 《算法刷题指南》 《测评文章活动推广》 《大模型语言路线学习》 《MySQL数据库学习》 《Python知识内容》 《cpolar知识学习》 ✨…

2026/10/21 6:58:46 阅读更多 →
AI大模型落地最后一公里:收藏这份FDE工程师成长指南,小白程序员必看!

AI大模型落地最后一公里:收藏这份FDE工程师成长指南,小白程序员必看!

工业AI项目常卡在POC阶段&#xff0c;难以规模化落地。核心问题在于通用AI能力与千差万别的工业现场之间存在数据、设备、工况、业务流程等多重鸿沟。为填补这一空白&#xff0c;新职业“前线部署工程师”&#xff08;FDE&#xff09;应运而生。FDE是介于算法工程师与现场实施工…

2026/10/21 6:58:46 阅读更多 →
AIPM 是什么?

AIPM 是什么?

搜「AIPM」&#xff0c;你会同时撞见四种答案&#xff0c;它们互相不承认对方&#xff1a;岗位缩写、培训结业证、老认证的 AI 加课版、以及带公开能力模型与独立考试的标准化认证。 本文做三件事&#xff1a;拆开这个词的四种用法&#xff0c;给出两套可对照的参数表&#xff…

2026/10/21 6:58:46 阅读更多 →
CST有哪些典型应用场景?从天线设计到医疗成像,看电磁仿真如何走进真实研发

CST有哪些典型应用场景?从天线设计到医疗成像,看电磁仿真如何走进真实研发

当产品越来越智能、系统越来越复杂&#xff0c;电磁问题也不再只属于某一个专业环节。它可能出现在天线布局阶段&#xff0c;也可能暴露在EMC整改现场&#xff1b;可能影响高速互联链路的稳定性&#xff0c;也可能关系到人体暴露评估、医疗成像效果&#xff0c;甚至高端装备的隐…

2026/10/21 6:58:46 阅读更多 →
火炮周视瞄准镜初步设计:指标分解、光路构型与轴系精度校核

火炮周视瞄准镜初步设计:指标分解、光路构型与轴系精度校核

简介&#xff1a;这份文档面向兵器工程、光学仪器及火炮瞄准系统方向的学生与设计人员&#xff0c;围绕火炮周视瞄准镜的初步设计展开&#xff0c;解决从光学参数确定到系统结构选型的完整设计流程问题。资源包共1个doc文件&#xff0c;约395KB&#xff0c;内容为一份结构完整的…

2026/10/21 6:58:46 阅读更多 →
Linux僵尸、孤儿与守护进程:原理、区别与实战实现

Linux僵尸、孤儿与守护进程:原理、区别与实战实现

1. 项目概述&#xff1a;从“进程尸体”到“后台幽灵”的真实世界映射在 Linux 系统里&#xff0c;你执行ps aux | grep defunct时看到的<defunct>标记&#xff0c;不是报错&#xff0c;而是一具“进程尸体”——它已经死亡&#xff0c;却还没被收尸&#xff1b;你用nohu…

2026/10/21 6:57:46 阅读更多 →

日新闻

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

这段时间硬件圈和AI圈都在传一个事&#xff1a;AMD锐龙AI Max PRO 400系列把最高192GB统一内存搬进了PC形态的产品里&#xff0c;按宣传口径&#xff0c;本地跑320B参数的大家伙不再是纸面概念。我第一反应倒不是“内存真大”&#xff0c;而是这话背后的含金量——它把过去只能…

2026/10/21 0:00:11 阅读更多 →
AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

1. 从“封号重开”这个行为说起&#xff1a;用户到底在追求什么“封号重开”这四个字&#xff0c;放在任何产品语境里都带着一股决绝的味道。一个账号从零开始积累使用记录、调教偏好、沉淀工作流&#xff0c;背后是大量的时间和精力成本。正常情况下&#xff0c;没有人愿意主动…

2026/10/21 0:00:11 阅读更多 →
ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

1. 为什么在ROS里硬刚YOLOv3不是“炫技”&#xff0c;而是工程落地的必经之路我第一次在某高校机器人实验室看到那台搭载Jetson TX2的移动底盘原地打转、反复识别错垃圾桶时&#xff0c;就意识到&#xff1a;单纯跑通darknet_ros demo和真正让YOLOv3在ROS里“干活”&#xff0c…

2026/10/21 0:00:11 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型&#xff08;GMM&#xff09;的语音识别系统&#xff0c;很多人第一反应就是一堆数学公式&#xff0c;觉得门槛很高。但如果你真的在MATLAB里把它落地跑通&#xff0c;会发现核心其实就是三件事&#xff1a;把声音变成特征向量&#xff0c;用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人&#xff0c;但落到具体操作上&#xff0c;无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程&#xff1a;对图像做反白、改调色板、彩色转灰度&#xff0c;最后把像素数据导出成txt文件。单看每一…

2026/10/20 20:43:59 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词&#xff0c;你会发现一个很有意思的现象&#xff1a;每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型&#xff0c;有人指的是运动控制系统&#xff0c;还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/21 4:27:17 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:45 阅读更多 →