首页 > 编程语言 >通过Python的fitz库提取PDF中的图片——(邓棋文)

通过Python的fitz库提取PDF中的图片——(邓棋文)

时间:2023-06-26 18:34:12浏览次数:45  
标签:提取 Python pix fitz 邓棋文 images PDF 图片

我来自广东工业大学的邓棋文,作为一个Python初学者,我们经常会遇到需要从PDF中提取信息的情况。今天,我要分享的是如何使用fitz库(它是PyMuPDF的一个别名)从PDF文件中提取图片。PyMuPDF是一个强大的PDF处理库,它的功能包括文本提取、图片提取、分割和合并等。

安装fitz库

首先,我们需要安装fitz库。你可以使用pip进行安装:

pip install PyMuPDF

提取图片的代码

接下来,我们使用fitz库提取PDF文件中的图片。以下是一段简单的代码:

import fitz

def extract_images(pdf_path):
    doc = fitz.open(pdf_path)

    for i in range(len(doc)):
        for img in doc.get_page_images(i):
            xref = img[0]
            base = img[1]  # 图片的基本名字,比如 'img0'
            pix = fitz.Pixmap(doc, xref)
            if pix.n < 5:  # 这是一个灰度或者RGB图片
                pix.writePNG("images/%s.png" % base)
            else:  # 这是一个CMYK图片
                pix1 = fitz.Pixmap(fitz.csRGB, pix)
                pix1.writePNG("images/%s.png" % base)
                pix1 = None
            pix = None  # 让图片像素图清除内存

    doc.close()

# 测试函数
extract_images("your_pdf_path.pdf")

代码解析

首先,我们打开PDF文件,然后遍历每一页。对于每一页,我们使用get_page_images()方法提取出所有的图片。

每一张图片都会返回一个包含多个元素的元组,其中img[0]是图片的xref编号,img[1]是图片的基本名字。

然后我们创建一个Pixmap对象,它表示PDF中的一张图片。如果pix.n小于5,那么这张图片就是一个灰度或者RGB图片,我们可以直接将它保存为PNG格式。否则,这张图片是一个CMYK图片,我们需要首先将它转换为RGB格式,然后再保存。

最后,我们需要显式地将pix和pix1设置为None,以便让Python的垃圾回收机制能够清除它们占用的内存。在处理大量的大尺寸图片时,这一点是非常重要的。

结论

通过这个简单的例子,我们可以看到fitz库在提取PDF文件中的图片时是非常方便和强大的。无论你是需要处理PDF文件,还是需要从PDF中提取信息,我都强烈推荐你使用fitz库。

标签:提取,Python,pix,fitz,邓棋文,images,PDF,图片
From: https://www.cnblogs.com/DQW6/p/17506463.html

相关文章

  • psycopg2用python生成一些数据插入pg数据库
    创建学生表,用python随机生成姓名,性别,班级,省,市,生日插入数据库中先把姓名和省市以字典方式存入单独文件fromname_dictimportnamefromcity_dictimportcityfromrandomimportchoice,randintfromdatetimeimportdateimportpsycopg2aspgconn=pg.connect(data......
  • Python基础知识
    1.变量和简单数据类型1.1变量变量只能包含字母、数字、下划线,并且不能以数字开头变量名不能包含空格不要讲python关键字和函数作为变量名。变量名应简短又具有描述行被赋值的内容应该用双引号或单引号括起来1.2字符串title():将字符串首字母变为大写upper():将字符串......
  • python代码-基于深度强化学习的微能源网能量管理与优化策略研究
    python代码-基于深度强化学习的微能源网能量管理与优化策略研究关键词:微能源网;能量管理;深度强化学习;Q-learning;DQN内容::面向多种可再生能源接入的微能源网,提出一种基于深度强化学习的微能源网能量管理与优化方法。该方法使用深度Q网络(deepQnetwork,DQN)对预测负荷、风光等可......
  • python练习-爬虫(续)
    接下来就是查询数据了。#识别图片中的文字#image=Image.open('captcha.png')image=Image.open('G:\Python爬虫\captcha.png')code=pytesseract.image_to_string(image)#从用户输入获取用户名、身份证号码和验证码username='XXX'#input("请输入用户名:")id_c......
  • python函数的高阶使用
    一:*强制位置传参和/分界线强制位置参数可以使用*进行标记,*后面的参数将成为强制位置参数,它们必须按照位置传递给函数,而不能使用关键字传递。/用于标记位置参数和关键字参数之间的分界线,即/之前的参数只能通过位置传递,/之后的参数可以通过位置或关键字传递。示例1:使......
  • 标准化互信息NMI计算步骤及其Python实现
    假设对于17个样本点(v1,v2,...,v17)进行聚类:某一种算法得到聚类结果为:A=[12111112222311333]标准的聚类结果为:B=[11111122222233333]问题:需要度量算法结果与标准结果之间的相似度,如果结果越相似NMI值应接近1;如果算法结果很差......
  • Python中进行字符串拼接的常用方法!
    在Pyhon编程语言中,字符串拼接是一种十分常见的操作,通常用于将文本片段连接起来形成一段完整的字符串,然而很多人在进行字符串拼接操作时不可避免地会遇到一些错误,那么该如何解决呢?以下是详细的内容:1、使用"+"号进行字符串拼接在Python中,使用"+"号进行字符串拼接是最常......
  • 一杯咖啡的时间带你了解Python中的类
    1.定义类您可以使用class关键字在Python中定义一个类。下面是一个简单的类定义示例:classPerson:def__init__(self,name,age):self.name=nameself.age=agedefsay_hello(self):print("Hello,mynameis",self.name,"andIam",......
  • Python 实现将 Markdown 文档转换为 EPUB 电子书文件
    Python实现将Markdown文档转换为EPUB电子书文件已有转换工具要将Markdown文档转换为EPUB文件,可以使用一些工具和软件。以下是一些常见的方法:使用在线转换工具:有一些在线转换工具可以将Markdown文件转换为EPUB格式,如PandocOnline。只需要将Markdown文件上传......
  • Python如何将某文件夹下的文件名称输出到.txt文件中
    importos#os.listdir()方法获取文件夹名字,返回数组defgetAllFiles(targetDir):listFiles=os.listdir(targetDir)returnlistFilesfiles=getAllFiles(r"E:\UEtest\sla\精装\sla文件池\skp-10个")#写入list到txt文件中withopen(r"E:\UEtest\sla\精装\sla文件池\tes......