Python提取PDF中的图片的实现示例

目录
  • 1.导入相关库
  • 2.具体实现
    • 2.1.使用正则表达式查找PDF中的图片
    • 2.2.打印PDF的相关信息
    • 2.3.遍历PDF中的对象,遇到是图像才进行下一步,不然就continue
    • 2.4.将图像存为png格式
    • 2.5.输入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.2.打印PDF的相关信息

    # 打开pdf
    doc = fitz.open(path)
    # 图片计数
    imgcount = 0
    lenXREF = doc._getXrefLength()

    # 打印PDF的信息
    print("文件名:{}, 页数: {}, 对象: {}".format(path, len(doc), lenXREF - 1))

2.3.遍历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.4.将图像存为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.5.输入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中的图片的实现示例的文章就介绍到这了,更多相关Python提取PDF图片内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python 三种方法提取pdf中的图片

    有时我们需要将一份或者多份PDF文件中的图片提取出来,如果采取在线的网站实现的话又担心图片泄漏,手动操作又觉得麻烦,其实用Python也可以轻松搞定! 今天就跟大家系统分享几种Python提取 PDF 图片的方法.其实没有非常完美的方法,每种方法提取效率都不是百分之百,因此可以考虑用多种方法进行互补,主要将涉及: 基于 fitz 库和正则搜索提取图片 基于 pdf2image 库的两种方法提取图片 基于 fitz 库和正则搜索 fitz 是 pymupdf 的子模块,需要先用命令行安装 pymu

  • Python提取PDF中的图片的实现示例

    目录 1.导入相关库 2.具体实现 2.1.使用正则表达式查找PDF中的图片 2.2.打印PDF的相关信息 2.3.遍历PDF中的对象,遇到是图像才进行下一步,不然就continue 2.4.将图像存为png格式 2.5.输入pdf路径,即可运行 3.结果预览 3.1.程序结果 3.2.原本的pdf 3.3.提取出来的图片 1.导入相关库 import fitz import time import re import os 2.具体实现 为了方便和其他模块组合,我直接写了个函数完成这个功能,实

  • 用Python提取PDF表格的方法

    大家好,从PDF中提取信息是办公场景中经常需要用到的操作,也是经常又读者在后台问的一个操作. 内容少的话我们可以手动复制粘贴,但如果需要批量提取就可以考虑使用Python,之前我也转载过相关文章,提到主要就是使用pdfplumber库,今天我们再次举例讲解. 通常PDF里的表格分为图片型和文本型.文本型又分简单型和复杂型.本文就针对这三部分举例讲解. 提取简单型表格 提取较为复杂型表格 提取图片型表格 用到的模块主要有 pdfplumber pandas Tesseract PIL 文中出现的P

  • Python提取视频中图片的示例(按帧、按秒)

    一.按帧提取 #coding=utf-8 import os import cv2 def save_img(): #提取视频中图片 按照每帧提取 video_path = r'D:\\test\\' #视频所在的路径 f_save_path = 'D:\\aaa\\' #保存图片的上级目录 videos = os.listdir(video_path) #返回指定路径下的文件和文件夹列表. for video_name in videos: #依次读取视频文件 file_name = vide

  • python从PDF中提取数据的示例

    01 前言 数据是数据科学中任何分析的关键,大多数分析中最常用的数据集类型是存储在逗号分隔值(csv)表中的干净数据.然而,由于可移植文档格式(pdf)文件是最常用的文件格式之一,因此每个数据科学家都应该了解如何从pdf文件中提取数据,并将数据转换为诸如"csv"之类的格式,以便用于分析或构建模型. 在本文中,我们将重点讨论如何从pdf文件中提取数据表.类似的分析可以用于从pdf文件中提取其他类型的数据,如文本或图像.我们将说明如何从pdf文件中提取数据表,然后将其转换为适合于进一步分

  • 分步骤教你用python一步步提取PPT中的图片

    目录 一.实现原理 二.提取PPT中的图片 1.打开压缩包 2.解压文件 三.提取PPT中的图片 一.实现原理 其实实现原理很简单,我们的pptx文件其实是一个压缩包.我们可以直接修改pptx文件的后缀,改成zip然后解压,比如下面这个: 这是解压后的文件.我们可以在ppt目录下找到一个media目录,这个目录下就是我们要的图片的.这个目录包含了PPT的所有多媒体文件. 知道这点后,我们就可以选择用Python来解压出PPT中的media目录就可以提取出所有图片了. 二.提取PPT中的图片 1.

  • 教你使用Python提取视频中的美女图片

    目录 前言 安装模块 you-get OpenCV 结束 前言 人类都是视觉动物,不管是男生还是女生看到漂亮的小姐姐.小哥哥就想截图保存下来.可是截图会对画质会产生损耗,截取的 画面不规整,像素不高等问题. 用 Python 写一个逐帧无损保存视频画面的小脚本大致可以分为三个步骤: 1.在 cmd 中使用 you-get 下载视频 2.OpenCV 读取并处理视频 3.将视频画面保存为图片 安装模块 1.you-get 模块用于下载视频,它需要 ffmpeg 模块配合使用. pip3 insta

  • Python提取Word中图片的实现步骤

    目录 1.思路 2.具体实现 2.1导入相关库 2.2定义函数 2.3重命名word文件,将后缀名docx改为zip 2.4zip还原为docx文件,并获得图片的列表 2.5将图片复制到需要保存的文件夹中 2.6删除tmp缓冲文件夹中的文件,用以存储下一次的文件 2.7运行程序 3效果预览 3.1源word 3.2提取的图片 4附:doc转docx 1.思路 在网上查找了半天,基本都是提取word中文字的,没有找到可以把word中的图片提取出来的方法.一个巧合的情况下,发现将word的后缀名改为

  • Python提取PDF指定内容并生成新文件

    在之前的Python办公自动化案专题中,我们已经介绍了如何有选择的提取某些页面进行合并. 但是很多时候,我们并不会预知希望提取的页号,而是希望将包含指定内容的页面提取合并为新PDF,本文就以两个真实需求为例进行讲解. 01需求描述 数据是一份有286页的上市公司公开年报PDF,大致如下 现在需要利用 Python 完成以下两个需求 " 需求一:提取所有包含 战略 二字的页面并合并新PDF 需求二:提取所有包含图片的页面,并分别保存为 PDF 文件 " 02前置知识和逻辑梳理 2.1 P

  • 利用Python提取PDF文本的简单方法实例

    目录 第一步,安装工具库 第二步,编写代码 第三步,执行 最后的话 你好,一般情况下,Ctrl+C 是最简单的方法,当无法 Ctrl+C 时,我们借助于 Python,以下是具体步骤: 第一步,安装工具库 1.tika — 用于从各种文件格式中进行文档类型检测和内容提取 2.wand — 基于 ctypes 的简单 ImageMagick 绑定 3.pytesseract — OCR 识别工具 创建一个虚拟环境,安装这些工具 python -m venv venv source venv/bin

随机推荐