3步部署OlmOCR:一行命令将PDF转为LLM训练数据

为什么你需要 OlmOCR?

假设你手头有500篇论文PDF,老板让你一周内整理成结构化文本,用来微调公司的大模型。你打开某在线OCR工具,发现一篇10页的论文要花2分钟,算下来500篇得熬两个通宵------还不算排版错乱、公式丢失、表格断裂的手工修复时间。

更糟的是:包含敏感数据的内部文档不能上传云端;商业API按页计费,百万页成本轻松破万。

这就是OlmOCR 要解决的问题。它由 Allen Institute for AI(AI2)开源,底层是一个基于 Qwen2.5-VL-7B 微调的视觉语言模型,专门训练了26万页文档,能把复杂排版的PDF"线性化"为干净 Markdown,处理成本仅 $190/百万页(约为 GPT-4o 的 1/32),且完全本地运行,数据不出机器。

上图展示了 OlmOCR 的完整管线:PDF → 页面渲染为图像 → VLM 读取并理解布局 → 输出自然阅读顺序的 Markdown。

读完本文你将学会:在本地 GPU 上 3 步部署 OlmOCR,一行命令批量把 PDF 变成 LLM 训练数据集


环境要求

| 组件 | 最低配置 | 推荐配置 |

|------|---------|---------|

| GPU | NVIDIA,≥12 GB 显存(RTX 3060 12G) | RTX 4090 24G / A100 |

| 内存 | 16 GB | 32 GB |

| 磁盘 | 30 GB 空闲 | 50 GB SSD |

| OS | Ubuntu 22.04 / WSL2 | Ubuntu 24.04 |

| Python | 3.11(必须) | 3.11 + Conda |

**注意**:Windows 用户请在 WSL2 中操作;Mac Apple Silicon 用户可使用 MLX 量化版(本文以 NVIDIA GPU + Ubuntu 为例)。


步骤 1:安装系统依赖

OlmOCR 底层依赖 poppler-utils 做 PDF 渲染,以及若干字体包保证输出排版正确。

bash 复制代码
# Ubuntu / Debian / WSL2
sudo apt-get update && sudo apt-get install -y \
    poppler-utils \
    ttf-mscorefonts-installer \
    fonts-crosextra-caladea \
    fonts-crosextra-carlito \
    gsfonts \
    build-essential

运行结果:

text 复制代码
Setting up poppler-utils (24.02.0-1) ...
Setting up fonts-crosextra-caladea (20130214-2.1) ...
Processing triggers for fontconfig (2.15.0-1) ...

验证 pdftoppm 可用:

bash 复制代码
pdftoppm -v
# 输出: pdftoppm version 24.02.0

步骤 2:创建 Conda 环境并安装 OlmOCR

务必使用 Python 3.11------其他版本会导致 FlashInfer 等依赖不兼容。

bash 复制代码
# 创建独立环境
conda create -n olmocr python=3.11 -y
conda activate olmocr

# 安装 OlmOCR(GPU 版,含 PyTorch CUDA 12.8)
pip install olmocr[gpu] --extra-index-url https://download.pytorch.org/whl/cu128

# (可选)安装 FlashInfer 加速推理
pip install flashinfer-python

运行结果(关键行):

text 复制代码
Successfully installed olmocr-0.4.0 torch-2.7.1 transformers-4.52.0 vllm-0.8.2
...

安装完毕后验证:

bash 复制代码
python -c "import olmocr; print(olmocr.__version__)"
# 输出: 0.4.0

OlmOCR 在 GitHub 已获 17,000+ Star,Apache 2.0 许可证,可自由商用。


步骤 3:一行命令,PDF → LLM 训练数据集

3.1 获取测试 PDF

bash 复制代码
# 下载官方示例(3页学术论文)
curl -L -o sample.pdf \
  https://olmocr.allenai.org/papers/olmocr_sample.pdf

ls -lh sample.pdf
# 输出: -rw-r--r-- 1 user user 1.2M Jul  3 10:00 sample.pdf

3.2 单文件转换

bash 复制代码
# 核心命令:--markdown 指定输出为 Markdown 格式
olmocr ./workspace --markdown --pdfs sample.pdf

运行过程:

text 复制代码
[OlmOCR] Initializing pipeline...
[OlmOCR] Loading model: allenai/olmOCR-2-7B-1025-FP8
[OlmOCR] CUDA kernels compiling (first run only, ~90s)...
[OlmOCR] Processing: sample.pdf (3 pages)
[OlmOCR]   Page 1/3 ... 7.2s
[OlmOCR]   Page 2/3 ... 5.8s
[OlmOCR]   Page 3/3 ... 6.1s
[OlmOCR] Done! Output: ./workspace/markdown/sample.md

查看转换结果:

bash 复制代码
head -30 ./workspace/markdown/sample.md

输出示例:

markdown 复制代码
# Abstract

We present OlmOCR, an open-source toolkit for converting PDFs into
clean, linearized text suitable for LLM training. Our pipeline uses
a fine-tuned 7B vision-language model trained on 260,000 pages...

## 1. Introduction

Large language models require vast amounts of high-quality text data.
However, a significant portion of human knowledge remains locked in
PDF format---academic papers, technical reports, legal documents...

> **注意**:原 PDF 中的页眉、页脚、页码已被自动去除,多栏排版被合并为自然阅读顺序,公式保留 LaTeX 格式。

### 3.3 批量转换整个文件夹

这才是生产环境的真实用法:

假设 ./pdfs/ 目录下有 200 份 PDF

