AI个人学习
和实操指南
讯飞绘镜

olmOCR:PDF文档转换为文本,支持表格、公式和手写内容的识别

综合介绍

olmOCR 是由 Allen Institute for Artificial Intelligence (AI2) 的 AllenNLP 团队开发的一款开源工具,专注于将 PDF 文件转换为线性化文本,特别适合用于大规模语言模型 (LLM) 的数据集准备与训练。它支持从复杂的 PDF 文档中提取文本,保持自然阅读顺序,并能处理表格、公式甚至手写内容。工具设计高效,可在本地 GPU 上运行,或通过 AWS S3 实现多节点并行处理,显著降低处理成本。据官方数据,其处理速度可达每秒 3000+ 令牌,成本仅为 GPT-4o 的 1/32,非常适合需要处理大量 PDF 的研究人员和开发者。olmOCR 采用 Apache 2.0 许可,代码、模型权重和数据完全开源,鼓励社区参与改进。

olmOCR:PDF文档转换为文本,支持表格、公式和手写内容的识别-1

演示地址:https://olmocr.allenai.org/


 

功能列表

  • PDF 文本提取与线性化: 将 PDF 文件转换为 Dolma 风格的 JSONL 格式文本,保留阅读顺序。
  • GPU 加速推理: 利用本地 GPU 和 sglang 技术,实现高效文档处理。
  • 多节点并行处理: 支持通过 AWS S3 协调多节点任务,适合处理数百万 PDF。
  • 复杂内容识别: 处理表格、数学公式和手写文本,输出结构化结果。
  • 灵活的工作区管理: 支持本地或云端工作区,存储处理结果和中间数据。
  • 开源生态支持: 提供完整代码和文档,方便二次开发与定制。

 

使用帮助

安装流程

olmOCR 的安装需要在支持 Python 的环境中进行,且推荐使用 GPU 以提升处理效率。以下是详细步骤:

1. 环境准备

  • 安装 Anaconda: 如果没有 Anaconda,前往官网下载并安装。
  • 创建虚拟环境:
    conda create -n olmocr python=3.11
    conda activate olmocr
  • 克隆代码仓库:
    git clone https://github.com/allenai/olmocr.git
    cd olmocr
    

2. 安装核心依赖

  • 安装基本依赖:
    pip install -e .
    
  • 安装 GPU 支持(可选): 如果需要 GPU 加速,安装 sglang 和 flashinfer:
    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/
    

    注意: 确保你的 GPU 驱动和 CUDA 版本与上述依赖兼容。

3. 验证安装

  • 在命令行运行 python -m olmocr.pipeline --help,如果输出帮助信息,说明安装成功。

使用方法

olmOCR 提供两种主要使用场景:本地单文件处理和云端大规模处理。以下详细介绍操作流程。

本地处理单个 PDF

  1. 准备 PDF 文件:
    • 将需要处理的 PDF 放入本地目录,例如 ./tests/gnarly_pdfs/horribleocr.pdf
  2. 运行处理命令:
    python -m olmocr.pipeline ./localworkspace --pdfs tests/gnarly_pdfs/horribleocr.pdf
    
  3. 查看结果:
    • 处理完成后,结果以 JSON 格式保存在 ./localworkspace
    • 提取的文本以 Dolma 风格的 JSONL 格式存储在 ./localworkspace/results 中。
  4. 调整参数(可选):
    • --workers: 设置并发工作线程数,默认 8。
    • --target_longest_image_dim: 设置渲染图像最大边长,默认 1024 像素。

示例输出:

{"text": "Molmo and PixMo:\nOpen Weights and Open Data\nfor State-of-the...", "metadata": {"primary_language": "en", "is_table": false}}

云端大规模处理(AWS S3)

  1. 配置 AWS 环境:
    • 确保有 AWS 账户并生成访问密钥。
    • 在 S3 上创建两个存储桶,例如 s3://my_s3_bucket/pdfworkspaces/exampleworkspace 和 s3://my_s3_bucket/jakep/gnarly_pdfs/
  2. 上传 PDF 文件:
    • 将 PDF 文件上传至 s3://my_s3_bucket/jakep/gnarly_pdfs/
  3. 启动主节点任务:
    python -m olmocr.pipeline s3://my_s3_bucket/pdfworkspaces/exampleworkspace --pdfs s3://my_s3_bucket/jakep/gnarly_pdfs/*.pdf
    
    • 此命令会创建一个工作队列并开始处理。
  4. 添加从节点:
    • 在其他机器上运行:
    python -m olmocr.pipeline s3://my_s3_bucket/pdfworkspaces/exampleworkspace
    
    • 从节点会自动从队列中获取任务并处理。
  5. 结果查看:
    • 处理结果存储在 s3://my_s3_bucket/pdfworkspaces/exampleworkspace/results

注意: 需要配置 AWS CLI 并确保有足够权限访问 S3 存储桶。

使用 Beaker(AI2 内部用户)

  1. 添加 Beaker 参数:
    python -m olmocr.pipeline s3://my_s3_bucket/pdfworkspaces/exampleworkspace --pdfs s3://my_s3_bucket/jakep/gnarly_pdfs/*.pdf --beaker --beaker_gpus 4
    
  2. 运行效果:
    • 本地准备工作区后,自动在集群中启动 4 个 GPU 工作节点。

特色功能操作

1. 处理复杂文档

  • 操作步骤:
    • 上传包含表格或公式的 PDF。
    • 使用默认模型 allenai/olmOCR-7B-0225-preview,运行处理命令。
    • 检查输出的 JSONL 文件,确保表格和公式被正确解析为文本。
  • 提示: 如果识别效果不佳,可调整 --target_longest_image_dim 参数提高图像分辨率。

2. 高吞吐量处理

  • 操作步骤:
    • 配置多节点环境(如 AWS 或 Beaker)。
    • 增加 --workers 参数以提升单机并行能力。
    • 监控处理速度,确保达到每秒 3000+ 令牌。
  • 优势: 成本低至每百万页 190 美元,远低于商业 API。

3. 自定义开发

  • 操作步骤:
    • 修改 olmocr/pipeline.py,调整处理逻辑。
    • 替换 --model 参数,使用自定义模型路径。
    • 提交代码至 GitHub,参与社区开发。

注意事项

  • 硬件要求: 本地运行需 GPU,推荐 NVIDIA 显卡。
  • 网络需求: 云端处理需稳定网络连接 AWS。
  • 调试技巧: 使用 --stats 参数查看工作区统计信息,便于排查问题。

通过以上步骤,你可以快速上手 olmOCR,无论是处理单个 PDF 还是大规模数据集,都能高效完成任务。

CDN1
未经允许不得转载:首席AI分享圈 » olmOCR:PDF文档转换为文本,支持表格、公式和手写内容的识别

首席AI分享圈

首席AI分享圈专注于人工智能学习,提供全面的AI学习内容、AI工具和实操指导。我们的目标是通过高质量的内容和实践经验分享,帮助用户掌握AI技术,一起挖掘AI的无限潜能。无论您是AI初学者还是资深专家,这里都是您获取知识、提升技能、实现创新的理想之地。

联系我们
zh_CN简体中文