使用Python从PDF中提取图片和图片信息(坐标、宽度和高度等)

 更新时间:2025年02月24日 11:13:31   作者:nuclear2011  
PDF文件作为一种广泛使用的电子文档格式,不仅包含文字信息,还可能包含各种图片、图表等视觉元素,在某些场景下,我们可能需要从PDF文件中提取这些图片,用于其他用途,这篇博客将探讨如何使用Python从PDF中提取图片以及图片的相关信息如坐标、宽度和高度等

引言

PDF文件作为一种广泛使用的电子文档格式,不仅包含文字信息,还可能包含各种图片、图表等视觉元素。在某些场景下,我们可能需要从PDF文件中提取这些图片,用于其他用途,比如插入到演示文稿中,或者进行进一步的编辑和处理。手动从PDF中提取图片是一项耗时的工作,尤其是当需要处理大量PDF文档时。而使用Python自动化这一过程,可以大幅节省时间和精力。这篇博客将探讨如何使用Python从PDF中提取图片以及图片的相关信息如坐标、宽度和高度等。

使用工具

本文使用的是Spire.PDF for Python库来实现从PDF中提取图片和图片信息。

你可以通过在终端运行以下命令来从PyPI安装Spire.PDF for Python:

pip install Spire.PDF

Python从PDF的特定页面中提取图片

要从PDF的特定页面中提取图片,首先需要使用PdfDocument.Pages[page_index]属性访问目标页面。之后,使用PdfImageHelper.GetImagesInfo(page) 方法获取该页面上的图片信息。最后使用PdfImageInfo.Image.Save() 方法将每个图片保存为独立的图片文件。具体步骤如下:

  • 创建 PdfDocument 类的实例并使用 PdfDocument.LoadFromFile() 方法加载 PDF 文档。
  • 使用PdfDocument.Pages[page_index]属性访问目标页面,这里的page_index表示页面的索引,从0开始计数。
  • 创建 PdfImageHelper 实例。
  • 使用 PdfImageHelper.GetImagesInfo(page) 方法获取目标页面中的图片信息。
  • 循环遍历获取结果,使用 PdfImageInfo.Image.Save() 方法将每张图片保存为独立的图片文件。
from spire.pdf.common import *
from spire.pdf import *
import os
 
def extract_images_from_pdf_page(pdf_path, page_index, output_dir):
    """
    从 PDF 文件的指定页面中提取图片,并将其保存到指定的输出目录中。
    
    参数:
        pdf_path (str): PDF 文件的路径。
        page_index (int): 要提取图片的页面的索引值。
        output_dir (str): 输出图片文件的目录。
    """
    # 创建 PdfDocument 实例并加载 PDF 文件
    doc = PdfDocument()
    doc.LoadFromFile(pdf_path)
 
    # 获取需要提取图片的目标页面
    page = doc.Pages[page_index]
 
    # 创建 PdfImageHelper 实例
    image_helper = PdfImageHelper()
 
    # 获取目标页面的图片信息
    image_infos = image_helper.GetImagesInfo(page)
 
    image_count = 1
    # 提取并保存图片
    for image_index in range(len(image_infos)):
        # 指定输出文件名
        output_file = os.path.join(output_dir, f"Image-{image_count}.png")
        # 将图片保存为图片文件
        image_infos[image_index].Image.Save(output_file)
        image_count += 1
 
    doc.Close()
 
# 使用示例
extract_images_from_pdf_page("示例.pdf", 1, "C:/Users/Administrator/Desktop/图片")

Python从PDF文档中提取图片

要从整个PDF文档中提取图片,只需要循环遍历文档中的页面,然后重复上面的步骤,从每个页面上提取图片信息,最后将图片保存为独立的图片文件即可。具体步骤如下:

  • 创建 PdfDocument 实例并使用 PdfDocument.LoadFromFile() 方法加载 PDF 文档。
  • 创建 PdfImageHelper 实例。
  • 循环遍历文档中的页面。
  • 使用 PdfImageHelper.GetImagesInfo(page) 方法获取每个页面中的图片信息。
  • 遍历获取结果,使用 PdfImageInfo.Image.Save() 方法将每张图片保存为图片文件。
from spire.pdf.common import *
from spire.pdf import *
 
def extract_images_from_pdf(pdf_path, output_dir):
    """
    从 PDF 文件中提取所有图片,并将其保存到指定的输出目录中。
    
    参数:
        pdf_path (str): 输入 PDF 文件的路径。
        output_dir (str): 输出图片文件的目录。
    """
    # 创建 PdfDocument 实例并加载 PDF 文件
    doc = PdfDocument()
    doc.LoadFromFile(pdf_path)
 
    # 创建 PdfImageHelper 实例
    image_helper = PdfImageHelper()
 
    image_count = 1
    # 循环遍历每个页面
    for page_index in range(doc.Pages.Count):
        page = doc.Pages[page_index]
        # 获取页面的图片信息
        image_infos = image_helper.GetImagesInfo(page)
 
        # 提取并保存图片
        for image_index in range(len(image_infos)):
            # 指定输出文件名
            output_file = os.path.join(output_dir, f"Image-{image_count}.png")
            # 将图片保存为图片文件
            image_infos[image_index].Image.Save(output_file)
            image_count += 1
 
    doc.Close()
 
