使用Python从PDF文件中提取、转换图像

云课堂学Python 2024-04-19 22:29:22
本文的任务是从 PDF 文件中提取图像,并使用 Python 中将 PDF 页面转换为图像。为了实现使用 Python 从 PDF 文件中提取图像,需要安装使用 Fitz、PyMuPDF、Pillow 库。 Fitz 库是一个图像处理库,主要用于打开 PDF、TIFF 和 JPEG 格式的图像,读取和写入 PDF 文件,提取 PDF 页面以及在页面上进行标记和注释。 PyMuPDF 是一个基于 Python 的开源 PDF 处理库,提供了一系列的 PDF 文档处理功能。 从 PDF 中提取图像import fitz # 设置 PDF 文件路径file = "6.pdf"# 打开 PDF 文件 pdf_file = fitz.open(file) # 遍历 PDF 页面 for page_index in range(len(pdf_file)): # 获取 PDF 页面 page = pdf_file[page_index] # 获取页面上所有图像 image_list = page.get_images() # 输出此页面中找到的图像数量 if image_list: print( f"[+] 在页面:{page_index},总共发现 {len(image_list)} 张图片。") else: print(f"[+] 在页面:{page_index},没有发现图片。") for image_index, img in enumerate(page.get_images(), start=1): # 获取图像的XREF编号和图像数据 xref = img[0] pix = fitz.Pixmap(pdf_file, xref) # 保存图像 if str(fitz.csRGB) == str(pix.colorspace): img_path = f'image{page_index+1}_{xref}.png' pix.save(img_path)print(f"[+] 已保存所有图片。") 以上代码运行后会保存 PDF 文件中的所有图像并有以下输出: [+] 在页面:0,总共发现 1 张图片。[+] 在页面:1,没有发现图片。[+] 已保存所有图片。将 PDF 页面转换为图像如果将 PDF 页面转换为图像,只需要遍历所有 PDF 页面,使用 get_pixmap() 方法将 PDF 转换为图像,然后保存图像。 import fitz doc = fitz.open('1.pdf') for page in doc: pix = page.get_pixmap(matrix=fitz.Identity, dpi=None, colorspace=fitz.csRGB, clip=None, alpha=True, annots=True) pix.save(f"pdfimage-{page.number}.png") 以上代码将 PDF 页面转换为 PNG 图像,PNG 图像可以实现背景透明。如果需要保存 JPG 图像,需要去掉 get_pixmap() 中的参数 alpha=True。
0 阅读:0

云课堂学Python

简介:感谢大家的关注