欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用Python將PDF文件轉(zhuǎn)存為圖片的代碼示例

 更新時(shí)間:2023年09月28日 09:42:27   作者:艾派森  
因工作中的某些奇葩要求,需要將PDF文件的每頁內(nèi)容轉(zhuǎn)存成按順序編號的圖片,用第三方軟件或者在線轉(zhuǎn)換也可以,但批量操作還是Python方便,所以本文給大家介紹了使用Python將PDF文件轉(zhuǎn)存為圖片的方法,需要的朋友可以參考下

一、Python處理PDF

  • Python處理PDF的好處

  1. 自動化和批量處理:使用Python,你可以自動處理大量的PDF文件,例如從掃描儀生成的文檔、報(bào)告、合同等。這可以節(jié)省大量時(shí)間和努力,尤其是在需要重復(fù)性任務(wù)時(shí)。

  2. 文本提取:Python可以輕松地從PDF中提取文本內(nèi)容,使其可搜索、可編輯和可分析。這對于文本分析、數(shù)據(jù)挖掘和文檔檢索等任務(wù)非常有用。

  3. 報(bào)告生成:你可以使用Python創(chuàng)建自定義的PDF報(bào)告,將數(shù)據(jù)、圖表和圖像等信息以專業(yè)的方式呈現(xiàn)。這對于生成自動化的業(yè)務(wù)報(bào)告、數(shù)據(jù)可視化和數(shù)據(jù)分析很有幫助。

  4. PDF編輯:Python庫和工具使你能夠合并、拆分、旋轉(zhuǎn)、裁剪和編輯PDF文件的頁面。這對于在不使用專業(yè)PDF編輯軟件的情況下進(jìn)行簡單的文檔編輯很有用。

  5. 圖像提取:Python允許你從PDF文件中提取圖像,這對于處理包含圖形、圖表和圖片的文檔非常有幫助。

  6. 數(shù)據(jù)提取:當(dāng)PDF文件包含表格或結(jié)構(gòu)化數(shù)據(jù)時(shí),Python可以用于提取和轉(zhuǎn)換這些數(shù)據(jù),以便進(jìn)一步分析或?qū)氲綌?shù)據(jù)庫中。

  7. 自定義處理:Python提供了多種用于PDF處理的庫,允許你根據(jù)項(xiàng)目的需求進(jìn)行自定義處理。你可以選擇適合你需求的庫,以滿足具體要求。

  8. 跨平臺:Python是跨平臺的,因此你可以在不同操作系統(tǒng)上運(yùn)行相同的代碼,而無需擔(dān)心兼容性問題。

Python處理PDF文件的主要第三方庫包括:

  1. PyPDF2:PyPDF2是一個(gè)用于處理PDF文件的庫,可以用于提取文本、合并、拆分和旋轉(zhuǎn)PDF文件的頁面。它還支持添加頁面、水印和書簽等功能。

  2. ReportLab:ReportLab是一個(gè)用于創(chuàng)建PDF文件的庫,允許你以編程方式構(gòu)建PDF文檔,包括添加文本、圖像、表格等。

  3. PDFMiner:PDFMiner是一個(gè)用于提取文本和元數(shù)據(jù)的PDF處理庫。它可以解析PDF文件并提取文本、布局信息和鏈接等。

  4. pdf2image:pdf2image是一個(gè)用于將PDF文件轉(zhuǎn)換為圖像的庫,這對于處理包含圖形的PDF文件非常有用。

  5. fpdf2:fpdf2是一個(gè)用于創(chuàng)建PDF文件的庫,支持自定義字體、圖像和表格等。

  6. PyMuPDF:PyMuPDF是一個(gè)用于處理PDF文件的庫,可以用于提取文本、圖像和元數(shù)據(jù)。它還支持PDF文件的渲染和轉(zhuǎn)換為圖像。

  7. Camelot:Camelot是一個(gè)用于提取表格數(shù)據(jù)的庫,特別適用于從PDF文件中提取表格數(shù)據(jù)。

  8. Tabula-py:Tabula-py是一個(gè)用于提取表格數(shù)據(jù)的庫,可將PDF中的表格轉(zhuǎn)換為DataFrame對象。

  • 開發(fā)環(huán)境

操作系統(tǒng):使用windows, mac都可以

