python提取pdf圖片

import fitz
import re
import osdef 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.save(os.path.join(save_path, new_name))# 否則先轉換CMYKelse:pix0 = fitz.Pixmap(fitz.csRGB, pix)pix0.save(os.path.join(save_path, new_name))pix0 = None# 釋放資源pix = Noneprint("提取了{}張圖片".format(imgcount))# pdf路徑
path = r'C:\save\1.pdf'
save_path = r'C:\save'
save_pdf_img(path, save_path)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/35459.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/35459.shtml
英文地址,請注明出處:http://en.pswp.cn/news/35459.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

用HARU-Net增強核分割:一種基于混合注意的殘差u塊網絡

文章目錄 Enhancing Nucleus Segmentation with HARU-Net: A Hybrid Attention Based Residual U-Blocks Network摘要本文方法損失函數后處理消融實驗 Enhancing Nucleus Segmentation with HARU-Net: A Hybrid Attention Based Residual U-Blocks Network 摘要 核圖像分割是…

W6100-EVB-PICO 做TCP Server進行回環測試(六)

前言 上一章我們用W6100-EVB-PICO開發板做TCP 客戶端連接服務器進行數據回環測試&#xff0c;那么本章將用開發板做TCP服務器來進行數據回環測試。 TCP是什么&#xff1f;什么是TCP Server&#xff1f;能干什么&#xff1f; TCP (Transmission Control Protocol) 是一種面向連…

zabbix監控安裝部署

目錄 一、環境 二、配置 1.配置yum源&#xff0c;這里用的清華的 2.過濾一下安裝包&#xff0c;查看依賴包 安裝依賴包 3.配置數據庫 開機自啟 創建數據庫 創建用戶 授權 導入數據到數據庫 查看zabbix數據庫有沒有表和數據 4.修改zabbix配置文件 1.修改zabbix配置…

去趨勢化一個心電圖信號、信號功率譜、低通IIR濾波器并平滑信號、對濾波器引起的延遲進行補償研究(Matlab代碼實現)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;歡迎來到本博客????&#x1f4a5;&#x1f4a5; &#x1f3c6;博主優勢&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客內容盡量做到思維縝密&#xff0c;邏輯清晰&#xff0c;為了方便讀者。 ??座右銘&a…

SPM實現framework自動管理和分發

一、前言 Swift Package Manager (SPM) 是蘋果官方提供的用于管理 Swift 項目的依賴關系和構建過程的工具。它是一個集成在 Swift 編程語言中的包管理器&#xff0c;用于解決在開發過程中管理和構建包依賴項的需求。 那么如何使用SPM管理和分發Objective C編寫的二進制庫呢&a…

HOT86-單詞拆分

leetcode原題鏈接&#xff1a;單詞拆分 題目描述 給你一個字符串 s 和一個字符串列表 wordDict 作為字典。請你判斷是否可以利用字典中出現的單詞拼接出 s 。注意&#xff1a;不要求字典中出現的單詞全部都使用&#xff0c;并且字典中的單詞可以重復使用。 示例 1&#xff1a…

不同路徑 II——力扣63

