olmocr
基于7B视觉语言模型的PDF智能转换工具,精准还原公式、表格与多栏排版结构
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
基于7B视觉语言模型的PDF智能转换工具,精准还原公式、表格与多栏排版结构
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
你是否曾为这样的场景头疼过:导师发来一篇扫描版 PDF 文献,想让 AI 帮忙总结,却发现文字根本无法复制;论文集中有大量历史文档需要数字化,手动录入耗时耗力;又或者,想把一批研究报告喂给大模型做知识库,却发现 PDF 中的公式、表格全部变成了乱码。
这些场景的共同痛点,是传统 OCR 对复杂文档的"无力感"——表格跨页、公式嵌套、手写批注、多栏排版,每一项都能让普通工具失效。
olmOCR 正是为此而生。
olmOCR 由美国非营利 AI 研究机构 Allen Institute for AI(Ai2) 于 2024 年 9 月开源发布,是其 OLMo 大语言模型项目家族的重要组成。该机构此前已在开源 LLM 领域深耕多年(OLMo 系列),olmOCR 的诞生标志着 Ai2 开始向训练数据侧的文档预处理延伸——没有高质量的文本提取,再强大的模型也无用武之地。
团队核心成员包括 Jake Pearson 等研究员,背后有完整的学术论文支撑(v1 和 v2 两版技术报告分别在 arXiv 发表),体现了从研究到工程的完整闭环能力。

