最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間: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é)省大量時間和努力,尤其是在需要重復(fù)性任務(wù)時。

  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ù)時,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是一個用于處理PDF文件的庫,可以用于提取文本、合并、拆分和旋轉(zhuǎn)PDF文件的頁面。它還支持添加頁面、水印和書簽等功能。

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

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

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

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

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

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

  8. Tabula-py:Tabula-py是一個用于提取表格數(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ā)工具:有兩個可以選擇,jupyter notebook,是個網(wǎng)頁編輯器,可以運(yùn)行Python,常常用于交互性、探索性的開發(fā);pycharm,用于成熟腳本,或者web服務(wù)的一些開發(fā);這兩個工具可以隨意選擇。

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

技術(shù)工具:

Python版本:3.9

代碼編輯器:jupyter notebook

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

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

這里先導(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文件名命名一個新的文件夾,以便儲存圖片。比如給“收貨記錄.pdf”文件建一個名字為“收貨記錄”的文件夾,專門儲存關(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)然占用空間也越大。這個參數(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內(nèi)置數(shù)據(jù)類型詳解

    Python內(nèi)置數(shù)據(jù)類型詳解

    這篇文章主要介紹了Python內(nèi)置數(shù)據(jù)類型,需要的朋友可以參考下
    2014-08-08
  • pip升級pip3的快速方法指南

    pip升級pip3的快速方法指南

    使用python時經(jīng)常使用到pip命令,可以方便安裝python的各種第三方庫這篇文章主要給大家介紹了關(guān)于pip升級pip3的快速方法,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-12-12
  • Python基于execjs運(yùn)行js過程解析

    Python基于execjs運(yùn)行js過程解析

    這篇文章主要介紹了Python基于execjs運(yùn)行js過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-11-11
  • python實(shí)現(xiàn)連連看輔助之圖像識別延伸

    python實(shí)現(xiàn)連連看輔助之圖像識別延伸

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)連連看輔助之圖像識別延伸,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • numpy庫reshape用法詳解

    numpy庫reshape用法詳解

    這篇文章主要介紹了numpy庫reshape用法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • python實(shí)現(xiàn)圖像檢索的三種(直方圖/OpenCV/哈希法)

    python實(shí)現(xiàn)圖像檢索的三種(直方圖/OpenCV/哈希法)

    這篇文章主要介紹了python實(shí)現(xiàn)圖像檢索的三種(直方圖/OpenCV/哈希法),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Python實(shí)現(xiàn)將實(shí)體類列表數(shù)據(jù)導(dǎo)出到Excel文件

    Python實(shí)現(xiàn)將實(shí)體類列表數(shù)據(jù)導(dǎo)出到Excel文件

    在數(shù)據(jù)處理和報(bào)告生成中,將實(shí)體類的列表數(shù)據(jù)導(dǎo)出到Excel文件是一項(xiàng)常見任務(wù),Python提供了多種庫來實(shí)現(xiàn)這一目標(biāo),下面就來跟隨小編一起學(xué)習(xí)一下吧
    2025-01-01
  • python替換文件中的某幾行操作技巧

    python替換文件中的某幾行操作技巧

    這篇文章主要介紹了python替換文件中的某幾行,本文介紹使用python正則庫打開文件并替換文件中某幾行數(shù)據(jù)的可行方法,需要的朋友可以參考下
    2023-09-09
  • 利用Python中unittest實(shí)現(xiàn)簡單的單元測試實(shí)例詳解

    利用Python中unittest實(shí)現(xiàn)簡單的單元測試實(shí)例詳解

    如果項(xiàng)目復(fù)雜,進(jìn)行單元測試是保證降低出錯率的好方法,Python提供的unittest可以很方便的實(shí)現(xiàn)單元測試,從而可以替換掉繁瑣雜亂的main函數(shù)測試的方法,將測試用例、測試方法進(jìn)行統(tǒng)一的管理和維護(hù)。本文主要介紹了利用Python中unittest實(shí)現(xiàn)簡單的單元測試。
    2017-01-01
  • NumPy中zeros_like()函數(shù)的使用及說明

    NumPy中zeros_like()函數(shù)的使用及說明

    本文介紹了NumPy的numpy.zeros_like()函數(shù),包括其用法、參數(shù)、與numpy.zeros()的區(qū)別,以及在科學(xué)計(jì)算、機(jī)器學(xué)習(xí)等領(lǐng)域的應(yīng)用場景,強(qiáng)調(diào)其能夠簡便高效地創(chuàng)建與現(xiàn)有數(shù)組形狀和類型相同的全零數(shù)組
    2025-10-10

最新評論

诏安县| 凌海市| 麻江县| 垣曲县| 班戈县| 浦东新区| 奈曼旗| 乌鲁木齐县| 宜兴市| 灵川县| 克东县| 延津县| 岫岩| 濮阳县| 星座| 遂昌县| 临桂县| 马关县| 伊宁县| 唐海县| 卓资县| 南平市| 大田县| 临沂市| 建水县| 阿瓦提县| 保定市| 怀远县| 通城县| 长顺县| 简阳市| 筠连县| 微山县| 乳山市| 苏州市| 克什克腾旗| 宜黄县| 扶沟县| 潢川县| 长宁区| 乌鲁木齐市|