求助:如何让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
相关产品推荐
相关产品推荐

