- 数据集
- AI 评测
- 模型评测
- 人工智能
- OCR
【免费下载链接】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_math | 522 | 2,927 | 数学公式 |
| headers_footers | 266 | 753 | 页眉页脚剔除 |
| long_tiny_text | 62 | 442 | 超长极小字体 |
| multi_column | 231 | 884 | 多栏阅读顺序 |
| old_scans | 98 | 526 | 古旧扫描件 |
| old_scans_math | 36 | 458 | 旧扫描+公式 |
| table_tests | 188 | 1,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声明):
- 准备输入:读取各 split 对应的 PDF(
bench_data/<类别>/目录); - 模型推理:逐页调用你的 OCR 模型,输出 Markdown(表格类可输出 HTML,更利于复杂结构判定);
- 自动判分:评测框架按
present / absent / order / table / math五类规则逐条核对,按类别与整体(overall)汇总得分; - 对比基线: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
相关推荐
终极Casibase开发者指南:如何快速扩展自定义AI模型与嵌入算法
终极Casibase开发者指南:如何快速扩展自定义AI模型与嵌入算法 Casibase是一款开源企业级AI知识库与MCP(model context proto
AI 应用人工智能大模型AI AgentRAGMCP 服务后端前端语音React Native新架构深度解析:Fabric与TurboModules的革命性变革
React Native新架构深度解析:Fabric与TurboModules的革命性变革 React Native新架构是近年来React Native生态系
Claudian 安装指南:把 Claude Code 嵌进 Obsidian 侧边栏的 3 条路径
Claudian 安装指南:把 Claude Code 嵌进 Obsidian 侧边栏的 3 条路径 你在 Obsidian 里写完一段内容,想让 Claude
AI 应用代码智能体交互助手人工智能AI Agent
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考