HuggingFists: 無代碼處理復雜PDF

有過使用LLM搭建RAG或其它類知識系統的朋友一定會對文檔數據的復雜多樣性有著深刻的理解。各行各業的磁盤中都沉睡了數年到數十年的各類文檔信息,包括:Doc、Docx、PPT、PDF、XLS、PNG、JPEG等各類格式。利用LLM激活這些數據價值的首要工作就是能夠正確的抽取這些文件中的信息。目前,市場上已經有了不少開箱即用的Rag類工具,這些工具能夠很好的抽取絕大多數文件中的內容,對于很多用戶來說,已經足夠了。但對于存量數據跨越多年的企業,由于數據的復雜性、抽取需求的多樣性,這類開箱即用工具預置的文件數據處理流程就變的很難滿足需要了。

由于文件處理是一個非常大的話題,我們無法用一篇文章探討完此類需求。因此,本文我們只嘗試簡單探討一下針對復雜PDF處理的場景,特別是在無代碼模式下,如何快速處理PDF,提升數據處理的效率。

復雜PDF處理技術選型

復雜PDF處理是一個業界難題,有很多團隊都在嘗試解決此類問題,并且也都有了一定的成績。各類方案個有所長,如何選定就變得有些困難。最近一篇《Ilya Rice:我是如何贏得企業 RAG 挑戰賽的》的文章大火,里面給出了一個不錯的方案–Docling。

Docling 是一個開源的文檔解析和轉換工具,能高效地將多種格式的文檔(包括 PDF、DOCX、PPTX、圖片和 HTML)解析,導出為 Markdown 或 JSON 格式。能夠對PDF進行OCR、布局分析、表格分析、代碼識別等深度理解。互聯網上有很多相關資料可以參考,本文就不做贅述了。

于是,HuggingFists整合了Docling技術,幫助使用者應對復雜PDF的解析場景。選用Docling還有一個重要的原因,就是其部分轉換功能可以在純CPU的環境中運行完成。

復雜PDF處理流程

在這里插入圖片描述

如圖所示,在HuggingFists中使用Docling進行復雜PDF處理非常簡單,只要一個包含三個算子的流程就可以批量完成復雜PDF文本的轉換工作了。由于LLM模型對Markdown格式支持的更完善一些,故而Docling算子將Markdown格式作為了缺省的目標格式。雖然LLM對Json格式的支持也非常完善,但由于它無法保留版式信息,無法直觀評價轉換效果,故而這里也沒有作為首選項。

這是一個將PDF文件批量轉換為Markdown文件并存儲到文件系統的流程。文件輸入算子用于批量選中要處理的PDF文件;Docling算子負責將PDF文件轉換為Markdown格式;批量文件輸出算子用于將轉換后的文件存儲到指定的目錄。

經過轉換后的Markdown文件由于采用了純文本描述格式,就非常方便進行后續處理了。如在進行RAG系統開發時,為了最大程度的保持文本含義的內聚性,可以對文件按章節切分;如希望單獨抽取文件中的表格、圖片等信息,也可以在此基礎上進一步抽取。我們將在隨后的文章中介紹如何完成以上類型的工作。

Docling環境的準備

目前最新版的HuggingFists并不支持Docling,如果希望使用該功能,需要去HuggingFists的算子商城(資源庫/算子庫/商城)中安裝該算子,并在HuggingFists環境中按照如下步驟安裝Docling。

  1. 進入HuggingFists的安裝目錄,sengee.community.linux

  2. 在命令行中執行nerdctl exec -it oyez /bin/sh進入oyez容器。執行su root命令,輸入密碼12345678,切換到root用戶下

  3. 在oyez系統中運行pip install docling安裝docling。如果你的機器能夠翻墻,那么打開翻墻通道,安裝完成。這里強調能夠翻墻是因為docling運行時會根據算子的功能配置去下載對應的模型。而這些模型需要翻墻才能下載。需要注意的是,此時在每次使用Docling算子時,需要對算子中的Python代碼部分進行相應的調整。如下圖:

    在這里插入圖片描述

    點擊圖中Docling算子右上角的配置彈出按鈕。在彈出框中找到"Python腳本片段屬性"。注釋掉代碼中紅色框標注的2行代碼,點擊確定即可。這兩行代碼是為無法下載Docling模型包而預置的模型路徑。具體安裝方式見步驟4。

  4. 退出oyez系統。進入sengee.community.linux/moo目錄下。下載“https://pan.baidu.com/s/1uoa3UqBfHBX3sCf10bUtog?pwd=1234”的包到當前目錄,解壓Docling.zip包。該包中包含Docling運行所需的部分模型。對于無法翻墻的用戶,運行時無法下載到對應模型。故而無法正常運行Docling。HuggingFists提供的這個壓縮包中涵蓋了ocr識別,布局識別以及表格識別等多個模型。可以幫助網絡條件不足的朋友使用Docling算子。需要注意的是,當前提供的模型中,未包括代碼識別和公式識別的模型,如需此類功能需下載對應的模型放在指定的路徑下。

