利用 Python PyPDF2库轻松提取PDF文本(及其他高级操作)

2023-11-12

当需要从PDF文件中提取文本时,Python中的PyPDF2库是一个非常有用的工具。无论您是需要分析PDF文档中的内容还是需要在文档中搜索特定的信息,PyPDF2都可以帮助您轻松实现这些任务。

在本文中,我们将探讨如何使用PyPDF2库提取PDF文件中的文本,并提供一些示例代码来帮助您入门。

安装PyPDF2库

首先,您需要安装PyPDF2库。您可以使用pip来安装它:

pip install PyPDF2

技术交流

技术要学会分享、交流,不建议闭门造车。一个人可以走的很快、一堆人可以走的更远。

本文文章由粉丝的分享、推荐,资料干货、资料分享、数据、技术交流提升,均可加交流群获取,群友已超过2000人,添加时最好的备注方式为:来源+兴趣方向,方便找到志同道合的朋友。

方式①、添加微信号:pythoner666,备注:来自CSDN + 加群
方式②、微信搜索公众号:Python学习与数据挖掘,后台回复:加群

打开PDF文件,并读取内容

让我们从一个简单的示例开始。假设我们有一个名为"sample.pdf"的PDF文件,并且我们想要提取其中的文本内容。

import PyPDF2

# 打开PDF文件
pdf_file = open('YOLOv1.pdf', 'rb')

# 创建一个PDF对象
pdf_reader = PyPDF2.PdfReader(pdf_file)

# 获取PDF文件中的页面数量
num_pages = len(pdf_reader.pages)

# 创建一个空字符串,用于存储提取的文本
text = ""

# 循环遍历每一页并提取文本
for page_num in range(num_pages):
    page = pdf_reader.pages[page_num]
    text += page.extract_text()

# 关闭PDF文件
pdf_file.close()

# 打印提取的文本
print(text)

以上代码将打开名为"YOLOv1.pdf"的PDF文件,遍历每一页并将文本内容提取到一个字符串中。最后,它会打印提取的文本。

图片

提取结果

高级用法

除了基本的文本提取,PyPDF2还提供了其他功能,例如合并多个PDF文件、旋转页面、添加书签等。让我们详细讨论一些高级用法,并提供相应的代码示例。

合并多个PDF文件

有时,您可能需要将多个PDF文件合并成一个文件。PyPDF2允许您执行此操作。

from PyPDF2 import PdfWriter

merger = PdfWriter()

for pdf in ["M:\YOLOv1.pdf", "M:\YOLOv2.pdf"]:
    merger.append(pdf)

merger.write("M:\merged.pdf")
merger.close()

以上代码将打开名为’YOLOv1.pdf’和’YOLOv1.pdf’的两个PDF文件,将它们的内容合并到一个新的PDF文件’merged.pdf’中。

旋转页面

有时,PDF文件中的页面可能需要旋转。使用PyPDF2,您可以旋转页面以适应您的需求。

import PyPDF2

# 打开PDF文件
pdf_file = open('M:\YOLOv1.pdf', 'rb')

# 创建PDF对象
pdf_reader = PyPDF2.PdfReader(pdf_file)

# 创建一个新的PDF对象
pdf_writer = PyPDF2.PdfWriter()

# 旋转第一页90度
page = pdf_reader.pages[0]
page.rotate(90)
pdf_writer.add_page(page)

# 将未旋转的页面添加到新文件中
for page_num in range(1, len(pdf_reader.pages)):
    page = pdf_reader.pages[page_num]
    pdf_writer.add_page(page)

# 创建一个新的PDF文件并保存旋转后的内容
output_pdf = open('M:\YOLOv1-rd.pdf', 'wb')
pdf_writer.write(output_pdf)

# 关闭所有打开的文件
pdf_file.close()
output_pdf.close()

以上代码将打开名为’YOLOv1.pdf’的PDF文件,旋转第一页90度,并将旋转后的页面保存到新的PDF文件’YOLOv1-rd.pdf’中。

添加书签

您还可以使用PyPDF2在PDF文件中添加书签,以便更轻松地导航和查找内容。

