☰
开发者指南:如何为olmOCR-bench扩展自定义测试集并接入你的OCR模型
2026/10/18 15:26:18 网站建设 项目流程
  • 数据集
  • AI 评测
  • 模型评测
  • 人工智能
  • OCR

【免费下载链接】olmOCR-bench

项目地址:https://ai.gitcode.com/hf_mirrors/allenai/olmOCR-bench
点击查看免费下载

olmOCR-bench 是 Allen AI 开源的OCR 评测基准数据集:收录 1,403 个 PDF 单页文件与 7,010 条单元测试用例,用于衡量 OCR 系统把 PDF、扫描件转换为 Markdown/HTML 时,能否保留文字、阅读顺序、表格与公式等关键信息。本指南将带你读懂测试用例格式、学会扩展自定义测试集,并把你的 OCR 模型接入评测流程。

一、olmOCR-bench 是什么?📊

这个仓库本质上是一个"考题库":每页 PDF 配上一批可自动判分的测试用例,覆盖 5 大类能力:

测试类型说明
Text Present(文本存在)输出中必须包含指定短文本,支持模糊匹配与位置约束
Text Absent(文本不存在)输出中不应出现页眉、页脚、页码等干扰文本
Reading Order(阅读顺序)两段文本的相对先后顺序必须正确
Table(表格精度)单元格值存在,且上下左右相邻关系正确
Math(公式精度)基于符号布局与相对位置的公式存在性检测

按文档来源统计,各子集分布如下(引自 README.md):

文档来源PDF 数测试数考察重点
arXiv_math5222,927数学公式
headers_footers266753页眉页脚剔除
long_tiny_text62442超长极小字体
multi_column231884多栏阅读顺序
old_scans98526古旧扫描件
old_scans_math36458旧扫描+公式
table_tests1881,020表格结构

二、先看懂测试用例:JSONL 格式速览 🔍

所有测试用例都以JSONL(每行一条 JSON)形式存放,每个类别一个文件,PDF 页面按类别分目录存放。核心目录结构:

  • bench_data/arxiv_math.jsonl:公式用例
  • bench_data/headers_footers.jsonl:页眉页脚用例
  • bench_data/multi_column.jsonl:阅读顺序用例
  • bench_data/tables/:表格类 PDF 页面
  • eval.yaml:评测任务配置

不同测试类型的字段略有差异,下面各举一条真实样例。

1. 文本存在 / 不存在(present / absent)

{"pdf": "long_tiny_text/14a_pg1.pdf", "page": 1, "id": "14a_pg1_text_04", "type": "present", "max_diffs": 0, "text": "Afro-Shirazi, also known as SHIRAZI, African tribe in Tanzania.", "case_sensitive": true, "first_n": null, "last_n": null, "checked": "verified"}

关键参数:

  • type:present要求文本出现,absent要求不出现;
  • max_diffs:允许的最大字符差异数(模糊匹配容错);
  • first_n/last_n:位置约束,如first_n: 10表示文本必须出现在输出前 10 个字符内;
  • case_sensitive:是否区分大小写(absent 类型默认不区分)。

2. 阅读顺序(order)

{"pdf": "multi_column/0a2b678b..._page_8_pg1.pdf", "page": 1, "type": "order", "before": "48: 105-9.", "after": "TGF-beta signaling: positive and negative effects...", "max_diffs": 1, "checked": "verified"}

before必须出现在after之前,适合验证多栏、图文混排的阅读顺序。

3. 表格(table)

{"pdf": "tables/b5c5b866..._pg4.pdf", "page": 1, "type": "table", "cell": "0.569", "left_heading": "BO", "up": null, "down": null, "left": null, "right": null, "max_diffs": 0, "checked": "verified"}

cell是目标单元格值,up/down/left/right/top_heading/left_heading描述其邻接关系,用于验证表格结构是否正确。

4. 公式(math)

{"pdf": "arxiv_math/2503.04993_pg18.pdf", "page": 1, "type": "math", "math": "\\frac{d}{d\\epsilon} J_1(u_1 + \\epsilon v_1, u_2) \\Big|_{\\epsilon=0}", "max_diffs": 0, "checked": "verified"}

math字段是 LaTeX 源码,评测时会按符号的渲染包围盒与相对位置匹配(例如要求\int位于x左侧)。

三、扩展自定义测试集:5 步完成 🧩

