日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

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

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

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

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

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

pip install pymupdf

但注意導入時使用 import fitz 導入模塊!

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

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)

運行提取示例文件后結果如下:

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

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

有一個簡單的方法是通過大小過濾,pix 像素在 fitz 庫中存在一個重要的方法 pix.size 可以反映像素多少,簡單的色素塊該值較低,可以通過設置一個閾值過濾。以閾值 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: # 在這里添加一處判斷一個循環 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中的圖片

可以看到,全部圖片都被正常提取!

基于 pdf2image 庫的兩種方法

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

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

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

具體發揮作用的代碼官方文檔也給出了詳細的說明:

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中的圖片

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

再補充一下。核心方法covert_from_bytes包含大量參數,可以自行修改。幾個常用參數總結如下:

參數

意義

pdf_path

PDF 文檔路徑

dpi

圖像質量(如果是學術期刊雜志常見 300dpi)

output_folder

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

first_page

起始轉換頁數

last_page

轉換至哪一頁

fmt

圖像格式,可以指定為 png,默認為 ppm

thread_count

允許參與轉換的線程數

userpw

PDF 的密碼

output_file

輸出文件名

poppler_path

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

值得一提的是thread_count 參數,可以啟動多線程會大大加快轉換速度,尤其是 PDF 頁面較多時。有興趣的讀者可以做嘗試。

以上就是python 三種方法提取pdf中的圖片的詳細內容,更多關于python 提取pdf中的圖片的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
视频福利一区| 国产色综合网| 色婷婷成人网| 麻豆视频一区二区| 亚洲最新av| 成人av三级| 日韩免费看片| 日韩视频一区| 婷婷成人在线| 精品九九在线| 国产调教一区二区三区| 麻豆成人在线| 亚洲午夜视频| av日韩中文| 国产高潮在线| 樱桃成人精品视频在线播放| 国产精品一区二区三区美女| 美女精品在线观看| 亚洲天堂免费电影| 欧美三级网址| 久久久久久自在自线| 日韩精品一级中文字幕精品视频免费观看| 国产精品88久久久久久| 精品视频在线你懂得| 国产亚洲电影| 欧美日韩亚洲一区在线观看| 国产精品va视频| 丝袜亚洲另类欧美| 免费在线观看日韩欧美| 日韩高清一区在线| 日韩欧美午夜| 亚洲精品一二三区区别| 欧美日韩 国产精品| 成人日韩av| 亚洲无线一线二线三线区别av| 午夜一区在线| 精品一区二区三区中文字幕在线| 秋霞影视一区二区三区| 日韩在线综合| 国产日本精品| 成人污污视频| 青草久久视频| 久久久精品日韩| 免播放器亚洲一区| 亚洲婷婷在线| 欧美日韩国产精品一区二区亚洲| 中文在线日韩| 国产91精品对白在线播放| 日韩一区精品字幕| 97视频热人人精品免费| 亚洲深夜福利| 91精品一区国产高清在线gif | 日韩av字幕| 麻豆国产欧美日韩综合精品二区| 激情欧美一区二区三区| 日韩成人午夜精品| 成人亚洲精品| 欧美亚洲专区| 日韩av有码| 亚洲一区中文| 樱桃视频成人在线观看| 日韩在线观看一区二区三区| 亚洲午夜av| 日韩另类视频| 亚洲欧美伊人| 日韩另类视频| se01亚洲视频 | 亚洲二区视频| 国产精品国产三级在线观看| 婷婷综合一区| 欧美sss在线视频| 久久最新视频| 成人看片网站| 天堂久久一区| 久久精品二区三区| 国产精品男女| 国产精品99久久免费| 国产精品va视频| 美女尤物国产一区| 日韩在线短视频| 免费日韩av片| 日本久久精品| 中文无码久久精品| 精品国产网站| 日本视频中文字幕一区二区三区| 精品三级在线| 日韩中文字幕一区二区高清99| 日韩精品麻豆| 美腿丝袜亚洲三区| 日本va欧美va瓶| 蜜桃视频在线观看一区| 欧美精品高清| 青青青免费在线视频| 久久国内精品视频| 亚洲日产国产精品| 一区二区电影| 136国产福利精品导航网址| 久久精品网址| 蜜桃免费网站一区二区三区| 国产农村妇女精品一区二区 | 亚洲综合中文| 99在线|亚洲一区二区| 日韩一区自拍| 深夜福利视频一区二区| 精品亚洲a∨一区二区三区18| 日韩av电影一区| 日韩区一区二| 国产欧美久久一区二区三区| 日韩欧美久久| 国产精品magnet| 麻豆91在线播放| 国产精品15p| 精品中文字幕一区二区三区| 老司机免费视频一区二区三区| 久久伊人亚洲| 中文字幕在线视频久| 中文字幕在线视频久| 在线天堂资源www在线污| 欧美日韩精品免费观看视欧美高清免费大片 | 日韩一区电影| 亚洲精品在线二区| 在线日韩中文| 欧美网站在线| 亚洲国产专区| 亚洲精品乱码久久久久久蜜桃麻豆 | 99久久激情| 国产精品www.| 亚洲高清久久| 日本中文字幕不卡| 97se亚洲| 欧美精品日日操| 日韩一区二区三免费高清在线观看 | 国产精品久久久久久久久久齐齐| 少妇高潮一区二区三区99| 国产欧美一级| 色在线视频观看| 天堂va蜜桃一区二区三区| 69堂精品视频在线播放| 国产精品任我爽爆在线播放| 91精品国产自产在线观看永久∴| 亚洲精品一区二区妖精| 国产精品宾馆| 综合欧美精品| 一本大道色婷婷在线| 激情偷拍久久| 青青国产精品| 国产精品入口久久| 精品亚洲美女网站| 日韩成人av影视| av在线资源| 亚洲精品极品| 精品三级久久久| 免费在线观看不卡| 日韩av二区| 亚洲影院天堂中文av色| 欧美国产日本| 在线亚洲欧美| 国产欧美一区二区三区国产幕精品| 久久高清精品| 国产精品一线| 欧美在线亚洲| 久久wwww| 日韩av一区二区在线影视| av资源亚洲| 美女在线视频一区| 亚洲免费观看| 久久久成人网| 久久这里只有| 亚洲a成人v| 在线日韩av| 日韩精品电影| 欧美一区不卡| 免费在线成人网| 久久久久亚洲| 福利一区二区三区视频在线观看| 国产日韩综合| 欧美一区三区| 日韩精品dvd| www在线观看黄色| 久久精品国产福利| 麻豆久久久久久| 国产日韩亚洲| 日韩欧美2区| 中文字幕一区二区精品区| 国产亚洲福利| 亚洲美洲欧洲综合国产一区| 欧美福利在线| 欧美日韩国产综合网| 国产二区精品| 日韩成人亚洲| 黄色亚洲在线| 婷婷综合社区| 国产精品外国| 日本亚洲不卡| 精品亚洲精品| 亚洲深夜av| 欧美日韩一区二区三区在线电影| 日韩国产欧美在线视频| 美女高潮久久久| 黄色欧美日韩|