用途
olmOCR 是一个用于将 PDF 及其他基于图像的文档格式(PNG、JPEG)线性化、转换为干净可读纯文本的工具包,主要服务于 LLM 数据集构建与模型训练场景。官方还提供在线演示:https://olmocr.allenai.org/。
主要能力
- 将 PDF、PNG、JPEG 文档转换为干净的 Markdown 格式。
- 支持公式、表格、手写体与复杂格式。
- 自动移除页眉和页脚。
- 在存在图表、多栏布局和嵌入内容时,仍按自然阅读顺序转换为文本。
- 官方称转换效率高,每百万页成本低于 200 美元(基于 7B 参数 VLM,因此需要 GPU)。
- 提供 olmOCR-Bench 基准套件,覆盖 1400 份文档中的 7000 多个测试用例,用于衡量 OCR 系统性能。
版本动态
- 2025 年 10 月 21 日 v0.4.0:新模型发布,使用合成数据将 olmOCR-bench 分数提升约 4 分,并引入 RL 训练。
- 2025 年 8 月 13 日 v0.3.0:新模型发布,修复自动旋转检测以及空白文档上的幻觉问题。
- 2025 年 7 月 24 日 v0.2.1:新模型在 olmOCR-Bench 上提高 3 分,默认 FP8 运行速度显著更快,每份文档所需重试次数大幅减少。
- 2025 年 7 月 23 日 v0.2.0:清理后的训练器代码,更方便自行训练 olmOCR 模型。
- 2025 年 6 月 17 日 v0.1.75:推理管线从 sglang 切换到 vllm,Docker 镜像更新至 CUDA 12.8。
- 2025 年 5 月 23 日 v0.1.70:官方 Docker 支持与镜像可用。
- 2025 年 5 月 19 日 v0.1.68:olmOCR-Bench 发布,得分 77.4;修复提示词相关缺陷,管线性能提升 2 分。
- 2025 年 3 月 17 日 v0.1.60:通过改进采样温度选择提升性能。
- 2025 年 2 月 25 日 v0.1.58:首次公开发布与演示。
使用方式
环境准备
需要安装 poppler-utils 以及用于渲染 PDF 图像的额外字体。
安装依赖(Ubuntu/Debian):资料未提供具体 apt 命令内容。
建议创建干净的 conda 环境安装 olmocr,因为其运行依赖难以安装到既有 Python 环境中。
安装选项
- 选项 1:远程推理(轻量级)。若计划使用带 --server 标志的远程 vLLM 服务器,安装基础包,可避免安装 PyTorch 等重型 GPU 依赖(约 2GB+)。
- 选项 2:本地 GPU 推理。需要近期 NVIDIA GPU(已在 RTX 4090、L40S、A100、H100 上测试),至少 12GB 显存,30GB 可用磁盘空间。
- 选项 3:Beaker 集群执行。用于通过 --beaker 标志向 Beaker 集群提交任务。
- 选项 4:基准测试套件。用于运行 olmOCR 基准测试。
- 可组合多个选项进行安装。
故障排查
若出现 too many open files 错误,需要更新 ulimit。
转换示例
- 快速测试可使用网页演示。
- 单 PDF 转换(本地 GPU)、图像文件转换、多个 PDF 转换等具体命令资料未提供完整内容。
- 使用远程推理服务器时的参数说明:
- --server:定义 OpenAI 兼容端点,例如 https://api.deepinfra.com/v1/openai
- --api_key:API 密钥,通过 Authorization Bearer HTTP 头传入
- --max_concurrent_requests:同时发往推理提供方的最大并发请求数
- --workers:同时处理的页面组最大数量;可设为 1 以便先完成一组再继续
- --pages_per_group:每组页数;外部提供方并发限制较低时,建议使用较小数值
- --model:模型标识,例如 allenai/olmOCR-2-7B-1025;不同提供方名称不同,本地运行可使用 olmocr。
- 使用 --markdown 标志时,结果将以 Markdown 文件存储在 ./localworkspace/markdown/ 中。也可用 python -m olmocr.pipeline 代替 olmocr。工作区文件夹 ./localworkspace/ 将同时包含 Dolma 文件和 Markdown 文件(如使用 --markdown)。
- 若已有在其他位置运行的 vLLM 服务器(或实现 OpenAI API 的推理平台),可让 olmOCR 指向该服务器而非启动本地实例。vLLM 中服务模型名称需与 --model 传入值匹配。官方已测试 olmOCR-2-7B-1025-FP8 在部分外部模型提供方上可正常工作。
多节点/集群使用
如需使用多个并行节点转换数百万 PDF,olmOCR 支持从 AWS S3 读取 PDF,并使用 AWS S3 输出桶协调工作。启动第一个工作节点会设置简单工作队列并开始转换;后续工作节点会自动从同一工作区队列获取项目。Ai2 内部如需通过 beaker 高效线性化数百万 PDF,可安装 Beaker 支持,然后使用 --beaker 标志在本地准备工作区并在集群中启动 N 个 GPU 工作节点。
Docker
拉取 Docker 镜像(较大,包含模型,约 30GB)。对于希望自行管理模型下载的高级用户,也提供不含模型的基础镜像。可在当前目录处理单个 PDF、处理多个 PDF,或交互式运行容器进行探索与调试。更多信息见 Docker Hub 仓库。
完整文档
查看所有可用选项的具体命令资料未提供。
可复用代码组件
- 使用 ChatGPT 4o 获得高质量自然文本解析的提示策略:buildsilver.py
- 基于语言的基础过滤与 SEO 垃圾内容移除:filter.py
- Qwen2.5-VL 的 SFT 微调代码:train.py
- GRPO RL 训练器:grpo_train.py
- 合成数据生成:mine_html_templates.py
- 使用微调模型通过 VLLM 处理数百万 PDF:pipeline.py
- 查看由 PDF 创建的 Dolma 文档:dolmaviewer.py
适用场景与限制
适用于需要将大量 PDF 或图像文档转为纯文本/Markdown 以构建 LLM 数据集或训练模型的场景,尤其是包含公式、表格、手写体、多栏排版的复杂文档。基于 7B 参数 VLM,需要 GPU;本地推理需至少 12GB 显存和 30GB 磁盘空间;大规模处理可借助多节点与 AWS S3;也可使用远程推理服务降低本地硬件要求。
开发与许可
olmOCR 由 AllenNLP 团队开发维护,隶属 Allen Institute for Artificial Intelligence(AI2)。AI2 是一家非营利机构,使命是通过高影响力 AI 研究与工程造福人类。olmOCR 使用 Apache 2.0 许可。