Python版本:系統(tǒng)中需要安裝Python3.6以上的版本,Python2已經(jīng)過期不建議使用,Python3.6以前的版本功能相對弱,最好就是采用Python3.6以上的版本

開發(fā)工具:有兩個(gè)可以選擇,jupyter notebook,是個(gè)網(wǎng)頁編輯器,可以運(yùn)行Python,常常用于交互性、探索性的開發(fā);pycharm,用于成熟腳本,或者web服務(wù)的一些開發(fā);這兩個(gè)工具可以隨意選擇。

二、用Python將PDF文件轉(zhuǎn)存為圖片

技術(shù)工具:

Python版本:3.9

代碼編輯器:jupyter notebook

因工作中的某些奇葩要求,需要將PDF文件的每頁內(nèi)容轉(zhuǎn)存成按順序編號的圖片。用第三方軟件或者在線轉(zhuǎn)換也可以,但批量操作還是Python方便,所謂搞定辦公自動化,Python出山,一統(tǒng)天下;Python出征,寸草不生~ 

不過這個(gè)需要用到`PyMuPDF`庫,電腦運(yùn)行cmd,輸入“pip install PyMuPDF”安裝即可。安裝后通過`import fitz`導(dǎo)入模塊。等等,為什么安裝的是`PyMuPDF`,導(dǎo)入的是`fitz`?俺`PyMuPDF`就是這么任性,怎么的,愛用不用!哈哈,開個(gè)玩笑。其實(shí)是因?yàn)閌PyMuPDF`曾用名`fitz-python`,所以只是`fitz`換了個(gè)馬甲而已。

這里先導(dǎo)入`fitz`庫,用于將PDF文件的頁面提取成像素信息(圖片)。再導(dǎo)入`glob`庫,用于獲取后綴為".pdf"的文件的文件名。`os`庫可新建文件夾。

#批量將PDF文件轉(zhuǎn)為圖片
import fitz
import glob
import os
image_path = "圖片\\" #存放圖片的文件夾
PDFfiles = glob.glob("PDF文件\\*.pdf") #獲取所有pdf文件的文件名
for PDFfile in PDFfiles: #遍歷所有PDF文件
    PDFdoc = fitz.open(PDFfile) #讀取PDF文件
    folder_name = PDFfile.split("\\")[-1].split(".")[0] #按源文件名新建文件夾
    for pg in range(PDFdoc.pageCount): #根據(jù)PDF的頁數(shù),按頁提取圖片        
        page = PDFdoc[pg]
        #增強(qiáng)圖片分辨率
        zoom_x = 3 #水平方向
        zoom_y = 3 #垂直方向
        mat = fitz.Matrix(zoom_x, zoom_y) 
        pix = page.getPixmap(matrix=mat)  
        #按原PDF名稱新建文件夾并按順序保存圖片
        if not os.path.exists(image_path+folder_name):#判斷文件夾是否已存在
            os.makedirs(image_path+folder_name)#不存在則新建,存在就跳過這行
        pix.writeImage(image_path+folder_name + "\\{}.png".format(str(pg+1))) #按PDF中的頁面順序命名并保存圖片

以上,我們先將所有待處理的PDF文件放入“PDF文件夾”,然后通過`glob.glob("PDF文件\\*.pdf")`搜索并抓取所有以".pdf"為后綴的文件,并存入變量`PDFfiles`中。結(jié)果如下所示:

PDFfiles

然后,遍歷`PDFfiles`中的所有PDF文件,使用`fitz.open()`讀取。`fitz.open()`用于創(chuàng)建PDF文件中頁面的像素映射(pixel maps),即用像素來表示頁面信息。然后按PDF文件名命名一個(gè)新的文件夾,以便儲存圖片。比如給“收貨記錄.pdf”文件建一個(gè)名字為“收貨記錄”的文件夾,專門儲存關(guān)于它的頁面的圖片。隨后用`for`循環(huán),根據(jù)PDF的頁數(shù),按頁提取圖片。將每頁的信息存入`page`變量,它的type 是`fitz.fitz.Page`,即一頁像素文件。

為了讓圖片看起來更清晰,需要增強(qiáng)圖片的分辨率,設(shè)定圖片水平及垂直方向的增強(qiáng)倍數(shù),傳入`Matrix`。`Matrix`用于提升即將保存的圖片的分辨率,分辨率的提升倍數(shù)為`zoom_x`與`zoom_y`的乘積。倍數(shù)越大,圖片越清晰,當(dāng)然占用空間也越大。這個(gè)參數(shù)可根據(jù)實(shí)際要求調(diào)整。然后將`Matrix`存入`mat`,傳入`getPixmap()`。`getPixmap()`用于控制圖片分辨率、色域(比如生成灰度圖像或帶有減色方案的圖像)、透明度、旋轉(zhuǎn)、鏡像、移位、剪切等。由于其它都不需要專門設(shè)定,所以只增強(qiáng)其分辨率。 

一頁圖片處理好后,就需要保存圖片了。先通過`os.path.exists`判斷一下需要的文件夾是否存在,若不存在就通過`os.makedirs`創(chuàng)建。然后用`pix.writeImage`按頁碼編號寫入并保存圖片。

以上就是使用Python將PDF文件轉(zhuǎn)存為圖片的代碼示例的詳細(xì)內(nèi)容,更多關(guān)于Python將PDF文件轉(zhuǎn)存為圖片的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python?字符替換的四方法

    Python?字符替換的四方法

    本文主要介紹了Python?字符替換的四方法,主要包括replace、translate、maketrans?和正則這是四種方法,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01
  • Python裝飾器使用方法全面梳理

    Python裝飾器使用方法全面梳理

    這篇文章主要介紹了Python @property裝飾器的用法,在Python中,可以通過@property裝飾器將一個(gè)方法轉(zhuǎn)換為屬性,從而實(shí)現(xiàn)用于計(jì)算的屬性,下面文章圍繞主題展開更多相關(guān)詳情,感興趣的小伙伴可以參考一下
    2023-01-01
  • Python Selenium XPath根據(jù)文本內(nèi)容查找元素的方法

    Python Selenium XPath根據(jù)文本內(nèi)容查找元素的方法

    這篇文章主要介紹了Python Selenium XPath根據(jù)文本內(nèi)容查找元素的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • pytorch如何定義新的自動求導(dǎo)函數(shù)

    pytorch如何定義新的自動求導(dǎo)函數(shù)

    這篇文章主要介紹了pytorch如何定義新的自動求導(dǎo)函數(shù)問題,具有很好的參考價(jià)值,希望對大家有所幫助。以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
    2022-12-12
  • python-xpath獲取html文檔的部分內(nèi)容

    python-xpath獲取html文檔的部分內(nèi)容

    這篇文章主要介紹了python-xpath獲取html文檔的部分內(nèi)容,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • Mac 上切換Python多版本

    Mac 上切換Python多版本

    Mac上自帶了Python2.x的版本,有時(shí)需要使用Python3.x版本做開發(fā),但不能刪了Python2.x,可能引起系統(tǒng)不穩(wěn)定,那么就需要安裝多個(gè)版本的Python下面通過本文給大家介紹Mac 上切換Python多版本的方法,需要的的朋友一起看看吧
    2017-06-06
  • 利用Python優(yōu)雅的登錄校園網(wǎng)

    利用Python優(yōu)雅的登錄校園網(wǎng)

    這篇文章主要介紹了如何利用Python優(yōu)雅的登錄校園網(wǎng),幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-10-10
  • PyCharm添加Anaconda中的虛擬環(huán)境Python解釋器出現(xiàn)Conda?executable?is?not?found錯(cuò)誤解決

    PyCharm添加Anaconda中的虛擬環(huán)境Python解釋器出現(xiàn)Conda?executable?is?not

    這篇文章主要給大家介紹了關(guān)于PyCharm添加Anaconda中的虛擬環(huán)境Python解釋器出現(xiàn)Conda?executable?is?not?found錯(cuò)誤的解決辦法,文中通過圖文介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2023-02-02
  • pyqt5的QComboBox 使用模板的具體方法

    pyqt5的QComboBox 使用模板的具體方法

    這篇文章主要介紹了pyqt5的QComboBox 使用模板的具體方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-09-09
  • python框架django項(xiàng)目部署相關(guān)知識詳解

    python框架django項(xiàng)目部署相關(guān)知識詳解

    這篇文章主要介紹了python框架django項(xiàng)目部署相關(guān)知識詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11

最新評論