Python+tesserOCR:如何将单图OCR文本存为对应命名的独立TXT文件
修改后的OCR程序代码
下面是调整后的代码,可实现每张图片提取的文本保存为对应同名TXT文件:
import tesserocr from PIL import Image import glob Image.MAX_IMAGE_PIXELS = None api = tesserocr.PyTessBaseAPI(path='D:/Anaconda/Tesseract5/tessdata', lang='tur') # 获取目标文件夹下的文件,可选过滤仅保留图片格式 files = glob.glob('C:/Users/Casper/Desktop/OCR/wpp/*') files = [f for f in files if f.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp'))] def extract(): for idx, file_path in enumerate(files, 1): try: # 处理当前单张图片 pil_image = Image.open(file_path) api.SetImage(pil_image) extracted_text = api.GetUTF8Text() # 生成同名TXT路径并写入内容 txt_file_path = file_path[:-4] + '.txt' with open(txt_file_path, 'w', encoding='utf-8') as txt_file: txt_file.write(extracted_text) print(f'已完成 {idx}/{len(files)}: {file_path}') except Exception as e: # 遇错误仅提示,不中断整体处理 print(f'处理失败 {file_path}: {str(e)}') if __name__ == "__main__": extract()
关键修改说明
- 移除冗余循环:原代码外层遍历文件的同时,内层又重复遍历所有图片并累加文本,导致所有内容被重复写入多个文件。现在直接处理当前遍历到的单张图片,避免重复操作。
- 独立文本生成:每次仅提取当前图片的文本,不再累加所有图片内容,确保每个TXT文件只对应单张图片的提取结果。
- 优化错误处理:替换宽泛的
except:为捕获具体异常并打印详情,同时移除break,遇到损坏文件时不会中断整个程序,继续处理剩余文件。 - 格式过滤与编码优化:添加图片格式过滤避免处理非图片文件,写入TXT时指定
utf-8编码,防止土耳其语等特殊字符乱码。
内容的提问来源于stack exchange,提问作者Fatih İlhan
相关产品推荐
相关产品推荐

