當前位置:
首頁 >
用 Python 批量提取 PDF 的图片,并存储到指定文件夹
發布時間:2024/3/26
38
豆豆
生活随笔
收集整理的這篇文章主要介紹了
用 Python 批量提取 PDF 的图片,并存储到指定文件夹
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
今天給大家分享如何用 Python 批量提取 PDF 的圖片,并存儲到指定文件夾。
一、實現效果圖
二、基于 fitz 庫和正則搜索提取圖片
fitz 庫是 pymupdf 中的一個模塊,用它來提取 pdf 里的圖片非常方便。
安裝命令
pip?install?fitz? pip?install?pymupdf三、代碼實現
導入相關包
import?fitz import?re import?os讀取 pdf 提取圖片,并存儲
def?save_pdf_img(path,save_path):'''path:?pdf的路徑save_path?:?圖片存儲的路徑'''#?使用正則表達式來查找圖片checkXO?=?r"/Type(?=?*/XObject)"?checkIM?=?r"/Subtype(?=?*/Image)"??#?打開pdfdoc?=?fitz.open(path)#?圖片計數imgcount?=?0#?獲取對象數量長度lenXREF?=?doc.xref_length()#?打印PDF的信息print("文件名:{},?頁數:?{},?對象:?{}".format(path,?len(doc),?lenXREF?-?1))#?遍歷每一個圖片對象for?i?in?range(1,?lenXREF):#?定義對象字符串text?=?doc.xref_object(i) #?????????print(i,text)isXObject?=?re.search(checkXO,?text)#?使用正則表達式查看是否是圖片isImage?=?re.search(checkIM,?text)#?如果不是對象也不是圖片,則continueif?not?isXObject?or?not?isImage:continueimgcount?+=?1#?根據索引生成圖像pix?=?fitz.Pixmap(doc,?i)#?根據pdf的路徑生成圖片的名稱new_name?=?path.replace('\\',?'_')?+?"_img{}.png".format(imgcount)new_name?=?new_name.replace(':',?'')#?如果pix.n<5,可以直接存為PNGif?pix.n?<?5:pix.writePNG(os.path.join(save_path,?new_name))#?否則先轉換CMYKelse:pix0?=?fitz.Pixmap(fitz.csRGB,?pix)pix0.writePNG(os.path.join(save_path,?new_name))pix0?=?None#?釋放資源pix?=?Noneprint("提取了{}張圖片".format(imgcount)) #?pdf路徑 path?=?r'/Users/wangwangyuqing/Desktop/data/img.pdf' save_path?=?r'/Users/wangwangyuqing/Desktop/data' save_pdf_img(path,save_path)運行結果
四、小結
Python 中 pdf2image 庫也可以完成以上需求,它的好處是如果你的 pdf 頁面較多時,pdf2image 可以啟動多線程會大大加快轉換速度,具體可參考?pdf2image 官方文檔。
最后,可能會遇到提取的圖片比原本少,或者提取出不想要的圖片。可以通過檢查圖片格式,可能不是常見的格式,提取時再減少或添加過濾條件進行嘗試。
-?END -
總結
以上是生活随笔為你收集整理的用 Python 批量提取 PDF 的图片,并存储到指定文件夹的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 文本词频分析_Python初学
- 下一篇: 怎么用python启动谷歌浏览器_如何用