Python 提取PDF文字和圖片

2023-10-10 18:01:27

從PDF中提取內容能幫助我們獲取檔案中的資訊,以便進行進一步的分析和處理。此外,在遇到類似專案時,提取出來的文字或圖片也能再次利用。要在Python中通過程式碼提取PDF檔案中的文字和圖片,可以使用 Spire.PDF for Python 這個第三方庫。具體操作方法查閱下文。

  • Python 提取PDF文字
  • Python 提取PDF頁面中指定矩形區域的文字
  • Python 提取PDF圖片

 

安裝 Spire.PDF for Python

本文中用到的Python PDF庫支援在各種 Python 程式中建立、讀取、編輯、轉換和儲存 PDF 檔案。要安裝此產品,可使用以下 pip 命令。

pip install Spire.PDF

要了解詳細安裝教學,參考: 如何在 VS Code 中安裝 Spire.PDF for Python

 

使用 Python 提取PDF文字

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()

 

使用 Python 提取PDF頁面中指定矩形區域的文字

如果你只需要提取某個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()

 

使用 Python 提取PDF圖片

除了提取文字外,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()