python pdf 图片_第一节:python提取PDF文档中的图片

1、安装第三方类库pymupdf:pip install pymupdf

2、安装完成后直接上代码,代码如下:

import fitz

import time

import re

import os

def pdf2pic(path, pic_path):

t0 = time.clock() # 生成图片初始时间

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.clock() # 图片完成时间

print("运行时间:{}s".format(t1 - t0))

print("提取了{}张图片".format(imgcount))

if __name__=='__main__':

path = r"C:\Users\lenovo\Desktop\数据.pdf"

pic_path = r'C:\Users\lenovo\Desktop\图片'

# 创建保存图片的文件夹

if os.path.exists(pic_path):

print("文件夹已存在,不必重新创建!")

pass

else:

os.mkdir(pic_path)

pdf2pic(path, pic_path)

3、运行结果

文件名:C:\Users\lenovo\Desktop\数据.pdf, 页数: 51, 对象: 156

运行时间:1.0037559488187855s

提取了1张图片

运行时间:1.9240614402553362s

提取了2张图片

运行时间:2.8580821293209087s

提取了3张图片

运行时间:3.59311390384999s

提取了4张图片

运行时间:4.055301359322903s

提取了5张图片

运行时间:4.861761705280556s

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/297307.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

利用两款软件实现图片转文字

wps&#xff08;另存为pdf&#xff09;CajViewer&#xff08;文字识别&#xff09;图片识别技术&#xff0c;网上看到的教程&#xff0c;真是佩服&#xff01;转载于:https://blog.51cto.com/p6xos/1655695

私房钱就藏在老婆眼皮底下

1 建议出一个藏私房钱的教程▼2 以前还是打飞的就这个价格&#xff0c;最多是个飞公交▼3 众所周知狗是不会剪视频的&#xff0c;所以是真的▼4 老实讲我小时候也幻想过这个操作▼5 这可真是一个悲伤的故事▼6 这可真是令人羡慕的发量▼7 退一步越想越气忍一时越想越亏▼…

19.Silverlight调用webservice上传多个文件

Silverlight不支持读写服务器端的硬盘&#xff0c;可是很多时候用户需要在Silverlight客户端往服务器端上传文件&#xff0c;那么本节将讲述 Silverlight中最简单的上传文件的方式&#xff1a;在Silverlight客户端将文件序列化为Byte[]字符组&#xff0c;然后服务器端使用 webS…

python第k序列元素查找_Python寻找第k小的元素

更多: http://my.oschina.net/u/438371/blog/1319561.[代码][Python]代码# -*- coding: utf-8 -*-from random import randintfrom math import ceil, floordef _partition(A, l, r, i):"""以A[i]为主元划分数组A[l..r]&#xff0c;使得&#xff1a;A[l..m-1] &…

原创:PHP内核研究:HASH表和变量

