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

Python編程之PDF轉(zhuǎn)圖片的三種實(shí)現(xiàn)方法詳解

 更新時(shí)間:2026年03月19日 09:33:43   作者:倔強(qiáng)老呂  
這篇文章主要為大家詳細(xì)介紹了Python中PDF轉(zhuǎn)圖片的三種實(shí)現(xiàn)方法,主要是pdf2image,PyMuPDF和wand,文中的示例代碼講解詳細(xì),有需要的小伙伴可以了解下

有多種Python庫(kù)可以實(shí)現(xiàn)將PDF文件轉(zhuǎn)換為圖片,下面介紹幾種常用的方法:

方法1:使用pdf2image庫(kù)

from pdf2image import convert_from_path
import os

def pdf_to_images(pdf_path, output_folder):
    # 創(chuàng)建輸出文件夾
    if not os.path.exists(output_folder):
        os.makedirs(output_folder)
    
    # 轉(zhuǎn)換PDF為圖片
    images = convert_from_path(pdf_path)
    
    # 保存圖片
    for i, image in enumerate(images):
        image.save(f"{output_folder}/page_{i+1}.jpg", "JPEG")
    
    print(f"轉(zhuǎn)換完成,共生成 {len(images)} 張圖片")

# 使用示例
pdf_path = "input.pdf"  # 輸入PDF文件路徑
output_folder = "output_images"  # 輸出圖片文件夾
pdf_to_images(pdf_path, output_folder)

安裝依賴

pip install pdf2image

還需要安裝poppler:

Windows: 下載poppler并添加bin目錄到PATH

Mac: brew install poppler

Linux: sudo apt-get install poppler-utils

方法2:使用PyMuPDF(fitz)庫(kù)

import fitz  # PyMuPDF
import os

def pdf_to_images(pdf_path, output_folder, zoom=3):
    # 創(chuàng)建輸出文件夾
    if not os.path.exists(output_folder):
        os.makedirs(output_folder)
    
    # 打開PDF文件
    pdf_document = fitz.open(pdf_path)
    
    # 逐頁(yè)轉(zhuǎn)換為圖片
    for page_num in range(len(pdf_document)):
        page = pdf_document.load_page(page_num)
        mat = fitz.Matrix(zoom, zoom)  # 設(shè)置縮放因子提高分辨率
        pix = page.get_pixmap(matrix=mat)
        output_path = f"{output_folder}/page_{page_num+1}.png"
        pix.save(output_path)
    
    print(f"轉(zhuǎn)換完成,共生成 {len(pdf_document)} 張圖片")
    pdf_document.close()

# 使用示例
pdf_path = "input.pdf"
output_folder = "output_images"
pdf_to_images(pdf_path, output_folder)

安裝依賴

pip install pymupdf

方法3:使用wand(ImageMagick)庫(kù)

from wand.image import Image
import os

def pdf_to_images(pdf_path, output_folder, resolution=300):
    # 創(chuàng)建輸出文件夾
    if not os.path.exists(output_folder):
        os.makedirs(output_folder)
    
    # 轉(zhuǎn)換PDF為圖片
    with Image(filename=pdf_path, resolution=resolution) as img:
        img.compression_quality = 99
        img.save(filename=f"{output_folder}/page.jpg")  # 會(huì)自動(dòng)生成多個(gè)文件
    
    # 統(tǒng)計(jì)生成的文件數(shù)量
    image_count = len([f for f in os.listdir(output_folder) if f.endswith('.jpg')])
    print(f"轉(zhuǎn)換完成,共生成 {image_count} 張圖片")

# 使用示例
pdf_path = "input.pdf"
output_folder = "output_images"
pdf_to_images(pdf_path, output_folder)

安裝依賴

pip install wand

還需要安裝ImageMagick:

  • Windows: 下載安裝ImageMagick
  • Mac: brew install imagemagick
  • Linux: sudo apt-get install imagemagick

PyMuPDF

PyMuPDF(也稱為 fitz)是一個(gè)高性能的 Python PDF 處理庫(kù),基于 MuPDF 引擎,支持 PDF 轉(zhuǎn)圖片、文本提取、頁(yè)面操作 等功能。相比其他庫(kù),它的速度更快,且不依賴外部工具(如 popplerImageMagick)。

1. 安裝

pip install pymupdf -i https://pypi.tuna.tsinghua.edu.cn/simple

2. 核心功能示例

PDF 轉(zhuǎn)圖片

import fitz  # PyMuPDF
import os

