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

2023-09-14 20:30:19

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

安装PyPDF2库

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

pip install PyPDF2


打开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文件,遍历每一页并将文本内容提取到一个字符串中。最后,它会打印提取的文本。

453a85d1c65cfa045b7c6e035b28cb48.png

提取结果

高级用法

除了基本的文本提取,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的官方网站查看其他示例。

·  END  ·

HAPPY LIFE

6b65be853e2398f4ea448a02f941da7a.png

本文仅供学习交流使用,如有侵权请联系作者删除

更多推荐

爬虫获取接口数据

上一讲讲的是获取静态网页数据的教程,适用于我们要爬取的数据在网页源代码中出现,但是还是有很多的数据是源代码中没有的,需要通过接口访问服务器来获得,下面我就来讲讲如何爬取这类数据。以巨潮资讯网爬取比亚迪企业年报为例。正常人的操作打开巨潮资讯网官网找到比亚迪的公告在分类里面选择筛选信息,找到自己想要的信息爬虫的思路获取请求

Vue 使用vue-pdf 显示pdf文件 切换页面 缩放 全屏 自动播放等

<template><divid="container"><!--上一页、下一页--><divclass="right-btn"><div@click="toFullOrExit"class="turn-btn"><span>{{isFull==1?"取消全屏":"全屏"}}</span></div><div@clic

ubuntu 22.04运行opencv4的c++程序遇到的问题

摘要:本文介绍一下在ubuntu系统中,运行一个最简单的opencv4程序都出问题的解决方法,并对其基本原理作简单阐述。解决问题的方法有很多,本文只提供其中一种。opencv版本是4.2.0,ubuntu版本是20.04查询opencv版本的指令是pkg-config--modversionopencv4,pkg-co

CRM客户管理系统主要用途

对于大多数企业而言业绩就是生命线,因此销售环节在企业管理过程中意义重大。面对愈发内卷的市场竞争企业就要借助CRM销售管理系统改善各个环节存在的漏洞,占据优势。那么,销售管理系统的用途有哪些,接下来我们从下面3个功能来介绍。1.客户管理通过销售管理系统中的商机管理等功能可以将系统中的客户信息关联整合,一方面保证客户数据安

性能测试知多少?怎样开展性能测试

看到好多新手,在性能需求模糊的情况下,随便找一个性能测试工具,然后就开始进行性能测试了,在这种情况下得到的性能测试结果很难体现系统真实的能力,或者可能与系统真实的性能相距甚远。与功能测试相比,性能测试在技术层面具有更大的复杂性。在以往的测试流程中,性能测试只是测试流程的一部分,是系统或验收测试的一个可选项。但随着测试技

计算机毕业设计 基于SSM+Vue的志愿者招募网站的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌🍅文末获取源码联系🍅👇🏻精彩专栏推荐订阅👇🏻不然下次找不到哟————————————————计算机毕业设计题目《10

设计模式:装饰器模式

目录组件代码实现源码中使用优缺点总结装饰器模式是一种结构型设计模式,用于在不改变原有对象的基础上,动态地给对象添加额外的功能。装饰器模式通过将对象包装在一个装饰器对象中,然后逐层地添加装饰器,实现对对象的功能进行增强或修改。装饰器模式可以在运行时动态地添加、删除或修改对象的行为,而无需修改原始对象的结构。这种模式常用于

私人云盘系统对比

fileRun、NextCloud、ownCloud、Seafile、CloudReve、可道云https://www.bilibili.com/video/BV1vD4y1e78K/seafile页面不太好看同步功能好seafile的在线预览功能做的很差不支持office在线预览稳定NextCloud(OwnClou

Python —— pytest框架

1、认识pytest框架1、搭建自动化框架的思路与流程1、搭建自动化测试框架的思路和流程,任意测试手段流程都是一致的:手工测试、自动化测试、工具测试手工测试:熟悉业务——写用例——执行用例并记录结果——生成测试报告自动化测试:熟悉业务——写自动化用例(来自于手工测试用例,格式转化为代码)——代码表达用例——代码收集测试

LEETCODE 169 189 121 122 55

169多数元素给定一个大小为n的数组nums,返回其中的多数元素。多数元素是指在数组中出现次数大于⌊n/2⌋的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。classSolution{public:intmajorityElement(vector<int>&nums){sort(nums.begin(

win10如何把繁体字改成简体字

win10如何把繁体字改成简体字WBOY发布:2023-07-0913:17:05转载3431人浏览过win10客户在开展文字输入的时候遇到了字体变为繁体字的状况,那么如何把繁体字改成简体字呢?是否有快捷键呢?win10繁体字改简体字的快捷键是Ctrl+Shift+F,你也可以在系统的语言设置中进行操作,开启微软拼音的

热文推荐