阅读此文:你将学会如何从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 实用技巧 与 干货案例 !