pdf转图片

目录

pdf2image库

PyMuPDF库

python-office库

pdfplumber库


pdf2image库

安装:pip install pdf2image

使用时会报错:pdf2image.exceptions.PDFInfoNotInstalledError: Unable to get page count. Is poppler installed and in PATH?

需要安装 poppler-windows 环境,下载地址:

链接: https://pan.baidu.com/s/1fGrYoMhDMIM4BUYE3Dp00Q?pwd=r9d7 提取码: r9d7

下载解压后将bin文件路径添加到环境变量path中,添加完成后命令行窗口输入pdftotext -v 可查看是否安装成功,安装成功后有版本信息。

设置环境变量后还是不行的话就在convert_from_path 方法中添加poppler_path 二进制文件路径。

python 复制代码
from pdf2image import convert_from_path

pdf_path = rf'test.pdf'
save_imgpath = rf'xxx'

images = convert_from_path(pdf_path, poppler_path=r'D:\poppler-24.08.0\Library\bin')
for i, image in enumerate(images):  #  将每一张图片保存为PNG文件
    image.save(fr'{save_imgpath}\page_{i + 1}.png', 'PNG')

PyMuPDF库

PyMuPDF 还提供了丰富的功能来操作PDF文件,如读取、写入、分割、合并、旋转、裁剪等。此外,它还支持加密和解密PDF文档,以及提取文本、图像和元数据等信息。

安装:pip install PyMuPDF

python 复制代码
from fitz import open, Matrix 

def pdf2img(pdf_path, img_dir):
    doc = open(pdf_path)  # 打开pdf
    # print(doc.page_count)  # 获取word文档页数
    # print(doc.metadata)  # 获取pdf 目录信息
    for page in doc:  # 遍历pdf的每一页【doc[page_no] ,可通过获取的页数和切片方式转换对应页的数据】
        
        # 将缩放因子 zoom_x 和 zoom_y 设为 2.0 之后,可以将转换出来的图片大小提高四倍
        zoom_x = 2.0  # 设置每页的水平缩放因子
        zoom_y = 2.0  # 设置每页的垂直缩放因子
        mat = Matrix(zoom_x, zoom_y)
        
        # mat = Matrix(zoom_x, zoom_y).prerotate(0)  # .prerotate(50)可设置旋转角度
        # mat = Matrix(zoom_x, zoom_y).prescale(1,2)  # .prescale(1,2) 设置图片宽高比
        # mat = Matrix(zoom_x, zoom_y).preshear(1,3)  # preshear(1,3) 拉伸图片
        pix = page.get_pixmap(matrix=mat,alpha=False)  #  Page 页面-光栅图像,alpha设置后会突出主体显示
        pix.pil_save(rf"{img_dir}\page-1{page.number}.png")  # 保存光栅图像图像,需要依赖第三方框架:Pillow
        # pix.save(rf"{img_dir}\page-1{page.number}.png")

python-office库

python-office库 是一个Python 自动化办公第三方库,能解决大部分自动化办公的问题。一行代码即可实现转换。

https://pypi.org/project/python-office/0.1.20/

安装依赖包特多,基本都会失败,使用镜像源安装:pip install python-office -i https://pypi.tuna.tsinghua.edu.cn/simple

python 复制代码
from office import pdf

pdf.pdf2imgs(pdf_path, save_img_path, merge=True)

pdfplumber库

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

python 复制代码
doc = pdfplumber.open(pdf_path)
print(doc.metadata)  # 获取pdf 目录信息
print(doc.pages)  # 获取pdf文件每页对象列表,打印结果[<Page:1>, <Page:2>, <Page:3>]
print(len(doc.pages))  # 获取文件页数
python 复制代码
import pdfplumber

with pdfplumber.open(pdf_path) as pd:
    for i,p in enumerate(pd.pages):
        img = p.to_image(resolution=500) # 可设置宽高参数,resolution 不设置时图片清晰图会低
        img.save(rf'{save_img_path}\{i}.png')
相关推荐
韩曙亮1 小时前
【人工智能】AI 人工智能 技术 学习路径分析 ① ( Python语言 -> 微积分 / 概率论 / 线性代数 -> 机器学习 )
人工智能·python·学习·数学·机器学习·ai·微积分
科普瑞传感仪器1 小时前
从轴孔装配到屏幕贴合:六维力感知的机器人柔性对位应用详解
前端·javascript·数据库·人工智能·机器人·自动化·无人机
喵叔哟1 小时前
6.配置管理详解
后端·python·flask
曾经的三心草1 小时前
基于正倒排索引的Java文档搜索引擎3-实现Index类-实现搜索模块-实现DocSearcher类
java·python·搜索引擎
MOMO陌染2 小时前
Python 饼图入门:3 行代码展示数据占比
后端·python
vvoennvv3 小时前
【Python TensorFlow】 TCN-GRU时间序列卷积门控循环神经网络时序预测算法(附代码)
python·rnn·神经网络·机器学习·gru·tensorflow·tcn
自学互联网3 小时前
使用Python构建钢铁行业生产监控系统:从理论到实践
开发语言·python
无心水3 小时前
【Python实战进阶】7、Python条件与循环实战详解:从基础语法到高级技巧
android·java·python·python列表推导式·python条件语句·python循环语句·python实战案例
xwill*4 小时前
RDT-1B: A DIFFUSION FOUNDATION MODEL FOR BIMANUAL MANIPULATION
人工智能·pytorch·python·深度学习
陈奕昆4 小时前
n8n实战营Day2课时2:Loop+Merge节点进阶·Excel批量校验实操
人工智能·python·excel·n8n