烛夜
烛夜
发布于 2026-08-18 / 17 阅读
0
0

RAG 基础设施专题 Day 4 —— olmOCR 内容提取工作包

今天研读《olmOCR: Unlocking Trillions of Tokens in PDFs with Vision Language Models》

开源实现:olmOCR


1. 为什么要提出 olmOCR ?

高质量的文本数据对于语言模型而言非常重要:

  • 模型训练阶段:语言模型开发需要基于海量文档的数万亿 token 进行训练。若提取和表示的内容包含噪声或保真度低,会导致训练不稳定并削弱下游性能。

  • 模型推理阶段:语言模型需利用纯文本格式的文档上下文来辅助用户提示(例如信息提取或阅读辅助)。低质量的源文档表征会引发级联错误。

虽然互联网上存在大量的文本资源,不过 PDF 等电子文档格式却存在如下难点:

  • 物理渲染导向:PDF、PS、DjVu 以及 DOC、ODT、RTF 等格式旨在保证固定尺寸物理页面的视觉渲染,而不是保留逻辑文本结构。

  • 语义单元缺失:PDF 格式最初用于规范数字文档在实体纸张上的打印方式,底层存储的是单字符及其坐标、间距和视觉元数据,而非标题、段落等语义段落单元。

  • 缺乏阅读顺序:这类格式缺少连贯文本所需的基础信息(例如真实的阅读顺序),导致存量庞大的文档难以整合至语言模型流程中。

当时已有的文本提取技术路线对比:

  • 流水线系统:将章节分割、表格解析等多个机器学习组件串联运行(如 MinerU、Marker),部分工具专门针对科学论文开发(如 Grobid、VILA、PaperMage)。该类方案传统上主要侧重于内容的准确提取。

  • 端到端模型:使用单一模型接收 PDF 页面图像并输出纯文本(如 Nougat、GOT Theory 2.0)。这类模型推动了多栏排版、浮动图表、页眉、脚注等复杂布局内容的线性化处理(将内容按逻辑阅读顺序展平)。

  • 专有闭源模型:先进的专有模型在端到端文本提取上具备较强能力,但调用成本高(例如使用 GPT-4o 转换百万页 PDF 需花费超过 6,200 美元)。

因此,作者提出了 olmOCR ,这是一个通用的内容提取与线性化工具包,用于将 PDF 或文档图像转换为适用于语言模型开发的干净纯文本。主要贡献如下所述:

  • 训练数据(olmOCR-mix-0225)

    • 规模与来源:包含 260,000 页抓取的公开 PDF 页面及其对应的 GPT-4o OCR 输出,用于训练模型。

    • 覆盖领域:涵盖学术论文、公有领域图书、法律文件、宣传册等多种类型。

  • 评测基准(olmOCR-Bench)

    • 评测机制:采用类似软件单元测试的简单二元规则,无需依赖模糊的参考标准匹配或 LLM-as-judge 。

    • 测试规模:覆盖 1,400 页 PDF,包含跨多种文档类型的 7,000 多个单元测试用例。

  • 模型与代码(olmOCR-7B-0225-preview 与 Python 工具包)

    • 模型微调:基于 Qwen2-VL-7B-Instruct 在 olmOCR-mix-0225 数据集上微调得到。

    • 架构与扩展:封装为 Python 工具包,支持 SGLang 和 vLLM 推理引擎,可扩展适配单卡至数百张 GPU 的集群配置。

    • 性能与成本:在评测基准上优于 Qwen-2.5-VL-7B;处理每百万页 PDF 的成本低于 176 美元。

  • 下游实际应用(olmOCR-peS2o)

    • 语料构建:使用 olmOCR 处理了语言模型预训练常用的 peS2o 数据集中的 790 万份原始科学文献 PDF,构建了 olmOCR-peS2o 数据集。

    • 预训练效果:使用 olmOCR-peS2o 训练语言模型,在下游基准测试中观察到了性能提升。

