PDF處理控件Spire.PDF系列教程:Python中快速提取PDF文本、表格、圖像及文檔信息

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

Python 提取 PDF 所有文本示例

提取 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 頁面區域提取文本示例

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

PDF 表格提取效果圖 Python

用 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")

Python 提取 PDF 圖像效果圖

獲取 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 元數據示例

常見問題答疑

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 轉換為可分析的文本內容,是實現數據采集與文檔自動化的理想方案。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/88932.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/88932.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/88932.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

微軟人工智能證書AI-102 | 如何快速通過?

微軟 AI-102 考試,全稱 “Designing and Implementing a Microsoft Azure AI Solution”,是微軟推出的用于驗證考生在 Azure 平臺上設計和實施 AI 解決方案核心能力的認證考試。以下是具體介紹: 考試描述: 考試主要衡量考生實施計…

github使用指南

1、生成SSH密鑰對 ssh-keygen -t ed25519 -C "你的github郵箱"然后根據提示保存路徑,設置密碼 2、將公鑰添加到github cat ~/.ssh/id_ed25519.pub復制輸出內容。 在gihub中點擊New SSH Key,添加密鑰 3、配置git使用SSH地址 git remote se…

AD22以上的基礎操作

1.檢測創建的原理圖器件庫 2.原理圖頁加大 Size:常規和自定義 推薦可視化柵格100mil 快捷鍵VG 3.原理圖器件器件號排序 自動排序:快捷鍵TAA 先解鎖 4.BOM(Bill of Material)物料表導出 description描述:類似精度。 導出各種類型bom表 5…

FastAPI技術深度解析與實戰指南

導讀:在Python Web開發領域經歷了Django和Flask多年統治后,FastAPI的崛起正在重新定義API開發的技術標準。這篇深度技術解析將為開發者揭示FastAPI如何通過獨特的架構設計解決傳統框架的核心痛點。 傳統Python Web框架在面對高并發場景時暴露出明顯的性能…

Python 可迭代的對象、迭代器 和生成器(何時使用生成器表達式)

何時使用生成器表達式 在示例 10-16 中,為了實現 Vector 類,我用了幾個生成器表達 式,eq、hash、abs、angle、angles、format、add 和 __mul__ 方法中各有一個生成器表達式。在這些方法中使用列表推 導也行,不過立即返回的列表要…

復習和預習(C++)答案解析

填空題答案及解釋 在 for 循環實現累加時,通常在循環上方初始化累加器變量,如 int m ______。 答案:0 解釋:累加器需從 0 開始,才能正確累積后續值的總和。 switch 語句根據表達式的值與各個______后的常量表達式進行…

uniapp處理后端返回的html字符串

前言&#xff1a;采用v-html方法處理 1.處理前 <html><head><meta http‐equiv"Content‐Type" content"text/html; charsetUTF-8"></head><body><form ?<input type"submit" value"立刻提交"…

如何在 Ubuntu 上通過終端或在 VirtualBox 中安裝 GCC

無論你是正在編譯 C 程序,還是在 Linux 上從源代碼構建軟件,GNU 編譯器集合(GCC)都是每位 Linux 開發者需要的工具之一,因為它能夠編譯 C、C++,甚至 Fortran、Ada 等其他語言。但如果你想知道如何在 Ubuntu 上安裝 GCC 并設置它來編譯代碼,別擔心——你來對地方了。 本…

Mac python3.12 執行pip/pip3異常externally-managed-environment

環境&#xff1a;Mac、Python3.12.x版本&#xff08;3.12.5&#xff09; 問題&#xff1a;執行pip install xyz 后出現異常&#xff1a; error: externally-managed-environment This environment is externally managed ╰─> To install Python packages system-wide,…

最后的生還者2:重制版 免安 中文離線運行版+整合包

最后的生還者2&#xff1a;重制版 1.4.10515.0636 免安 中文離線運行版整合包 最低配置: 需要 64 位處理器和操作系統 操作系統: Windows 10/11 64-bit (version 1909 or higher) 處理器: Intel Core i3-8100, AMD Ryzen 3 1300X 內存: 16 GB RAM 顯卡: NVIDIA GeForce GTX 16…

【Arm】DS如何應用腳本文件實現調試

