今天给大家分享如何用 Python 批量提取 PDF 的图片,并存储到指定文件夹。

一、实现效果图

二、基于 fitz 库和正则搜索提取图片

fitz 库是 pymupdf 中的一个模块,用它来提取 pdf 里的图片非常方便。

安装命令

pip install fitz
pip install pymupdf

三、代码实现

导入相关包

import fitz
import re
import os

读取 pdf 提取图片,并存储

def save_pdf_img(path,save_path):'''path: pdf的路径save_path : 图片存储的路径'''# 使用正则表达式来查找图片checkXO = r"/Type(?= */XObject)" checkIM = r"/Subtype(?= */Image)"  # 打开pdfdoc = fitz.open(path)# 图片计数imgcount = 0# 获取对象数量长度lenXREF = doc.xref_length()# 打印PDF的信息print("文件名:{}, 页数: {}, 对象: {}".format(path, len(doc), lenXREF - 1))# 遍历每一个图片对象for i in range(1, lenXREF):# 定义对象字符串text = doc.xref_object(i)
#         print(i,text)isXObject = re.search(checkXO, text)# 使用正则表达式查看是否是图片isImage = re.search(checkIM, text)# 如果不是对象也不是图片,则continueif not isXObject or not isImage:continueimgcount += 1# 根据索引生成图像pix = fitz.Pixmap(doc, i)# 根据pdf的路径生成图片的名称new_name = path.replace('\\', '_') + "_img{}.png".format(imgcount)new_name = new_name.replace(':', '')# 如果pix.n<5,可以直接存为PNGif pix.n < 5:pix.writePNG(os.path.join(save_path, new_name))# 否则先转换CMYKelse:pix0 = fitz.Pixmap(fitz.csRGB, pix)pix0.writePNG(os.path.join(save_path, new_name))pix0 = None# 释放资源pix = Noneprint("提取了{}张图片".format(imgcount))
# pdf路径
path = r'/Users/wangwangyuqing/Desktop/data/img.pdf'
save_path = r'/Users/wangwangyuqing/Desktop/data'
save_pdf_img(path,save_path)

运行结果

四、小结

Python 中 pdf2image 库也可以完成以上需求,它的好处是如果你的 pdf 页面较多时,pdf2image 可以启动多线程会大大加快转换速度,具体可参考 pdf2image 官方文档。

最后,可能会遇到提取的图片比原本少,或者提取出不想要的图片。可以通过检查图片格式,可能不是常见的格式,提取时再减少或添加过滤条件进行尝试。

END -

用 Python 批量提取 PDF 的图片,并存储到指定文件夹相关推荐

  1. python怎么读取pdf为文本_轻松用Python批量提取PDF文本内容,这个小技巧告诉你!...

    轻松用Python批量提取PDF文本内容,这个小技巧告诉你!-1.jpg (22.73 KB, 下载次数: 0) 2018-9-7 08:33 上传 本文为你展示,如何用Python把许多PDF文件的 ...

  2. python批量提取pdf的数据_Python批量提取PDF文件中文本的脚本

    本文实例为大家分享了Python批量提取PDF文件中文本的具体代码,供大家参考,具体内容如下 首先需要执行命令pip install pdfminer3k来安装处理PDF文件的扩展库. import ...

  3. pyaudio:基于pyaudio利用Python编程从电脑端录制音频保存到指定文件夹+将录音上传服务器+录音进行识别并转为文本保存

    pyaudio:基于pyaudio利用Python编程从电脑端录制音频保存到指定文件夹+将录音上传服务器+录音进行识别并转为文本保存 目录 输出结果 代码实现 输出结果 代码实现 # -*- codi ...

  4. 如何用Python批量提取PDF文本内容?

    本文为你展示,如何用Python把许多PDF文件的文本内容批量提取出来,并且整理存储到数据框中,以便于后续的数据分析. 问题 最近,读者们在后台的留言,愈发五花八门了. 写了几篇关于自然语言处理的文章 ...

  5. python 如何批量提取文件中的字符_如何用Python批量提取PDF文本内容?

    本文为你展示,如何用Python把许多PDF文件的文本内容批量提取出来,并且整理存储到数据框中,以便于后续的数据分析. 问题 最近,读者们在后台的留言,愈发五花八门了. 写了几篇关于自然语言处理的文章 ...

  6. python提取pdf文件内容_如何用Python批量提取PDF文本内容?

    本文为你展示,如何用Python把许多PDF文件的文本内容批量提取出来,并且整理存储到数据框中,以便于后续的数据分析. 问题 最近,读者们在后台的留言,愈发五花八门了. 写了几篇关于自然语言处理的文章 ...

  7. 批量提取PDF和图片发票信息 2.2

    人工录入发票信息真的好烦,有什么软件可以快速解决这个问题吗?​ 那天看到这个问题后,自己写了一个批量提取发票信息的小软件,打开软件之后,选择大量发票文件所在的文件夹就可以了,会自动把发票识别的结果输出 ...

  8. 根据txt文件中保存的图片名字,移动指定文件夹里的图片到新的文件夹

    在将voc数据集转化为coco数据集时,需要把JPEGImages文件夹下的图片按照train.txt(val.txt)所保存的文件名转移到train(val)文件夹. import shutil i ...

  9. Python批量提取PDF文件中的文本

    首先需要执行命令pip install pdfminer3k来安装处理PDF文件的扩展库. import os import sys import time pdfs = (pdfs for pdfs ...

最新文章

  1. 希尔排序的java算法_Java算法系列篇 【希尔排序】
  2. opengl 预览摄像头
  3. Java线程详解(11)-线程池
  4. java中截取字符串的方式
  5. jquery 根据class名 赋值_jQuery简单用法!!!
  6. Python tutor 简介
  7. Android之常见帮助类的里面的函数和功能解释
  8. [密码学基础][每个信息安全博士生应该知道的52件事][Bristol52]48.TPM的目的和使用方法
  9. 任正非:只有教师待遇得到提升 教育才会较大发展
  10. 2021中国集成电路行业投资市场研究报告
  11. 新浪微博澄清“花钱撤热搜”、“花钱压热搜”等不实传言
  12. CVE-2021-1675: Windows Print Spooler远程代码执行漏洞
  13. aws ebs分类_AWS EBS – Amazon Elastic Block Storage
  14. 对物联网的感悟_物联网学习心得
  15. DPDK——IP分片和重组库
  16. 百度网盘四种方法免费提速
  17. Win7系统双屏扩展显示时触屏设置
  18. Ajax传JSON对象报错:JSON parse error: Unrecognized token ‘ids‘: was expecting (‘true‘, ‘false‘ or ‘null‘);
  19. 电脑显示请检查映像服务器,该任务映像已损坏或已篡改的解决方法
  20. 通过iptables 禁止访问域名方法整合

热门文章

  1. class_create函数源码分析
  2. 老男孩GO语言线下培训班1期整套教程(完整18天含源码)
  3. CentOS7下的任务计划
  4. PDF的文件大小怎么压缩,两款高效的PDF压缩软件
  5. HarmonyOS应用框架如何解决多设备交互问题?
  6. 12年后,人工智能和人类会是什么样?
  7. 开发人员应了解的健康生活节奏!
  8. PDF软件哪个好?一定要知道这几款
  9. png批量转换为jpg,一键快速处理
  10. bat批量处理所有子文件夹下的图片,将jpg转换成png