电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

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

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

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

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

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

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

pip install pymupdf

但注意導(dǎo)入時使用 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)

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

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

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

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

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

基于 pdf2image 庫的兩種方法

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

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

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

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

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中全部圖片都被提取出來!

再補充一下。核心方法covert_from_bytes包含大量參數(shù),可以自行修改。幾個常用參數(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,默認為 ppm

thread_count

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

userpw

PDF 的密碼

output_file

輸出文件名

poppler_path

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

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

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

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 联系我们-腾龙公司上分客服微信19116098882 | LED显示屏_LED屏方案设计精准报价专业安装丨四川诺显科技 | 铝机箱_铝外壳加工_铝外壳厂家_CNC散热器加工-惠州市铂源五金制品有限公司 | 在线钠离子分析仪-硅酸根离子浓度测定仪-油液水分测定仪价格-北京时代新维测控设备有限公司 | 二手光谱仪维修-德国OBLF光谱仪|进口斯派克光谱仪-热电ARL光谱仪-意大利GNR光谱仪-永晖检测 | 牛奶检测仪-乳成分分析仪-北京海谊 | 大鼠骨髓内皮祖细胞-小鼠神经元-无锡欣润生物科技有限公司 | 高压互感器,电流互感器,电压互感器-上海鄂互电气科技有限公司 | 旗帜网络笔记-免费领取《旗帜网络笔记》电子书 | 工业设计,人工智能,体验式3D展示的智能技术交流服务平台-纳金网 J.S.Bach 圣巴赫_高端背景音乐系统_官网 | 体坛网_体坛+_体坛周报新闻客户端| Safety light curtain|Belt Sway Switches|Pull Rope Switch|ultrasonic flaw detector-Shandong Zhuoxin Machinery Co., Ltd | LHH药品稳定性试验箱-BPS系列恒温恒湿箱-意大利超低温冰箱-上海一恒科学仪器有限公司 | 洗地机-全自动/手推式洗地机-扫地车厂家_扬子清洁设备 | SOUNDWELL 编码器|电位器|旋转编码器|可调电位器|编码开关厂家-广东升威电子制品有限公司 | 溶氧传感器-pH传感器|哈美顿(hamilton) | 电磁流量计_智能防腐防爆管道式计量表-金湖凯铭仪表有限公司 | 热闷罐-高温罐-钢渣热闷罐-山东鑫泰鑫智能热闷罐厂家 | 稳尚教育加盟-打造高考志愿填报平台_新高考志愿填报加盟_学业生涯规划加盟 | 盘扣式脚手架-附着式升降脚手架-移动脚手架,专ye承包服务商 - 苏州安踏脚手架工程有限公司 | led太阳能路灯厂家价格_风光互补庭院灯_农村市政工程路灯-中山华可路灯品牌 | 双舌接地线-PC68数字式高阻计-ZC36|苏海百科 | 电磁铁_推拉电磁铁_机械手电磁吸盘电磁铁厂家-广州思德隆电子公司 | 气密性检测仪_气密性检测设备_防水测试仪_密封测试仪-岳信仪器 | 新中天检测有限公司青岛分公司-山东|菏泽|济南|潍坊|泰安防雷检测验收 | 大功率金属激光焊接机价格_不锈钢汽车配件|光纤自动激光焊接机设备-东莞市正信激光科技有限公司 定制奶茶纸杯_定制豆浆杯_广东纸杯厂_[绿保佳]一家专业生产纸杯碗的厂家 | 防水套管厂家_刚性防水套管_柔性防水套管_不锈钢防水套管-郑州中泰管道 | 山东艾德实业有限公司| 北京工业设计公司-产品外观设计-产品设计公司-千策良品工业设计 北京翻译公司-专业合同翻译-医学标书翻译收费标准-慕迪灵 | 蓝莓施肥机,智能施肥机,自动施肥机,水肥一体化项目,水肥一体机厂家,小型施肥机,圣大节水,滴灌施工方案,山东圣大节水科技有限公司官网17864474793 | 海德莱电力(HYDELEY)-无功补偿元器件生产厂家-二十年专业从事电力电容器 | 厦门ISO认证|厦门ISO9001认证|厦门ISO14001认证|厦门ISO45001认证-艾索咨询专注ISO认证行业 | 一体化预制泵站-一体化提升泵站-一体化泵站厂家-山东康威环保 | 中图网(原中国图书网):网上书店,尾货特色书店,30万种特价书低至2折! | 知网论文检测系统入口_论文查重免费查重_中国知网论文查询_学术不端检测系统 | 北京森语科技有限公司-模型制作专家-展览展示-沙盘模型设计制作-多媒体模型软硬件开发-三维地理信息交互沙盘 | 塑胶跑道施工-硅pu篮球场施工-塑胶网球场建造-丙烯酸球场材料厂家-奥茵 | 百度关键词优化_网站优化_SEO价格 - 云无限好排名 | 真空搅拌机-行星搅拌机-双行星动力混合机-广州市番禺区源创化工设备厂 | 抓斗式清污机|螺杆式|卷扬式启闭机|底轴驱动钢坝|污水处理闸门-方源水利机械 | 热缩管切管机-超声波切带机-织带切带机-无纺布切布机-深圳市宸兴业科技有限公司 |