You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何去除pdf2image直接存盘生成JPG文件名中的‘_0001-’后缀?

问题:修改pdf2image直接存盘的文件名规则

我需要将多页PDF转换为多个JPG文件,要求图片直接写入硬盘而非暂存到内存。在Python 3.11中,我使用以下代码:

from pdf2image import convert_from_path
poppler_path = r".\poppler-22.12.0\Library\bin"  

images = convert_from_path('test.pdf', output_folder='.', output_file = 'test', 
         poppler_path=poppler_path, paths_only = True)

但pdf2image生成的文件名格式为test_0001-1.jpg、test_0001-2.jpg等,我希望生成的文件名不含_0001-后缀(例如test1.jpg)。目前我能想到的方法是不使用output_folder参数,逐个调用image.save()保存图片,但这种方式会先把图片存入内存,容易占用大量内存空间。请问是否可以修改pdf2image直接存盘时的文件名生成规则?


解决方案

pdf2image本质是封装了poppler的pdftoppm工具,其默认的文件名格式由poppler决定,没有直接提供修改文件名规则的参数。不过可以通过两种方式实现需求,且全程不加载图片到内存:

方法一:直接调用poppler的pdftoppm工具+批量重命名

绕开pdf2image,直接调用poppler核心工具生成图片,再批量重命名成目标格式:

import subprocess
import os

poppler_bin_path = r".\poppler-22.12.0\Library\bin"
pdf_path = "test.pdf"
output_prefix = "test"

# 调用pdftoppm生成JPG,初始格式为test-1.jpg、test-2.jpg...
subprocess.run(
    [
        os.path.join(poppler_bin_path, "pdftoppm.exe"),
        "-jpeg",  # 指定输出格式为JPG
        pdf_path,
        output_prefix
    ],
    check=True
)

# 批量重命名,将test-N.jpg改为testN.jpg
for filename in os.listdir("."):
    if filename.startswith(f"{output_prefix}-") and filename.endswith(".jpg"):
        new_filename = filename.replace("-", "")
        os.rename(filename, new_filename)

方法二:用pdf2image生成后立刻重命名

保留原代码的调用逻辑,利用paths_only=True返回的文件路径列表,直接对硬盘上的文件重命名,无需加载图片到内存:

from pdf2image import convert_from_path
import os

poppler_path = r".\poppler-22.12.0\Library\bin"  
output_prefix = "test"

# 生成文件到硬盘,返回所有图片的路径
image_paths = convert_from_path(
    'test.pdf', 
    output_folder='.', 
    output_file=output_prefix, 
    poppler_path=poppler_path, 
    paths_only=True
)

# 遍历路径,重命名为目标格式
for idx, old_path in enumerate(image_paths, start=1):
    new_path = f"{output_prefix}{idx}.jpg"
    os.rename(old_path, new_path)

说明

两种方法都不会将图片加载到内存:

  • 方法一直接通过命令行工具生成文件,全程由poppler处理并写入硬盘;
  • 方法二中paths_only=True让pdf2image只返回文件路径,不加载图片对象,重命名操作仅修改文件系统的元数据,不会占用额外内存。

内容的提问来源于stack exchange,提问作者Gardener_NL

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 02:16:13