2. 构建 olmOCR-mix 数据集并在其上训练模型

2.1 PDF 数据的来源与预处理

数据来源

  • 网络抓取文档:从包含 2.4 亿份公开互联网抓取 PDF 的内部数据集中随机抽样,该部分多为原生数字文档。

  • 公共领域图书:来源于 Internet Archive 的公有领域图书 PDF,该部分主要由图像扫描件组成。

数据过滤与清洗规则

  • 语言过滤:使用 Lingua 工具包识别并过滤掉非英文文档。

  • 解析与异常过滤:剔除无法被 pypdf 正常解析的文档。

  • 内容与格式过滤:剔除包含垃圾信息关键词的文档、可填写的表单,以及文本内容过短的文档。

页面采样策略

  • 从通过上述过滤条件的每份 PDF 中,以均匀随机抽样的方式抽取最多 3 页。

  • 数据集的具体分布情况整理于下表之中。

2.2 提取线性化纯文本

方案选择

  • 传统标注的局限:人工标注成本过高且容易出错;基于 PDF 内部数据提取的现有工具无法处理文档图像,且由于启发式规则脆弱,提取误差较大,无法提供可靠的真值标签。

  • 方案确立采用 GPT-4o 将 PDF 页面转换为线性化纯文本,以此构建模型训练所需的监督目标。

原生 GPT-4o 的缺陷与文档锚定策略

  • 独立生成的不足:在面对高密度页面或复杂版面时,GPT-4o 容易出现内容遗漏、非忠实于原文的重写或补全,以及在未收到指令时擅自为图像生成描述。

  • 文档锚定机制:在 PDF 页面光栅图像这一视觉输入的基础上,补充从页面提取出的文本块和位置信息,以此辅助引导 GPT-4o 的生成过程。

文本信息提取与提示词采样

  • 提取方式与数据特征:利用 pypdf 库从 PDF 内部数据中提取页面结构表征。该表征包含较多噪声,既未保留阅读顺序,正文也与模板文本及渲染相关的人工残留交织在一起。

  • 采样规则:从提取出的长内容中采样文本块加入提示词,直至达到最大输入长度上限;在采样时,优先选取位于文档开头和结尾处的文本块与图像

结构化输出规范与效果验证

  • 先元数据后正文:要求 GPT-4o 输出结构化的 JSON 格式。强制模型在按自然阅读顺序生成页面正文之前,必须先提取页面元数据(如语种、页面朝向、是否存在表格等)。

  • 作用与价值:除提升输出处理效率外,该设计能避免模型在页面不存在文本时为图像生成描述。

  • 评测表现:基准测试(olmOCR-Bench)数据表明,文档锚定方法改善了 GPT-4o 的输出质量。

2.3 模型微调

本节用于验证规模较小、经过专门微调的 VLM 是否能达到大型通用模型配合优化提示词的效果。

基础模型与训练超参数

  • 模型与数据:以 Qwen2-VL-7B-Instruct 为基础模型,在 olmOCR-mix-0225 数据集上进行微调,产出 olmOCR-7B-0225-preview。

  • 开发框架:基于 Hugging Face 的 transformers 库实现。

  • 训练参数

    • 有效批次大小:4

    • 学习率:1e-6

    • 优化器:AdamW

    • 学习率调度:余弦退火策略,训练 10,000 步(约合 1.2 个 epoch)

硬件配置与算力开销

  • 硬件环境:单节点配备 8 张 NVIDIA H100(80GB)GPU。

  • 耗时统计:单次训练耗时 16 个节点小时(node hours);包含所有试验在内的总训练计算量为 365 个节点小时。

输入处理与提示词调整

  • 图像尺寸缩放:在微调阶段改动了文档锚定提示词(删减部分指令),并将图像缩放至最长边不超过 1024 像素。

  • Token 长度与构成

    • 提示词字符数上限为 6,000 字符。

    • 典型输入 token 分布:页面图像约占 1,000 tokens,锚定文本约占 1,800 tokens,整体输入约 3,000 tokens。

    • 训练样本最大截断长度设为 8,192 tokens,以适配偶发的大提示词场景。