以上代码将打开名为’YOLOv1.pdf’的PDF文件,将其内容复制到新的PDF文件’YOLOv1-copy.pdf’中,并在第一页和第六页添加了两个书签。

import PyPDF2

# 打开PDF文件
pdf_file = open('M:\YOLOv1.pdf', 'rb')

# 创建PDF对象
pdf_reader = PyPDF2.PdfReader(pdf_file)

# 创建一个新的PDF对象
pdf_writer = PyPDF2.PdfWriter()

# 循环遍历每一页并将页面添加到新文件中
for page_num in range(len(pdf_reader.pages)):
    page = pdf_reader.pages[page_num]
    pdf_writer.add_page(page)

# 添加书签
pdf_writer.add_bookmark('Chapter 1', 0)  # 在第一页添加一个名为"Chapter 1"的书签
pdf_writer.add_bookmark('Chapter 2', 5)  # 在第六页添加一个名为"Chapter 2"的书签

# 创建一个新的PDF文件并保存带有书签的内容
output_pdf = open('M:\YOLOv1-copy.pdf', 'wb')
pdf_writer.write(output_pdf)

# 关闭所有打开的文件
pdf_file.close()
output_pdf.close()

结论

使用PyPDF2库,您可以轻松地从PDF文件中提取文本,这对于数据分析、信息检索和自动化任务非常有用。希望这篇文章和示例代码有助于您开始使用PyPDF2进行PDF文本提取。如若需要其他高级用法,例如比例调整、放缩等操作,可以访问PyPDF2的官方网站查看其他示例。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

利用 Python PyPDF2库轻松提取PDF文本(及其他高级操作) 的相关文章

