当前位置:   article > 正文

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

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


本文的任务是从 PDF 文件中提取图像,并使用 Python 中将 PDF 页面转换为图像。为了实现使用 Python 从 PDF 文件中提取图像,需要安装使用 Fitz、PyMuPDF 库。

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"[+] 已保存所有图片。") 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

以上代码运行后会保存 PDF 文件中的所有图像并有以下输出:

[+] 在页面:0,总共发现 1 张图片。
[+] 在页面:1,没有发现图片。
[+] 已保存所有图片。
  • 1
  • 2
  • 3

将 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") 
  • 1
  • 2
  • 3
  • 4
  • 5

以上代码将 PDF 页面转换为 PNG 图像,PNG 图像可以实现背景透明。如果需要保存 JPG 图像,需要去掉 get_pixmap() 中的参数 alpha=True。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/479635
推荐阅读
相关标签
  

闽ICP备14008679号