olmOCR 简介
olmOCR[1] 是由 Allen Institute for Artificial Intelligence (AI2) 的 AllenNLP 团队开发的一个工具包,目标是帮助将 PDF 文档线性化,以便用于语言模型的数据集构建和训练。
它提供了一系列功能,包括自然文本解析、模型微调、PDF 批量处理等,支持高效处理大量 PDF 文档。

项目特点
主要特点
-
自然文本解析:通过优化的提示策略,利用 ChatGPT 4o 实现高质量的自然文本解析。 -
多版本比较工具:提供并排评估工具,用于比较不同处理流程版本的效果。 -
语言过滤与 SEO 垃圾信息移除:支持基于语言的基本过滤功能,能够移除可能的 SEO 垃圾信息。 -
模型微调代码:支持对 Qwen2-VL 和 Molmo-O 等模型进行微调。 -
大规模 PDF 处理:能够通过 Sglang 处理数百万个 PDF 文档。 -
Dolma 文档查看:支持以 Dolma 格式查看从 PDF 创建的文档。
使用场景
olmOCR 主要适用于以下场景:
-
需要将大量 PDF 文档转换为可用于语言模型训练的线性化文本数据。 -
对不同版本的处理流程进行效果评估和比较。 -
需要高效处理大规模 PDF 数据集的科研机构或企业。
项目使用
安装
-
硬件要求:需要配备近期 NVIDIA GPU(如 RTX 4090、L40S、A100、H100)以及至少 30GB 的空闲磁盘空间。 -
安装依赖:
-
在 Ubuntu/Debian 系统上,运行以下命令安装必要的工具和字体:
sudo apt-get update
sudo apt-get install poppler-utils ttf-mscorefonts-installer msttcorefonts fonts-crosextra-caladea fonts-crosextra-carlito gsfonts lcdf-typetools
-
设置 conda 环境并安装 olmOCR:
conda create -n olmocr python=3.11
conda activate olmocr
git clone https://github.com/allenai/olmocr.git
cd olmocr
pip install -e .
-
如果需要在 GPU 上运行推理,还需安装 sglang:
pip install sgl-kernel==0.0.3.post1 --force-reinstall --no-deps
pip install "sglang[all]==0.4.2" --find-links https://flashinfer.ai/whl/cu124/torch2.4/flashinfer/
-
快速测试:可以通过在线演示进行快速测试。
本地使用示例
-
转换单个 PDF:
python -m olmocr.pipeline ./localworkspace --pdfs tests/gnarly_pdfs/horribleocr.pdf
-
转换多个 PDF:
python -m olmocr.pipeline ./localworkspace --pdfs tests/gnarly_pdfs/*.pdf
转换结果将以 JSON 格式存储在 ./localworkspace
文件夹中。
-
查看结果:
-
提取的文本以 Dolma 样式的 JSONL 格式存储在 ./localworkspace/results
文件夹中。 -
使用 dolmaviewer
命令查看结果:
python -m olmocr.viewer.dolmaviewer localworkspace/results/output_*.jsonl
-
打开生成的 HTML 文件(如 ./dolma_previews/tests_gnarly_pdfs_horribleocr_pdf.html
)即可查看结果。
多节点/集群使用
如果需要处理数百万个 PDF 文档,olmOCR 支持通过 AWS S3 协调多个节点并行处理。
-
在第一个工作节点上运行以下命令,设置工作队列:
python -m olmocr.pipeline s3://my_s3_bucket/pdfworkspaces/exampleworkspace --pdfs s3://my_s3_bucket/jakep/gnarly_pdfs/*.pdf
-
在后续节点上运行以下命令,从队列中获取任务并开始处理:
python -m olmocr.pipeline s3://my_s3_bucket/pdfworkspaces/exampleworkspace
-
如果使用 AI2 的 beaker 进行高效处理,可以添加 --beaker
标志:
python -m olmocr.pipeline s3://my_s3_bucket/pdfworkspaces/exampleworkspace --pdfs s3://my_s3_bucket/jakep/gnarly_pdfs/*.pdf --beaker --beaker_gpus 4
完整文档
运行以下命令查看管道的完整帮助文档:
python -m olmocr.pipeline --help
参考文档
-
在线演示[2] -
olmOCR 论文[3]

注:本文内容仅供参考,具体项目特性请参照官方 GitHub 页面的最新说明。在线演示
欢迎关注&点赞&在看,感谢你的阅读~
Github地址: https://github.com/allenai/olmocr
[2]在线演示: https://olmocr.allenai.org/
[3]olmOCR 论文: https://olmocr.allenai.org/papers/olmocr.pdf
(文:AIGC创想者)