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