def pdf_to_images(pdf_path, output_folder, zoom=2, fmt="png"):
    """將 PDF 每頁(yè)轉(zhuǎn)為圖片
    Args:
        pdf_path: PDF 文件路徑
        output_folder: 輸出文件夾
        zoom: 縮放因子(提高分辨率)
        fmt: 圖片格式(png/jpg)
    """
    if not os.path.exists(output_folder):
        os.makedirs(output_folder)
    
    doc = fitz.open(pdf_path)
    for page_num in range(len(doc)):
        page = doc.load_page(page_num)
        mat = fitz.Matrix(zoom, zoom)  # 提高分辨率
        pix = page.get_pixmap(matrix=mat)
        output_path = f"{output_folder}/page_{page_num+1}.{fmt}"
        pix.save(output_path)
    
    print(f"轉(zhuǎn)換完成,共生成 {len(doc)} 張圖片")

# 使用示例
pdf_to_images("input.pdf", "output_images", zoom=3, fmt="jpg")

參數(shù)說(shuō)明

  • zoom=2:放大 2 倍(默認(rèn) 72 DPI,zoom=3 約等于 300 DPI)。
  • fmt="png":輸出格式(支持 png/jpg/ppm/tga 等)。

提取 PDF 文本

doc = fitz.open("input.pdf")
text = ""
for page in doc:
    text += page.get_text()  # 提取純文本
print(text)

高級(jí)選項(xiàng)

  • page.get_text("blocks"):按文本塊提?。◣ё鴺?biāo)和格式)。
  • page.get_text("words"):按單詞提取。

合并/拆分 PDF

# 合并 PDF
doc1 = fitz.open("file1.pdf")
doc2 = fitz.open("file2.pdf")
doc1.insert_pdf(doc2)  # 將 doc2 插入到 doc1 末尾
doc1.save("merged.pdf")

# 拆分 PDF(提取指定頁(yè))
doc = fitz.open("input.pdf")
new_doc = fitz.open()
new_doc.insert_pdf(doc, from_page=0, to_page=2)  # 提取前 3 頁(yè)
new_doc.save("split.pdf")

添加水印或注釋

doc = fitz.open("input.pdf")
page = doc.load_page(0)

# 添加文本水印
page.insert_text(
    point=(50, 50),  # 坐標(biāo) (x,y)
    text="Watermark",
    fontsize=20,
    color=(1, 0, 0),  # RGB 顏色(0-1 范圍)
    rotate=45  # 旋轉(zhuǎn)角度
)

# 添加矩形標(biāo)注
page.draw_rect(
    rect=fitz.Rect(50, 50, 200, 100),  # 矩形區(qū)域 (x1,y1,x2,y2)
    color=(0, 1, 0),
    width=2  # 邊框?qū)挾?
)

doc.save("output.pdf")

3. 常見問(wèn)題解決

問(wèn)題 1:ModuleNotFoundError: No module named 'fitz'

原因PyMuPDF 的導(dǎo)入名是 fitz,但包名是 pymupdf。

解決:確保安裝正確:

pip uninstall fitz  # 如果誤裝了舊版
pip install pymupdf

問(wèn)題 2:圖片分辨率低

解決:調(diào)整 zoom 參數(shù)(如 zoom=3)或直接設(shè)置 DPI:

mat = fitz.Matrix(300/72, 300/72)  # 300 DPI
pix = page.get_pixmap(matrix=mat)

問(wèn)題 3:處理加密 PDF

doc = fitz.open("encrypted.pdf", password="your_password")

4. 小結(jié)

推薦場(chǎng)景

  • 需要高性能 PDF 轉(zhuǎn)圖片。
  • 避免安裝外部依賴(如 popplerImageMagick)。
  • 需要高級(jí)功能(文本提取、PDF 編輯等)。

優(yōu)勢(shì)

  • 純 Python 實(shí)現(xiàn),跨平臺(tái)。
  • 支持加密 PDF、高分辨率導(dǎo)出、精確文本提取。

性能對(duì)比

庫(kù)依賴項(xiàng)速度功能豐富度
PyMuPDF無(wú)極快★★★★★
pdf2imagepoppler★★★☆☆
wandImageMagick★★★★☆

注意事項(xiàng)

  • 對(duì)于多頁(yè)P(yáng)DF,每種方法都會(huì)生成多個(gè)圖片文件
  • 可以通過(guò)調(diào)整參數(shù)(如分辨率、縮放因子)來(lái)控制圖片質(zhì)量
  • 大PDF文件轉(zhuǎn)換可能需要較多內(nèi)存
  • 輸出格式可以是JPG、PNG等常見圖片格式

