用Python玩转PDF:文字提取/图片抓取/转PPT技巧(附完整代码)

阅读此文:你将学会如何从PDF中提取文字、图片、一键转成PPT

🌈Hi,小伙伴们~  关注我,带您了解更多的 Python 实用技巧

你是不是也遇到过这些烦恼:

  • 想批量取PDF中文字,却要花钱买Adobe会员

  • 需要PDF里的图片,只能一张张截图保存

  • 要PDF转PPT,在线工具要收费又怕泄露隐私

🎯今天,教你用Python解决这些烦恼,文件无需上传网络安全放心,用几行代码就能快速搞定

📝 场景举例:

🔍有一份《安徽黄山风景.pdf》里面有多张图片,有描述的文字,如下图所示:

图片

📚 现实需求:

☘️需从《安徽黄山风景.pdf》中提取PDF中所有的照片,描述文字,且将整份的安徽黄山风景.pdf文件转换成安徽黄山风景.ppt文件

Python 解决方案:

Python中能实现上述需求PDF第三方库有很多,今天介绍的2个轻量且处理速度极快的第三方库PyMuPDF/Spire,将用PyMuPDF演示如何提取PDF的文字和图片、用Spire演示PDF转换PPT

PyMuPDF简介

📂PyMuPDF (fitz) 诞生于2013年,是个人开发的一个高性能、免费、开源、维护活跃的PDF 处理库,适用于复杂操作(如文本提取、修改、渲染)等操作

Spire简介

📂Spire 诞生于2010年,是由中国的 E-iceblue 公司开发的一系列文档处理库,主要用于PDF、Word、Excel、PPT 等文件的 创建、编辑、转换和提取数据,有免费版(能处理10页文档)和收费版2种

准备工作:安装必备工具

在开始前,需安装这2个库,在命令行输入:

pip install pymupdf spire.pdf

🌱提取《安徽黄山风景.pdf》文字,代码如下:

import fitz  # 导包PyMuPDF
# 定义读取PDF文字的函数
def extract_text_with_pymupdf(pdf_path, output_txt_path=None):
    text = ""
    with fitz.open(pdf_path) as doc:
        # 遍历每一页
        for page in doc:
            text += page.get_text()
    # 另存为txt文件
    if output_txt_path:
        with open(output_txt_path, "w", encoding="utf-8") as f:
            f.write(text)
        print(f"文本已保存到: {output_txt_path}")
    return text
# 替换为你的PDF文件路径、保存路径
text = extract_text_with_pymupdf("安徽黄山风景.pdf", "安徽黄山风景.txt")
print(text)

结果展示:

图片

🌱提取《安徽黄山风景.pdf》图片,代码如下:

import fitz  # 导包PyMuPDF
import os
def extract_images_from_pdf(pdf_path, output_folder):
    # 确保输出文件夹存在
    os.makedirs(output_folder, exist_ok=True)
    # 打开PDF文件
    pdf_document = fitz.open(pdf_path)
    # 遍历每一页
    for page_num in range(len(pdf_document)):
        page = pdf_document.load_page(page_num)
        # 获取页面中的所有图片
        image_list = page.get_images(full=True)
        # 遍历并保存图片
        for img_index, img in enumerate(image_list):
            xref = img[0]
            base_image = pdf_document.extract_image(xref)
            image_bytes = base_image["image"]
            # 图片保存格式:页码+图片序列
            image_ext = base_image["ext"]
            image_filename = f"page_{page_num+1}_img_{img_index+1}.{image_ext}"
            image_path = os.path.join(output_folder, image_filename)
            with open(image_path, "wb") as image_file:
                image_file.write(image_bytes)
    print(f"提取完成,图片已保存到: {output_folder}")
# 替换为你的PDF文件路径、保存路径
extract_images_from_pdf("安徽黄山风景.pdf", "安徽黄山风景.images")

⚠️备注:若图片较多,为方便图片查找存储格式为:页码+图片序列.jpeg 

结果展示:

图片

🌱《安徽黄山风景.pdf》转PPT,代码如下:

from spire.pdf import PdfDocument, FileFormat
# 定义PDF转PPT的函数
def pdf_to_ppt(pdf_path, ppt_path):
    # 创建PdfDocument类的实例
    pdf = PdfDocument()
    # 加载PDF文件
    pdf.LoadFromFile(pdf_path)
    # 将PDF保存为PPT
    pdf.SaveToFile(ppt_path, FileFormat.PPTX)
    pdf.Close()
    print("PPT转换成功!")
pdf_to_ppt("安徽黄山风景.pdf", "安徽黄山风景.pptx")

结果展示:

图片

转换后的PPT如下图所示:

图片

⚠️备注:Spire库可以简单便捷的实现PDF转PPT,同在线转换的收费软件功能一致,免费版本转换后会有一行红色水印在固定位置,手动删除水印即可,如果PDF文件页数较多可先切分为每10页/份,再进行转换

📌另,若为扫描版的PDF文件,其本质是图片而非可选中文本,直接转换效果不理想,需借助OCR光学字符识别技术协助处理

📌至此从PDF文件中批量提取文字、图片、一键转PPT你已轻松拿捏

🏁结语:

🚀希望这篇教程能帮您解决PDF处理的困扰!

👉若觉得有用,收藏起来,需要时随时翻出来~

📌也可关注微信 公众号:“ Python-伍六七 ”,将持续输出Python 实用技巧 与 干货案例 !

Python 操作PDF技巧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值