python将 PDF 转换为图片
使用工具(如 PyMuPDF、PDFMiner 等)从 PDF 文件中提取图像内容。如
PyMuPDF使用将pdf转化为图片。
使用 PyMuPDF 将 PDF 转换为图片主要有两种方法:一种是直接提取 PDF 中嵌入的图片,另一种是将 PDF 的每一页渲染为图片。以下是两种方法的详细步骤和代码示例:
方法一:提取 PDF 中嵌入的图片
这种方法适用于 PDF 文件中已经嵌入了图片的情况。你可以直接提取这些图片并保存为文件。
示例代码:
Python
import fitz # PyMuPDF
import os
def extract_images_from_pdf(pdf_path, output_folder):
# 打开 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"{output_folder}/image_{page_num + 1}_{img_index + 1}.{image_ext}"
with open(image_filename, "wb") as image_file:
image_file.write(image_bytes)
print("图片提取完成")
# 使用示例
pdf_path = "example.pdf"
output_folder = "output_images"
os.makedirs(output_folder, exist_ok=True) # 确保输出文件夹存在
extract_images_from_pdf(pdf_path, output_folder)
方法二:将 PDF 的每一页渲染为图片
这种方法适用于将整个 PDF 页面转换为图片,而不仅仅是提取嵌入的图片。你可以指定页面的分辨率来控制输出图片的质量。
示例代码:
Python
import fitz # PyMuPDF
from PIL import Image
import os
def convert_pdf_to_images(pdf_path, output_folder, resolution=200):
# 打开 PDF 文件
pdf_document = fitz.open(pdf_path)
# 遍历 PDF 中的每一页
for page_number in range(len(pdf_document)):
page = pdf_document[page_number]
# 获取页面的原始大小(以点为单位)
zoom_x = resolution / page.rect.width
zoom_y = resolution / page.rect.height
# 使用最小的缩放比例以确保整个页面都适应目标分辨率
zoom = min(zoom_x, zoom_y)
# 创建一个矩阵来应用缩放和抗锯齿
mat = fitz.Matrix(zoom, zoom)
# 将 PDF 页面转换为图片
pix = page.get_pixmap(matrix=mat)
# 使用 PIL 的 Image 对象打开图片
image = Image.frombytes("RGB", (pix.width, pix.height), pix.samples)
# 保存图片
image_filename = f"{output_folder}/page_{page_number + 1}.png"
image.save(image_filename)
print(f"Saved {image_filename}")
# 关闭 PDF 文件
pdf_document.close()
# 使用示例
pdf_path = "example.pdf"
output_folder = "output_images"
os.makedirs(output_folder, exist_ok=True) # 确保输出文件夹存在
convert_pdf_to_images(pdf_path, output_folder, resolution=300)
注意事项
-
安装 PyMuPDF:确保你已经安装了 PyMuPDF 库,可以通过
pip install PyMuPDF命令安装。 -
输出文件夹:确保输出文件夹存在,或者在代码中创建它。
-
分辨率:在渲染页面为图片时,可以通过调整分辨率参数来控制输出图片的质量。
通过上述方法,你可以轻松地将 PDF 文件转换为图片,或者提取 PDF 中嵌入的图片。根据你的具体需求选择合适的方法即可。
浙公网安备 33010602011771号