第 1 步:准备 PDF 页面

把测试用的单页 PDF放入新目录,例如bench_data/my_dataset/,保持文件名清晰(如sample_pg1.pdf)。注意仓库本身是只读数据集,扩展时建议 fork 一份再操作:

git clone https://gitcode.com/hf_mirrors/allenai/olmOCR-bench cd olmOCR-bench

第 2 步:编写 JSONL 用例文件

新建bench_data/my_dataset.jsonl,每行一条用例。字段模板如下:

{"pdf": "my_dataset/sample_pg1.pdf", "page": 1, "id": "sample_pg1_text_01", "type": "present", "text": "你期望被识别出的原文句子", "max_diffs": 2, "case_sensitive": true, "first_n": null, "last_n": null, "checked": "verified"}

编写建议:

  • id必须全局唯一:官方命名规律是文件名_类型_序号(如14a_pg1_text_04),便于溯源;
  • text取 1–3 句:与官方"短文本段"定义一致,过长会降低判分稳定性;
  • max_diffs按难度调:干净文档可用 0,旧扫描建议 1–3;
  • checked标记人工核验状态:如"verified",便于后续区分机标/人标数据。

第 3 步:注册数据分片

在 README.md 顶部 frontmatter 的configs.data_files中为新类别增加一个split条目:

- split: my_dataset path: - bench_data/my_dataset.jsonl

这样数据集加载器就能按 split 读取你的用例。

第 4 步:在评测配置中声明任务

打开 eval.yaml,仿照现有条目添加任务,即可让评测框架按 split 逐项打分:

- id: my_dataset config: default split: my_dataset

第 5 步:本地验证

先用一个已有模型(或简单脚本输出 Markdown)跑通单条用例:确认pdf路径正确、type与字段匹配、模糊阈值合理。全部通过后再纳入正式评测。

四、接入你的 OCR 模型 🚀

评测流程非常直接,olmOCR-bench 是"纯数据基准",判分由配套的 olmocr 评测框架完成(见 eval.yaml 中evaluation_framework: olmocr-bench声明):

  1. 准备输入:读取各 split 对应的 PDF(bench_data/<类别>/目录);
  2. 模型推理:逐页调用你的 OCR 模型,输出 Markdown(表格类可输出 HTML,更利于复杂结构判定);
  3. 自动判分:评测框架按present / absent / order / table / math五类规则逐条核对,按类别与整体(overall)汇总得分;
  4. 对比基线:README 中给出了 Marker、MinerU、GOT OCR、Mistral OCR 等模型的官方成绩,可直接对标(当前最强成绩约 77.4 分)。

💡 小建议:先跑long_tiny_text与multi_column这两个区分度高的子集快速定位短板,再全量评测。

五、常见问题 FAQ ❓

Q1:为什么我的 present 用例总是失败?先检查max_diffs是否过小、case_sensitive是否过严;再确认text与 PDF 原文逐字一致(含标点)。

Q2:absent 用例能限制位置吗?可以。配合first_n/last_n可精确约束,例如"页码 31 不得出现在前 10 个字符"。

Q3:表格输出用 Markdown 还是 HTML?简单表格 Markdown 即可;复杂嵌套结构建议输出 HTML,官方说明指出复杂结构需要 HTML 才能准确判定邻接关系。

Q4:公式判定对输出格式有要求吗?公式判定基于渲染后的符号包围盒与相对位置,因此输出需包含可渲染的数学标记(如 LaTeX)。

六、写在最后 ✍️

olmOCR-bench 的价值在于用例级、可自动判分的 OCR 质量度量。扩展自定义测试集的核心就是三件事:单页 PDF 入目录、按类型规范写 JSONL、在 frontmatter 与 eval.yaml 中注册 split。掌握这套流程后,你不仅能评测通用能力,还可以针对行业文档(如财报、古籍、票据)构建专属基准,持续追踪自己模型的 OCR 能力演进。

  • 数据集
  • AI 评测
  • 模型评测
  • 人工智能
  • OCR

【免费下载链接】olmOCR-bench

项目地址:https://ai.gitcode.com/hf_mirrors/allenai/olmOCR-bench
点击查看免费下载
上一篇:会话级 Clean State 工程实践:让 AI Agent 每次会话都留下可接手的干净状态
下一篇:导出即ROS包:solidworks_urdf_exporter生成的robot_description包结构全解

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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询