这个项目能做什么
# olmOCR
**olmOCR** 是一个工具包,用于将PDF和其他基于图像的文档格式(PNG、JPEG)转换为干净、可读的纯文本或Markdown。它旨在通过将文档线性化为自然阅读顺序(即使面对复杂布局)来构建大规模LLM训练数据集。该项目由艾伦人工智能研究所(AI2)的AllenNLP团队开发。
## 主要特性
- **PDF/图像转Markdown**:将PDF、PNG和JPEG文档转换为干净的Markdown格式。
- **自然阅读顺序**:即使在多栏或复杂文档中也能保持逻辑阅读顺序。
- **成本效益高**:每百万页转换成本低于200美元(基于7B参数VLM,需要GPU)。
- **基准测试套件**:包含olmOCR-Bench,涵盖1400个文档中的7000多个测试用例,用于衡量OCR性能。
- **灵活推理**:可在本地使用GPU运行,连接外部vLLM服务器,或使用云提供商(如Cirrascale、DeepInfra、Parasail)。
- **并行处理**:支持多节点、多工作进程处理数百万个PDF。
- **Docker支持**:提供预构建镜像,可选是否包含模型(含模型约30GB)。
- **过滤**:对英文PDF进行基本过滤(非表单、非SEO垃圾内容)。
## 安装
使用pip安装。如需GPU支持(推荐用于本地推理):
```bash
pip install olmocr[gpu] --extra-index-url https://download.pytorch.org/whl/cu128
```
如需使用外部服务器(无需GPU依赖):
```bash
pip install olmocr
```
可选附加项:`beaker`用于AI2 Beaker集成,`bench`用于基准测试套件。
## 快速开始
### 将PDF转换为Markdown
```bash
# 下载示例PDF
wget https://arxiv.org/pdf/2502.18443
# 将其转换为markdown
olmocr ./localworkspace --markdown --pdfs olmocr-sample.pdf
```
### 转换图像文件
```bash
olmocr ./localworkspace --markdown --pdfs random_page.png
```
### 使用远程推理服务器
```bash
olmocr ./localworkspace --server http://remote-server:8000/v1 --model allenai/olmOCR-2-7B-1025-FP8 --markdown --pdfs *.pdf
```
结果以Markdown文件形式存储在`./localworkspace/markdown/`目录中。你也可以使用`python -m olmocr.pipeline`代替`olmocr`命令。
## 命令行选项
主要参数包括:
- `--pdfs`:PDF路径(本地、S3或通配符模式)。
- `--model`:模型标识符(默认:`allenai/olmOCR-7B-0725-FP8`)。
- `--server`:外部vLLM或OpenAI兼容服务器的URL。
- `--api_key`:外部提供商的API密钥。
- `--workers`:并行工作进程数。
- `--markdown`:将输出写入为Markdown格式。
- `--apply_filter`:对英文PDF应用基本过滤。
- `--beaker`:提交作业到AI2 Beaker。
- `--guided_decoding`:启用引导解码以生成结构化YAML输出。
- `--max_concurrent_requests`:推理提供商的最大并发请求数。
## 外部提供商
olmOCR已与多家提供商测试,每百万token成本如下:
| 提供商 | 输入 $/1M | 输出 $/1M | 示例命令 |
|----------|-----------|-------------|-----------------|
| Cirrascale | $0.07 | $0.15 | `olmocr ./workspace --server https://ai2endpoints.cirrascale.ai/api --api_key sk-XXXX --model olmOCR-2-7B-1025 --pdfs *.pdf` |
| DeepInfra | $0.09 | $0.19 | `olmocr ./workspace --server https://api.deepinfra.com/v1/openai --api_key DfXXXX --model allenai/olmOCR-2-7B-1025 --pdfs *.pdf` |
| Parasail | $0.10 | $0.20 | `olmocr ./workspace --server https://api.parasail.io/v1 --api_key psk-XXXX --model allenai/olmOCR-2-7B-1025 --pdfs *.pdf` |
## Docker使用
拉取包含模型的镜像(约30GB):
```bash
docker pull alleninstituteforai/olmocr:latest-with-model
```
运行单个PDF转换:
```bash
docker run --gpus all alleninstituteforai/olmocr:latest-with-model -c "olmocr /workspace/output --markdown --pdfs /workspace/sample.pdf"
```
批量处理:
```bash
docker run --gpus all -v /input:/input -v /output:/output alleninstituteforai/olmocr:latest-with-model -c "olmocr /output --markdown --pdfs /input/*.pdf"
```
## 代码概览
可复用组件包括:
- **提示策略**,用于自然文本解析(buildsilver.py)
- **过滤**,按语言和SEO垃圾内容过滤(filter.py)
- **SFT微调**代码,用于Qwen2.5-VL(train.py)
- **合成数据生成**(mine_html_templates.py)
- **流水线**,用于使用VLLM处理数百万个PDF(pipeline.py)
## 最近更新
- **v0.4.0(2025年10月21日)**:发布新模型(olmOCR-2-7B-1025-FP8),在olmOCR-bench上提升+4分,引入RL训练。
- **v0.3.0(2025年8月13日)**:发布新模型(olmOCR-7B-0825-FP8),修复自动旋转和空白文档幻觉问题。
- **v0.2.1(2025年7月24日)**:发布新模型(olmOCR-7B-0725-FP8),在olmOCR-Bench上提升+3分,推理速度更快。
- **v0.2.0(2025年7月23日)**:清理训练器代码,便于自定义训练。
- **v0.1.75(2025年6月17日)**:从sglang切换到vllm推理,更新Docker至CUDA 12.8。
- **v0.1.68(2025年5月19日)**:发布olmOCR-Bench(77.4分),修复流水线bug。
## 许可证
Apache 2.0。详情请参阅LICENSE文件。
## 团队
由AI2的AllenNLP团队开发,AI2是一家非营利研究机构。
评论
0 评分人数达到10人后显示
登录后参与讨论。