# 使用示例
extract_images_from_pdf("示例.pdf", "C:/Users/Administrator/Desktop/图片")

Python从PDF中提取图片的坐标、宽度和高度等信息

要提取 PDF 文件中图片的信息,例如位置(X和Y坐标)、宽度和高度,可以使用 PdfImageInfo.Bounds.XPdfImageInfo.Bounds.YPdfImageInfo.Bounds.Width 和 PdfImageInfo.Bounds.Height 属性。具体步骤如下:

  • 创建 PdfDocument 实例并使用 PdfDocument.LoadFromFile() 方法加载 PDF 文档。
  • 创建 PdfImageHelper 实例。
  • 循环遍历文档中的页面。
  • 使用 PdfImageHelper.GetImagesInfo(page) 方法获取每个页面中的图片信息。
  • 遍历获取结果,使用 PdfImageInfo.Bounds.XPdfImageInfo.Bounds.YPdfImageInfo.Bounds.Width 和 PdfImageInfo.Bounds.Height 属性获取图片的坐标、宽度和高度。
from spire.pdf.common import *
from spire.pdf import *
 
def print_pdf_image_info(pdf_path):
    """
    打印 PDF 文件中图片的坐标、宽度和高度。
    
    参数:
        pdf_path (str): 输入 PDF 文件的路径。
    """
    # 创建 PdfDocument 实例并加载 PDF 文件
    doc = PdfDocument()
    doc.LoadFromFile(pdf_path)
 
    # 创建 PdfImageHelper 实例
    image_helper = PdfImageHelper()
 
    # 循环遍历每个页面
    for page_index in range(doc.Pages.Count):
        page = doc.Pages[page_index]
        # 获取页面的图片信息
        image_infos = image_helper.GetImagesInfo(page)
 
        # 打印图片的坐标位置、宽度和高度
        for image_index, image_info in enumerate(image_infos):
            print(f"第 {page_index + 1} 页, 第 {image_index + 1} 个图片:")
            print(f"  图片位置: ({image_info.Bounds.X}, {image_info.Bounds.Y})")
            print(f"  图片大小: {image_info.Bounds.Width} x {image_info.Bounds.Height}")
 
    doc.Close()
 
# 使用示例
print_pdf_image_info("示例.pdf")

以上就是使用Python从PDF中提取图片和图片坐标、宽度和高度等信息的全部内容。

到此这篇关于使用Python从PDF中提取图片和图片信息(坐标、宽度和高度等)的文章就介绍到这了,更多相关Python PDF提取图片信息内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python进程池的简单实现

    python进程池的简单实现

    本文主要介绍了python进程池的简单实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • python 普通克里金(Kriging)法的实现

    python 普通克里金(Kriging)法的实现

    这篇文章主要介绍了python 普通克里金(Kriging)法的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • Python自动发送邮件的方法实例总结

    Python自动发送邮件的方法实例总结

    这篇文章主要介绍了Python自动发送邮件的方法,结合实例形式总结分析了Python使用smtplib和email模块发送邮件的相关使用技巧与操作注意事项,需要的朋友可以参考下
    2018-12-12
  • Python将文本去空格并保存到txt文件中的实例

    Python将文本去空格并保存到txt文件中的实例

    今天小编就为大家分享一篇Python将文本去空格并保存到txt文件中的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • python使用str & repr转换字符串

    python使用str & repr转换字符串

    str() 是将 数值 转成字符串 repr() 是将一个对象 转成字符串 显示 看明白了么:str()是将一个对象转化成str对象 repr()是将一个对象可视化,使用字符串输出,使编程人员看到其的内部结构
    2016-10-10
  • Python基础之文本常量与字符串模板

    Python基础之文本常量与字符串模板

    这篇文章主要介绍了Python基础之文本常量与字符串模板,文中有非常详细的代码示例,对正在学习python的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-04-04
  • python 实现调用子文件下的模块方法

    python 实现调用子文件下的模块方法

    今天小编就为大家分享一篇python 实现调用子文件下的模块方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • python实现复制整个目录的方法

    python实现复制整个目录的方法

    这篇文章主要介绍了python实现复制整个目录的方法,涉及Python中shutil模块的相关操作技巧,需要的朋友可以参考下
    2015-05-05
  • Python类的继承用法示例

    Python类的继承用法示例

    这篇文章主要介绍了Python类的继承用法,结合实例形式分析了Python类的定义、继承等相关操作技巧,需要的朋友可以参考下
    2019-01-01
  • Python 字符串与数字输出方法

    Python 字符串与数字输出方法

    今天小编小编就为大家分享一篇Python 字符串与数字输出方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07

最新评论