在 Python 中讀取 PDF 文檔是實現文檔自動化、內容分析和數據提取的基礎操作之一。無論你處理的是合同、報告、發票,還是科研論文,能夠通過代碼訪問 PDF 內容,不僅能節省時間,還能帶來更高效的處理流程。
要在 Python 中準確提取 PDF 的文本、表格、圖像和元數據,一個穩定、功能完善的 PDF 操作庫是關鍵。本文將介紹如何使用?Spire.PDF for Python?實現用 Python 讀取 PDF 文檔。該庫提供簡單易用、功能強大的API,無需依賴第三方工具。
Spire.PDF for Python?
配置 Python 讀取 PDF 開發環境
Spire.PDF for Python?是一款功能全面的 PDF 讀取庫,支持通過 Python 代碼提取 PDF 中的文本、表格、圖像和文檔信息。其主要特點包括:
- 支持從磁盤或內存加載 PDF
- 可讀取文本、表格、圖像和元數據
- 無需依賴外部工具
- 對結構化數據的識別精準
- 提供免費版本供試用
非常適合希望快速集成 PDF 數據讀取功能的開發者。
使用 pip 安裝?Spire.PDF for Python:
pip install spire.pdf
或安裝適用于輕量任務的?Free Spire.PDF for Python:
pip install spire.pdf.free
在 Python 中加載 PDF 文檔
在讀取 PDF 內容之前,需先將其加載到內存中。Spire.PDF 支持從文件路徑或內存字節流加載文檔,非常適用于處理網頁上傳或 API 返回的 PDF 數據。
從文件路徑加載
使用?PdfDocument.LoadFromFile()?方法從本地讀取 PDF 文件:
from spire.pdf import PdfDocument# 創建一個 PdfDocument 實例 pdf = PdfDocument() # 加載一個 PDF 文檔 pdf.LoadFromFile("sample.pdf")
從內存字節加載
如果不希望將文件保存到磁盤,可以先讀取字節數據,并使用?Stream?對象加載:
from spire.pdf import PdfDocument, Stream# 將 PDF 文件讀取為字節數組 with open("sample.pdf", "rb") as f:byte_data = f.read()# 使用字節數組創建一個流對象 pdfStream = Stream(byte_data) # 使用流對象創建一個 PdfDocument 實例 pdf = PdfDocument(pdfStream)
用 Python 讀取 PDF 中的文本
提取 PDF 中的文本內容是最常見的需求之一。Spire.PDF?提供簡單方法,可獲取整篇文檔或指定頁面中的所有可見文本。
讀取 PDF 文檔所有文本
遍歷每一頁,使用?PdfTextExtractor.ExtractText()?提取內容:
from spire.pdf import PdfDocument, PdfTextExtractor, PdfTextExtractOptions# 創建一個 PdfDocument 實例 pdf = PdfDocument() # 加載一個 PDF 文檔 pdf.LoadFromFile("sample.pdf")all_text = "" # 遍歷每一頁 for pageIndex in range(pdf.Pages.Count):page = pdf.Pages.get_Item(pageIndex)# 創建一個 PdfTextExtractor 實例text_extractor = PdfTextExtractor(page)# 配置提取選項options = PdfTextExtractOptions()options.IsExtractAllText = Trueoptions.IsSimpleExtraction = True# 從當前頁面提取文本all_text += text_extractor.ExtractText(options)# 打印提取到的全部文本 print(all_text)
提取 PDF 頁面指定區域的文本
如只需獲取頁面中某一特定區域的文本,可通過設置坐標區域實現:
from spire.pdf import RectangleF, PdfDocument, PdfTextExtractor, PdfTextExtractOptions# 加載 PDF 文件 pdf = PdfDocument() pdf.LoadFromFile("sample.pdf")# 獲取第一頁 page = pdf.Pages.get_Item(0) # 創建一個 PdfTextExtractor 實例 textExtractor = PdfTextExtractor(page) # 設置提取區域,通過配置 PdfTextExtractOptions options = PdfTextExtractOptions() area = RectangleF.FromLTRB(0, 200, page.Size.Width, 270) # x, y, width, height options.ExtractArea = area options.IsSimpleExtraction = True# 從指定區域提取文本 text = textExtractor.ExtractText(options) print(text)
用 Python 讀取 PDF 表格數據
PDF 中的表格廣泛用于財務、賬單等場景。借助?Spire.PDF?提供的表格提取器,你可以精準讀取頁面中的表格內容。
from spire.pdf import PdfDocument, PdfTableExtractor# 加載 PDF 文件 pdf = PdfDocument() pdf.LoadFromFile("sample.pdf")# 創建一個 PdfTableExtractor 實例 table_extractor = PdfTableExtractor(pdf) # 從第一頁提取表格 tables = table_extractor.ExtractTable(0) for table in tables:# 獲取行數和列數row_count = table.GetRowCount()column_count = table.GetColumnCount()# 遍歷每一行for i in range(row_count):table_row = []# 遍歷每一列for j in range(column_count):# 獲取單元格文本cell_text = table.GetText(i, j)table_row.append(cell_text)print(table_row)
用 Python 提取 PDF 中的圖像
PDF 文件常含有徽標、插圖或掃描圖像。Spire.PDF?支持提取并保存這些嵌入圖像,方便后續使用或歸檔。
from spire.pdf import PdfDocument, PdfImageHelper# 加載 PDF 文件 pdf = PdfDocument() pdf.LoadFromFile("sample.pdf")# 獲取第一頁 page = pdf.Pages.get_Item(0)# 創建一個 PdfImageHelper 對象 image_helper = PdfImageHelper() # 獲取頁面上的圖像信息 images_info = image_helper.GetImagesInfo(page) # 將頁面中的圖像保存為圖像文件 for i in range(len(images_info)):images_info[i].Image.Save("output/Images/image" + str(i) + ".png")
獲取 PDF 元數據(標題、作者等)
你可以通過?Spire.PDF?獲取文檔的元數據信息,如標題、作者、主題和關鍵詞等,有助于文檔管理與歸檔。
from spire.pdf import PdfDocument# 加載 PDF 文件 pdf = PdfDocument() pdf.LoadFromFile("sample.pdf")# 獲取文檔屬性 properties = pdf.DocumentInformation print("標題: " + properties.Title) print("作者: " + properties.Author) print("主題: " + properties.Subject) print("關鍵詞: " + properties.Keywords)
常見問題答疑
Python 能讀取 PDF 文件嗎?
可以。Spire.PDF for Python?提供了讀取文本、提取表格、圖像和元數據的完整 API,支持結構化內容的精準解析。
能在 Jupyter Notebook 中使用 Spire.PDF 嗎?
當然可以。只需通過 pip 安裝,就能在 Jupyter Notebook 中調用 API 讀取 PDF 文件、提取文本與圖像等內容。
如何提取 PDF 文本?
加載文檔后,使用?PdfTextExtractor.ExtractText()?方法遍歷每一頁即可提取所有可見文本。
可以不保存文件直接讀取 PDF 嗎?
可以。通過?LoadFromStream()?方法可直接讀取字節數據,非常適合處理網頁上傳或接口返回的臨時文件。
總結
借助?Spire.PDF for Python,你可以輕松完成 PDF 文件的讀取和處理任務,包括文本、表格、圖像和元數據的提取,還可將 PDF 轉換為可分析的文本內容,是實現數據采集與文檔自動化的理想方案。