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 在多个子项上表现均衡,尤其在旧扫描件和页眉页脚去除方面得分较高。
sudo apt-get update
sudo apt-get install poppler-utils ttf-mscorefonts-installer msttcorefonts fonts-crosextra-caladea fonts-crosextra-carlito gsfonts lcdf-typetools
建议新建干净的 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
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
官方提供两种镜像:
处理当前目录下的 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
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight All Rights Reserved.
Powered By 61893.com 闽ICP备11008920号
闽公网安备35020302034903号