IsADirectoryError错误排查:如何用Pathlib正确批量预处理图片文件夹(ABBYY服务)
代码修改要点
修复核心调用错误:主函数里错误地将文件夹路径
image_folder传给了仅支持单个文件的get_preprocessed_image函数,这是触发IsADirectoryError的直接原因。需要替换为调用批量处理函数preprocess_image_folder_(image_folder)(或优化命名后的preprocess_image_folder)。修正文件匹配规则:当前批量函数匹配的是
*.pdf文件,但你需要处理图片文件夹,应改为匹配图片格式,比如:# 匹配单种图片格式 image_folder.rglob("*.jpg") # 匹配多种常见图片格式 image_folder.rglob("*.{jpg,png,jpeg,bmp}")优化文件保存逻辑(建议):直接覆盖原文件存在数据丢失风险,建议将预处理后的文件保存到独立子文件夹:
processed_folder = image_folder / "processed" processed_folder.mkdir(exist_ok=True) # 保存时指定新路径 get_preprocessed_image(image_path).save(processed_folder / image_path.name)规范函数命名(可选):
preprocess_image_folder_末尾的下划线属于冗余命名,可改为preprocess_image_folder提升可读性。
修改后的完整代码
import pathlib import io import PIL.Image import pyabbyy from tqdm import tqdm image_folder = pathlib.Path("path_to_image_folder") def get_preprocessed_image(image_path: pathlib.Path) -> PIL.Image.Image: with image_path.open("rb") as image_input: return PIL.Image.open(io.BytesIO(pyabbyy.preprocess(image_input.read()))) def preprocess_image_folder(image_folder: pathlib.Path) -> None: # 创建预处理结果保存目录 processed_folder = image_folder / "processed" processed_folder.mkdir(exist_ok=True) # 遍历所有图片文件 for image_path in tqdm.tqdm(list(image_folder.rglob("*.{jpg,png,jpeg,bmp}"))): processed_img = get_preprocessed_image(image_path) processed_img.save(processed_folder / image_path.name) pyabbyy.initialize_engine( "h8KSSy98TGLEint", "path_to_activation_token", "password", "path_to_profile.ini", ) if __name__ == '__main__': preprocess_image_folder(image_folder)
内容的提问来源于stack exchange,提问作者aarya
相关产品推荐
相关产品推荐