結語

Docling內置了很多功能配置項,但是Docling算子只封裝了其中的一部分。如果希望調整和配置更多的配置項,可以試著去修改算子的Python腳本片段。這里的腳本片段為實際運行Docling時所需的腳本片段。好了,現在可以使用HuggingFists去自動化處理復雜PDF文檔了。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/88122.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/88122.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/88122.shtml

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

相關文章

Vue 3 框架實現理念、架構與設計哲學深度解析

第一部分:Vue 3 的起源:架構演進與設計哲學 Vue 3 的誕生并非一次簡單的版本迭代,而是一場深刻的架構革命。它的出現是前端技術演進、應用規模擴張以及對更高性能和可維護性追求的必然結果。要全面理解 Vue 3 的各項實現理念,必須…

SQL Server使用存儲過程導出數據到Excel實現方式

在SQL Server數據庫管理中,存儲過程作為預編譯的T-SQL語句集合,能顯著提升數據操作效率與安全性。將數據導出到Excel的需求廣泛存在于報表生成、數據遷移等場景。本文詳細解析四種通過存儲過程實現數據導出的技術方案,涵蓋代碼實現、適用場景及優化策略,為不同業務需求提供…

OpenGL 2. 著色器

#include <glad/glad.h> #include <GLFW/glfw3.h> #include <iostream> #include <stdexcept>// 函數聲明 void framebuffer_size_callback(GLFWwindow* window, int width, int height); void processInput(GLFWwindow* window); void checkShaderCom…

【c++】容器擴容導致的類實例資源被錯誤釋放

BUG記錄 表現為新實例被存入前&#xff0c;容器內部的舊實例的析構被意外調用 因為 std::vector 在容量不足時&#xff0c;會自動擴容&#xff0c;把舊元素「搬」到新內存&#xff0c;然后析構舊內存上的那些對象。然后由于LKMotorController 類里沒有正確處理移動語義&#xf…

TypeScript 集成

下面&#xff0c;我們來系統的梳理關于 Vue TypeScript 深度集成 的基本知識點&#xff1a;一、TypeScript 與 Vue 集成概述 1.1 為什么需要 TypeScript 類型安全&#xff1a;編譯時類型檢查&#xff0c;減少運行時錯誤代碼智能&#xff1a;強大的IDE智能提示和自動補全可維護…

npm proxy

背景 前端項目下載依賴時經常會出現timeout的情況&#xff0c;此時有三種解決方案。 切換鏡像源。 適用于對依賴版本要求不嚴格的情況。延長超時時間。設置npm proxy。一些生產環境對依賴版本有著嚴格要求&#xff0c;并且指定了依賴的下載地址&#xff08;如下圖&#xff09;&…

TVS管工作原理是什么?主要的應用場景都有哪些?

什么是TVS管&#xff1f; TVS&#xff08;Transient Voltage Suppressors&#xff09;&#xff0c;即瞬態電壓抑制器&#xff0c;也被稱為雪崩擊穿二極管&#xff0c;是一種二極管形式的高效能保護器件&#xff0c;常用來防止端口瞬間的電壓沖擊造成后級電路的損壞。 TVS 有單…

分布式微服務系統架構第156集:JavaPlus技術文檔平臺日更-Java線程池使用指南

title: java線程池使用 author: 哪吒 date: 2023-06-15點擊勘誤issues&#xff0c;哪吒感謝大家的閱讀Java線程池使用指南1. 線程池基礎使用1.1 創建線程池的方式方式一&#xff1a;使用Executors工具類&#xff08;不推薦&#xff09;// 1. 固定大小線程池 ExecutorService fi…

【最新版】點大全能版v2.6.7.1 含匯付斗拱插件+uniapp前端

一.介紹V2全能版本、獨立版本全開源&#xff0c;含鏈動21&#xff0c;匯付斗拱?、排隊免單、推三返1 &#xff0c;扶持金&#xff0c;平級獎&#xff0c;團隊業績獎&#xff0c;酒店管理&#xff0c;約車&#xff0c;餐飲等眾多營銷功能&#xff0c;商城系統版本號為2.6.7.1&a…

Go語言高級面試必考:切片(slice)你真的掌握了嗎?