随机推荐

  • obs上传文件到服务器,文件上传到obs

    文件上传到obs 内容精选 换一换 设备上报文件上传结果 Topic oc devices device id sys events upServiceEvent定义表paras参数列表 从OBS导入数据到集群之前 需要提前准备数据源文件
  • Vue3——Axios(网络请求库)

    文章目录 求一键三连 前言 认识axios 使用Axios 常见请求演示 配置选项 baseURL all 创建axios实例 请求拦截 掌握 对axios的类的封装 掌握 老师封装好的一个更完全的axios库 求一键三连 希望大家看完觉得
  • Web3j签名与验签

    闲时 给大家讲讲本人在做项目过程中涉及到的区块链签名相关业务 希望对做区块链行业的同行有所帮助 主要是针对Java程序员围绕web3j库进行区块链以太坊开发 本地签名与验签 代码实例 Description Web3j签名验签 public
  • 什么叫基本表?什么是视图?二者的区别和联系是什么?

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 视图 在SQL中 视图是外模式一级数据结构的基本单位 它是从一个或几个基本表中导出的 表 是从现有基本表中抽取若干子集组成用户的 专用表 基本表 基本表的定义指建立基本关系
  • minio怎么连接文件服务器,【FastAPI基础】17.2、接入docker minio文件服务器操作文件,附源码...

    引言 最近工作中有机会接触FastAPI这个框架 所以就把官方文档看了一遍 对框架的各个特性及使用方法做了总结 会逐步的发出来 希望对您有用 如果您之前接触过python的其他框架 看起来会非常简单和顺畅 其实就是很简单 废话不多说 直接上
  • [Error] invalid operands to binary ^ (have ‘double‘ and ‘float‘)

    C C 中不能直接使用 在C C 中不能使用 来表示指数 只能用 如果想使用指数 只能建立循环多次相乘或者直接用乘法写出多个 下面是我的代码 注释部分为原来使用的指数形式 会报以上错误 或者引用数学函数 在前面加上 include
  • Python3 基本数据类型(List(列表))

    Python3 基本数据类型 List 列表 List 列表 是 Python 中使用最频繁的数据类型 列表可以完成大多数集合类的数据结构实现 列表中元素的类型可以不相同 它支持数字 字符串甚至可以包含列表 所谓嵌套 列表是写在方括号 之间
  • 2023国赛数学建模思路 - 案例:最短时间生产计划安排

    文章目录 0 赛题思路 1 模型描述 2 实例 2 1 问题描述 2 2 数学模型 2 2 1 模型流程 2 2 2 符号约定 2 2 3 求解模型 2 3 相关代码 2 4 模型求解结果 建模资料 0 赛题思路 赛题出来以后第一时间在CS
  • 传奇服务端GOM引擎和GEE引擎区别在哪里?

    关于GameOfMir跟GEE引擎之间的区别简单说Gom引擎支持了BDE数据库 Access数据库 而GEE目前还没有支持BDE数据库 mysql数据库可惜mysql数据库支持还不完善 引擎没有绝对的好坏主要是在使用上操作上功能都差不多今天
  • 【安利】mac免费开源文字识别-使用脚本和快捷指令-可识别中文(利用macOCR)

    前言 在mac上 常用的截图文本识别软件有TextScanner iText等等 但是它们都是付费的 这次我无意发现了利用脚本和苹果快捷指令就可以使用的开源截图文本识别软件 推荐给大家 github地址为 schappim macOCR G
  • word2vec中文相似词计算和聚类的使用说明及c语言源码

    word2vec相关基础知识 下载安装参考前文 word2vec词向量中文文本相似度计算 目录 word2vec使用说明及源码介绍 1 下载地址 2 中文语料 3 参数介绍 4 计算相似词语 5 三个词预测语义语法关系 6 关键词聚类 1
  • Django 运行报错 Manager isnt accessible via Category instances

    错误 Manager isn t accessible via Category instances 原因 views handler里面写错 category s Category objects all 正确的写法是 category
  • 如何运用krpano生成第一全景项目

    使用droplet制作 生成一个全景 下载好krpano包后 解压文件夹 可以看到文件夹下有诸多文件 这时打开全景图片 拖入 droplet bat 文件 马上立刻就生成一个全景项目文件了 打开新生成的文件夹 打开tour html文件 用
  • Linux磁盘分区UUID查看和修改

    查看磁盘的UUID 方法1 root ac810 blkid dev sda2 UUID 4e87d18b 3223 4f9d aa48 2bd450ad33d0 TYPE ext4 PARTUUID 337a99de 78d8 4d7d
  • R语言-画散点图

    plot 函数 plot cars dist cars speed y x main XXX 画标题 xlab XXX X坐标轴标题 ylab XXX Y坐标轴标题 xlim c 0 30 设置X轴范围为从0到30 ylim c 0 140
  • sklearn中的fit_transform、获取特征、标签转换

    skearn中有数据预处理的功能 如fit transform 和fit transform fit 求得训练集X的均值 方差 最大值 最小值 这些训练集X固有的属性 transform 在fit的基础上 进行标准化 降维 归一化等操作 f
  • Linux如何检查目录大小

    1 查看当前文件目录各个文件夹大小 du h max depth 1 查看指定目录 du h max depth 1 path 2 查看当前目录下所有目录及子目录大小 du h 代表当前目录下 也可以换成一个明确的路径 h表示用K M G的
  • 基于opencv-python的人脸识别和鸟图识别

    目录 图像识别 人脸识别 鸟图识别 一 人脸识别 即使是地铁挤压的人脸 也是有尊严的 值得被检测 经过 OpenCV 的努力 成功检测 左图是正常被识别的人脸 中图由于挤地铁人脸已不可识别 右图OpenCV单应性变换后 拯救了被miss的人
  • Docker部署Jupyter

    Docker部署Jupyter Docker安装 拉取镜像 docker pull jupyter base notebook 创建挂载目录 mkdir p opt jupyter jovyan chmod 777 opt jupyter
  • 利用 Python PyPDF2库轻松提取PDF文本(及其他高级操作)

    当需要从PDF文件中提取文本时 Python中的PyPDF2库是一个非常有用的工具 无论您是需要分析PDF文档中的内容还是需要在文档中搜索特定的信息 PyPDF2都可以帮助您轻松实现这些任务 在本文中 我们将探讨如何使用PyPDF2库提取P