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.tpcf.cn/diannao/88932.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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…