PHP HASH表 在PHP中,所有的数据 无论变量,常量,类,属性 都用Hash表来实现. 先要说说 HASH表 [c]typedef struct bucket { ulong h; /* Used for numeric indexing */ uint nKeyLength; //key长度 void *p…

Windows 11 小技巧- 安装

Windows 11 依赖于TPM 2.0&#xff0c;什么是TPM呢?TPM技术旨在提供基于硬件的与安全性相关的功能。TPM芯片是⼀个安全的加密处理器&#xff0c;有助于执⾏⽣成、存储和限制加密密钥的使用等操作。TPM芯片包含多重物理安全机制&#xff0c;具有防篡改功能&#xff0c;恶意软件…

如何判断一个人是不是值得深入交流?

全世界只有3.14 % 的人关注了爆炸吧知识每次翻看刚加好友的朋友圈时&#xff0c;都会对 ta 产生直观的判断。如果朋友圈很丰富&#xff0c;往往会觉得 ta 很有趣&#xff0c;会迫切想要和 ta 链接&#xff0c;而看到某些很单调的朋友圈&#xff0c;根本就没有深入沟通的欲望。真…

python 逆向生成正则表达式_用Python中的正则表达式生成lis

我有一个小脚本&#xff0c;用来产生一个预定义的字体和文本图像。我想将其更改为使用多种字体来呈现相同的文本&#xff0c;例如字母A以5种字体呈现。我将我的字体列表定义为&#xff1a;fonts [ Georgia, Consolas, Arial]然后我把它用在&#xff1a;for item in enumerate(…

Restive.js – 轻松让网站变成响应式和自适应

Restive.js 是一个 jQuery 插件&#xff0c;可以帮助您轻松快捷地添加响应式功能到你网站&#xff0c;适应几乎所有拥有 Web 功能的设备。使用设备检测&#xff0c;高级管理断点&#xff0c;以及方向管理的组合&#xff0c;Restive.js 会给你的网站提供一种不可思议的能力。 在…

消息分发的同步均衡策略

2019独角兽企业重金招聘Python工程师标准>>> TimeTunnel在做消息分发时有这样一个场景: A类消息需要做实时分析, 且量很大, 故它的消费者不会只是一台机器, 而是一组机器, 并要求这组中每台机器收到的消息量应该平均的, 即A消息在某个时刻有100条, 若有4台机器消费…

ssh长时间不操作便断开_连接SSH长时间不操作断开解决办法

经常连接ssh长时间不操作就断开&#xff0c;实在忍无可忍&#xff0c;每次都想解决这个问题&#xff0c;但是就是懒得搞&#xff0c;这次必须得一刀解决。解决方法一&#xff1a;服务器配置1、 连接SSHssh root192.168.0.1复制代码2、编辑sshd_configvim /etc/ssh/sshd_config复…

当下流行的直播技术demo演示

nginx-http-flv-module&#xff08;更新不是很频繁&#xff09; SRS: https://ossrs.net/lts/zh-cn/&#xff08;独立官网&#xff0c;目前最新稳定版version5&#xff09; 基于SRS搭建直播demo演示&#xff1a; 一、搭建流媒体服务器 参见官网&#xff1a;https://ossrs.ne…

SQL复制表

View Code --创建test_employee_info临时表结构&#xff0c;不保留关联关系select * into test_employee_info from employee_info where 1<>1;declare num intset num1while num<6begininsert into test_employee_info select employee_codepcast(num as varchar(1)…

Workflow Core + asp.net core 5.0 实现简单审批工作流

我们知道企业业务系统到处都可以审批工作流的&#xff0c;但也很少有像OA系统一样复杂多级多条件的审批工作流需要设计&#xff0c;所以我们需要一个轻量级的容易上手的workflow框架&#xff0c;通过GitHub,我发现danielgerlag/workflow-core 就非常合适&#xff0c;我下面我通…

python解析xml文件选用模块_python解析xml模块封装代码

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里技术人对外发布原创技术内容的最大平台&…

超1亿人选择朋友圈三天可见,背后的原因值得深思

全世界只有3.14 % 的人关注了爆炸吧知识每次翻看刚加好友的朋友圈时&#xff0c;都会对 ta 产生直观的判断。如果朋友圈很丰富&#xff0c;往往会觉得 ta 很有趣&#xff0c;会迫切想要和 ta 链接&#xff0c;而看到某些很单调的朋友圈&#xff0c;根本就没有深入沟通的欲望。真…

基于HTML5手机上下滑动翻页特效

基于HTML5手机上下滑动翻页特效。这是一款手机移动端触屏滑动翻页代码下载。效果图如下&#xff1a; 在线预览 源码下载 实现的代码。 html代码&#xff1a; <section class"u-alert"><img style"display:none;" src"images/loading_larg…

在Centos中yum安装和卸载软件的使用方法

在Centos中yum安装和卸载软件的使用方法安装方法安装一个软件时yum -y install httpd安装多个相类似的软件时yum -y install httpd*安装多个非类似软件时yum -y install httpd php php-gd mysql卸载一个软件时yum -y remove httpd卸载多个相类似的软件时yum -y remove httpd*卸…

.NET跨平台实践:.NetCore、.Net5/6 Linux守护进程设计

几年前&#xff0c;我写过两篇关于用C#开发Linux守护进程的技术文章&#xff0c;分别是《.NET跨平台实践&#xff1a;用C#开发Linux守护进程.NET跨平台实践&#xff1a;再谈用C#开发Linux守护进程 — 完整篇这就是本文的初衷。关于Linux Daemon程序的原理之类的&#xff0c;已经…

代码优化从数据库里查数据

今天写了几行代码&#xff0c;都是从一个表里查数据。而我却查了三次数据库&#xff0c; 代码例子如下&#xff1a; dalclass.GetLie("userName","Student","userId"id); dalclass.GetLie("userClass","Student","user…