pdf转图片python

本文介绍了PDF处理库pdf2image和PyMuPDF的安装、使用方法,以及它们在PDF解析、处理和转换方面的异同,强调了PyMuPDF在文档编辑和精细化处理上的优势,而Poppler则更注重基础转换和预览功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

pdf2image

下载pdf2image 包:

pip install pdf2image

安装依赖:poppler

conda install -c conda-forge poppler

参考https://wenku.youkuaiyun.com/answer/1zxh8ckp6i
在这里插入图片描述
方法:

images = convert_from_path('/home/belval/example.pdf')

实践

from pdf2image import convert_from_path, convert_from_bytes
import os
 
output_folder = './'
dpi_value= 600
pdf_start_page = 1 # pdf显示的第一页
start_page = 237 # 真实页码
prex = '' # 图像前缀

def to_image():
    def page_generator():
        while True:
            yield prex
    images = convert_from_path(r'xxx.pdf', dpi=600 ,output_folder=output_folder,
    first_page=pdf_start_page,fmt='jpg',thread_count=6 , output_file=page_generator())
    # convert_from_path(pdf_path, dpi=200, output_folder=None, first_page=None, last_page=None, fmt='ppm', jpegopt=None, thread_count=1, userpw=None, use_cropbox=False, strict=False, transparent=False, single_file=False, output_file=str(uuid.uuid4()), poppler_path=None, grayscale=False, size=None, paths_only=False, use_pdftocairo=False, timeout=600, hide_attributes=False)


# 结果 prex-237.jpg
def image_rename():
    # 文件重命名
    global start_page
    file_list = os.listdir(output_folder)
    for file in file_list:
        start_page_str = prex + str(start_page)
        path = os.path.join(output_folder, file)
        print(os.path.join(output_folder, start_page_str + '.jpg'))
        os.rename(path, os.path.join(output_folder, start_page_str + '.jpg'))
        start_page = start_page + 1
to_image()
image_rename()

fitz

fitz库(或称PyMuPDF中的fitz模块)是一个强大的Python库,专注于PDF文档的读取、解析、编辑和转换。fitz实际上是PyMuPDF项目的一个接口,提供了高度优化且易于使用的API来处理PDF内容。

pip install PyMuPDF

实践

import fitz
def pdf_to_image(data_folder,pdf_path,diff  , start_page ,end_page,prex = '' ):
    '''

    Args:
        data_folder:
        pdf_path:
        diff:   pdf真实页数与实际页数差-1
        start_page:  pdf开始真实页数-1
        end_page:  pdf结束真实页数-1

    Returns:

    '''


    # 打开PDF文件
    doc = fitz.open(pdf_path)

    for pg in tqdm(range(doc.page_count)):
        if pg >=start_page and pg <=end_page:
            # 获取当前页对象
            page = doc[pg]
            # 设置缩放系数为2.0,即将页面放大一倍
            zoom_x = 2.0
            zoom_y = 2.0
            mat = fitz.Matrix(zoom_x, zoom_y)
            # 设置dpi为600
            pix = page.get_pixmap(matrix=mat, dpi=600)
            # 保存为PNG格式的图片文件
            # png_path = 'page_%s.png' % str(pg + 1).zfill(3)
            page_num = pg - diff + 237
            if page_num<10:
                page_num = prex +'00' + str(page_num)
            elif page_num<100:
                page_num = prex +'0' + str(page_num)
            else:
                page_num = prex + str(page_num)
            print(f'{data_folder}/{page_num}.jpg')
            pix.save(f'{data_folder}/{page_num}.jpg')  # 第1张图片名:1.png,以此类推


    # 关闭PDF文件
    doc.close()

两种方式对比

相同点:
PDF解析与处理:两者都是用于处理 PDF 文档的开源工具,能够解析和读取 PDF 内容,包括文本和图像。

跨平台支持:均能在多种操作系统上运行,无论是 Windows、macOS 还是 Linux 平台都有很好的兼容性。

不同点:
定位与目标用户:

PyMuPDF 是一个 Python 库,它封装了 MuPDF 引擎,专为 Python 开发者设计,提供了丰富的文档操作功能,包括但不限于读取、写入、修改、合并、拆分 PDF 文件,以及精确的内容提取和页面布局控制。
Poppler 是一个 C++ 库,主要关注 PDF 文档的渲染、预览和转换,广泛用于 PDF 查看器和其他应用程序的基础架构,同时也提供了一些编程语言的绑定(比如 Python-Poppler),便于进行基础的 PDF 解析和转换操作。
功能范围:

PyMuPDF 提供了更多的文档操作和编辑功能,特别是在处理文档结构、元数据和内容级别上的修改上更加深入,适用于需要精细化处理 PDF 的场景。
Poppler 更侧重于 PDF 转换和预览功能,例如将 PDF 转换成文本或者 PostScript 格式,或是在 GUI 应用中作为后端渲染引擎,对于复杂的文档操作支持较少。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值