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.pswp.cn/diannao/82146.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/82146.shtml
英文地址,請注明出處:http://en.pswp.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…