從PDF文件中提取信息對於數據處理和分析至關重要,同時提取出的文本或圖片也可用於其他項目。在Python中,我們可以通過使用Spire.PDF for Python這個第三方庫來提取PDF文件中的文本和圖片。
要安裝Spire.PDF for Python,你可以使用pip命令進行安裝。具體命令如下。
有關如何在VS Code中安裝Spire.PDF for Python的詳細教程,可以參考相關資料。
Spire.PDF for Python提供了PdfPageBase.ExtractText()方法來提取PDF頁面中的文本。你可以根據需求選擇提取單頁文本或遍歷所有頁面提取整個PDF的文本。以下是一個完整的Python代碼示例。
如果你需要提取PDF頁面中特定區域的文本,你可以使用PdfPageBase.ExtractText(RectangleF rectangleF)方法並指定矩形范圍。以下是相應的Python代碼。
Spire.PDF for Python還提供了PdfPageBase.ExtractImages()方法來提取PDF文件中的圖片。以下是如何提取PDF文件中所有圖片並保存到指定路徑的Python代碼示例。
2. 如何用Python從大量pdf 中提取表格中的數據進行分析
試試tabula,讀取pdf後可轉為pandas dataframe進行後續處理,也可直接輸出csv文件。
python版本的項目主頁,
安裝:pip install tabula-py
如果包含中文內容需要修改編碼格式:
pd.read_csv("example.csv", encoding="GB18030")
(ps下次提問請先查看萬能的stackoverflow:
Extracting table contents from a collection of PDF files)
3. python怎樣讀取pdf文件的內容
1、首先要下載一個處理pdf的組件pdfminer,網路搜索去官網下載
2、下載完成解壓以後,打開cmd進入用命令安裝。python setup.py install 進行安裝
3、我們來測試一下是否安裝成功了,引入這個模塊,運行一下代碼,沒有報錯就說明安裝成功了
4、官網有文檔也有代碼示例
from pdfminer.pdfparser import PDFParser
from pdfminer.pdfdocument import PDFDocument
from pdfminer.pdfpage import PDFPage
from pdfminer.pdfpage import PDFTextExtractionNotAllowed
from pdfminer.pdfinterp import PDFResourceManager
from pdfminer.pdfinterp import PDFPageInterpreter
from pdfminer.pdfdevice import PDFDevice
fp = open('mypdf.pdf', 'rb')
#創建一個PDF文檔解析器對象
parser = PDFParser(fp)
#創建一個PDF文檔對象存儲文檔結構
#提供密碼初始化,沒有就不用傳該參數
document = PDFDocument(parser, password)
#檢查文件是否允許文本提取
if not document.is_extractable:
raise PDFTextExtractionNotAllowed
#創建一個PDF資源管理器對象來存儲共享資源
rsrcmgr = PDFResourceManager()
#創建一個pdf設備對象
device = PDFDevice(rsrcmgr)
#創建一個PDF解析器對象
interpreter = PDFPageInterpreter(rsrcmgr, device)
#處理文檔當中的每個頁面
for page in PDFPage.create_pages(document):
interpreter.process_page(page)
5、我新建一個pdf,新輸入一些內容
6、運行一下代碼即可
4. Python解析PDF表格——PDFPlumber vs Camelot
題圖來自 Camelot: List o』 10 Intriguing Mythical Places
為獲取LEED認證項目的評分表明細,可念帶以從USGBC的項目頁面上爬取,或者從pdf格式的項目評分表中解析得到。以 重慶某LEED EM:OB v2009 Gold項目 為例,USGBC上公布的 LEED項目得分表 其格式並不統一,利用XPath爬取後需要進一步清洗處理。相對而言,LEED項目所對應的 項目評分表PDF文件 的數據更為規范完整。因此考慮嘗試解析出PDF文件中的表格,以便後續分析。
Python 處理PDF文件的程序包,pdfminer、tabula、型高缺pdfplumber、camelot……查詢資料表明,似乎普遍認為pdfminer的效果不怎麼好,而tabula需要java支卜辯持 ,想偷懶於是只試了pdfplumber和camelot。
安裝過程不贅述,直接來看運行結果。
pdfplumber無法直接解析出Scorecard.pdf文件中的表格,但實際上要解決此問題也並非難事。調整下思路,可先解析出pdf文件中的文本,讓後通過分列來得到表格。
利用pdfplumber的extract_text()命令可解析出pdf文件中的文本,但由於本次需要解析的得分表pdf文件的排版的原因,左右兩個表格的文本行並未完全對齊,因此如果直接解析完整頁面上的文本的話,文字會出錯。先用corp()命令指定識別范圍,然後再extract_text(),識別得到的文本列表如下所示。
對於類似本例中Scorecard.pdf表格排版有錯位的情況,也可以按照表格在頁面中所處的位置,指定表格識別的范圍。所用到的指令:camelot.plot()可以繪制出頁面的略圖,table_area參數可以指定表格識別的范圍。
又及,Camelot原來是亞瑟王和圓桌騎士們的宮殿所在地,和Asgard的Valhalla一樣,也是傳說中的聖域。搜索camelot程序安裝包時無意中學到的,漲知識了。
[1] Python:解析PDF文本及表格——pdfminer、tabula、pdfplumber 的用法及對比
[2] 用Python提取pdf文件中的表格數據
[3] python讀取pdf文件
[4] Github: pdfplumber
[5] Camelot: PDF Table Extraction for Humans
[6] ImageMagick Installation
[7] ImageMagick之PDF轉換成圖片(image)
[8] LEED 2009 for Existing Buildings: Operations & Maintenance
[9] Camelot - Wikipedia
[10] List o』 10 Intriguing Mythical Places
[11] Camelot識別pdf表格時的參數設置補充