olmocr ./workspace --markdown --pdfs ./pdfs/*.pdf

text 复制代码
程序会自动遍历所有 PDF,每页耗时约 5-8 秒(RTX 4090),并发处理 4-6 页,进度条实时显示:

OlmOCR Found 200 PDFs (1,847 pages total)

OlmOCR Processing with concurrency=4...

OlmOCR ████████░░░░░░░░ 48% | 887/1847 pages | 24.3 page/min | ETA: 39 min

text 复制代码
![终端运行效果截图](https://olmocr.allenai.org/static/terminal_demo.png)

> 实测:RTX 4090 处理 1,000 页学术论文约需 80 分钟,硬盘占用增加约 15 MB(Markdown 纯文本)。

---

## 进阶用法

### 输出 JSONL 格式(直接喂给 LLM 训练)

Dolma 是 AI2 的 LLM 预训练数据格式

olmocr ./workspace --dolma --pdfs sample.pdf

查看 JSONL 内容

cat ./workspace/dolma/sample.jsonl | python -m json.tool | head -20

text 复制代码

{

"id": "sample_p1",

"text": "# Abstract\n\nWe present OlmOCR...",

"metadata": {

"source": "sample.pdf",

"page": 1,

"language": "en"

}

}

text 复制代码
### 搭建团队共享 API 服务

一台 GPU 服务器启动 API,全团队调用

python -m olmocr.pipeline.server --port 8000 --host 0.0.0.0

text 复制代码

团队成员只需轻量安装

pip install olmocr (无需 GPU 版)

import subprocess

subprocess.run([

"olmocr", "./out",

"--server", "http://gpu-server:8000/v1",

"--model", "allenai/olmOCR-2-7B-1025-FP8",

"--markdown",

"--pdfs", "my_report.pdf"

])

text 复制代码
### vLLM 加速大批量处理

终端 1:启动 vLLM 推理服务

vllm serve allenai/olmOCR-2-7B-1025-FP8 \

--max-model-len 16384 \

--gpu-memory-utilization 0.95

终端 2:客户端调用

olmocr ./workspace --server http://localhost:8000/v1 \

--model allenai/olmOCR-2-7B-1025-FP8 \

--markdown --pdfs ./massive_dataset/*.pdf

text 复制代码
---

## 避坑指南(实战血泪总结)

| 坑 | 现象 | 解决 |
|----|------|------|
| Python 版本不对 | `ImportError: flashinfer` | 必须 Python 3.11,用 `conda create -n olmocr python=3.11` |
| 首次运行卡住 | 停在 "Initializing" 2 分钟不动 | 正常,正在编译 CUDA 内核(90-120s),等就完了 |
| 文件句柄耗尽 | `OSError: too many open files` | `ulimit -n 65536` |
| 显存不足 | CUDA OOM | 换 INT4 量化版:`winninghealth/olmOCR-2-7B-1025-INT4` |
| 内存泄漏 | 跑几百页后 OOM Kill | 加 `--pages-per-batch 50` 限制每批页数 |

---

## 总结

OlmOCR 在三个维度碾压传统方案:

1. **成本**:$190/百万页 vs 商业 API 的 $6,000+,差距 32 倍
2. **质量**:专门为 LLM 训练优化的输出格式(Markdown/JSONL),自动去页眉页脚、合并多栏、保留公式
3. **隐私**:100% 本地运行,涉密文档不出内网

**一行命令回顾**:

olmocr ./output --markdown --pdfs your_document.pdf

复制代码
接下来你可以:把转换后的 Markdown 直接喂给 LangChain/LlamaIndex 做 RAG,或者转为 Dolma JSONL 格式做继续预训练。如果你有大批量 PDF 处理需求,OlmOCR 是当前性价比最高的开源方案,没有之一。

> 项目地址:[github.com/allenai/olmocr](https://github.com/allenai/olmocr)  
> 在线体验:[olmocr.allenai.org](https://olmocr.allenai.org/)  
> 论文:[arxiv.org/abs/2502.18443](https://arxiv.org/abs/2502.18443)
相关推荐
~烈15 小时前
Acrobat Pro DC 便携精简版 PDF 专业处理工具安装教程
pdf·acrobat pro dc·pdf 专业处理工具
我不是QI15 小时前
Master PDF Editor 逆向复现
汇编·安全·pdf
蓝创工坊Blue Foundry16 小时前
多个同模板 PDF,怎样批量提取同一类字段到 Excel
运维·数据库·pdf·自动化·ocr·excel
asdzx672 天前
Python PDF 拆分实战指南:单页拆分与按需页码范围拆分
开发语言·python·pdf
慧都小妮子2 天前
Aspose.CAD for .NET 26.6 更新发布
pdf·.net·3d渲染·cad·pdf导出·ifc编辑
蝉蜕日记2 天前
AccumuPDF高级版 v2.57 | 视图文转换PDF,合并分割压缩
android·智能手机·pdf·生活·软件需求
蓝创工坊Blue Foundry3 天前
PDF 批量提取指定内容到 Excel:按字段整理多个 PDF 的方法
pdf·ocr·excel·文心一言·paddlepaddle·paddle
Am-Chestnuts3 天前
AI长回答批量导出PDF与长图:多轮内容整理和免费Markdown备份
人工智能·pdf·aigc
zyplayer-doc3 天前
研发接口文档怎么长期维护:zyplayer-doc把API、Markdown和变更记录放进同一个知识库
大数据·数据库·人工智能·笔记·pdf·ocr
蜡台3 天前
uniapp pdf文件预览组件
pdf·uni-app·合同·pdfh5