RAG之PDF文件中多種格式數據解析實踐 原創
RAG 檢索增強生成由2部分構成:一是離線對異構的數據進行數據工程處理成知識,并存儲在知識庫中,二是基于用戶的提問進行知識庫的檢索增強。如下圖所示:
其中最關鍵的一個環節是 PDF 格式的文件如何提取成知識,下面詳細剖析。
1、PDF 文件中文本數據如何提取?
能夠處理文本提取的 Python 庫有多個,其中較為知名的包括 pdfminer.six、PyMuPDF、PyPDF2 和 pdfplumber。在這些庫中,PyMuPDF 因其出色的文本提取能力而備受推崇。特別是在處理雙欄布局等復雜格式的 PDF 文件時,PyMuPDF 能夠最大程度地保留 PDF 的閱讀順序,這對于確保文本內容的準確性和完整性至關重要。
下面我們將以雙欄布局的 PDF 文件為例,展示使用 PyMuPDF 庫進行文字提取的效果。
進行文本提取的代碼如下所示:
打印的結果如下所示:
2、PDF 文件中表格數據如何提取?
在處理表格提取任務時,camelot 和 tabula 是兩個備受推崇的庫。它們各自在提取有線表和少線表(即含有較少分隔線的表格)方面展現出了良好的效果。接下來,我將分別以有線表為例,簡要介紹 camelot庫的使用。
camelot 是一個強大的 Python 庫,專門用于從 PDF 文件中提取表格數據。對于有線表,即表格中包含明確分隔線的表格,camelot 表現出色。通過指定 PDF 文件路徑和表格所在的頁面區域,camelot 能夠準確地識別并提取出表格中的數據,比如有線表原始數據:
使用 camelot 提取有線表的示例代碼如下:
表格數據的打印結果如下所示:
3、掃描 PDF 的文本數據如何提取?
在從掃描的 PDF 文件中提取文本時,使用開源的 PaddleOCR,并且用 PPStructure 做版面的分析。我們還是以下面的 PDF 文件為例,不過這是 PDF 文件的掃描版。
提取文本的代碼如下:
得到的結果如下所示:
圖中的左邊是根據給出的版面分析結果畫出來的,可以看出對雙欄 PDF 做了正確的解析。右邊是根據識別出來的文本以及文本的坐標畫出來的,可以看出基本上和左邊的版面以及內容是一致的。
本文轉載自公眾號玄姐聊AGI 作者:玄姐
原文鏈接:??https://mp.weixin.qq.com/s/fsntWsBQMZY2hjBXKAcC2w??
