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图片内容请搜索Devmax以前的文章或继续浏览下面的相关文章希望大家以后多多支持Devmax!

Python提取PDF中的图片的实现示例的更多相关文章

  1. 基于JavaScript编写一个图片转PDF转换器

    本文为大家介绍了一个简单的 JavaScript 项目,可以将图片转换为 PDF 文件。你可以从本地选择任何一张图片,只需点击一下即可将其转换为 PDF 文件,感兴趣的可以动手尝试一下

  2. ios – 将PDF文件附加到电子邮件 – Swift

    我想发送带有PDF附件的电子邮件.我创建了PDF文件,然后我做了以下哪些错误我相信:在发送电子邮件之前,我可以看到附带的chart.pdf,但是当我发送电子邮件时,它是在没有附件的情况下发送的,这是因为我没有正确附加文件.解决方法您将错误的mimeType传递给addAttachmentData().使用application/pdf而不是pdf.

  3. xcode – 无法在iOS8beta5中使用UIWebView打开PDF文件

    如果是,请提供一些示例代码.解决方法我找到了一种在WebView中查看PDF的解决方法

  4. iOS从UIWebview内容创建pdf

    哪个是从webview内容中获取最佳质量pdf文档的最佳选择?

  5. ios – 在Swift中将图像合并为PDF

    我想创建一个应用程序,要求用户从设备相机上传图片,然后使用swift将这些图像合并为PDF.怎么能实现这一目标?

  6. 我们可以在IOS应用程序的UIWebview中将条款和条件作为PDF加载吗?

    我在UIWebview中向我的应用添加了条款和条件.我真正想知道的是,我可以将其显示为逐页的pdf文档,还是应该使用任何其他方法?App商店会接受pdf格式吗?解决方法是的,这可以使用UIWebview完成,肯定会被Apple接受.如果您尝试从WebURL显示PDF文件,请使用以下代码.或者,如果您的应用程序中捆绑了PDF文件,请使用以下代码.

  7. ios – 通过UIDocumentInteractionController与Mail交互

    我正在通过UIDocumentInteractionController与其他应用共享PDF.在添加此功能之前,我使用MFMailComposeViewController定制了“发送到电子邮件”按钮–但现在我的UIDocumentInteractionController中还有一个Mail按钮,我想使用它来避免重复按钮.我的问题是,通过旧的邮件控制器,我曾经设置主题和内容文本,而如果我使用UID

  8. Quicklook / QLPreviewController,iOS 8的一些问题,但一切都适用于iOS 7.1

    我正在使用QuickLook查看PDF文件.它在iOS7.1中正常工作,但iOS8GM会出现一些问题.图片比文字好,我想告诉你问题:iOS7.1Xcode6使用QuickLook进行转换页面滚动,navigationBar隐藏得很好————————————————–————————而现在,iOS8GM与Xcode6使用QuickLook进行转换…页面滚动,navigationBar不隐藏,页面指示器隐藏在NavigationBar后面与iPhone模拟器,iPad模拟器,iPhone设备和iPad设备相同

  9. 如何选择PDF中的文本行然后突出显示它们? (IOS)

    我不想使用FastPDFKit,因为它显示徽标并且需要花钱,或者UIWebView,因为它对我们可以用它做的事情非常有限,而且我想学习如何自己做这些:-)谢谢!

  10. 如何在iOS上生成带有“真实”文本内容的PDF?

    我想在iOS6应用程序中生成一个好看的PDF.我试过了:>UIView在上下文中渲染>使用CoreText>使用NsstringdrawInRect>使用UILabeldrawRect这是一个代码示例:呈现的UIViews只包含UIImageView一堆UILabel.我还尝试了在stackoverflow上找到的建议:继承UILabel并执行此操作:但这也没有改变任何事情.无论我做什么,当在预览中打开PDF时,文本部分可以选择作为块,但不是每个字符的字符,并且缩放pdf显示它实际上是位图图像.有什么建议

随机推荐

  1. 10 个Python中Pip的使用技巧分享

    众所周知,pip 可以安装、更新、卸载 Python 的第三方库,非常方便。本文小编为大家总结了Python中Pip的使用技巧,需要的可以参考一下

  2. python数学建模之三大模型与十大常用算法详情

    这篇文章主要介绍了python数学建模之三大模型与十大常用算法详情,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感想取得小伙伴可以参考一下

  3. Python爬取奶茶店数据分析哪家最好喝以及性价比

    这篇文章主要介绍了用Python告诉你奶茶哪家最好喝性价比最高,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧

  4. 使用pyinstaller打包.exe文件的详细教程

    PyInstaller是一个跨平台的Python应用打包工具,能够把 Python 脚本及其所在的 Python 解释器打包成可执行文件,下面这篇文章主要给大家介绍了关于使用pyinstaller打包.exe文件的相关资料,需要的朋友可以参考下

  5. 基于Python实现射击小游戏的制作

    这篇文章主要介绍了如何利用Python制作一个自己专属的第一人称射击小游戏,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起动手试一试

  6. Python list append方法之给列表追加元素

    这篇文章主要介绍了Python list append方法如何给列表追加元素,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  7. Pytest+Request+Allure+Jenkins实现接口自动化

    这篇文章介绍了Pytest+Request+Allure+Jenkins实现接口自动化的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  8. 利用python实现简单的情感分析实例教程

    商品评论挖掘、电影推荐、股市预测……情感分析大有用武之地,下面这篇文章主要给大家介绍了关于利用python实现简单的情感分析的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下

  9. 利用Python上传日志并监控告警的方法详解

    这篇文章将详细为大家介绍如何通过阿里云日志服务搭建一套通过Python上传日志、配置日志告警的监控服务,感兴趣的小伙伴可以了解一下

  10. Pycharm中运行程序在Python console中执行,不是直接Run问题

    这篇文章主要介绍了Pycharm中运行程序在Python console中执行,不是直接Run问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

返回
顶部