目錄 1. 切片是個啥?從數組到切片的靈魂進化 數組與切片的愛恨情仇 切片的內存結構:三巨頭共舞 切片的初始化方式:靈活到飛起 切片的“引用”特性:福也是禍 源碼初探:切片的誕生 2. 切片三劍客:len、cap 和底層數組的三角戀 len 和 cap 的微妙關系 切片共享的秘密…

monorepo + Turborepo --- 開發應用程序

目錄 配置開發任務 在 dev 之前運行設置任務 運行特定應用程序 使用終端 UI 與任務交互 監聽模式 watch 將 turbo watch 與持久任務一起使用 依賴感知的持久任務 沒有依賴感知的持久任務 緩存 任務輸出 局限性 在 Monorepo 中開發應用程序可以解鎖強大的工作流程&…

C#字符串相關庫函數運用梳理總結 + 正則表達式詳解

C# 字符串常用庫函數總結 &#x1f539; 1. 字符串比較 方法說明示例string.Equals()比較兩個字符串是否相等&#xff08;可忽略大小寫&#xff09;string.Equals("abc", "ABC", StringComparison.OrdinalIgnoreCase) / !判斷兩個字符串是否相等/不等&quo…

投機采樣(Speculative Decoding)

投機采樣&#xff08;Speculative Decoding&#xff09; 是一種加速大型語言模型&#xff08;LLM&#xff09;推理的技術&#xff0c;其核心思想是通過預生成候選token序列并異步校驗&#xff0c;從而減少主模型的計算量&#xff0c;同時保持生成結果的準確性。 核心思想是通過…

如何將華為手機中的照片傳輸到電腦

華為手機在眾多手機品牌中以其出色的品質脫穎而出&#xff0c;尤其是其攝像頭功能。有時&#xff0c;你可能在華為手機上積累了太多有意義的照片&#xff0c;想要將這些照片上傳到電腦以釋放手機存儲空間。然而&#xff0c;出于用戶信息安全的考慮&#xff0c;一些便捷的方法可…

whitt算法之特征向量的尺度

whitt中特征值不相等判別條件另一個條件的意思&#xff0c; 實際上這兩個條件都沒用&#xff0c;不用看&#xff0c;特征值排序&#xff0c;如果現在順序對λ1/λ1‘ w λ2/λ2 -w 此時取相位就是0&#xff0c;最小了 如果相反就是面的是0我的代碼用最優相位內積去交換位置公…

【Note】《深入理解Linux內核》 第十九章:深入理解 Linux 進程通信機制

《深入理解Linux內核》 第十九章&#xff1a;深入理解 Linux 進程通信機制&#xff08;Process Communication&#xff09;關鍵詞&#xff1a;IPC、信號、管道、FIFO、消息隊列、信號量、共享內存、套接字、內核對象、同步機制一、進程通信概述 1.1 為什么需要進程通信 在 Linu…

【Mac 從 0 到 1 保姆級配置教程 19】- 英語學習篇-我的英語工作流分享(AI 輔助學習)

文章目錄前言聽力沉浸式翻譯閱讀Easydict配置自定義字典&#xff08;重點&#xff09;歐陸詞典沙拉查詞沉浸式翻譯寫作Eearthworm英文提問口語最后學習資料系列教程前言 本文介紹一下我日常如何學習和使用英語的工作流&#xff0c;包括一些常用好用的工具&#xff0c;好的工具…

從庫函數到API接口,深挖不同語言背后的“封裝”與“調用”思想

個人主頁-愛因斯晨 優秀文章推薦 文章目錄個人主頁-愛因斯晨優秀文章推薦引言一、三種調用機制概述C語言的庫函數Python 的導包機制Java 的 API 接口調用綜上&#xff1a;二、它們的相同點&#xff1a;封裝與調用三、不同之處**對比核心維度****細節串講**1. **C 語言&#xf…

基于NCNN框架在Android平臺實現YOLOv8目標檢測模型的高效部署與實踐

隨著移動設備計算能力的提升&#xff0c;越來越多的深度學習模型被部署到移動端&#xff0c;以實現實時、低延遲的應用場景。YOLO系列的在目標檢測任務中表現出色&#xff0c;具有精度高、速度快的優勢。本文將詳細介紹如何基于NCNN框架 &#xff0c;在Android平臺 上高效部署Y…

華為動態路由配置

問題描述&#xff1a;針對四個路由器在不同的網段場景中&#xff0c;對四個路由器進行動態路由配置。下面以如下場景為例&#xff0c;介紹詳細配置過程。配置過程&#xff1a; 1、每個路由器的接口配置IP地址 路由器AR1中每個接口配置IP地址。 sys # 進入系統視圖 interface g…