Python调用pytesseract报No such file or directory错误排查
错误触发核心原因
- 代码传参逻辑错误:循环中已经通过
os.path.join(folder_path, image)拼接得到图片的完整绝对路径并存入images变量,但调用pytesseract.image_to_string()时传入的是仅带文件名的image参数。程序默认在Python脚本当前运行的工作目录下查找该文件,和图片实际存储路径不匹配,直接触发文件不存在报错。 - 存在两类次要触发可能:
- Tesseract程序路径配置错误:当前配置的
tesseract_cmd路径未带Windows可执行文件后缀.exe,若系统未做可执行文件后缀关联,会找不到Tesseract主程序抛出同类错误 - 遍历逻辑未做过滤:
os.listdir()会列出目录下所有内容,包括子文件夹、系统隐藏文件、非图片格式文件,这类内容传入OCR接口也会触发文件不存在/无法读取的错误
- Tesseract程序路径配置错误:当前配置的
排查方向
- 优先修正传参错误:确保传入
image_to_string()的参数是拼接完成的图片绝对路径,而非单独的文件名 - 校验Tesseract路径:手动打开
C:\Program Files\Tesseract-OCR\目录,确认tesseract.exe存在,配置tesseract_cmd时补全.exe后缀 - 增加遍历过滤逻辑:遍历目录时跳过子文件夹、非图片格式文件,避免无效路径传入识别接口
- 路径权限校验:打印拼接后的完整文件路径,手动确认路径可访问、当前运行Python的用户对目标目录有读取权限,排除路径空格、特殊字符导致的路径解析失败问题
修复后参考代码
import os import pytesseract folder_path = r"C:\Users\User\Desktop\Alkesh Patil\velocity 16apr notes\06_13_OCR_PDF2IMAGE\pcard" # 补全exe后缀,确保Tesseract路径正确 pytesseract.pytesseract.tesseract_cmd = r"C:\Program Files\Tesseract-OCR\tesseract.exe" image_list = os.listdir(folder_path) pan_num = [] dob_num = [] for image in image_list: image_full_path = os.path.join(folder_path, image) # 跳过子文件夹 if not os.path.isfile(image_full_path): continue # 仅处理常见图片格式 if not image.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp', '.tiff')): continue print(f"当前处理文件:{image_full_path}") # 传入完整绝对路径做识别 text = pytesseract.image_to_string(image_full_path) print(text)
内容的提问来源于stack exchange,提问作者Alkesh Shivaji Patil
相关产品推荐
相关产品推荐

