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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 15:57:20