图1:olmOCR 在线演示界面,用户可直接上传 PDF 并获得 Markdown 转换结果
如果说普通 OCR 是一名只会抄写的打字员,那么 olmOCR 就是一位既看得懂内容、又保留排版结构的专业译者。它不仅把 PDF 里的像素转换成文字,还会:
这一切的核心,是一款专门为文档理解微调的 7B 参数视觉语言模型(VLM)。这意味着它不是用通用 OCR 引擎凑合,而是真正"理解"了文档的视觉语义。
olmOCR 的处理管道分多个阶段:
pypdf + pypdfium2 将 PDF 每页渲染为高清图像;vLLM 高吞吐量推理引擎(支持 FP8 量化)调用 olmOCR-2-7B 模型进行视觉理解;| 版本 | 时间 | 关键改进 |
|---|---|---|
| v0.1.68 | 2025.05 | 初始发布 + olmOCR-Bench,管道效率提升 2% |
| v0.1.70 | 2025.05 | 官方 Docker 镜像支持 |
| v0.1.75 | 2025.06 | 推理引擎从 sglang 切换为 vLLM,CUDA 12.8 |
| v0.2.0 | 2025.07 | 开放训练代码,简化自定义模型训练流程 |
| v0.2.1 | 2025.07 | 模型改为默认 FP8,推理速度大幅提升,olmOCR-Bench 提升 3 分 |
| v0.3.0 | 2025.08 | 修复自动旋转检测和空白页幻觉问题 |
| v0.4.0 | 2025.10 | olmOCR-2-7B-1025-FP8 发布,引入合成数据训练 + RL(强化学习)微调,olmOCR-Bench 再涨 4 分 |
目前最新模型为 allenai/olmOCR-2-7B-1025-FP8,可通过 HuggingFace 直接下载。
项目提供了完整的训练流程:
augraphy 库模拟真实扫描噪声(墨迹渗透、纸张变黄、折叠痕迹等),增强模型对低质量扫描件的鲁棒性;transformers + accelerate + TRL(Tooling for Reinforcement Learning),支持 LoRA/QLoRA 高效微调;olmOCR 基于 7B 参数的视觉语言模型推理,没有 GPU 无法运行。官方建议:
项目提供两个 Dockerfile:
Dockerfile:运行时镜像,基于 vllm/vllm-openai:v0.11.2,包含完整推理环境;Dockerfile.with-model:将模型权重也打包进镜像(体积大,但完全离线可用)。安装步骤(官方推荐):
# 克隆仓库
git clone https://github.com/allenai/olmocr.git
cd olmocr
# 构建镜像(带模型)
docker build -t olmocr -f Dockerfile.with-model .
# 运行交互式命令行
docker run --gpus all -it olmocr olmocr
# 或处理单个 PDF 文件
docker run --gpus all -v $(pwd):/data olmocr olmocr /data/input.pdf --output /data/output.md
无 GPU 的用户,可通过在线演示 https://olmocr.allenai.org/ 体验(适合小批量文件)。
pip install olmocr
git lfs install
git lfs clone https://huggingface.co/allenai/olmOCR-2-7B-1025-FP8
# 模型自动下载,首次运行触发
olmocr/
├── pipeline.py # CLI 入口,管道编排
├── check.py # 输出质量检查
├── image_utils.py # PDF 渲染、图像预处理
├── datatypes.py # 数据结构定义
├── metrics.py # 评测指标计算
├── repeatdetect.py # 幻觉/重复输出检测
├── work_queue.py # 多进程任务队列
├── s3_utils.py # AWS S3 集成(HuggingFace 权重存储)
├── bench/ # olmOCR-Bench 评测集与评测脚本
├── data/ # 数据处理相关
├── filter/ # 后处理过滤规则
├── prompts/ # VLM Prompt 模板
├── synth/ # 合成数据生成
├── train/ # 训练代码(transformers + TRL)
└── viewer/ # Web 可视化工具
| 层级 | 技术选型 |
|---|---|
| 核心模型 | transformers 4.57.3 + vLLM 0.11.2 |
| PDF 处理 | pypdf >= 5.2.0, pypdfium2 |
| 图像处理 | Pillow |
| 数据增强 | augraphy |
| 训练框架 | accelerate + TRL + PEFT + wandb |
| 评测工具 | playwright(端到端浏览器测试) |
| 质量度量 | fuzzysearch, rapidfuzz, sequence_align |
代码质量整体较高:有类型注解(py.typed)、完整测试套件、ruff/mypy/black 规范化、文档使用 Sphinx 构建。版本迭代频繁(平均每月一次小版本),社区活跃度高(97 个订阅者、77 个 open issues)。
没有 GPU 就无法本地运行,在线演示又受限于服务器资源(大量用户排队)。对于个人用户或小型团队,若无 GPU 硬件,可行性大打折扣。
即便是 vLLM 加速,7B 模型处理一页 PDF 仍需数秒到数十秒不等(取决于 GPU 型号)。大批量文档(数千页)处理时间累积显著。v0.2.1 的 FP8 优化改善了这一点,但相比纯文本提取方案,速度差距仍然明显。
作为生成式模型,olmOCR 理论上存在"幻觉"风险——在低质量文档或模糊区域生成看似合理但实际错误的文本。repeatdetect 模块提供了部分缓解,但无法完全消除。项目方通过 olmOCR-Bench 持续监控这一问题。
传统 OCR(ABBYY、Tesseract 等)已发展数十年,但在复杂文档上始终存在瓶颈。olmOCR 代表了视觉语言模型在垂直领域(文档理解)落地的成功案例,其 olmOCR-Bench 77.4 → 81+ 的演进轨迹,说明数据侧优化(合成数据 + RL)仍有巨大提升空间。
olmOCR 的意义不仅是一个工具,更是 AI 训练数据的生产管道。Ai2 团队用 olmOCR 预处理了大量文档来训练 OLMo 模型,形成了"用 AI 处理数据 → 训练更好的 AI → 用更好的 AI 处理数据"的正循环。这一模式对其他领域的 AI 数据构建(代码、语音、视频)具有参考价值。
olmOCR 处于 PDF 文档 → AI 可用文本的"最后一公里"。结合 RAG(检索增强生成)系统,可以构建高质量的文档知识库;结合多模态大模型,可以做更深入的文档理解。其 HuggingFace 模型下载量可观,表明社区已将其纳入 AI 文档处理的标准工具链。
一句话总结:olmOCR 是 Ai2 开源的专业级 PDF 智能转换工具包,基于 7B VLM 和 vLLM 高性能推理,提供业界领先的复杂文档(公式、表格、手写)识别能力,但需要 GPU 环境支撑,适合有文档数字化需求的 AI 研究者和开发者。