1、 文檔目標 在現代嵌入式開發中&#xff0c;調試工具的選擇和使用對開發效率和產品質量有著至關重要的影響。Arm Development Studio&#xff08;簡稱ArmDS&#xff09;作為一款功能強大的集成開發環境&#xff08;IDE&#xff09;&#xff0c;專為基于ARM架構的處理器設計&…

如何通過ETL進行數據抽取工作

數據抽取作為數據集成過程中的核心環節&#xff0c;抽取速度直接決定了整個數據生命周期的質量與效率。在數字化轉型加速的當下&#xff0c;企業需要從結構化數據庫、非結構化文檔、實時流數據、外部API接口等異構數據源中提取有價值的信息&#xff0c;這一過程要面臨數據格式多…

隨機存儲器有哪些,只讀存儲器又有哪些

一、隨機存儲器&#xff08;RAM&#xff0c;易失性&#xff0c;斷電數據丟失&#xff09; 1. 靜態RAM&#xff08;SRAM&#xff09; 特點&#xff1a;用觸發器存儲數據&#xff0c;無需刷新&#xff0c;速度極快&#xff08;納秒級&#xff09;&#xff0c;但容量小、成本高。…

PIC單片機MPLAB編譯報錯的一些問題及解決方法

PIC18單片機MPLAB編譯出錯的一些問題的解決方法 Couldnt locate build tool. Check tool locations. Unknowm processor&#xff1a;18FXXXXX’ Halting build on first failure as requested. Error [1027] unable to locate stddef.h Error - could not find file c018i.o. …

JavaSE基礎復習

1.數據類型&#xff1a; 1&#xff09;整數類型&#xff1a;byte、short、int、long 2&#xff09;浮點型&#xff1a;double、float 3&#xff09;字符型&#xff1a;char 4&#xff09;布爾類型&#xff1a;Boolean 5&#xff09;引用數據類型&#xff1a;Date、Array、…

第27篇:SELinux安全增強機制深度解析與OpenEuler實踐指南

SELinux安全增強機制深度解析與OpenEuler實踐指南 一、SELinux核心概念與安全體系架構 1.1 訪問控制機制演進與SELinux定位 在計算機系統安全領域&#xff0c;訪問控制機制經歷了從簡單到復雜的發展歷程。傳統的自主訪問控制&#xff08;DAC&#xff09; 以文件所有者權限為…

探訪成都芯谷金融中心文化科技產業園:解鎖城市發展新密碼

成都芯谷金融中心位于成都高新區核心地帶&#xff0c;是西部區域金融科技發展的重要引擎。該中心以文化為根基、科技為驅動&#xff0c;構建起多功能產業生態&#xff0c;顯著推動成都數字經濟與國際競爭力提升。 文化與科技融合的核心場景 該中心深度融合四川傳統文化元素與…

[論文閱讀] 人工智能 | 機器學習系統構思新方法:Define-ML 解決傳統 ideation 痛點

機器學習系統構思新方法&#xff1a;Define-ML 解決傳統 ideation 痛點 論文信息 article{alonso2025define-ml,title{Define-ML: An Approach to Ideate Machine Learning-Enabled Systems},author{Alonso, Silvio and Santos Alves, Antonio Pedro and Romao, Lucas and Lo…

Spring AI Alibaba 入門指南:打造企業級 AI 應用

一、前言 隨著大模型和人工智能技術的飛速發展&#xff0c;越來越多的企業開始嘗試將 AI 能力集成到自己的業務系統中。阿里巴巴作為國內最早布局 AI 的公司之一&#xff0c;推出了多個優秀的開源項目與云服務&#xff0c;其中 Spring AI Alibaba 就是為 Java 開發者量身打造的…

《AI顛覆編碼:GPT-4在編譯器層面的奇幻漂流》的深度技術解析

一、傳統編譯器的黃昏&#xff1a;LLVM面臨的AI降維打擊 1.1 經典優化器的性能天花板 // LLVM循環優化Pass傳統實現&#xff08;LoopUnroll.cpp&#xff09; void LoopUnrollPass::runOnLoop(Loop *L) {unsigned TripCount SE->getSmallConstantTripCount(L);if (!TripCou…