Python 读取PDF文档内容 提取PDF文本和图片

2024-05-28 1761阅读

目录

Python 读取PDF文档内容 提取PDF文本和图片
(图片来源网络,侵删)

一、介绍

二、安装Python库

三、Python 实现PDF文本和图片提取/读取PDF文档内容

1、从整个PDF文档提取文本

2、从特定PDF页面提取文本

3、从特定PDF页面区域提取文本

4、从整个PDF文档提取图片

5、从特定PDF页面提取图片


一、介绍

在当今的工作和生活中,PDF文档已经成为无处不在的文件格式。许多企业和机构选择将重要文件,如合同、报告等,保存为PDF格式以进行存储和管理。有时候,我们需要读取这些文档中的内容,包括文字和图片等,以便进一步分析文档内容、提取关键信息或将其集成到其他系统中。这篇文章将探讨如何通过Python实现PDF文本和图片的提取。

二、安装Python库

Python中有许多可以处理PDF的库,这篇文章使用的库是Spire.PDF for Python,它支持在多种场景下提取PDF文档中的文本和图片。此外还支持文档格式转换,例如PDF与图片互转,PDF转Word或Excel等。可以使用pip命令来安装它:

pip install Spire.PDF

下面我们来看如何借助这个库提取PDF文档中的文本和图片。

三、Python 实现PDF文本和图片提取/读取PDF文档内容

