精华内容
下载资源
问答
  • Python提取PDF中的图片

    万次阅读 多人点赞 2019-01-03 10:54:26
    # 2018/08/16更新: ...Python提取word中的图片(需要的自取): Python提取Word中的图片 最近项目需要把word、PDF中的图片专门提取出来保存到另外的文件夹,最终成功实现; 最近项目需要把word、PDF中...

    # 2018/08/16更新:

    有些同学不知道fitz库是什么,它是pymupdf中的一个模块,操作PDF非常舒服,只需要pip安装即可:

    pip install pymupdf

    Python提取word中的图片(需要的自取):

    Python提取Word中的图片

    最近项目需要把word、PDF中的图片专门提取出来保存到另外的文件夹,最终成功实现;

    最近项目需要把word、PDF中的图片专门提取出来保存到另外的文件夹,最终成功实现;

    最近项目需要把word、PDF中的图片专门提取出来保存到另外的文件夹,最终成功实现;

    重要的事情说三遍,详细步骤记录如下:
     

    目录

    1.倒入相关库

    2.具体实现

    2.1使用正则表达式查找PDF中的图片

    2.3打印PDF的相关信息

    2.4遍历PDF中的对象,遇到是图像才进行下一步,不然就continue

    2.5将图像存为png格式

    2.6输入pdf路径,即可运行

    3.结果预览

    3.1程序结果:

    3.2原本的pdf:

    3.3提取出来的图片


    1.倒入相关库

    import fitz
    import time
    import re
    import os

    2.具体实现

    为了方便和其他模块组合,我直接写了个函数完成这个功能,实现如下:

    2.1使用正则表达式查找PDF中的图片

    def pdf2pic(path, pic_path):
        '''
        # 从pdf中提取图片
        :param path: pdf的路径
        :param pic_path: 图片保存的路径
        :return:
        '''
        t0 = time.clock()
        # 使用正则表达式来查找图片
        checkXO = r"/Type(?= */XObject)" 
        checkIM = r"/Subtype(?= */Image)"  

    2.3打印PDF的相关信息

        # 打开pdf
        doc = fitz.open(path)
        # 图片计数
        imgcount = 0
        lenXREF = doc._getXrefLength()
    
        # 打印PDF的信息
        print("文件名:{}, 页数: {}, 对象: {}".format(path, len(doc), lenXREF - 1))

    2.4遍历PDF中的对象,遇到是图像才进行下一步,不然就continue

    并且我们将文件的名字命名为word所在的路径

        # 遍历每一个对象
        for i in range(1, lenXREF):
            # 定义对象字符串
            text = doc.getObjectString(i)
            isXObject = re.search(checkXO, text)
            # 使用正则表达式查看是否是图片
            isImage = re.search(checkIM, text)
            # 如果不是对象也不是图片,则continue
            if not isXObject or not isImage:
                continue
            imgcount += 1
            # 根据索引生成图像
            pix = fitz.Pixmap(doc, i)
            # 根据pdf的路径生成图片的名称
            new_name = path.replace('\\', '_') + "_img{}.png".format(imgcount)
            new_name = new_name.replace(':', '')

    2.5将图像存为png格式

            # 如果pix.n<5,可以直接存为PNG
            if pix.n < 5:
                pix.writePNG(os.path.join(pic_path, new_name))
            # 否则先转换CMYK
            else:
                pix0 = fitz.Pixmap(fitz.csRGB, pix)
                pix0.writePNG(os.path.join(pic_path, new_name))
                pix0 = None
            # 释放资源
            pix = None
            t1 = time.clock()
            print("运行时间:{}s".format(t1 - t0))
            print("提取了{}张图片".format(imgcount))

    2.6输入pdf路径,即可运行

    if __name__=='__main__':
        # pdf路径
        path = r'E:\dogcat\提取图片\计算机视觉算法工程师.pdf'
        pic_path = r'E:\dogcat\提取图片\测试'
        # 创建保存图片的文件夹
        if os.path.exists(pic_path):
            print("文件夹已存在,请重新创建新文件夹!")
            raise SystemExit
        else:
            os.mkdir(pic_path)
        m = pdf2pic(path, pic_path)

    3.结果预览

    3.1程序结果:

    3.2原本的pdf:

    3.3提取出来的图片

    展开全文
  • Python 提取pdf图片并转化gif 提取PDF图片 首先使用wand这个包 可以使用pip3安装对应的包 pip3 install wand wand 这个包会依赖一些环境 要用brew 进行辅助安装 ImageMagick gs brew install imagemagick@6 ...

    Python 提取pdf为图片并转化gif

    提取PDF为图片,之后便为gif

    首先使用wand这个包
    可以使用pip3安装对应的包

    pip3 install wand
    

    wand 这个包会依赖一些环境
    要用brew 进行辅助安装
    ImageMagick
    gs

    brew install imagemagick@6
    brew install gs
    

    注意这里安装imagemagick@6(6.0的版本),如果直接安装的话,会默认安装7.0的版本,导致无法使用
    在强制链接6.0 的版本

     brew link imagemagick@6 --force
    

    最后在加入对应的环境中

    echo 'export PATH="/usr/local/opt/imagemagick@6/bin:$PATH"' >> ~/.bash_profile
    

    这里主要看你的环境变量是什么
    我的是~./zshrc

    安装相关转换gif的对应的包

    pip3 install imageio
    

    下一步提取你的文件名,我这里需要按照相关的排序,由于名称
    sort排序问题,由于我的名字排序有问题,所以我才用list来存储我的文件。

    from wand.image import Image
    import os
    import imageio
    list1=[]
    list2=[]
    #进入我的子文件夹下
    os.chdir('/Users/li/Desktop/dongtu')
    #定义相应的函数,来转换pdf,resolution是图片的分辨率可以调节。
    def convert_pdf_to_jpg(filename):
        with Image(filename=filename+'.pdf',resolution=1000) as img:
            print('pages = ', len(img.sequence))
    
            with img.convert('jpeg') as converted:
                converted.save(filename=str(filename)+'.jpeg')
    #生成调用的文件名
    for i in range(0,2420,20):
            b = 'a10_h30_chs70_rc0.66.skip_gene.mCRASH-'+str(i)+'-ortho_number_Gene_count'
            list1.append(b)
    #使用for循环来调用相关的文件名
    for m in list1:
        convert_pdf_to_jpg(m)
    
    #使用上面生成的jpeg文件生成gif
    for i in range(0,2420,20):
            b = 'a10_h30_chs70_rc0.66.skip_gene.mCRASH-'+str(i)+'-ortho_number_Gene_count.jpeg'
            list2.append(b)
    #生成gif,duration是图片闪动间隔的时间
    for filename in list2:
        image.append(imageio.imread(filename))
    imageio.mimsave('all.gif',image,duration=1)
    
    
    
    

    谢谢大家观看,点一个赞再走呗,嘿嘿

    展开全文
  • 在csdn上找了很多提取pdf图片的代码,发现有的函数调用不了,可能是因为kits库更新的缘故,在查阅库源代码后,更新了提取代码,如下: #安装库:pip install fitz PyMuPDF # 提取图片 import fitz import re ...

    在csdn上找了很多提取pdf图片的代码,发现有的函数调用不了,可能是因为kits库更新的缘故,在查阅库源代码后,更新了提取代码,如下:

    #安装库:pip install fitz PyMuPDF
    # 提取图片
    import fitz
    import re
    import os
    def pic(pdf_path,save_path):
        check1=r"/Subtype(?= */Image)"
        check2= r"/Type(?= */XObject)"
        pdf=fitz.open(pdf_path)
        count=0
        lenx=pdf.xref_length()
        for i in range(1,lenx):
            text = pdf.xref_object(i)  
            isXObject = re.search(check2, text)
            isImage = re.search(check1, text)
            
            
            if not isXObject or not isImage:
                continue
    		
            count+=1
            pix = fitz.Pixmap(pdf, i)
    		
    		# 保存图像名
            img_name = "img{}.png".format(count)
            
    
            if pix.n < 5:
                try:
                    pix.writePNG(os.path.join(save_path, img_name))
                    pix = None
                except:
                    pix0 = fitz.Pixmap(fitz.csRGB, pix)
                    pix0.writePNG(os.path.join(save_path, img_name))
                    pix0 = None
    
      

     

    展开全文
  • 一,使用Python提取PDF中的文字 # 只能处理包含文本的PDF文件 #coding=utf-8 import sys import importlib importlib.reload(sys) from pdfminer.pdfparser import PDFParser,PDFDocument from pdfminer.pdfinterp ...

    一,使用Python提取PDF中的文字

    # 只能处理包含文本的PDF文件
    #coding=utf-8
    import sys
    import importlib
    importlib.reload(sys)
    from pdfminer.pdfparser import PDFParser,PDFDocument
    from pdfminer.pdfinterp import PDFResourceManager,PDFPageInterpreter
    from pdfminer.converter import PDFPageAggregator
    from pdfminer.layout import LTTextBoxHorizontal,LAParams
    from pdfminer.pdfinterp import PDFTextExtractionNotAllowed
    
    
    def ReadPDF(SourceFilePath,ToFilePath):
        # 以二进制形式打开PDF文件
        FileObj = open(SourceFilePath,"rb")
        # 创建一个PDF文档分析器
        Parser = PDFParser(FileObj)
    
        # 创建PDF文档
        PDFFile = PDFDocument()
    
        # 链接分析器与文档对象
        Parser.set_document(PDFFile)
        PDFFile.set_parser(Parser)
        # 提供初始化密码
        PDFFile.initialize()
        # 检测文档是否提供txt转换
        if not PDFFile.is_extractable:
            raise PDFTextExtractionNotAllowed
        else:
            # 解析数据
    
            # 数据管理器
            Manager = PDFResourceManager()
            # 创建一个PDF设备对象
            Laparams = LAParams()
            device = PDFPageAggregator(Manager,laparams = Laparams)
            # 创建解释器对象
            Interpreter = PDFPageInterpreter(Manager,device)
            # 开始循环处理,每次处理一页
            for Page in PDFFile.get_pages():
                Interpreter.process_page(Page)
                Layout = device.get_result()
                for x in Layout:
                    if (isinstance(x,LTTextBoxHorizontal)):
                        with open(ToFilePath,'a') as ToFileObj:
                            FileInfo = x.get_text()
                            print(FileInfo)
                            ToFileObj.write(FileInfo)
    
    SourceFilePath = "民法典.pdf"
    ToFilePath = "test.txt"
    ReadPDF(SourceFilePath,ToFilePath)
    

    二,使用Python提取PDF中的图片

    #coding=utf-8
    import fitz
    import time
    import re
    import os
    def pdf2pic(path, pic_path):
        t0 = time.time()                          # 生成图片初始时间
        checkXO = r"/Type(?= */XObject)"           # 使用正则表达式来查找图片
        checkIM = r"/Subtype(?= */Image)"
        doc = fitz.open(path)                      # 打开pdf文件
        imgcount = 0                               # 图片计数
        lenXREF = doc._getXrefLength()             # 获取对象数量长度
    
        # 打印PDF的信息
        print("文件名:{}, 页数: {}, 对象: {}".format(path, len(doc), lenXREF - 1))
    
        # 遍历每一个对象
        for i in range(1, lenXREF):
            text = doc._getXrefString(i)            # 定义对象字符串
            isXObject = re.search(checkXO, text)    # 使用正则表达式查看是否是对象
            isImage = re.search(checkIM, text)      # 使用正则表达式查看是否是图片
            if not isXObject or not isImage:        # 如果不是对象也不是图片,则continue
                continue
            imgcount += 1
            pix = fitz.Pixmap(doc, i)               # 生成图像对象
            new_name = "图片{}.png".format(imgcount) # 生成图片的名称
            if pix.n < 5:                           # 如果pix.n<5,可以直接存为PNG
                pix.writePNG(os.path.join(pic_path, new_name))
            else:                                   # 否则先转换CMYK
                pix0 = fitz.Pixmap(fitz.csRGB, pix)
                pix0.writePNG(os.path.join(pic_path, new_name))
                pix0 = None
            pix = None                              # 释放资源
            t1 = time.time()                       # 图片完成时间
            print("运行时间:{}s".format(t1 - t0))
            print("提取了{}张图片".format(imgcount))
    
    if __name__=='__main__':
        path = r"开通Carplay教程.pdf"
        pic_path = os.getcwd()+"\\图片"
        # 创建保存图片的文件夹
        if os.path.exists(pic_path):
            print("文件夹已存在,不必重新创建!")
            pass
        else:
            os.mkdir(pic_path)
        pdf2pic(path, pic_path)
    

    需要注意的是,fitz 模块需要 Microsoft Visual C++ 14版本支持,因此还需要安装此软件,放上此软件的下载地址

    https://wws.lanzous.com/b01tsod7i 
    密码:gkbi
    

    之后运行时还会报错,ModuleNotFoundError: No module named ‘frontend’,此时需要执行命令

    pip install PyMuPDF
    

    代码即可运行

    展开全文
  • pypy通过pip安装pymupdf可能会出现失败的情况,所以建议用python3 使用前修改文件名和输出图片的路径 import fitz import time import re import os def pdf2pic(path, pic_path): t0 = time.clock() ...
  • 今天就跟大家系统分享几种Python提取 PDF 图片的方法。其实没有非常完美的方法,每种方法提取效率都不是百分之百,因此可以考虑用多种方法进行互补,主要将涉及: 基于fitz库和正则搜索提取图片 基于pdf2...
  • 今天就跟大家系统分享几种Python提取 PDF 图片的方法。其实没有非常完美的方法,每种方法提取效率都不是百分之百,因此可以考虑用多种方法进行互补,主要将涉及: 基于 fitz 库和正则搜索提取图片 基于 pdf2image ...
  • 如果想提取其中的38 38 40 31 41 47 29 38 47 38 54 37 19几个数字,该如何设置extract_table中的table_setting 的参数,或者有别的什么安装包可以解决吗?感激不尽! <p><img alt="" ...
  • 由于项目需要将PDF文档当中的图片转换成图片,所以参考了这篇文章https://blog.csdn.net/qq_15969343/article/details/81673302后项目得以解决。 1、安装第三方类库pymupdf:pip install pymupdf 2、安装完成后...
  • python读取pdf提取文字和图片

    千次阅读 2020-11-20 11:24:47
    python读取pdf,提取图片识别文本内容,并使用对应文本对图片进行命名
  • python pdf提取图片出错

    2021-03-12 22:16:58
    python ModuleNotFoundError: No module named‘frontend‘或者ModuleNotFoundError: Document doesn`t have _getXreflength 解决办法:pip install PyMuPDF-1.16.14(注意版本,安装1.18不成功)
  • 40个Python办公自动化案例合辑????????大家好,我是早起。本文将分享一个常见办公场景下的Python自动化案例,主要将涉及以下两个内容Python提取图片PDF内容Pytho...
  • 今天我们再次回到PDF,详细讲解如何使用pythonPDF提取指定的信息。我们将以一份年度报告PDF为例进行介绍,内含大量文字、表格、图片,具体如下 模块安装 首先需要安装两个模块,第一个是pdfplumber,在命令行...
  • 实用脚本!Python 提取 PDF 指定内容生成新文件!

    多人点赞 热门讨论 2021-06-07 09:55:26
    大家好,我是启航。 在之前的「Python办公自动化」案专题中,我们已经介绍了如何有选择的提取某些页面进行合并。 但是很多时候,我们并不会预知...需求二:提取所有包含图片的页面,并分别保存为 PDF 文件 ” ...
  • python3 pdf图片提取

    2020-05-26 13:23:47
    # 安装第三方类库pymupdf:pip install pymupdf import fitz import time ... # 从pdf提取图片 :param path: pdf的路径 :param pic_path: 图片保存的路径 :return: ''' t0 = time.perf_counter()
  • 下面的程序,我拓展了官方给出的例子,你可以通过这个例子统计出来你的pdf文件一共包含哪些内容,比如文本框,曲线,图片等 #!/usr/bin/python # -*- coding: utf-8 -*- __author__ = 'yooongchun' import sys ...
  • 主要参考 https://blog.csdn.net/sweeper_freedoman/article/details/53000145以下是在Python3.6 64位环境下(Anaconda3安装的)操作1) 下载PyPDF2源代码,再 pythonsetup.py install 安装源代码2) 下载PythonMagick...
  • 本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。 PS:如有需要Python学习资料的小伙伴可以点击下方链接自行获取 Python免费学习资料、代码以及交流解答点击...

空空如也

空空如也

1 2 3 4 5 ... 10
收藏数 183
精华内容 73
关键字:

python提取pdf图片

python 订阅