PDF转Markdown,连公式表格都处理干净:olmOCR开源方案详解

PDF 转 Markdown:olmOCR 的实践方案

PDF 里的文字看得见、拷不出,表格和公式更是重灾区。市面上 OCR 工具不少,但处理多栏排版、页眉页脚、手写注释时,结果往往需要大量人工修正。

Allen AI 实验室开源的 olmOCR 专门解决这个问题:把 PDF、PNG、JPEG 等图像类文档转成干净的 Markdown,保留阅读顺序,处理复杂版式,同时控制成本在 每百万页低于 200 美元(基于 7B 参数量视觉语言模型,需要 GPU 运行)。

项目地址:
https://github.com/allenai/olmocr

在线演示:
https://olmocr.allenai.org/


它能处理什么


基准测试

团队发布了 olmOCR-Bench,包含 7000 多个测试用例、1400 份文档,覆盖旧扫描件、数学公式、表格、多栏排版、长文小字等场景。以下是各工具的综合得分(越高越好):

工具 综合得分 PaddleOCR-VL* 80.0±1.0 Chandra OCR 0.1.0* 83.1±0.9 Infinity-Parser 7B* 82.5±? olmOCR v0.4.0 82.4±1.1 Marker 1.10.1 76.1±1.1 DeepSeek-OCR 75.7±1.0 MinerU 2.5.4* 75.2±1.1 Mistral OCR API 72.0±1.1

具体分项数据可在项目页查看。olmOCR 在多个子项上表现均衡,尤其在旧扫描件和页眉页脚去除方面得分较高。


安装步骤

系统依赖(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

Python 环境

建议新建干净的 conda 环境:

conda create -n olmocr python=3.11
conda activate olmocr

安装方式按需选择:

1. 远程推理(轻量)——只连接外部 vLLM 服务,不装 PyTorch:

pip install olmocr

2. 本地 GPU 推理——需要 NVIDIA GPU(12GB 显存以上,测试过 RTX 4090、L40S、A100、H100)及约 30GB 磁盘空间:

pip install olmocr[gpu] --extra-index-url https://download.pytorch.org/whl/cu128
pip install https://download.pytorch.org/whl/cu128/flashinfer/flashinfer_python-0.2.5%2Bcu128torch2.7-cp38-abi3-linux_x86_64.whl

3. Beaker 集群执行(Ai2 内部使用):

pip install olmocr[beaker]

4. 运行基准测试

pip install olmocr[bench]

组合安装示例:

pip install olmocr[gpu,bench] --extra-index-url https://download.pytorch.org/whl/cu128

如果遇到“打开文件过多”错误,调整 ulimit:

ulimit -n 65536

基本用法

转换单个 PDF(本地 GPU)

curl -o olmocr-sample.pdf https://olmocr.allenai.org/papers/olmocr_3pg_sample.pdf
olmocr ./localworkspace --markdown --pdfs olmocr-sample.pdf

转换单张图片:

olmocr ./localworkspace --markdown --pdfs random_page.png

批量转换:

olmocr ./localworkspace --markdown --pdfs tests/gnarly_pdfs/*.pdf

添加 --markdown 参数后,结果存放在
./localworkspace/markdown/ 目录下。你也可以用 python -m olmocr.pipeline 替代 olmocr 命令。

查看结果:

cat localworkspace/markdown/olmocr-sample.md

使用远程推理服务

如果你已经部署了 vLLM 服务器(或任何兼容 OpenAI API 的推理平台),可以只安装轻量包,然后指定服务器地址:

pip install olmocr
olmocr ./localworkspace --server http://remote-server:8000/v1 --model allenai/olmOCR-2-7B-1025-FP8 --markdown --pdfs *.pdf

服务端启动示例(vLLM):

vllm serve allenai/olmOCR-2-7B-1025-FP8 --max-model-len 16384

已测试的外部服务商

以下三家服务已验证可用(价格及命令详见项目文档):

使用外部服务时注意参数:


多节点 / 集群处理

需要转换数百万份 PDF 时,olmOCR 支持从 AWS S3 读取和协调任务。

启动第一个工作节点

olmocr s3://my_s3_bucket/pdfworkspaces/exampleworkspace --pdfs s3://my_s3_bucket/jakep/gnarly_pdfs/*.pdf

这会在 S3 中创建工作队列并开始转换。

其他工作节点只需指向同一个 workspace:

olmocr s3://my_s3_bucket/pdfworkspaces/exampleworkspace

它们会自动从队列中领取任务。

Beaker 集群执行(Ai2 内部):

pip install olmocr[gpu,beaker]
olmocr s3://... --pdfs ... --beaker --beaker_gpus 4

Docker 使用

官方提供两种镜像:

处理当前目录下的 PDF:

docker run --gpus all \
  -v $(pwd):/workspace \
  alleninstituteforai/olmocr:latest-with-model \
  -c "olmocr /workspace/output --markdown --pdfs /workspace/sample.pdf"

处理指定目录的多个 PDF:

docker run --gpus all \
  -v /path/to/pdfs:/input \
  -v /path/to/output:/output \
  alleninstituteforai/olmocr:latest-with-model \
  -c "olmocr /output --markdown --pdfs /input/*.pdf"

交互式进入容器:

docker run -it --gpus all alleninstituteforai/olmocr:latest-with-model

完整参数说明

运行 olmocr --help 可查看所有选项,关键参数包括:

vLLM 相关

Beaker 相关(仅内部):


代码结构(供开发者参考)

项目中几个可复用的模块:



olmOCR 提供了一套从 PDF 到干净文本的完整流水线,既适合单机处理,也支持大规模集群扩展。如果你的工作流里经常要处理扫描件、学术论文、报表等复杂文档,它可能比手头现有的工具更省事。

展开阅读全文

更新时间:2026-07-06

标签:科技   公式   详解   表格   干净   方案   模型   页眉   集群   参数   文档   测试   节点   格式   文件   工具

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight All Rights Reserved.
Powered By 61893.com 闽ICP备11008920号
闽公网安备35020302034903号

Top