olmOCR - PDF文档处理工具包

在这里插入图片描述

文章目录

    • 一、关于 olmOCR
      • 相关资源
      • 包含内容
      • 团队
    • 二、安装
    • 三、本地使用示例
      • 查看结果
      • 多节点/集群使用
      • 管道完整文档


一、关于 olmOCR

olmOCR 是用于训练语言模型处理PDF文档的工具包,支持大规模PDF文本解析和转换。


相关资源

  • 源码:https://github.com/allenai/olmocr
  • 技术报告:https://olmocr.allenai.org/papers/olmocr.pdf
  • 在线演示:https://olmocr.allenai.org/
  • 社区交流:https://discord.gg/sZq3jTNVNG
  • LICENSE:Apache 2.0

包含内容

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

团队

olmOCR 由AllenNLP团队开发并维护,由艾伦人工智能研究所(AI2)支持。
AI2是一个非营利性研究所,其使命是通过高影响力的AI研究和工程为人类做出贡献。
有关具体贡献此代码库的人员信息,请参阅我们的贡献者页面。


二、安装

要求:

  • 近期NVIDIA GPU(已在RTX 4090、L40S、A100、H100上测试),至少20 GB的GPU RAM
  • 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# 对于仅CPU操作,例如运行基准测试
pip install -e .# 对于实际上传文件并使用自己的GPU进行转换
pip install -e .[gpu] --find-links https://flashinfer.ai/whl/cu124/torch2.4/flashinfer/

三、本地使用示例

为了快速测试,请尝试网络演示。要本地运行,需要GPU,因为推理由sglang提供支持。
转换单个PDF:

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

转换图像文件:

python -m olmocr.pipeline ./localworkspace --pdfs random_page.png

转换多个PDF:

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

结果将存储为JSON在./localworkspace中。


查看结果

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

cat localworkspace/results/output_*.jsonl

与原始PDF并排查看结果(使用dolmaviewer命令):

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

现在在您喜欢的浏览器中打开./dolma_previews/tests_gnarly_pdfs_horribleocr_pdf.html


在这里插入图片描述


多节点/集群使用

如果您想使用多个并行运行的节点转换数百万PDF文件,那么olmOCR支持从AWS S3读取PDF,并使用AWS S3输出存储桶协调工作。

例如,您可以在第一个工作节点上启动此命令,它将在您的AWS存储桶中设置一个简单的工作队列,并开始转换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

管道完整文档

python -m olmocr.pipeline --help
usage: pipeline.py [-h] [--pdfs PDFS] [--workspace_profile WORKSPACE_PROFILE] [--pdf_profile PDF_PROFILE] [--pages_per_group PAGES_PER_GROUP][--max_page_retries MAX_PAGE_RETRIES] [--max_page_error_rate MAX_PAGE_ERROR_RATE] [--workers WORKERS] [--apply_filter] [--stats] [--model MODEL][--model_max_context MODEL_MAX_CONTEXT] [--model_chat_template MODEL_CHAT_TEMPLATE] [--target_longest_image_dim TARGET_LONGEST_IMAGE_DIM][--target_anchor_text_len TARGET_ANCHOR_TEXT_LEN] [--beaker] [--beaker_workspace BEAKER_WORKSPACE] [--beaker_cluster BEAKER_CLUSTER][--beaker_gpus BEAKER_GPUS] [--beaker_priority BEAKER_PRIORITY]workspaceManager for running millions of PDFs through a batch inference pipelinepositional arguments:workspace             The filesystem path where work will be stored, can be a local folder, or an s3 path if coordinating work with many workers, s3://bucket/prefix/options:-h, --help            show this help message and exit--pdfs PDFS           Path to add pdfs stored in s3 to the workspace, can be a glob path s3://bucket/prefix/*.pdf or path to file containing list of pdf paths--workspace_profile WORKSPACE_PROFILES3 configuration profile for accessing the workspace--pdf_profile PDF_PROFILES3 configuration profile for accessing the raw pdf documents--pages_per_group PAGES_PER_GROUPAiming for this many pdf pages per work item group--max_page_retries MAX_PAGE_RETRIESMax number of times we will retry rendering a page--max_page_error_rate MAX_PAGE_ERROR_RATERate of allowable failed pages in a document, 1/250 by default--workers WORKERS     Number of workers to run at a time--apply_filter        Apply basic filtering to English pdfs which are not forms, and not likely seo spam--stats               Instead of running any job, reports some statistics about the current workspace--model MODEL         List of paths where you can find the model to convert this pdf. You can specify several different paths here, and the script will try to use theone which is fastest to access--model_max_context MODEL_MAX_CONTEXTMaximum context length that the model was fine tuned under--model_chat_template MODEL_CHAT_TEMPLATEChat template to pass to sglang server--target_longest_image_dim TARGET_LONGEST_IMAGE_DIMDimension on longest side to use for rendering the pdf pages--target_anchor_text_len TARGET_ANCHOR_TEXT_LENMaximum amount of anchor text to use (characters)--beaker              Submit this job to beaker instead of running locally--beaker_workspace BEAKER_WORKSPACEBeaker workspace to submit to--beaker_cluster BEAKER_CLUSTERBeaker clusters you want to run on--beaker_gpus BEAKER_GPUSNumber of gpu replicas to run--beaker_priority BEAKER_PRIORITYBeaker priority level for the job

