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

求助:如何让pytesseract自定义选择输出结果的保存文件夹

修改后的代码
from tkinter import filedialog
import pytesseract as tess
from PIL import Image
import os  # 新增:用于处理文件路径

tess.pytesseract.tesseract_cmd = r"C:\Program Files\Tesseract-OCR\tesseract.exe"


def extract():
    # 先让用户选择保存PDF的文件夹
    save_dir = filedialog.askdirectory(title="Select Folder to Save PDFs")
    if not save_dir:  # 若用户取消选择,直接退出函数
        return
    
    # 选择要识别的图片文件
    files = filedialog.askopenfilenames(title="Select Images")
    n = len(files)
    
    for i in range(n):
        img = Image.open(files[i])
        # 生成PDF格式的识别结果
        pdf_content = tess.image_to_pdf_or_hocr(img, lang='nld', config='--psm 11 --oem 3')
        
        # 生成保存的文件名,提供两种方式可选
        # 方式1:沿用你原来的test1.pdf、test2.pdf命名
        # pdf_filename = f"test{i+1}.pdf"
        # 方式2:用原图片名改后缀为PDF(比如原图是abc.png,生成abc.pdf),更直观
        img_base_name = os.path.basename(files[i])
        pdf_filename = os.path.splitext(img_base_name)[0] + ".pdf"
        
        # 拼接完整的保存路径
        full_save_path = os.path.join(save_dir, pdf_filename)
        
        # 写入并保存PDF文件,用with语句自动关闭文件更安全
        with open(full_save_path, "wb") as pdf_file:
            pdf_file.write(pdf_content)

if __name__ == "__main__":
    extract()
关键修改说明
  • 新增import os:专门处理文件路径拼接,适配不同系统的路径格式,避免手动写路径出错。
  • 添加文件夹选择步骤:用filedialog.askdirectory()弹出选择窗口,拿到用户指定的保存路径;如果用户取消选择,直接终止流程,防止后续报错。
  • 优化文件命名逻辑:提供两种命名方式,你可以根据需求注释/取消注释切换,第二种用原图片名的方式更方便对应识别的原图。
  • 改用with open()写法:自动帮你关闭文件,比原来直接open()后手动关闭更安全,不会出现文件占用问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 04:10:12