4.2K+ Star!olmOCR:一款开源的高性能OCR工具

欢迎关注我,持续获取更多内容,感谢&在看~

olmOCR 简介

olmOCR[1] 是由 Allen Institute for Artificial Intelligence (AI2) 的 AllenNLP 团队开发的一个工具包,目标是帮助将 PDF 文档线性化,以便用于语言模型的数据集构建和训练。

它提供了一系列功能,包括自然文本解析、模型微调、PDF 批量处理等,支持高效处理大量 PDF 文档。

项目特点

主要特点

  1. 自然文本解析:通过优化的提示策略,利用 ChatGPT 4o 实现高质量的自然文本解析。
  2. 多版本比较工具:提供并排评估工具,用于比较不同处理流程版本的效果。
  3. 语言过滤与 SEO 垃圾信息移除:支持基于语言的基本过滤功能,能够移除可能的 SEO 垃圾信息。
  4. 模型微调代码:支持对 Qwen2-VL 和 Molmo-O 等模型进行微调。
  5. 大规模 PDF 处理:能够通过 Sglang 处理数百万个 PDF 文档。
  6. Dolma 文档查看:支持以 Dolma 格式查看从 PDF 创建的文档。

使用场景

olmOCR 主要适用于以下场景:

  • 需要将大量 PDF 文档转换为可用于语言模型训练的线性化文本数据。
  • 对不同版本的处理流程进行效果评估和比较。
  • 需要高效处理大规模 PDF 数据集的科研机构或企业。

项目使用

安装

  1. 硬件要求:需要配备近期 NVIDIA GPU(如 RTX 4090、L40S、A100、H100)以及至少 30GB 的空闲磁盘空间。
  2. 安装依赖
  • 在 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/
  1. 快速测试:可以通过在线演示进行快速测试。

本地使用示例

  1. 转换单个 PDF
python -m olmocr.pipeline ./localworkspace --pdfs tests/gnarly_pdfs/horribleocr.pdf
  1. 转换多个 PDF
python -m olmocr.pipeline ./localworkspace --pdfs tests/gnarly_pdfs/*.pdf

转换结果将以 JSON 格式存储在 ./localworkspace 文件夹中。

  1. 查看结果
  • 提取的文本以 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 协调多个节点并行处理。

  1. 在第一个工作节点上运行以下命令,设置工作队列:
python -m olmocr.pipeline s3://my_s3_bucket/pdfworkspaces/exampleworkspace --pdfs s3://my_s3_bucket/jakep/gnarly_pdfs/*.pdf
  1. 在后续节点上运行以下命令,从队列中获取任务并开始处理:
python -m olmocr.pipeline s3://my_s3_bucket/pdfworkspaces/exampleworkspace
  1. 如果使用 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 页面的最新说明。在线演示

欢迎关注&点赞&在看,感谢你的阅读~


资源列表
[1] 

Github地址: https://github.com/allenai/olmocr

[2] 

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

[3] 

olmOCR 论文: https://olmocr.allenai.org/papers/olmocr.pdf

(文:AIGC创想者)

欢迎分享

发表评论