伊织 xAI 2025-05-01(二)

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

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

相关文章

Android开发补充内容

Android开发补充内容 fragment通信生命周期 Okhttp基本使用websocket Retrofit基本使用 RxJava基本使用定时任务 Hilt基本使用进阶使用例子 组件库Material ComponentsJetpack Compose fragment 通信 fragment于activity通信的一种原生方法是使用Bundle: Bundle …

隐私计算框架FATE二次开发心得整理(工业场景实践)

文章目录 版本介绍隐私计算介绍前言FATE架构总体架构FateBoard架构前端架构后端架构 FateClient架构创建DAG方式DAG生成任务管理python SDK方式 FateFlow架构Eggroll架构FATE算法架构Cpn层FATE ML层 组件新增流程新增组件流程新增算法流程 版本介绍 WeBank的FATE开源版本 2.2.…

AI驱动的制造工艺:系统化探索与创新

DeepSeek 技术全景 在当今 AI 技术蓬勃发展的时代,DeepSeek 已成为该领域中一颗耀眼的明星。自 2023 年 7 月 17 日成立以来,这家由知名私募巨头幻方量化孕育而生的公司,迅速在 AI 领域崭露头角 。DeepSeek 的目标是开发顶尖的大语言模型(LLM),并利用数据蒸馏技术打造更精…

【嵌入式开发-LCD】

嵌入式开发-LCD ■ LCD简介 ■ LCD简介

java反射(2)

