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

如何让pdf2image支持含中文字符路径的PDF文件?

解决pdf2image处理含中文字符路径PDF的问题

问题描述

运行以下代码转换含中文路径的PDF为图片时:

from pdf2image import convert_from_path
images = convert_from_path('含中文字符的路径/中文文件名.pdf', 500)
# 保存图片

出现错误:

PDFPageCountError: Unable to get page count.
I/O Error: Couldn't open file '含中文字符的路径/??????.pdf': No such file or directory.

中文字符被替换为?,仅路径含中文时触发问题,无中文路径时程序正常。修改pdf2image.py中pdfinfo_from_path函数的解码方式(将out.decode("utf8", "ignore")改为out.decode("utf32", "ignore"))无效,且通过conda install -c conda-forge poppler安装依赖时速度极慢。

解决方案

1. 加速poppler安装

使用国内conda镜像源提升安装速度,先执行以下命令配置镜像:

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes

再执行安装命令:

conda install -c conda-forge poppler

2. 修复中文路径编码问题

修改pdf2image的底层调用逻辑,确保命令行能正确传递中文路径:
找到pdf2image.py中pdfinfo_from_path函数里的subprocess.Popen调用,将其修改为:

proc = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, encoding='utf-8')

同时去掉后续的out.decode()步骤,直接读取字符串输出。

3. 绕开中文路径问题:临时文件中转

将含中文路径的PDF复制到无中文的临时路径下处理,完成后清理临时文件:

import shutil
import os
from pdf2image import convert_from_path

original_pdf = '含中文字符的路径/中文文件名.pdf'
temp_pdf = 'temp.pdf'

# 复制到临时路径
shutil.copy(original_pdf, temp_pdf)
# 执行转换
images = convert_from_path(temp_pdf, 500)
# 保存图片
for idx, img in enumerate(images):
    img.save(f'转换后的页面_{idx+1}.png')
# 删除临时文件
os.remove(temp_pdf)

4. 替代方案:使用PyMuPDF库

PyMuPDF(fitz)对中文路径支持友好,无需依赖poppler,安装和使用更简便:

import fitz

# 打开PDF文件
doc = fitz.open('含中文字符的路径/中文文件名.pdf')
# 逐页转换为图片
for page_num in range(len(doc)):
    page = doc.load_page(page_num)
    # 设置DPI为500
    pix = page.get_pixmap(dpi=500)
    # 保存图片
    pix.save(f'页面_{page_num+1}.png')

安装命令:

pip install pymupdf

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 09:10:40