class Solution {public:int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {int n=

一鍵登錄是如何在登錄方式中脫穎而出的?

首先&#xff0c;我們先了解一下登錄方式的演變過程&#xff0c;大致可以分為三個階段。分別是賬號密碼登錄、短信驗證碼登錄和一鍵登錄。 階段一&#xff1a;賬號密碼登錄 賬號密碼登錄是一種常見的用戶身份驗證方式&#xff0c;用戶需要輸入一個唯一的賬號和對應的密碼來登…

【APITable】教程:創建并運行一個自建小程序

1.進入APITable&#xff0c;在想要創建小程序的看板頁面點擊右上角的【小程序】&#xff0c;進入小程序編輯頁面。 2.創建一個新的小程序區。 點擊【 添加小程序】 點擊創建小程序&#xff0c;選擇模板&#xff0c;輸入名字。 3.確定后進入小程序部署引導頁面。 4.打開Xshell 7…

初識鴻蒙跨平臺開發框架ArkUI-X

HarmonyOS是一款面向萬物互聯時代的、全新的分布式操作系統。在傳統的單設備系統能力基礎上&#xff0c;HarmonyOS提出了基于同一套系統能力、適配多種終端形態的分布式理念&#xff0c;能夠支持手機、平板、智能穿戴、智慧屏、車機等多種終端設備&#xff0c;提供全場景&#…

99. for循環練習題-3種方式輸出0-9

【目錄】 文章目錄 99. for循環練習題-3種方式輸出0-91. for循環和while循環的區別2. 輸出 0~(n-1)的數字2.1 基礎代碼2.2 自定義函數代碼2.3 異常處理語句代碼 【正文】 99. for循環練習題-3種方式輸出0-9 1. for循環和while循環的區別 for循環和while循環都用于重復執行特定…

Linux一些常見的命令

1. 基礎命令 1. ls&#xff1a; 列出目錄內容。- 例如&#xff1a;ls -l 以長格式列出文件和目錄。2. cd&#xff1a; 切換工作目錄。- 例如&#xff1a;cd /home/user 進入 /home/user 目錄。3. pwd&#xff1a; 顯示當前工作目錄的路徑。4. mkdir&#xff1a; 創建新目錄。-…

flink-對齊和不對齊,精準一次和至少一次

精準一次怎么保證&#xff1f;可以設置為以下2個 對齊 當有一個barrier比較快時&#xff0c;輸入緩沖區阻塞&#xff0c;當另外一個barrier到來時&#xff0c;才進行備份&#xff0c;所以數據不會重復。優點&#xff1a;不會造成數據重復缺點&#xff1a;會造成數據積壓&#x…

ChatGPT Plus和ChatGPT對比

模型規模更大&#xff0c;參數數量超過6萬億&#xff0c;比ChatGPT大很多訓練數據更豐富&#xff0c;包括不同語言、領域和類型的數據語言理解和生成能力更強&#xff0c;能夠更準確地理解和生成文本可解釋性和可控性更好&#xff0c;支持更多的調參和控制參數&#xff0c;生成…

uni-app和springboot完成前端后端對稱加密解密流程

概述 使用對稱加密的方式實現。前端基于crypto-js。uni-app框架中是在uni.request的基礎上&#xff0c;在攔截器中處理的。springboot在Filter中完成解密工作。 uni-app 項目中引入crypto-js。 npm install crypto-js加密方法 const SECRET_KEY CryptoJS.enc.Utf8.parse(…

最強自動化測試框架Playwright(20)- iframe

一個頁面可以附加一個或多個 Frame 對象。每個頁面都有一個主框架&#xff0c;并且假定頁面級交互&#xff08;如&#xff09;在主框架中運行。click frame_locator 使用 iframe 時&#xff0c;可以創建一個框架定位器&#xff0c;該定位器將進入 iframe 并允許選擇該 iframe…

idea模板的使用(配置xml文件模板)

1. 問題的引出 我們在日常項目中可以發現&#xff0c;sql映射文件和mybatis主配置文件&#xff0c;以及application.yml文件中有很多固定不變的內容&#xff0c;為了方面使用&#xff0c;所以可以把這些xml文件設置為模板 2. 創建模板的步驟 按照圖片一步一步進行即可 點擊…

gcc編譯選項之預處理向源碼傳參和條件編譯

一、是什么? 預處理:是指在進行加工前準備工作. gcc 選項 文件名字 二、使用步驟 1.向源碼傳參 gcc -save-temps -DSENSOR_TYPE=SONY_IMX477_MIPI_8M_30FPS_12BIT hello.c -o hello 代碼如下(示例): #include <stdio.h> #include <stdlib.h>typedef enum …

acwing 平衡括號字符串 貪心 括號序列

&#x1f468;?&#x1f3eb; 平衡括號字符串 給定一個字符串 s s s&#xff0c;該字符串的每個字符都是 (、) 或 # 之一。 你的任務是將 s s s 中的每個 # 變換為一個或多個 )&#xff0c;從而得到一個平衡括號字符串。 不同 # 變換的 ) 的數量可以不同。 請你輸出為了…

數據容器——元組(tuple)

1、元組與列表的不同點 列表是可以修改的。如果想要傳遞的信息&#xff0c;不被算改&#xff0c;列表就不合適了。 元組同列表一樣&#xff0c;都是可以封裝多個、不同類型的元素在內。 但最大的不同點在于&#xff1a;元組一旦定義完成&#xff0c;就不可修改 所以&#xff…