在python中提取pdf图片的方法有哪些

  介绍

在python中提取pdf图片的方法有哪些?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

基于菲茨库和正则搜索

菲茨是pymupdf的子模块,需要先用命令行安装pymupdf:

pip  install  pymupdf

但注意导入时使用<代码> 进口菲茨一样导入模块!

下面的代码就利用<代码> fitz> import 菲茨   import 再保险   import 操作系统      时间=file_path  " # 39; C: \ xxx \ xxx.pdf& # 39;, #, PDF 文件路径   时间=dir_path  " # 39; C: \ xxx # 39;, #,存放图片的文件夹      def  pdf2image1(路径,pic_path):   checkIM 才能=,r"/亚型(?=,*/图片),   时间=pdf 才能;fitz.open(路径)   时间=lenXREF 才能;pdf._getXrefLength ()   count 才能=1   for 才能小姐:拷贝范围(1,lenXREF):   ,,,text =, pdf._getXrefString(我)   ,,,isImage =, re.search (checkIM,文本)   ,,,if  not  isImage:   ,,,,,继续   ,,,pix =, fitz.Pixmap (pdf,,我)   ,,,new_name =, f" img_{数}.png"   ,,,pix.writePNG (os.path.join (pic_path, new_name))   ,,,count  +=1   ,,,pix =,没有      pdf2image1 (file_path, dir_path)

运行提取示例文件后结果如下:

在python中提取pdf图片的方法有哪些

可以看的到,有一些很小的色块也被提取成图片,那么怎么过滤掉它们呢?

有一个简单的方法是通过大小过滤,影片像素在菲茨库中存在一个重要的方法沥青。大小可以反映像素多少,简单的色素块该值较低,可以通过设置一个阈值过滤。以阈值为10000例过滤:

import 菲茨   import 再保险   import 操作系统      时间=file_path  " # 39; C: \ xxx \ xxx.pdf& # 39;, #, PDF 文件路径   时间=dir_path  " # 39; C: \ xxx # 39;, #,存放图片的文件夹      def  pdf2image1(路径,pic_path):   checkIM 才能=,r"/亚型(?=,*/图片),   时间=pdf 才能;fitz.open(路径)   时间=lenXREF 才能;pdf._getXrefLength ()   count 才能=1   for 才能小姐:拷贝范围(1,lenXREF):   ,,,text =, pdf._getXrefString(我)   ,,,isImage =, re.search (checkIM,文本)   ,,,if  not  isImage:   ,,,,,继续   ,,,pix =, fitz.Pixmap (pdf,,我)   ,,,if  pix.size  & lt;, 10000, #,在这里添加一处判断一个循环   ,,,,,continue  #,不符合阈值则跳过至下   ,,,new_name =, f" img_{数}.png"   ,,,pix.writePNG (os.path.join (pic_path, new_name))   ,,,count  +=1   ,,,pix =,没有      pdf2image1 (file_path, dir_path)

在python中提取pdf图片的方法有哪些

可以看的到,全部图片都被正常提取!

基于pdf2image库的两种方法

一看名字就知道这个库的用处了,官方文档为https://www.cnpython.com/pypi/pdf2image

可以简单通过<代码> pip安装pdf2image 安装,但波普尔才是真正起做用的转换器,因此需要额外安装和配置:

<李>

窗口用户必须安装<代码>波普尔为windows> <李>

Mac用户必须安装<代码>波普尔对Mac

具体发挥作用的代码官方文档也给出了详细的说明:

在python中提取pdf图片的方法有哪些

那么我们就分别尝试这两种方法:

得到pdf2image  import  convert_from_path convert_from_bytes   import  tempfile   得到pdf2image.exceptions  import  PDFInfoNotInstalledError, PDFPageCountError, PDFSyntaxError   import 操作系统      时间=file_path  " # 39; C: \ xxx \ xxx.pdf& # 39;, #, PDF 文件路径   时间=dir_path  " # 39; C: \ xxx # 39;, #,存放图片的文件夹      def  pdf2image2 (file_path, dir_path):   时间=images 才能;convert_from_path (file_path, dpi=200)   for 才能;image 拷贝图片:   ,,,if  not  os.path.exists (dir_path):   ,,,,,os.makedirs (dir_path)   ,,,image.save(时间+ file_path  f # 39; \ img_ {images.index(图片)}. png # 39;,, & # 39; png # 39;)      pdf2image2 (file_path, dir_path)

在python中提取pdf图片的方法有哪些