午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

您的位置:首頁技術(shù)文章
文章詳情頁

python 三種方法提取pdf中的圖片

瀏覽:26日期:2022-06-28 09:42:37

有時(shí)我們需要將一份或者多份PDF文件中的圖片提取出來,如果采取在線的網(wǎng)站實(shí)現(xiàn)的話又擔(dān)心圖片泄漏,手動(dòng)操作又覺得麻煩,其實(shí)用Python也可以輕松搞定!今天就跟大家系統(tǒng)分享幾種Python提取 PDF 圖片的方法。其實(shí)沒有非常完美的方法,每種方法提取效率都不是百分之百,因此可以考慮用多種方法進(jìn)行互補(bǔ),主要將涉及:

基于 fitz 庫和正則搜索提取圖片 基于 pdf2image 庫的兩種方法提取圖片 基于 fitz 庫和正則搜索

fitz 是 pymupdf 的子模塊,需要先用命令行安裝 pymupdf:

pip install pymupdf

但注意導(dǎo)入時(shí)使用 import fitz 導(dǎo)入模塊!

下面的代碼就利用 fitz 庫提取圖片需要通過正則匹配圖片元素,將模板元素轉(zhuǎn)化為像素后再以圖片形式寫出

import fitzimport reimport osfile_path = r’C:xxxxxx.pdf’ # PDF 文件路徑dir_path = r’C:xxx’ # 存放圖片的文件夾def pdf2image1(path, pic_path): checkIM = r'/Subtype(?= */Image)' pdf = fitz.open(path) lenXREF = pdf._getXrefLength() count = 1 for i in range(1, lenXREF): text = pdf._getXrefString(i) isImage = re.search(checkIM, text) if not isImage: continue pix = fitz.Pixmap(pdf, i) new_name = f'img_{count}.png' pix.writePNG(os.path.join(pic_path, new_name)) count += 1 pix = Nonepdf2image1(file_path, dir_path)

運(yùn)行提取示例文件后結(jié)果如下:

python 三種方法提取pdf中的圖片

可以看到,有一些很小的色塊也被提取成圖片,那么怎么過濾掉它們呢?

有一個(gè)簡(jiǎn)單的方法是通過大小過濾,pix 像素在 fitz 庫中存在一個(gè)重要的方法 pix.size 可以反映像素多少,簡(jiǎn)單的色素塊該值較低,可以通過設(shè)置一個(gè)閾值過濾。以閾值 10000 為例過濾:

import fitzimport reimport osfile_path = r’C:xxxxxx.pdf’ # PDF 文件路徑dir_path = r’C:xxx’ # 存放圖片的文件夾def pdf2image1(path, pic_path): checkIM = r'/Subtype(?= */Image)' pdf = fitz.open(path) lenXREF = pdf._getXrefLength() count = 1 for i in range(1, lenXREF): text = pdf._getXrefString(i) isImage = re.search(checkIM, text) if not isImage: continue pix = fitz.Pixmap(pdf, i) if pix.size < 10000: # 在這里添加一處判斷一個(gè)循環(huán) continue # 不符合閾值則跳過至下 new_name = f'img_{count}.png' pix.writePNG(os.path.join(pic_path, new_name)) count += 1 pix = Nonepdf2image1(file_path, dir_path)

python 三種方法提取pdf中的圖片

可以看到,全部圖片都被正常提?。?/p>基于 pdf2image 庫的兩種方法

一看名字就知道這個(gè)庫的用處了,官方文檔為https://www.cnpython.com/pypi/pdf2image

可以簡(jiǎn)單通過 pip install pdf2image 安裝,但poppler才是真正起做用的轉(zhuǎn)換器,因此需要額外安裝和配置:

windows用戶必須安裝poppler for Windows,然后將bin/文件夾添加到PATH Mac用戶必須安裝poppler for Mac

具體發(fā)揮作用的代碼官方文檔也給出了詳細(xì)的說明:

python 三種方法提取pdf中的圖片

