当前位置: 首页 > news >正文

开源PDF解析工具olmOCR

olmOCR 是由 Allen Institute for Artificial Intelligence (AI2) 的 AllenNLP 团队开发的一款开源工具,旨在将PDF文件和其他文档高效地转换为纯文本,同时保留自然的阅读顺序。它支持表格、公式、手写内容等。

olmOCR 经过学术论文、技术文档和其他文档内容的训练,并采用提示词工程技术来提高准确性并减少幻觉(错误生成的内容)。

试用链接:olmOCR – Open-Source OCR for Accurate Document Conversion (allenai.org)

包含功能

  • 使用 ChatGPT 4o 获取高质量自然文本解析的提示策略 - buildsilver.py
  • 用于比较不同管道版本的并排评估工具 - runeval.py
  • 基于语言的基本过滤和 SEO 垃圾信息移除 - filter.py
  • Qwen2-VL 和 Molmo-O 的微调代码 - train.py
  • 使用 Sglang 处理数百万 PDF 的微调模型 - pipeline.py
  • 查看从 PDF 创建的 Dolma 文档 - dolmaviewer.py

安装方式

要求:

  • 最新的 NVIDIA GPU(已在 RTX 4090、L40S、A100、H100 上测试)
  • 30GB 磁盘空间

需安装 poppler-utils 和额外的字体以渲染 PDF 图像。

在 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 上运行推理,请使用 flashinfer 安装 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/

本地使用示例

快速测试可以使用 Web 演示。本地运行需要 GPU,并且利用 sglang 实现推理。

转换单个 PDF:

python -m olmocr.pipeline ./localworkspace --pdfs tests/gnarly_pdfs/horribleocr.pdf

转换多个 PDF:

python -m olmocr.pipeline ./localworkspace --pdfs tests/gnarly_pdfs/*.pdf

结果将存储在 ./localworkspace 中的 JSON 文件中。

查看结果

提取的文本以 Dolma 格式的 JSONL 存储在 ./localworkspace/results 目录中。

cat localworkspace/results/output_*.jsonl  

使用 dolmaviewer 命令,查看原始 PDF与提取结果:

python -m olmocr.viewer.dolmaviewer localworkspace/results/output_*.jsonl

然后在浏览器中打开 ./dolma_previews/tests_gnarly_pdfs_horribleocr_pdf.html

![[Pasted image 20250228090316.png]]

多节点/集群使用

如果想使用多节点/集群并行处理数百万 PDF,olmOCR 支持从 AWS S3 读取 PDF及处理。

例如,可以在第一个节点上运行以下命令,将在 AWS bucket中设置一个简单的任务队列并开始转换 PDF。

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 高效地线性化数百万 PDF,只需添加 --beaker 标志。这将在本地机器上准备工作空间,然后在集群中启动 N 个 GPU 工作,开始并行处理PDF。

例如:

python -m olmocr.pipeline s3://my_s3_bucket/pdfworkspaces/exampleworkspace --pdfs s3://my_s3_bucket/jakep/gnarly_pdfs/*.pdf --beaker --beaker_gpus 4

实际试用

显示不太统一

有时候按照md格式输出公式,有时却不按照md格式。

原pdf解析文字
![[Pasted image 20250228084533.png]]![[Pasted image 20250228084556.png]]
![[Pasted image 20250228084729.png]]![[Pasted image 20250228084755.png]]

中文能力

尽管olmOCR的模型仅在英文文档上做过微调,但对中文pdf解析结果也还不错,如下:

原pdf解析文字
![[Pasted image 20250228085834.png]]![[Pasted image 20250228085805.png]]

相关文章:

  • 某个设备的RJ45网口接头为何不可连接任何POE设备
  • Qt 自带颜色属性
  • ZooKeeper分布式协调框架
  • 【LLM】DeepSeek开源技术汇总
  • 【Python】网络爬虫——词云wordcloud详细教程,爬取豆瓣最新评论并生成各式词云
  • 智能AI替代专家系统(ES)、决策支持系统(DSS)?
  • VScode 开发 Springboot 程序
  • StarRocks 在爱奇艺大数据场景的实践
  • 下载pyenv
  • 飞算 JavaAI:支持复杂业务逻辑生成,降低 80% 开发门槛
  • Zookeeper(80)Zookeeper的常见问题有哪些?
  • 机器幻觉产生的原因
  • IDEA相关配置
  • Vosk语音识别包
  • 运动想象 (MI) 分类学习系列 (17) : CCSM-FT
  • 大白话解释安全框架Spring Security是什么 有什么用 怎么用
  • Windows Qt开发到底选MSVC编译还是MinGW编译?
  • 小红书湖仓架构的跃迁之路
  • 004-利用Docker安装Mysql
  • Python数据类型与运算全攻略:零基础掌握类型转换与核心操作
  • 淘宝做网站靠谱吗/关键词挖掘长尾词工具
  • 成都私人网站建设/微信营销平台
  • 重庆装修贷款利率是多少/廊坊seo快速排名
  • 做外贸生意在哪个网站/刷粉网站推广免费
  • 做网站需要每年都交钱吗/怎么做网页设计的页面
  • 空调公司网站建设/今日重大新闻头条十条