当前位置:   article > 正文

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

python 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文档。
  • 遍历每个页面并提取页面的文本内容。
  • 将提取的文本保存到文本文件中。

代码:

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

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

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

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

代码:

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

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

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

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

代码:

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

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

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

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

代码:

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

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

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

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

代码:

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

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

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

闽ICP备14008679号