那么我們就分別嘗試這兩種方法:

from pdf2image import convert_from_path,convert_from_bytesimport tempfilefrom pdf2image.exceptions import PDFInfoNotInstalledError, PDFPageCountError, PDFSyntaxErrorimport osfile_path = r’C:xxxxxx.pdf’ # PDF 文件路徑dir_path = r’C:xxx’ # 存放圖片的文件夾def pdf2image2(file_path, dir_path): images = convert_from_path(file_path, dpi=200) for image in images: if not os.path.exists(dir_path): os.makedirs(dir_path) image.save(file_path + f’img_{images.index(image)}.png’, ’PNG’)pdf2image2(file_path, dir_path)

可以成功提取圖片。再試試第二種方法:

from pdf2image import convert_from_path,convert_from_bytesimport tempfilefrom pdf2image.exceptions import PDFInfoNotInstalledError, PDFPageCountError, PDFSyntaxErrorimport osfile_path = r’C:xxxxxx.pdf’ # PDF 文件路徑dir_path = r’C:xxx’ # 存放圖片的文件夾def pdf2image3(file_path, dir_path): images = convert_from_bytes(open(file_path, ’rb’).read()) for image in images: if not os.path.exists(dir_path): os.makedirs(dir_path) image.save(file_path + f’img_{images.index(image)}.png’, ’PNG’)pdf2image3(file_path, dir_path)

python 三種方法提取pdf中的圖片

可以看到結(jié)果和之前一致,PDF中全部圖片都被提取出來!

再補(bǔ)充一下。核心方法covert_from_bytes包含大量參數(shù),可以自行修改。幾個(gè)常用參數(shù)總結(jié)如下:

參數(shù)

意義

pdf_path

PDF 文檔路徑

dpi

圖像質(zhì)量(如果是學(xué)術(shù)期刊雜志常見 300dpi)

output_folder

將生成的圖像寫入文件夾(而不是直接寫入內(nèi)存)

first_page

起始轉(zhuǎn)換頁數(shù)

last_page

轉(zhuǎn)換至哪一頁

fmt

圖像格式,可以指定為 png,默認(rèn)為 ppm

thread_count

允許參與轉(zhuǎn)換的線程數(shù)

userpw

PDF 的密碼

output_file

輸出文件名

poppler_path

指定 poppler 的安裝路徑,一開始配置好就無需指定

值得一提的是thread_count 參數(shù),可以啟動(dòng)多線程會(huì)大大加快轉(zhuǎn)換速度,尤其是 PDF 頁面較多時(shí)。有興趣的讀者可以做嘗試。

以上就是python 三種方法提取pdf中的圖片的詳細(xì)內(nèi)容,更多關(guān)于python 提取pdf中的圖片的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 人人狠狠 | 日韩免费中文字幕 | 天天爽天天做 | 日韩女优中文字幕 | 五月伊人婷婷 | 欧美日韩精品免费 | 日韩午夜在线 | 欧美午夜精品久久久久久人妖 | 黄色片子在线观看 | 亚洲天堂成人在线 | 成人极品视频 | 国产免费美女视频 | 欧美日韩午夜 | 亚洲午夜av| 影音先锋国产在线 | 操到高潮视频 | 黄色大片免费在线观看 | 亚洲另类欧美日韩 | 亚洲国产精品免费在线观看 | 亚洲系列在线观看 | 亚洲视频一二区 | 国产经典三级在线 | 免费a级黄色片 | 色丁香在线 | 欧美日韩一区二区不卡 | 亚洲黄色视屏 | 精品国产精品国产偷麻豆 | 国产精品一区二区三区久久久 | 动漫日批视频 | 久久精品国产精品 | 欧美日韩a| 精品人伦一区二区 | 日本午夜免费 | 中文字幕一区不卡 | 免费观看久久 | 日本亚洲视频 | 天天操天天干天天摸 | 久久色网站 | 成人亚洲国产 | 欧美黄色片在线观看 | h片在线播放 |