Datalab 发布了 OmniExtractBench,这是一个用于结构化文档提取的开放基准测试。它测试系统从 PDF 中填充 JSON schema 的准确程度。该基准测试汇集了来自 4 个现有基准测试的 620 份文档。一个确定性评分器对全部文档进行评分,并解释每一项判定。
此次发布正值提取厂商纷纷发布自家排行榜之际。Datalab 认为这些排行榜难以比较或审计。OmniExtractBench 是它试图打造的共享标尺。
它可部署吗?可以,评分器可从 PyPI 安装,包名为 omni-extract-bench(v0.1.7,Python 3.11+,仅依赖 SciPy),采用 Apache 2.0 许可。重新运行各厂商的测试需要你自己的 API 密钥和付费额度。
什么是 OmniExtractBench?
OmniExtractBench 是 Datalab 构建的结构化提取基准测试。每项任务向系统提供一份 PDF 和一个 JSON schema。系统返回 JSON,然后逐值对照金标准文件进行评分。代码在 GitHub 上,数据在 Hugging Face 上,采用 CC BY 4.0 许可。
它针对的 4 个缺陷
Datalab 的发布文章指出了现有提取基准测试中反复出现的 4 个问题:
偏见:文档和评分可能偏向构建该基准测试的厂商。
不透明的测试框架:低分可能反映的是测试框架损坏,而非模型薄弱。
评分不清晰:读者无法判断某份文档为何得分低。
文档多样性狭窄:有些测试集只包含密集表格,另一些只包含干净、未扫描的文件。
这 620 份文档来自哪里
测试集文档数上游发布方内容ExtractBench329LlamaIndex表单、申报文件、演示文稿Internal202Datalab(合成)密集标量 schema、小型文档LongExtractBench47micro1(受 Reducto 委托)超大表格LongArray-Extract42Extend带重复标量的大表格
监管申报表单是最大的类别,有 88 份文档。128 份文档只有一页。在另一端,33 份超过 100 页的文档占据了全部页面的 40%。Datalab 自家的合成测试集是第二大来源。
评分器如何工作
评分器将预测结果和金标准 JSON 展平为地址,即指向单个值的路径。它先对每个值进行归一化,因此“03/31/2024”能匹配“2024-03-31”。
表格是最难的部分。按位置比较时,漏掉一行会让它之后的每一行都错位。我们在一个缺少首行的 100 行表格上重新运行了评分器。按位置比较得分 0%,而 OmniExtractBench 得分 99%。
解决方案是基于内容的配对,使用匈牙利算法。ExtractBench 和 LongArray-Extract 已经以这种方式对齐行。OmniExtractBench 在其上增加了一个判定层。
每个值 6 种判定
matched:已配对,且值一致。
misread:已配对,但值不同。
unfound:gold 有值,预测没有。
fabricated:schema 允许,gold 为空,预测填充了它。
invented_item:预测行中未与任何内容配对的部分。
invented_field:schema 从未声明的地址。
准确率是 matched 值占所有判定的比例。精确率是 matched 值除以预测值。召回率是 matched 值除以 gold 值。完整规则见指标规范。
空值规则
空字符串、None 和空白都算作遗漏,因此这些地址会被丢弃。像 “NA” 或 “-” 这样的字符串仍是真实答案。这阻止了一个隐蔽的漏洞利用:用空的可选字段填充 schema 以获取免费匹配。在我们的测试中,填充的空值字段增加了 0 个判定。
与其他抽取基准测试的比较
BenchmarkPublisherDocumentsRow alignmentPer-value explanationScorer licenseData licenseOmniExtractBenchDatalab620,来自 4 个来源匈牙利算法,按内容是,6 种判定类型Apache 2.0CC BY 4.0ExtractBenchLlamaIndex370匈牙利算法按字段差异,HTML 报告Apache 2.0Apache 2.0LongArray-ExtractExtend45,合成匈牙利算法按文档评分未声明CC BY 4.0LongExtractBenchmicro1225,其中 50 个公开按行键未声明MITCC BY 4.0,仅标签
来源链接在每个基准测试名称上。检查于 2026 年 9 月 27 日。
谁漏掉字段,谁编造值
Datalab 在完整语料库上对 10 个系统配置进行了评分。其 accurate 模式以 93.85 的准确率领先。Datalab balanced(93.48)和 Reducto deep_extract v2(93.47)实际上并列。精确率和召回率随后展示了每个系统如何失败。
Balanced:Datalab(两种模式)和 Reducto 将精确率和召回率保持在 0.6 个百分点以内。
偏向漏检:GPT 5.6-sol 的精确率为 95.11,但召回率为 84.99。它因未找到的值损失了 11.88%。Gemini 和 Claude 表现出相同的模式,只是没那么明显。
偏向编造值:LlamaExtract 的召回率为 93.13,但精确率为 86.57,因编造的值损失了 9.03%。Extend 因编造的条目损失了 4.01%。
两项都低:Mistral OCR 4.1 和 Azure Content Understanding 在两项指标上都落后,召回率更低。
各系统按判定类型距离 100% 的差距。来源:Datalab。
自己运行
复制代码已复制请使用其他浏览器
uv pip install omni-extract-bench
oeb score --pred pred.json --gt gold.json --schema schema.json --verdicts
安装 [benchmark] 附加组件并运行 oeb benchmark 以重新运行各厂商。运行可断点续传,且每个提供商需要自己的凭据。Datalab 还建议在你自己的文档上测试其 playground。
关键要点
OmniExtractBench 汇集了来自 LlamaIndex、micro1、Extend 和 Datalab 套件的 620 份文档。
确定性评分器为每个值给出 6 种可审计判定中的 1 种。
基于内容的行配对可防止一行漏检导致整张表归零。
丢弃 null 地址可防止 schema 填充抬高分数。
Datalab accurate 以 93.85 领先;Datalab balanced 和 Reducto 以接近 93.5 打平。
常见问题
OmniExtractBench 衡量什么?它衡量系统将 PDF 中的值提取到 JSON schema 的准确程度,按值评分。
OmniExtractBench 是开源的吗?是的。评分器采用 Apache 2.0 许可,发布在 GitHub 和 PyPI 上。数据集采用 CC BY 4.0 许可,发布在 Hugging Face 上。
谁构建了 OmniExtractBench?Datalab 构建了它。Datalab 还维护开源的 Marker 和 Surya 文档工具。
感谢 Datalab 团队为本文提供资源。Datalab 支持并赞助了本内容。
文章 Datalab Introduces OmniExtractBench to Fix Bias and Opacity in Extraction Benchmarks 首发于 MarkTechPost。