开源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 olmocrgit 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]]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/26974.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Spring Boot和Vue的餐饮管理系统设计与实现

大家好,今天要和大家聊的是一款基于Spring Boot和Vue的餐饮管理系统的设计与实现。项目源码以及部署相关事宜请联系我,文末附上联系方式。 项目简介 基于Spring Boot和Vue的餐饮管理系统设计与实现的主要使用者分为管理员、员工和用户。没有授权的用户无…

HTTP/2 服务器端推送:FastAPI实现与前端集成指南

HTTP/2 服务器端推送:FastAPI实现与前端集成指南 注意:本文末尾附有完整示例代码,文中仅展示核心关键代码。完整代码可在GitHub仓库获取。 本文将会讲解HTTP2协议和相关配置实践。但是不要混淆,SSE的实现完全基于HTTP/1.1的持久连…

二、QT和驱动模块实现智能家居-----4、编译Qt程序并运行

一、编译QT程序 第1步 修改界面: 双击左侧的 Forms 里的 mainwindow.ui 文件,打开 Design 视图。 然后如下图所示,从左侧Display Widgets 栏目下,拖动 Label 和 PushPutton到中间的区域。 第2步 添加测试代码: 第3步…

HTTP四次挥手是什么?

四次挥手,这是TCP协议用来关闭连接的过程。四次挥手是确保两个主机之间能够安全、可靠地关闭连接的重要机制。我会用简单易懂的方式来讲解,帮助你理解它的原理和过程。 1. 什么是四次挥手? 定义 四次挥手是TCP协议用来关闭连接的过程。它通…

java+jvm笔记

JUC synchornized原理(java锁机制)!!!!!! 升级顺序: 无锁偏向锁,只有一个线程来访问轻量级锁,有两个线程交替访问重锁,两个及以上线…

idea + Docker + 阿里镜像服务打包部署

一、下载docker desktop软件 官网下载docker desktop,需要结合wsl使用 启动成功的画面(如果不是这个画面例如一直处理start或者是stop需要重新启动,不行就重启电脑) 打包成功的镜像在这里,如果频繁打包会导致磁盘空间被占满,需…

探索Spring Cloud Config:构建高可用的配置中心

目录 认识Spring Cloud ConfigConfig Server读取配置文件步骤1: (1)创建config-server项目(2)在config-server中开启Config Server功能(3)在config-server配置文件进行相关配置(4&a…

CSDN博客导出设置介绍

在CSDN编辑博客时,如果想导出保存到本地,可以选择导出为Markdown或者HTML格式。其中导出为HTML时有这几种选项:jekyll site,plain html,plain text,styled html,styled html with toc。分别是什…

代理对象中使用this

一、问题引出 业务逻辑层代码 Service public class DemoServiceImpl extends ServiceImpl<DemoMapper, Demo> implements DemoService, ApplicationContextAware {// 用于从Spring容器中获取指定Bean的对象private ApplicationContext applicationContext;// 通过Appl…

视觉图像坐标转换

1. 透镜成像 相机的镜头系统将三维场景中的光线聚焦到一个平面&#xff08;即传感器&#xff09;。这个过程可以用小孔成像模型来近似描述&#xff0c;尽管实际相机使用复杂的透镜系统来减少畸变和提高成像质量。 小孔成像模型&#xff1a; 假设有一个理想的小孔&#xff0c;…

Hadoop之01:HDFS分布式文件系统

HDFS分布式文件系统 1.目标 理解分布式思想学会使用HDFS的常用命令掌握如何使用java api操作HDFS能独立描述HDFS三大组件namenode、secondarynamenode、datanode的作用理解并独立描述HDFS读写流程HDFS如何解决大量小文件存储问题 2. HDFS 2.1 HDFS是什么 HDFS是Hadoop中的一…

C语言(18)------------>函数(1)

本文介绍C语言函数的定义、标准库和库函数、自定义函数、函数中形式参数和实际参数。通过举例子和画图的方式分解每一个知识点&#xff0c;并结合生活案例和已知知识来解释函数知识。从而使得读者对C语言的函数理解更加深入&#xff0c;学习到C语言开发软件的一些实用技巧。 一…

apload-lab打靶场

1.提示显示所以关闭js 上传<?php phpinfo(); ?>的png形式 抓包&#xff0c;将png改为php 然后放包上传成功 2.提示说检查数据类型 抓包 将数据类型改成 image/jpeg 上传成功 3.提示 可以用phtml&#xff0c;php5&#xff0c;php3 4.先上传.htaccess文件&#xff0…

【Linux】TCP协议

文章目录 &#x1f449;TCP协议&#x1f448;TCP协议段格式确认应答机制窗口大小六个标记位连接管理机制三次握手四次挥手超时重传流量控制滑动窗口拥塞控制延迟应答捎带应答面向字节流粘包问题TCP异常情况TCP小结基于TCP应用层协议TCP与UDP的对比用UDP实现可靠传输 &#x1f4…

《HelloGitHub》第 107 期

兴趣是最好的老师&#xff0c;HelloGitHub 让你对编程感兴趣&#xff01; 简介 HelloGitHub 分享 GitHub 上有趣、入门级的开源项目。 github.com/521xueweihan/HelloGitHub 这里有实战项目、入门教程、黑科技、开源书籍、大厂开源项目等&#xff0c;涵盖多种编程语言 Python、…

商城系统单商户开源版源码

环境配置 1.软件安装 宝塔安装系统软件:Nginx、MySQL5.6、PHP( PHP用7.1-7.4版本)、phpMyAdmin(Web端MySQL管理工具)。 2.配置mysql 设置mysql&#xff0c;在已安装的软件里面找到 mysql点击进行设置 3.修改sql-mode 选择左侧配置修改&#xff0c;找到里面的sql-mode&…

DeepSeek 与云原生后端:AI 赋能现代应用架构

&#x1f4dd;个人主页&#x1f339;&#xff1a;一ge科研小菜鸡-CSDN博客 &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; 1. 引言 在当今快速发展的互联网时代&#xff0c;云原生&#xff08;Cloud Native&#xff09;架构已成为后端开发的主流趋势。云…

Kafka面试题及原理

1. 消息可靠性&#xff08;不丢失&#xff09; 使用Kafka在消息的收发过程都会出现消息丢失&#xff0c;Kafka分别给出了解决方案 生产者发送消息到Brocker丢失消息在Brocker中存储丢失消费者从Brocker 幂等方案&#xff1a;【分布式锁、数据库锁&#xff08;悲观锁、乐观锁…

Python学习第十八天之深度学习之Tensorboard

Tensorboard 1.TensorBoard详解2.安装3.使用4.图像数据格式的一些理解 后续会陆续在词博客上更新Tensorboard相关知识 1.TensorBoard详解 TensorBoard是一个可视化的模块&#xff0c;该模块功能强大&#xff0c;可用于深度学习网络模型训练查看模型结构和训练效果&#xff08;…

idea生成自定义Maven原型(archetype)项目工程模板

一、什么是Maven原型&#xff08;Maven archetype&#xff09; 引自官网的介绍如下&#xff1a; Maven原型插件官网地址 这里采用DeepSeek助手翻译如下&#xff1a; Maven 原型 什么是原型&#xff1f; 简而言之&#xff0c;原型是一个 Maven 项目模板工具包。原型被定义为一…