损失计算与输出格式

  • 损失掩码:实施了 Loss 掩码处理,仅计算最终生成回复(Response)部分的损失,不计算输入提示词的损失。

  • 输出规范:延续了 olmOCR-mix-0225 中定义的结构化 JSON 输出格式。

3. olmOCR-Bench 基准测试

olmOCR-Bench 是一个用于测试 PDF 内容提取质量的基准测试。

评测机制与设计特点

  • 单元测试形式:olmOCR-Bench 采用预定义的“通过/失败”(pass-or-fail)单元测试来评估提取性能。测试逻辑为:输入完整的 PDF,检验其输出的纯文本是否满足特定属性或包含特定元素。

  • 确定性验证:每个测试用例均具备简单、明确以及可通过机器程序进行确定性验证的特点。

规避传统评测方法的缺陷

  • 规避模型自评偏差:不采用基于大模型的评估器,避免评测模型对自身生成结果产生偏好偏差。

  • 规避软性指标局限:不使用与参考文本比对的软性指标(如编辑距离、ROUGE)。这类指标难以反映细粒度但语义关键的提取错误(例如数学公式中 xixi 的混淆)。

数据规模与测试类型

  • 基准规模:包含来自多样化来源的 1,402 份独立 PDF 文档,涵盖 7,010 个独立的测试用例。

  • 测试覆盖维度

    • 通用测试模式:适用于所有文档类型的通用属性(如元素存在性、缺失性、阅读顺序)。

    • 专项测试模式:针对难度较高且重要的特定提取目标(如表格、数学公式)。

详细信息参见下表:

3.1 单元测试种类

测试类别

验证目标

评测机制与判定规则

大小写敏感性

文本存在性

验证指定文本片段(通常为 1–3 句话)是否被正确识别并包含在输出文本中

允许软匹配/模糊匹配;可指定文本是否必须出现在文档的前 N 个或后 N 个字符内。

默认区分大小写。

文本缺失性

验证指定文本片段是否被成功剔除,主要针对重复出现的页眉、页脚和页码等边缘干扰内容。

允许软匹配/模糊匹配;可指定检查范围是否限定在文档的前 N 个或后 N 个字符内。

默认不区分大小写。

自然阅读顺序

验证两个文本片段之间的先后顺序(例如多新闻页面中,某篇新闻的首句须出现在该篇标题之后,但不惩罚不同独立新闻之间的相对排列顺序)。

允许软匹配。

默认区分大小写。

表格准确率

验证输出中是否包含包含特定单元格值的表格,并检查其相邻单元格是否满足相对位置属性(例如某一单元格为“4.5%”,其上方单元格为“2.4%”)。

支持 Markdown 与 HTML 格式表格;跨行与跨列信息的保留依赖 HTML 格式表格。

数学公式准确率

验证输出中是否包含指定的数学公式

在无界面浏览器中使用 KaTeX 渲染参考 LaTeX 公式并提取符号及其视觉边界框,比对输出文本中是否存在相对方位一致的匹配符号集合(3 在 -3 上方);采用 Pass/Fail 二元判定。

Baseline 测试

作为所有 PDF 默认附加的基础测试,验证页面是否生成了有效的非空文本。

判定标准:

1. 必须包含字母数字字符;

2. 末尾不得包含长度大于 30 的连续重复 N-gram;

3. 不得包含中文、日文或 Emoji Unicode 字符集字符。

在执行上述所有文本比对前,基准测试会对提取文本进行标准化处理:

  • 将换行符转义表达统一转换为实际换行符。

  • 将所有空白字符归一化为单个 ASCII 空格。

  • 移除 Markdown 中的粗体与斜体标记。

  • 将各类引号和连字符统一归一化为标准 ASCII 字符。

  • 将所有 Unicode 字符串转换为 NFC 规范格式。

