Python

PDFPlumber:使用 Python 從 PDF 提取文字、表格和元資料

PDFPlumber 是一個 Python 函式庫,用於從 PDF 提取文字、表格、圖片和元資料,提供對頁面物件的詳細存取和版面分析。

Keeping this site alive takes effort — your support means everything.
無程式碼也能輕鬆打造專業LINE官方帳號!一鍵導入模板,讓AI助你行銷加分! 無程式碼也能輕鬆打造專業LINE官方帳號!一鍵導入模板,讓AI助你行銷加分!
PDFPlumber:使用 Python 從 PDF 提取文字、表格和元資料

PDF 仍然是分發文件最常見的格式之一,但以程式化方式從中提取資料一直具有挑戰性。PDF 格式保留視覺版面,但犧牲了結構語義,使得區分表格與欄位版面或標題與正文文字變得困難。PDFPlumber(GitHub 上的 jsvine/pdfplumber)透過提供一個 Python 函式庫來應對這項挑戰,為開發人員提供對 PDF 頁面內部結構的詳細、可程式化存取。

由 Jeremy Singer-Vine 創建,現在由貢獻者社群維護,PDFPlumber 已成為從 PDF 提取資料的首選工具,在 GitHub 上擁有超過 6,000 顆星。它建立在 pdfminer.six 之上(負責低階 PDF 解析),並添加了更友善開發者的 API、視覺除錯工具和強大的表格提取能力。

該函式庫的 PDF 解析方法與更簡單的替代方案根本不同。PDFPlumber 不將 PDF 頁面視為平面文字區塊,而是將每個字元、線條、矩形和圖片作為具有精確位置、大小和關係資訊的物件來公開。這意味著開發人員不僅可以查詢頁面上出現的文字,還可以確切知道它出現在哪裡以及它與其他視覺元素的關係。


資料提取架構

PDFPlumber 的提取管線提供多個層級的 PDF 內容存取:

此架構允許開發人員為其任務選擇適當的細粒度。簡單的文字提取可以使用高階文字方法,而複雜的表格提取可以深入到個別字元位置和線段。


提取能力

資料類型方法輸出格式精確度
全文page.extract_text()字串基本版面
版面文字page.extract_text_lines()字典列表行級位置
單詞page.extract_words()字典列表逐詞邊界框
表格page.extract_table()列表的列表儲存格級準確度
表格(多)page.extract_tables()表格列表每頁多個表格
圖片page.images字典列表圖片元資料
物件page.chars, page.lines字典列表個別元素位置

實際中的表格提取

PDFPlumber 的表格提取是其使用最頻繁的功能,也是許多開發人員選擇它而非替代方案的主要原因。該函式庫透過分析頁面上文字字元和視覺元素的空間排列來偵測表格。設定選項控制偵測器如何識別表格邊界、欄位分隔符和行分隔。

對於具有清晰分隔線的結構良好的 PDF 表格,PDFPlumber 的預設設定效果良好。對於沒有可見邊框的表格,該函式庫可以使用文字對齊模式來推斷表格結構。結果可以匯出為列表、轉換為 pandas DataFrame,或序列化為 CSV。

一個特別強大的工作流程涉及在開發過程中使用 PDFPlumber 的視覺除錯模式來生成帶註釋的 PDF。這些 PDF 顯示函式庫確實在哪裡偵測到字元、線條和表格,使得為特定文件類型調整提取參數變得容易。


推薦的外部資源


常見問題

什麼是 PDFPlumber? PDFPlumber 是一個用於從 PDF 檔案中提取文字、表格、圖片和元資料的 Python 函式庫。

PDFPlumber 的表格提取如何運作? 透過分析文字字元和線條的位置,尋找對齊的文字欄位、分隔線和矩形邊界。

PDFPlumber 可以處理掃描的 PDF 嗎? 需要與 Tesseract 等 OCR 函式庫結合使用。

什麼是視覺除錯功能? 生成帶註釋的 PDF 頁面,顯示偵測到的邊界框、線條和字元位置。

PDFPlumber 與其他 Python PDF 函式庫相比如何? 比 PyPDF2 功能更豐富,比 pdfminer.six 更友善開發者。


延伸閱讀

TAG