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

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基因型—環境兩向表數據分析——品種生態區劃分

參考資料:農作物品種試驗數據管理與分析 用于品種生態區劃分的GGE雙標圖有兩種功能圖:試點向量功能圖和“誰贏在哪里”功能圖。雙標圖的具體模型基于SD定標和h加權和試點中心化的數據。本例中籽粒產量的GGE雙標圖僅解釋了G和GE總變異的53.6%,…

HTTP~文件 MIME 類型

MIME(Multipurpose Internet Mail Extensions)類型,即多用途互聯網郵件擴展類型,是一種標準,用來表示文檔、文件或字節流的性質和格式。最初是為了在電子郵件系統中支持非 ASCII 字符文本、二進制文件附件等而設計的&a…

降維攻擊!PCA與隨機投影優化高維KNN

引言:高維數據的“冰山困境” 假設你正在處理一個電商平臺的商品圖片分類任務:每張圖片被提取為1000維的特征向量,100萬條數據的距離計算讓KNN模型陷入“維度地獄”——計算耗時長達數小時,且內存占用超過10GB。 破局關鍵&#…

Rust 是什么

Rust 是什么 Rust 是一種由 Mozilla 開發的系統級編程語言,它于 2010 年首次亮相,在 2015 年發布 1.0 版本,此后迅速發展并受到廣泛關注。 內存安全:Rust 最大的亮點之一是它在編譯階段就能夠避免常見的內存錯誤,如空指針引用、數據競爭和內存泄漏等。它通過所有權(Owne…

網絡變壓器的主要電性參數與測試方法(2)

Hqst盈盛(華強盛)電子導讀:網絡變壓器的主要電性參數與測試方法(2).. 今天我們繼續來看看網絡變壓器的2個主要電性參數與它的測試方法: 1. 線圈間分布電容Cp:線圈間雜散靜電容 測試條件:100KHz/0.1…

UniApp 中封裝 HTTP 請求與 Token 管理(附Demo)

目錄 1. 基本知識2. Demo3. 拓展 1. 基本知識 從實戰代碼中學習,上述實戰代碼來源:芋道源碼/yudao-mall-uniapp 該代碼中,通過自定義 request 函數對 HTTP 請求進行了統一管理,并且結合了 Token 認證機制 請求封裝原理&#xff…

初階數據結構習題【3】(1時間和空間復雜度)——203移除鏈表元素

1. 題目描述 力扣在線OJ——移除鏈表元素 給你一個鏈表的頭節點 head 和一個整數 val ,請你刪除鏈表中所有滿足 Node.val val 的節點,并返回 新的頭節點 。 示例1: 輸入:head [1,2,6,3,4,5,6], val 6 輸出:[1,2,3…

互聯網+房產中介+裝修設計+物料市場+智能家居一體化平臺需求書

一、項目概述 1.1 項目背景 隨著互聯網技術的飛速發展以及人們生活品質的顯著提升,傳統房產交易、裝修設計、家居購物等領域暴露出諸多問題。信息不對稱使得用戶難以獲取全面準確的信息,在房產交易中可能高價買入或低價賣出,裝修時可能遭遇…

15.13 AdaLoRA自適應權重矩陣微調:動態秩調整的智能革命

AdaLoRA自適應權重矩陣微調:動態秩調整的智能革命 一、技術架構解析 #mermaid-svg-u3TfE3YrkeWSjem2 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-u3TfE3YrkeWSjem2 .error-icon{fill:#552222;}#mermaid-svg-u3…

P9231 [藍橋杯 2023 省 A] 平方差

P9231 [藍橋杯 2023 省 A] 平方差 - 洛谷 題目描述 給定 L,R,問 L≤x≤R 中有多少個數 x 滿足存在整數 y,z 使得 xy2?z2。 輸入格式 輸入一行包含兩個整數 L,R,用一個空格分隔。 輸出格式 輸出一行包含一個整數滿足題目給定條件的 x 的數量。 輸…

【GenBI優化】提升text2sql準確率:建議使用推理大模型,增加重試

引言 Text-to-SQL(文本轉 SQL)是自然語言處理(NLP)領域的一項重要任務,旨在將自然語言問題自動轉換為可在數據庫上執行的 SQL 查詢語句。這項技術在智能助手、數據分析工具、商業智能(BI)平臺等…

<el-cascader時只取最后一級數據

在用cascader時只取最后一級數據傳給后端 組件的屬性emitPath: false就可以做到&#xff0c;取值就是最后一級傳給后端。并且后端放回的id 也直接可以做回顯 <el-cascaderv-model"Type":options"Options":props"{ value: id, label: label, chil…

`maturin`是什么:matu rus in python

maturin是什么 maturin 是一個用于構建和發布 Rust 編寫的 Python 綁定庫的工具。它簡化了將 Rust 代碼集成到 Python 項目中的過程,支持創建不同類型的 Python 包,如純 Python 包、包含 **Rust (系統編程語言)**擴展模塊的包等。以下為你詳細介紹 maturin 的相關信息并舉例…

流媒體網絡協議全解析:從實時傳輸到自適應流,如何選擇最優方案?

一、歷史發展與協議提出者 流媒體協議的發展與互聯網技術迭代緊密相關,主要分為三個階段: 早期專有協議(1990s-2000s) RTSP/RTP 提出者:RealNetworks(RTSP初始推動者),后由IETF標準化(RFC 2326)。背景:1996年推出,用于視頻監控和點播系統,基于UDP傳輸媒體流,支持…

mysql架構查詢執行流程(圖解+描述)

目錄 mysql架構查詢執行流程 圖解 描述 mysql架構查詢執行流程 圖解 描述 用戶連接到數據庫后&#xff0c;由連接器處理 連接器負責跟客戶端建立連接、獲取權限、維持和管理連接 客戶端發送一條查詢給服務器 服務器先檢查查詢緩存&#xff0c;如果命中緩存&#xff0c;則立…

【QT問題】Ubantu環境下解決已經下載好的qt怎么添加或卸載其他組件

1、找到自己qt的安裝目錄->雙擊打開MaintenanceTool.exe 2、點擊next進去&#xff0c;此時需要登錄qt賬戶&#xff08;如果沒有去官網注冊一個&#xff0c;很快且免費&#xff09; 我這里隨便填的賬號&#xff0c;如果是正確的下面next就能夠點擊。 這里隨便提一下&#xf…

CS50 使用 Python 進行人工智能簡介-“騎士與流氓”謎題

如何使用邏輯推理來解決“騎士與騙子”&#xff08;Knights and Knaves&#xff09;類型的邏輯難題。具體來說&#xff0c;任務是根據每個角色的陳述推理出他們是“騎士”還是“騙子”。 任務背景&#xff1a; 騎士與騙子問題&#xff1a;每個角色要么是騎士&#xff0c;要么是…

每日學習Java之一萬個為什么?[MySQL面試篇]

分析SQL語句執行流程中遇到的問題 前言1 MySQL是怎么在一臺服務器上啟動的2 MySQL主庫和從庫是同時啟動保持Alive的嗎&#xff1f;3 如果不是主從怎么在啟動的時候保證數據一致性4 ACID原則在MySQL上的體現5 數據在MySQL是通過什么DTO實現的6 客戶端怎么與MySQL Server建立連接…

詳細解析d3dx9_27.dll丟失怎么辦?如何快速修復d3dx9_27.dll

運行程序時提示“d3dx9_27.dll文件缺失”&#xff0c;通常由DirectX組件損壞或文件丟失引起。此問題可通過系統化修復方法解決&#xff0c;無需重裝系統或軟件。下文將詳細說明具體步驟及注意事項。 一.d3dx9_27.dll缺失問題的本質解析 當系統提示“d3dx9_27.dll丟失”時&…

IP----訪問服務器流程

這只是IP的其中一塊內容-訪問服務器流程&#xff0c;IP還有更多內容可以查看IP專欄&#xff0c;前一段學習內容為IA內容&#xff0c;還有更多內容可以查看IA專欄&#xff0c;可通過以下路徑查看IA-----配置NAT-CSDN博客CSDN,歡迎指正 1.訪問服務器流程 1.分層 1.更利于標準化…