3.2 基准测试的数据来源与构建

测试数据的预处理规则要求:

  • 隐私过滤:移除了包含个人可身份识别信息且非公开发布的文档。

  • 数据去重:通过 URL 级别去重,确保基准测试文档与训练集 olmOCR-mix-0225 不发生重叠与污染。

7 类评测文档构建与测试用例生成方式:

文档类型与代号

数据来源

测试用例生成与工具链

人工校验与处理规则

arXiv 数学论文

(arXiv Math, AR)

arXiv 数学子集(近期论文,且具备单一 TeX 源文件与对应 PDF)

1. 运行 olmOCR 筛选包含 TeX 的候选页面;

2. 将页面匹配回原始 TeX 源码;

3. 验证匹配的 TeX 是否与 KaTeX 渲染兼容。

手工排查并剔除因自定义宏导致偏离标准 LaTeX 渲染的用例;将多部分长公式拆分为较小的独立测试用例。

老旧扫描版数学书

(Old Scans Math, OSM)

Internet Archive 公有领域的老旧数学教材

随机抽取页面,运行 olmOCR 筛选包含公式的候选页面。

由人工逐一标注页面上的数学公式作为测试用例。

表格文档

(Tables, TA)

内部爬取的 PDF 仓库(与 olmOCR-mix-0225 来源一致)

使用 Gemini-Flash-2.0 提示词筛选含表格页面,并提示其生成随机选定单元格之间的相对位置关系。

人工复审测试用例的准确性。

老旧扫描件

(Old Scans, OS)

美国国会图书馆数字档案(带人工转录文本的历史信件和打字稿)

编写脚本比对转录文本,生成句子先后关系的“自然阅读顺序”用例。

人工补充需在 OCR 结果中排除的页眉/页脚用例;所有用例均经过第二轮人工复审。

页眉与页脚

(Headers Footers, HF)

内部爬取的 PDF 仓库

使用 DocLayout-YOLO 识别标记为 abandon 的页眉/页脚区域;遮蔽正文后由 Gemini-Flash-2.0 提取该区域文本,生成“文本缺失性”用例。

人工剔除被误标为页眉页脚的正文;设定位置限制规则(如限定检查文档前/后 N 个字符,例如确保末尾 20 字符内不出现特定页码,但允许其出现在正文其他位置)。

多栏复杂排版

(Multi Column, MC)

内部爬取的 PDF 仓库(抽样多栏排版且单页含多篇文章的文档)

使用 Claude-Sonnet-3.7 将页面渲染为 HTML,从中提取前后文本片段生成阅读顺序用例。

人工校验文本顺序;选取的文本块均来自语义连贯区域,且刻意排除了数学公式、上标和下标。

密集微小字本文档

(Long Tiny Text, LTT)

Internet Archive(单页包含大量密集微小印刷字的文档,如词典页面、学术论文参考文献列表)

使用 Gemini-Flash-2.0 自动生成测试用例。

人工复核与验证所有生成的测试用例。

3.3 打分机制

评分机制与通过率统计

  • 测试形式:各工具与模型处理 PDF 页面并输出 Markdown 或纯文本。所有测试用例均为 Pass/Fail 二元判定,评测指标统计为测试通过率(百分比)。

  • 单类目得分:针对每个测试文档来源(包含默认的 Baseline 基础测试),分别计算该来源下所有测试用例的通过率百分比。

最终总分为各文档来源通过率的宏平均

  • N:测试文档来源类别的总数。

  • s:特定的文档来源类别。

  • Score(s):该文档来源类别 s 的测试通过率。

权重设计考量

  • 平衡样本规模差异:各类别在获取和人工验证测试用例时难度不同,导致各数据源的用例数量存在差异。采用宏平均方式计算平均值,可避免用例数量较多的类别主导最终得分。

  • 均衡评估核心能力:确保各个文档来源所代表的特定 OCR 能力在最终评估中均具备同等的权重考量

4. olmOCR 模型的评估