提取PDF文本和图片可以有多种场景,这里介绍一些常见的场景:

  • 从整个PDF文档提取文本
  • 从特定PDF页面提取文本
  • 从特定PDF页面区域提取文本
  • 从整个PDF文档提取图片
  • 从特定PDF页面提取图片

    1、从整个PDF文档提取文本

    从整个PDF文档中提取文本,大致步骤如下:

    • 加载PDF文档。
    • 遍历每个页面并提取页面的文本内容。
    • 将提取的文本保存到文本文件中。

      代码:

      from spire.pdf.common import *
      from spire.pdf import *
      # 定义一个从PDF文档提取文本的函数,参数分别为输入PDF文档的路径,存放提取文本的文本文档的路径
      def extract_text_from_pdf(file_path, output_file):
          # 创建PdfDocument类的实例
          doc = PdfDocument()
          # 加载PDF文档
          doc.LoadFromFile(file_path)
          # 创建list来存储提取的文本
          extracted_text = []
          # 遍历文档的页面
          for i in range(doc.Pages.Count):
              page = doc.Pages.get_Item(i)
              # 从页面提取文本并存储到list
              text = page.ExtractText(True)
              extracted_text.append(text)
          # 将提取的文本保存到文本文档
          with open(output_file, "w", encoding="utf-8") as text_file:
              text_file.write("\n".join(extracted_text))
          doc.Close()
      # 调用函数实现从PDF提取文本
      file_path = "测试.pdf"
      output_file = "提取文本.txt"
      extract_text_from_pdf(file_path, output_file)
      

      2、从特定PDF页面提取文本

      从指定的PDF页面提取文本,大致步骤如下:

      • 加载PDF文档。
      • 通过页面索引获取指定页面。
      • 提取页面的文本内容。
      • 将提取的文本保存到文本文件中。

        代码:

        from spire.pdf.common import *
        from spire.pdf import *
        # 定义一个从PDF文档指定页面提取文本的函数,参数分别为输入PDF文档的路径,需要提取文本的页面索引(从0开始),存放提取文本的文本文档的路径
        def extract_text_from_page(file_path, page_num, output_file):
            # 创建PdfDocument类的实例
            doc = PdfDocument()
            # 加载PDF文档
            doc.LoadFromFile(file_path)
            # 根据页面索引获取特定页面
            page = doc.Pages[page_num]
            # 从该页面提取文本
            text = page.ExtractText(True)
            # 将提取的文本存储到文本文件
            with open(output_file, "w", encoding="utf-8") as text_file:
                text_file.write(text)
            doc.Close()
        # 调用函数实现从PDF指定页面提取文本
        file_path = "测试.pdf"
        page_num = 0  # 指定从中提取文本的页码(页码索引从0开始)
        output_file = "提取页面文本.txt"
        extract_text_from_page(file_path, page_num, output_file)
        

        3、从特定PDF页面区域提取文本

        从指定PDF页面区域提取文本,大致步骤如下:

        • 加载PDF文档。
        • 通过页面索引获取指定页面。
        • 指定需要提取文本内容的矩形区域的坐标、宽度和高度。
        • 从页面的指定矩形区域中提取文本。
        • 将提取的文本保存到文本文件中。

          代码:

          from spire.pdf.common import *
          from spire.pdf import *
          # 定义一个从PDF文档指定页面的指定区域提取文本的函数,参数分别为输入PDF文档的路径,需要提取文本的页面索引(从0开始),区域的X坐标,区域的Y坐标,区域的宽度,区域的高度,存放提取文本的文本文件路径
          def extract_text_from_page_area(file_path, page_num, x, y, width, height, output_file):
              # 创建PdfDocument实例
              doc = PdfDocument()
              # 加载PDF文档
              doc.LoadFromFile(file_path)
              # 根据页面索引获取特定页面
              page = doc.Pages[page_num]
              # 定义一个矩形来指定文本提取的区域
              rectangle = RectangleF(x, y, width, height)
              # 从页面的指定矩形区域中提取文本
              text = page.ExtractText(rectangle)
              # 将提取的文本存储到文本文件
              with open(output_file, "w", encoding="utf-8") as text_file:
                  text_file.write(text)
              doc.Close()
          # 调用函数实现从PDF指定页面的指定区域提取文本
          file_path = "测试.pdf"
          page_num = 0  # 指定从中提取文本的页码(页码索引从0开始)
          x = 0.0
          y = 180.0
          width = 500.0
          height = 200.0
          output_file = "提取页面区域文本.txt"
          extract_text_from_page_area(file_path, page_num, x, y, width, height, output_file)
          

          4、从整个PDF文档提取图片

          从整个PDF文档提取图片,大致步骤如下:

          • 加载PDF文档。
          • 遍历每个页面并提取页面上的图片。
          • 将提取的图片保存到文件夹中。

            代码:

            from spire.pdf.common import *
            from spire.pdf import *
            # 定义一个从PDF文档提取图片的函数,参数分别为输入PDF文档的路径,存放提取的图片的文件夹路径
            def extract_images_from_pdf(file_path, output_folder):
                # 创建PdfDocument类的实例
                doc = PdfDocument()
                # 加载PDF文档
                doc.LoadFromFile(file_path)
                # 创建list来存储提取的图片
                images = []
                # 遍历文档的页面
                for i in range(doc.Pages.Count):
                    # 获取当前页
                    page = doc.Pages.get_Item(i)
                    # 从页面提取图片并存储到list
                    for img in page.ExtractImages():
                        images.append(img)
                # 将图片保存到指定文件夹
                for i, image in enumerate(images):
                    image.Save(f"{output_folder}Image-{i+1}.png", ImageFormat.get_Png())
                doc.Close()
            # 调用函数实现从PDF提取图片
            file_path = "测试.pdf"
            output_folder = "文档图片/"
            extract_images_from_pdf(file_path, output_folder)
            

            5、从特定PDF页面提取图片

            从PDF文档的特定页面提取图片,大致步骤如下:

            • 加载PDF文档。
            • 通过页面索引获取指定页面。
            • 提取页面上的图片。
            • 将提取的图片保存到文件夹中。

              代码:

              from spire.pdf.common import *
              from spire.pdf import *
              # 定义一个从PDF文档指定页面提取图片的函数,参数分别为输入PDF文档的路径,需要提取图片的页码索引,存放提取的图片的文件夹路径
              def extract_images_from_pdf_page(file_path, page_num, output_folder):
                  # 创建PdfDocument类的实例
                  doc = PdfDocument()
                  # 加载PDF文档
                  doc.LoadFromFile(file_path)
                  # 创建list来存储提取的图片
                  images = []
                  # 根据页面索引获取特定页面
                  page = doc.Pages.get_Item(page_num)
                  # 提取该页面上的图片并将它们存储到list
                  for img in page.ExtractImages():
                      images.append(img)
                  # 将图片保存到指定文件夹
                  for i, image in enumerate(images):
                      image.Save(f"{output_folder}Image-{i+1}.png", ImageFormat.get_Png())
                  doc.Close()
              # 调用函数实现从PDF指定页面提取图片
              file_path = "测试.pdf"
              page_num = 0  # 指定从中提取图像的页码(注意页码索引从0开始)
              output_folder = "页面图片/"
              extract_images_from_pdf_page(file_path, page_num, output_folder)
              

              希望以上关于使用Python实现PDF文本和图片提取的内容能对你有所帮助。

VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]