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
CATEGORIES