從PDF中提取內容能幫助我們獲取檔案中的資訊,以便進行進一步的分析和處理。此外,在遇到類似專案時,提取出來的文字或圖片也能再次利用。要在Python中通過程式碼提取PDF檔案中的文字和圖片,可以使用 Spire.PDF for Python 這個第三方庫。具體操作方法查閱下文。
本文中用到的Python PDF庫支援在各種 Python 程式中建立、讀取、編輯、轉換和儲存 PDF 檔案。要安裝此產品,可使用以下 pip 命令。
pip install Spire.PDF
要了解詳細安裝教學,參考: 如何在 VS Code 中安裝 Spire.PDF for Python
Spire.PDF for Python 提供的 PdfPageBase.ExtractText() 方法能提取一個 PDF 頁面中文字。根據你的具體需求,你可以選擇僅提取某頁中的文字,或者遍歷所有頁面以提取整個PDF檔案中的文字。完整Python程式碼如下:
from spire.pdf import * from spire.pdf.common import * # 建立PdfDocument類的範例 pdf = PdfDocument() # 載入PDF檔案 pdf.LoadFromFile("巨量資料.pdf") # 建立一個TXT檔案來儲存提取的文字 extractedText = open("Output/提取文字.txt", "w", encoding="utf-8") # 遍歷檔案的每一頁 for i in range(pdf.Pages.Count): # 獲取頁面 page = pdf.Pages.get_Item(i) # 從頁面提取文字 text = page.ExtractText() # 將文字寫入TXT檔案 extractedText.write(text + "\n") extractedText.close() pdf.Close()
如果你只需要提取某個PDF頁面中指定區域的文字,你可以指定一個矩形範圍然後使用 PdfPageBase.ExtractText(RectangleF rectangleF) 方法提取其中的文字內容。完整Python程式碼如下:
from spire.pdf import * from spire.pdf.common import * # 建立PdfDocument類的物件 pdf = PdfDocument() # 載入PDF檔案 pdf.LoadFromFile("巨量資料.pdf") # 獲取第一頁 page = pdf.Pages.get_Item(0) # 從頁面的指定矩形區域提取文字 text = page.ExtractText(RectangleF(0.0, 400.0, 770.0, 180.0)) # 將提取的文字儲存到TXT檔案中 extractedText = open("Output/PDF文字.txt", "w", encoding="utf-8") extractedText.write(text) extractedText.close() pdf.Close()
除了提取文字外,Spire.PDF for Python 還提供了 PdfPageBase.ExtractImages() 方法來提取PDF檔案中的圖片。要提取一個PDF檔案中的所有圖片並儲存到指定路徑,參考以下Python程式碼。
from spire.pdf import * from spire.pdf.common import * # 建立PdfDocument類的範例 pdf = PdfDocument() # 載入PDF檔案 pdf.LoadFromFile("巨量資料.pdf") # 建立一個列表來儲存圖篇 images = [] # 遍歷檔案的每一頁 for i in range(pdf.Pages.Count): # 獲取頁面 page = pdf.Pages.get_Item(i) # 從頁面提取圖片並儲存在建立的列表中 for img in page.ExtractImages(): images.append(img) # 儲存影象 i = 0 for image in images: i += 1 image.Save("Output/圖片/圖片-{0:d}.png".format(i), ImageFormat.get_Png()) pdf.Close()