使用 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"[+] 已保存所有图片。") 

以上代码运行后会保存 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。

相关推荐

  1. 使用 Python PDF 文件提取转换图像

    2024-04-21 08:42:08       40 阅读
  2. python:PyPDF2 PDF文件提取目录

    2024-04-21 08:42:08       58 阅读
  3. 使用Python提取PDF文本和表格数据

    2024-04-21 08:42:08       44 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-21 08:42:08       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-21 08:42:08       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-21 08:42:08       82 阅读
  4. Python语言-面向对象

    2024-04-21 08:42:08       91 阅读

热门阅读

  1. 修改用户名密码MySQL 5.6/5.7/8.X各不相同

    2024-04-21 08:42:08       39 阅读
  2. VMWare ubuntu 18.04 网卡丢失

    2024-04-21 08:42:08       34 阅读
  3. js的reduce

    2024-04-21 08:42:08       38 阅读
  4. 富格林:深究受害原因安全规避

    2024-04-21 08:42:08       39 阅读