首先,作者在 olmOCR-Bench 上评估 olmOCR,并与一系列现有的文档线性化工具以及视觉语言模型进行横向对比;然后,作者使用 olmOCR 提取并线性化的文本内容,在 OLMo 2 checkpoint 上进行继续预训练,以量化其对语言建模的实际效果。

4.1 在 olmOCR-Bench 上的评估结果

实验结果:

  • 模型对比表现:olmOCR 的表现优于顶尖的商业专用 OCR 工具(Mistral)、其教师模型 GPT-4o,以及基础模型的后续升级版本 Qwen 2.5 VL(olmOCR-7B-0225-preview 的基础模型为 Qwen 2 VL)。

  • 基准构建时序与防过拟合:olmOCR-Bench 是在完成 olmOCR-7B-0225-preview 模型训练之后才设计构建的,以避免在与其他系统进行横向对比前,针对评测集进行不公平的迭代调优。

  • 定性文本质量:定性分析表明,olmOCR 生成的纯文本比现有的专用开源工具更为干净。

这个对比实验揭露的是:olmOCR 模型在 olmOCR-Bench 基准测试上,拥有良好的得分。

4.2 在下游任务上的评估

下游评估实验设计

  • 评估目的:通过继续预训练检验 PDF 线性化质量对语言模型能力的实际影响。

  • 消融方法:固定相同的源 PDF 文档集合,仅改变文档线性化提取工具,以此对比输入文本质量对模型性能的差异。实验基于 OLMo-2-1124-7B 的中间 checkpoint 进行。

对照组设置

  • 基线数据集(Baseline: peS2o):使用从 S2ORC 论文集中提取的 580 亿(58B)token 学术文献数据。该数据原始方案采用 Grobid 进行提取,并结合启发式规则进行清洗。

  • olmOCR 提取版本:匹配并获取 peS2o 中相同学术论文的原始 PDF,使用 olmOCR 工具链重新进行解析与线性化处理。

预训练配置与训练规模

  • 针对两种不同提取方式处理得到的 peS2o 数据,分别载入 7B 中间检查点继续预训练 500 亿(50B)个 token。

下表展示了实验结果:

结果分析:

  • 性能表现:使用 olmOCR 提取的数据替代原始 Grobid + 规则提取的数据后,语言模型在多项主流基准任务上的平均得分提升了 1.3 个百分点。

  • 覆盖基准:评估涵盖 MMLU、ARCC、DROP、HellaSwag、NaturalQuestions 以及 WinoGrande。

这个对比实验揭露的是:olmOCR 模型可以通过更优秀的 PDF 线性化方案,来更好地“赋能”已有语言模型。

4.3 开销评估

在实际应用场景中,成本效益与模型性能具备同等的重要性。论文在下表中汇总了推理成本分析。

可以看到,olmOCR 的推理成本明显降低。

5. 结论

在这项研究中,作者推出了 olmOCR,一个用于将 PDF 文档转换为干净纯文本的开源工具包。作者将文档锚定(document-anchoring,一种利用原生数字 PDF 中可用元数据的新型提示技术)与微调后的 7B 参数视觉语言模型相结合,以较低的成本比例取得了可与闭源商业方案相媲美的效果。与此同时,作者公开发布了训练集 olmOCR-mix-0225 ,以支持各方进一步开发各自的视觉语言模型。

为了对系统进行严格评估,作者构建了 olmOCR-Bench ,这是一个涵盖 1,403 份 PDF、包含 7,010 个测试用例的评测基准。它包含了针对文本存在性、阅读顺序、表格、公式以及基线功能的 Pass/Fail 单元测试。测试文档涵盖从科学论文到历史手稿等多种类别,能够针对多样化的线性化与上下文提取挑战展开稳健的评估。此外,作者发布的高效推理流水线包含了从单份文档到数百万页 PDF 档案转换所需的全部组件。这为高质量 PDF 文档中的数据发掘提供了工程基础。


评论