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

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

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

瀏覽:4日期: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 編程
相關文章:
主站蜘蛛池模板: 污水/卧式/潜水/钻井/矿用/大型/小型/泥浆泵,价格,参数,型号,厂家 - 安平县鼎千泵业制造厂 | 电销卡_稳定企业大语音卡-归属地可选-世纪通信 | 脉冲除尘器,除尘器厂家-淄博机械 | 香蕉筛|直线|等厚|弧形|振动筛|香蕉筛厂家-洛阳隆中重工 | GEDORE扭力螺丝刀-GORDON防静电刷-CHEMTRONICS吸锡线-上海卓君电子有限公司 | FFU_空气初效|中效|高效过滤器_空调过滤网-广州梓净净化设备有限公司 | 涡街流量计_LUGB智能管道式高温防爆蒸汽温压补偿计量表-江苏凯铭仪表有限公司 | 南京雕塑制作厂家-不锈钢雕塑制作-玻璃钢雕塑制作-先登雕塑厂 | 环比机械| 百方网-百方电气网,电工电气行业专业的B2B电子商务平台 | 苏州柯瑞德货架-仓库自动化改造解决方案 | 24位ADC|8位MCU-芯易德科技有限公司| 数年网路-免费在线工具您的在线工具箱-shuyear.com | 桐城新闻网—桐城市融媒体中心主办 | 水性漆|墙面漆|木器家具漆|水漆涂料_晨阳水漆官网 | 十二星座查询(性格特点分析、星座运势解读) - 玄米星座网 | 回转窑-水泥|石灰|冶金-巩义市瑞光金属制品有限责任公司 | 泰国专线_泰国物流专线_广州到泰国物流公司-泰廊曼国际 | 南京展台搭建-南京展会设计-南京展览设计公司-南京展厅展示设计-南京汇雅展览工程有限公司 | 三防漆–水性三防漆–水性浸渍漆–贝塔三防漆厂家 | 酒瓶_酒杯_玻璃瓶生产厂家_徐州明政玻璃制品有限公司 | 瑞典Blueair空气净化器租赁服务中心-专注新装修办公室除醛去异味服务! | 耐磨陶瓷,耐磨陶瓷管道_厂家-淄博拓创陶瓷科技 | 登车桥动力单元-非标液压泵站-非标液压系统-深圳市三好科技有限公司 | 安徽千住锡膏_安徽阿尔法锡膏锡条_安徽唯特偶锡膏_卡夫特胶水-芜湖荣亮电子科技有限公司 | 快速卷帘门_硬质快速卷帘门-西朗门业 | 水稻烘干机,小麦烘干机,大豆烘干机,玉米烘干机,粮食烘干机_巩义市锦华粮食烘干机械制造有限公司 水环真空泵厂家,2bv真空泵,2be真空泵-淄博真空设备厂 | 磁粉制动器|张力控制器|气胀轴|伺服纠偏控制器整套厂家--台灵机电官网 | 免联考国际MBA_在职MBA报考条件/科目/排名-MBA信息网 | 脱硝喷枪-氨水喷枪-尿素喷枪-河北思凯淋环保科技有限公司 | 艾默生变频器,艾默生ct,变频器,ct驱动器,广州艾默生变频器,供水专用变频器,风机变频器,电梯变频器,艾默生变频器代理-广州市盟雄贸易有限公司官方网站-艾默生变频器应用解决方案服务商 | 辊道窑炉,辊道窑炉厂家-山东艾希尔 | 优秀的临床医学知识库,临床知识库,医疗知识库,满足电子病历四级要求,免费试用 | 专业生产动态配料系统_饲料配料系统_化肥配料系统等配料系统-郑州鑫晟重工机械有限公司 | 振动传感器,检波器-威海广达勘探仪器有限公司 | 集装箱展厅-住人集装箱住宿|建筑|房屋|集装箱售楼处-山东锐嘉科技工程有限公司 | 粘度计NDJ-5S,粘度计NDJ-8S,越平水分测定仪-上海右一仪器有限公司 | 应急灯_消防应急灯_应急照明灯_应急灯厂家-大成智慧官网 | 校园文化空间设计-数字化|中医文化空间设计-党建|法治廉政主题文化空间施工-山东锐尚文化传播公司 | 电子万能试验机_液压拉力试验机_冲击疲劳试验机_材料试验机厂家-济南众标仪器设备有限公司 | 广州展台特装搭建商|特装展位设计搭建|展会特装搭建|特装展台制作设计|展览特装公司 |