選擇哪種方法取決于你的具體需求和環(huán)境配置。pdf2image通常最簡(jiǎn)單易用,PyMuPDF性能較好,wand則提供了更多圖像處理選項(xiàng)。

以上就是Python編程之PDF轉(zhuǎn)圖片的三種實(shí)現(xiàn)方法詳解的詳細(xì)內(nèi)容,更多關(guān)于Python PDF轉(zhuǎn)圖的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python循環(huán)輸出三角形圖案的例子

    python循環(huán)輸出三角形圖案的例子

    今天小編就為大家分享一篇python循環(huán)輸出三角形圖案的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-11-11
  • 使用python?xmlrpc連接odoo方式

    使用python?xmlrpc連接odoo方式

    這篇文章主要介紹了使用python?xmlrpc連接odoo方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • 基于PyQt5制作Excel數(shù)據(jù)分組匯總器

    基于PyQt5制作Excel數(shù)據(jù)分組匯總器

    這篇文章主要介紹了基于PyQt5制作的一個(gè)小工具:Excel數(shù)據(jù)分組匯總器。文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起試一試
    2022-01-01
  • 大語(yǔ)言模型的開發(fā)利器langchainan安裝使用快速入門學(xué)習(xí)

    大語(yǔ)言模型的開發(fā)利器langchainan安裝使用快速入門學(xué)習(xí)

    這篇文章主要為大家介紹了大語(yǔ)言模型的開發(fā)利器langchain安裝使用快速入門學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • 利用PyQt5制作一個(gè)豆瓣電影信息查看器

    利用PyQt5制作一個(gè)豆瓣電影信息查看器

    這篇文章主要介紹了如何通過(guò)PyQt5制作一個(gè)查看器,可以查看豆瓣前100名電影的信息,當(dāng)然這個(gè)爬取信息比較簡(jiǎn)單。感興趣的小伙伴可以試一試
    2022-01-01
  • Python實(shí)現(xiàn)的求解最大公約數(shù)算法示例

    Python實(shí)現(xiàn)的求解最大公約數(shù)算法示例

    這篇文章主要介紹了Python實(shí)現(xiàn)的求解最大公約數(shù)算法,涉及Python數(shù)學(xué)運(yùn)算相關(guān)操作技巧,需要的朋友可以參考下
    2018-05-05
  • Python輕量級(jí)搜索工具Whoosh的使用教程

    Python輕量級(jí)搜索工具Whoosh的使用教程

    本文將為大家簡(jiǎn)單介紹一下Python中的一個(gè)輕量級(jí)搜索工具Whoosh,并給出相應(yīng)的使用示例代碼,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-07-07
  • Python矩陣常見運(yùn)算操作實(shí)例總結(jié)

    Python矩陣常見運(yùn)算操作實(shí)例總結(jié)

    這篇文章主要介紹了Python矩陣常見運(yùn)算操作,結(jié)合實(shí)例形式總結(jié)分析了Python矩陣的創(chuàng)建以及相乘、求逆、轉(zhuǎn)置等相關(guān)操作實(shí)現(xiàn)方法,需要的朋友可以參考下
    2017-09-09
  • Python批量修改文件名操作指南(文件名的替換、前綴、后綴的添加)

    Python批量修改文件名操作指南(文件名的替換、前綴、后綴的添加)

    很多時(shí)候我們手上有一堆文件,需要修改名稱時(shí)需要一個(gè)一個(gè)修改,太麻煩了,這篇文章主要給大家介紹了關(guān)于Python批量修改文件名的相關(guān)資料,包括文件名的替換、前綴、后綴的添加的相關(guān)資料,需要的朋友可以參考下
    2024-04-04
  • python字符串的index和find的區(qū)別詳解

    python字符串的index和find的區(qū)別詳解

    這篇文章主要介紹了python字符串的index和find的區(qū)別,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-06-06

最新評(píng)論

广元市| 和平区| 德钦县| 仁寿县| 泽州县| 南木林县| 深泽县| 寻甸| 梧州市| 清涧县| 南平市| 屏东市| 长兴县| 盐边县| 河北省| 衡山县| 星座| 新干县| 余庆县| 阜新市| 孟津县| 津南区| 禄丰县| 略阳县| 马关县| 额尔古纳市| 通城县| 平遥县| 搜索| 利辛县| 宿迁市| 神池县| 宜兰市| 逊克县| 西贡区| 仲巴县| 榆社县| 民县| 鄂托克旗| 班玛县| 双城市|