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())
相关推荐
卡比巴拉—林12 小时前
Linux SSH免密登录配置(双向免密)
linux·运维·ssh
NineData13 小时前
NineData 5.0 产品发布和生态伙伴大会,圆满举办!
运维·数据库·人工智能
oi..13 小时前
SRC 实战复盘:SSRF 漏洞挖掘、自动化检测及流量插件优化(含Burp suite 25.1.2文件)
笔记·web安全·网络安全·自动化·系统安全·安全架构
薛定猫AI13 小时前
【技术干货】AI Agent 自动化业务流程实战:从零构建智能营销系统
运维·人工智能·自动化
香蕉鼠片13 小时前
Docker
运维·docker·容器
环流_13 小时前
【多线程初识】
linux·运维·服务器
CAAS_IFR_zp13 小时前
vConTACT3: 机器学习实现可扩展和系统的病毒层级分类
linux·运维·服务器
优化控制仿真模型13 小时前
【2026年】新大纲普通话考试真题题库50套(PDF电子版)
经验分享·pdf
杨云龙UP14 小时前
ODA-Oracle实践记录:通过Navicat导出导入表CSV文件并清理重复数据,处理OA待办延迟刷新问题_20260416
linux·运维·服务器·数据库·sql·mysql·oracle
QC777LX14 小时前
传统电商专员转型AI电商运营师:选品到投放自动化流程
运维·人工智能·自动化