package 反射;import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.util.Arrays;public class demo {public static void main(String[] args) throws Exception {// 通过类的全限定名获取对应的 Class 对象…

使用 Cesium 构建 3D 地图应用的实践

CesiumJS 是一个功能强大的开源 JavaScript 库,能够帮助开发者快速构建高性能、高精度的 3D 地球和地图应用 。本文将介绍如何使用 Cesium 构建一个基本的 3D 地图应用,并加载自定义的 3D Tiles 模型。 初始化 Cesium Viewer 首先,在 Vue 的…

结合Splash与Scrapy:高效爬取动态JavaScript网站

在当今的Web开发中,JavaScript的广泛应用使得许多网站的内容无法通过传统的请求-响应模式直接获取。为了解决这个问题,Scrapy开发者经常需要集成像Splash这样的JavaScript渲染引擎。本文将详细介绍Splash JS引擎的工作原理,并探讨如何将其与S…

企业级可观测性实现:OpenObserve云原生平台的本地化部署与远程访问解析

文章目录 前言1. 安装Docker2. 创建并启动OpenObserve容器3. 本地访问测试4. 公网访问本地部署的OpenObserve4.1 内网穿透工具安装4.2 创建公网地址 5. 配置固定公网地址 前言 嘿,各位小伙伴们,今天要给大家揭秘一个在云原生领域里横扫千军的秘密法宝—…

将本地项目提交到新建的git仓库

方式一: # 登录git,新建git仓库和指定的分支,如master、dev# 下载代码,默认下载master分支 git clone http://10.*.*.67/performance_library/pfme-*.git # 切换到想要提交代码的dev分支 git checkout dev# 添加想要提交的文件 git add .#…

.NET平台用C#在PDF中创建可交互的表单域(Form Field)

在日常办公系统开发中,涉及 PDF 处理相关的开发时,生成可填写的 PDF 表单是一种常见需求,例如员工信息登记表、用户注册表、问卷调查或协议确认页等。与静态 PDF 不同,带有**表单域(Form Field)**的文档支持…

在macOS上安装windows系统

使用Boot Camp 1. 准备工作:确认Mac满足Boot Camp系统要求,准备好Windows安装光盘或ISO映像文件,以及一个至少8GB的空白USB闪存驱动器用于保存驱动程序。 2. 打开Boot Camp助理:在“应用程序”文件夹的“实用工具”中找到“Boot…

683SJBH基于J2EE的广州旅游管理系统

第1章  绪论 课题背景 自互联网internet成为一种革命性的大众媒体以来,其发展速度之快令人惊叹。而作为世界最大朝阳产业的旅游,当它与电子商务这一新兴模式相结合时,其潜藏的商业价值表露无遗。根据CNN(美国有线电视新闻网&…

前端面试每日三题 - Day 27

这是我为准备前端/全栈开发工程师面试整理的第27天每日三题练习,涵盖了: CSS选择器的优先级与权重计算机制Angular中的依赖注入(Dependency Injection)机制设计一个支持实时协作编辑(如Google Docs)的前端…

PostgreSQL数据库操作SQL

数据库操作SQL 创建 创建数据库 create database db_test;创建并指定相关参数 with owner : 所有者encoding : 编码connection limit :连接限制 create database db_test1 with owner postgresencoding utf-8connection limit 100;修改 修改数据库名称 renam…

JSP HTTP 状态码详解

JSP HTTP 状态码详解 引言 HTTP 状态码是 HTTP 协议的一部分,用于表示客户端与服务器之间请求与响应的状态。在 JavaServer Pages (JSP) 技术中,HTTP 状态码同样扮演着重要的角色。本文将详细解析 JSP 中的 HTTP 状态码,帮助开发者更好地理解和应用这些状态码。 HTTP 状态…

文件一键解密软件工具(支持pdf、word、excel、ppt、rar、zip格式文件)

一键解密解锁神器支持解密pdf、doc、docx、xls、xlsx、ppt、pptx、rar、zip格式文件,Excel表格、Word文档、PPT演示、RAR、ZIP压缩包、PDF文档一键轻松解密!简单/高效/安全。这款软件由密码帝官方提供,确保了其合法性和安全性,用户…

Banana Pi BPI-CM6 是一款八核 RISC-V 模块,兼容 Raspberry Pi CM 载板

Banana Pi BPI-CM6 是一款 SpacemIT K1 八核 RISC-V 系统级模块,遵循 Raspberry Pi CM5 的设计,并提供高达 16GB LPDDR4 RAM、高达 128GB eMMC 闪存、千兆以太网控制器和 WiFi 6 蓝牙 5.2 模块。 BPI-CM6 虽然与 Raspberry Pi CM5 基本兼容&#xff0c…

【项目篇之统一硬盘操作】仿照RabbitMQ模拟实现消息队列

统一硬盘操作 创建出实例封装交换机的操作封装队列的操作封装绑定的操作封装消息的操作总的完整代码: 我们之前已经使用了数据库去管理交换机,绑定,队列 还使用了数据文件去管理消息 此时我们就搞一个类去把上述两个部分都整合在一起&#…

快速上手SpringBoot开发指南

文章目录 1. 项目整体架构2. SpringBoot核心注解详解2.1 应用程序入口注解SpringBootApplication 2.2 控制器层注解RestControllerRequestMappingPostMappingRequestBody 2.3 服务层注解ServiceAutowired 2.4 数据访问层注解Repository 2.5 实体类注解JPA相关注解Lombok注解 3.…

Unity WebGL、js发布交互

官网参考 Unity3D开发之WebGL平台上 unity和js前端通信交互 WebFun.jslib mergeInto(LibraryManager.library, {JSLog: function (str) { var strsUTF8ToString(str); Log(str); Log(strs);}, Hello: function () {var strs"Hello, world!"; Log(strs); Log(UTF8ToS…