Python脚本工具,PyMuPDF批量提取PDF文件中的图片

如何批量快速提取出PDF中的图片文件,你是否遇到这样的一个问题,尤其是PPT文件转换为PDF文件,需要快速提取其中的图片文件,如果你恰好会那么一点py,同时复制粘贴没问题的话,那么相信你也能够很轻松的解决这个问题。

提取PDF文件中的图片无疑是需要读取PDF文件,Python作为胶水语言,有着丰富第三方库,只要你想基本上都能找到你想要的轮子,而这里本渣渣应用的第三方库就是PyMuPDF,度娘搜的!!!

PyMuPDF(又称“ fitz”):MuPDF的Python绑定,这是一种轻量级的PDF和XPS查看器。该库可以访问PDF,XPS,OpenXPS,epub,漫画和小说书格式的文件,并且以其最佳性能和高渲染质量而闻名。

PyMuPDF库安装方法:
pip install PyMuPDF
PyMuPDF库使用方法:
#打开pdf读取页码数

import fitz

pdf_document = "demo1.pdf"
doc = fitz.open(pdf_document)  #打开pdf 
print ("number of pages: %i" % doc.pageCount)  #获取页码数
print(doc.metadata)  # 获取pdf信息

page1 = doc.loadPage(0) #pdf文件第一页
page1text = page1.getText("text") #获取pdf第一页文本信息
print(page1text)

PyMuPDF的优点是可以保持原始文档结构完整-带有换行符的整个段落都保留在PDF文档中!

使用PyMuPDF从PDF提取图像

PyMuPDF使用该方法简化了从PDF文档提取图像的过程getPageImageList()。

#提取图像


import fitz

pdf_document = fitz.open("demo1.pdf")
for current_page in range(len(pdf_document)):
    for image in pdf_document.getPageImageList(current_page):
        xref = image[0]
        pix = fitz.Pixmap(pdf_document, xref)
        if pix.n < 5:        # this is GRAY or RGB
            pix.writePNG("page%s-%s.png" % (current_page, xref))
        else:                # CMYK: convert to RGB first
            pix1 = fitz.Pixmap(fitz.csRGB, pix)
            pix1.writePNG("page%s-%s.png" % (current_page, xref))
            pix1 = None
        pix = None

第二种方法:


import datetime
import os

import fitz  # fitz就是pip install PyMuPDF


def pyMuPDF_fitz(pdfPath, imagePath):
    startTime_pdf2img = datetime.datetime.now()  # 开始时间

    print("imagePath=" + imagePath)
    pdfDoc = fitz.open(pdfPath)
    for pg in range(pdfDoc.pageCount):
        page = pdfDoc[pg]
        rotate = int(0)
        # 每个尺寸的缩放系数为1.3,这将为我们生成分辨率提高2.6的图像。
        # 此处若是不做设置,默认图片大小为:792X612, dpi=96
        # zoom_x = 1.33333333  # (1.33333333-->1056x816)   (2-->1584x1224)
        # zoom_y = 1.33333333
        zoom_x=zoom_y=10
        mat = fitz.Matrix(zoom_x, zoom_y).preRotate(rotate)
        pix = page.getPixmap(matrix=mat, alpha=False)

        if not os.path.exists(imagePath):  # 判断存放图片的文件夹是否存在
            os.makedirs(imagePath)  # 若图片文件夹不存在就创建

        pix.writePNG(imagePath + '/' + 'images_%s.png' % pg)  # 将图片写入指定的文件夹内

    endTime_pdf2img = datetime.datetime.now()  # 结束时间
    print('pdf2img时间=', (endTime_pdf2img - startTime_pdf2img).seconds)



if __name__ == "__main__":
    # 1、PDF地址
    pdfPath = 'demo1.pdf'
    # 2、需要储存图片的目录
    imagePath = './imgs'
    pyMuPDF_fitz(pdfPath, imagePath)

搜索指定文本
#搜索指定文本内容
import fitz

filename = "demo1.pdf"
search_term = "烟"
pdf_document = fitz.open(filename)

for current_page in range(len(pdf_document)):
    page = pdf_document.loadPage(current_page)
    if page.searchFor(search_term):
        print("%s found on page %i" % (search_term, current_page))

来源:

1.Python操作PDF-文本和图片提取(使用PyPDF2和PyMuPDF)

https://www.jianshu.com/p/8fbb662bd6f7

2.python 将PDF 转成 图片的几种方法

https://blog.csdn.net/weixin_42081389/article/details/103712181

注:以上代码都是本渣渣抄袭的,如有不理解,可咨询度娘获取解决方案

·················END·················

你好,我是二大爷,

革命老区外出进城务工人员,

互联网非早期非专业站长,

喜好python,写作,阅读,英语

不入流程序,自媒体,seo . . .

公众号不挣钱,交个网友。

读者交流群已建立,找到我备注 “交流”,即可获得加入我们~

听说点 “在看” 的都变得更好看呐~

关注关注二大爷呗~给你分享python,写作,阅读的内容噢~

扫一扫下方二维码即可关注我噢~

关注我的都变秃了

说错了,都变强了!

不信你试试

扫码关注最新动态

公众号ID:eryeji

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用PythonPyPDF2模块来提取PDF文件图片。首先需要安装PyPDF2模块,可以使用以下命令进行安装: ``` pip install PyPDF2 ``` 接下来,可以使用以下代码来批量提取PDF文件图片: ```python import PyPDF2 import os # 定义PDF文件夹路径 pdf_folder = r'path/to/pdf/folder' # 定义图片保存路径 image_folder = r'path/to/image/folder' # 遍历PDF文件的所有文件 for filename in os.listdir(pdf_folder): if filename.endswith('.pdf'): # 打开PDF文件 pdf_file = open(os.path.join(pdf_folder, filename), 'rb') pdf_reader = PyPDF2.PdfFileReader(pdf_file) # 遍历PDF文件的所有页面 for page_num in range(pdf_reader.getNumPages()): page = pdf_reader.getPage(page_num) # 遍历页面的所有对象 for obj in page['/Resources']['/XObject'].values(): if obj['/Subtype'] == '/Image': # 提取图片数据 image_data = obj.getData() # 保存图片 image_filename = os.path.splitext(filename)[0] + '_page' + str(page_num+1) + '_image' + str(obj['/Name'][1:]) + '.jpg' image_path = os.path.join(image_folder, image_filename) with open(image_path, 'wb') as image_file: image_file.write(image_data) # 关闭PDF文件 pdf_file.close() ``` 以上代码将遍历PDF文件的所有PDF文件,并提取每个文件所有页面的所有图片,并将图片保存到指定的图片文件图片文件名将以PDF文件名、页面号和图片编号作为前缀,例如:`example_page1_image1.jpg`。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值