python自动化操作PDF,拆分pdf合并pdf,提取pdf内容

第三方库介绍

Python 操作 PDF 会用到两个库,分别是:PyPDF2 和 pdfplumber。

PyPDF2 可以更好的读取、写入、分割、合并PDF文件;

pdfplumber 可以更好的读取 PDF 文件中内容和提取 PDF 中的表格,主要应用于机器生成的 PDF,而非扫描的PDF文档。

由于这两个库都不是 Python 的标准库,所以在使用之前都需要单独安装,在终端中依次输入如下命令进行安装:

pip install PyPDF2

pip install pdfplumber

安装完成后显示 success 则表示安装成功。

课程准备

资源文件解压后放置D:\自动化 文件夹下,最终资源路径为 D:\自动化\pdf ,内容分布如下图:

为了保证学习的流畅性,请提前创建好相应的文件夹,将资源放置在相应位置。

拆分PDF

将一个完整的 PDF 拆分成几个小的 PDF,因为主要涉及到 PDF 整体的操作,需要用到 PyPDF2 这个库

拆分的大概思路如下:

读取 PDF 的整体信息、总页数等

按照页数每页拆分为一个PDF

将小的文件块重新保存为新的 PDF 文件

代码如下:

python 复制代码
'''拆分思路
读取pdf的整体信息,总页数等
按照页数每页拆分为一个pdf
将小的文件快重新保存为新的pdf文件'''
import os.path
from PyPDF2 import PdfReader,PdfWriter

pdf_path = r"D:\自动化\第12讲.pdf"
out_dir = r"D:\自动化\拆分"

if not os.path.exists(out_dir):
    os.makedirs(out_dir)

# 获取 PdfFileReader 对象
pdf_reader = PdfReader(pdf_path)

# 获取页面数量
page_count = len(pdf_reader.pages)

for i in range(page_count):
    pdf_writer = PdfWriter()
    page = pdf_reader.pages[i]
    pdf_writer.add_page(page)
    out_path = os.path.join(out_dir, f"{i + 1}.pdf")#将页码从 0 开始改为从 1 开始(即 i + 1),以便文件名从 1.pdf 开始更符合常规。
    with open(out_path, "wb") as out:
        pdf_writer.write(out)

合并PDF

比起拆分来,合并的思路更加简单:

确定要合并的 文件顺序

循环追加到一个文件块中

保存成一个新的文件

代码如下:

python 复制代码
from PyPDF2 import PdfReader, PdfWriter
import os

pdf_dir = r"D:\自动化\拆分"
out_path = r"D:\自动化\merge.pdf"

# 列出所有的 PDF 文件
pdf_list = [f for f in os.listdir(pdf_dir) if f.endswith('.pdf')]

print(pdf_list )
pdf_writer = PdfWriter()

# 遍历所有 PDF 文件
for pdf_file in pdf_list:
    path = os.path.join(pdf_dir, pdf_file)
    pdf_reader = PdfReader(path)

    # 遍历 PDF 文件的每一页
    for page in pdf_reader.pages:
        pdf_writer.add_page(page)

# 将合并后的 PDF 写入到输出文件
with open(out_path, "wb") as out:
    pdf_writer.write(out)

代码介绍:

提取文字内容

涉及到具体的 PDF 内容操作需要用到 pdfplumber 这个库

在进行文字提取的时候,主要用到 extract_text() 这个函数

python 复制代码
import pdfplumber
pdf_path = r"D:\自动化\道德经.pdf"
with pdfplumber.open(pdf_path) as pdf:#使用 pdfplumber.open 方法打开指定路径的 PDF 文件,并将其赋值给 pdf 变量。with 语句确保文件在操作完成后正确关闭。
# 读取所有内容
    for page in pdf.pages:
        print(page.extract_text())
    # 读取第一页的文字内容
    # page = pdf.pages[0]
    # print(page.extract_text())
相关推荐
搬砖的小码农_Sky7 小时前
Ubuntu Server 命令行关机指南
linux·运维·ubuntu
yangmf20407 小时前
如何使用证书认证连接 Easysearch
运维·elasticsearch·搜索引擎
zzzsde7 小时前
【Linux】基础指令(2):理解Linux的指令和核心概念
linux·运维·服务器
守城小轩8 小时前
基于Chrome140的TK账号自动化(关键词浏览)——脚本撰写(二)
自动化·rpa·浏览器自动化·tk自动化·rpa自动化
2501_938773878 小时前
从 0 到 1 搭建 TikTok 自动化系统:内容、投放、客服全环节自动化实践
运维·自动化
wanhengidc8 小时前
云手机 基于云计算的虚拟手机
运维·服务器·游戏·智能手机·云计算
泽众云测试8 小时前
PRA(流程机器人自动化)与智能体(AI Agent)主要区别与分析
机器人·自动化·rpa
塔能物联运维8 小时前
物联网设备固件版本智能管理与自动化更新策略
运维·物联网·自动化
凝新科技8 小时前
数字营销软件完整指南|CRM、CDP、自动化平台 2025
运维·自动化
小小的木头人9 小时前
Keepalived 多节点负载均衡配置
运维