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
總結
以上是生活随笔為你收集整理的python pdf 图片_第一节:python提取PDF文档中的图片的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 输出毫秒_自学单片机第十三篇上:单点输出
- 下一篇: python 逆向生成正则表达式_用Py