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

多图片文件夹文本提取至CSV异常:仅保留最后一行,需每行对应单图

问题原因

你代码里每次循环都用open("datarecords.csv", 'w')打开文件,'w'模式会清空文件原有内容再写入,所以最后只会保留最后一张图片的提取结果。另外你还漏导入了csv模块,运行时会触发NameError。

修复后的代码
from PIL import Image
from pytesseract import pytesseract
import os
import csv  # 补全缺失的csv模块

# 定义tesseract路径
path_to_tesseract = r'C:\Program Files\Tesseract-OCR\tesseract.exe'
# 定义图片文件夹路径
path_to_images = r'all_img_iteration_demo/'

# 指定tesseract命令路径
pytesseract.tesseract_cmd = path_to_tesseract

# 提前打开CSV文件,仅初始化一次
with open("datarecords.csv", 'w', newline='', encoding='utf-8') as csvfile:
    csvwriter = csv.writer(csvfile)
    
    # 遍历文件夹下所有文件
    for root, dirs, file_names in os.walk(path_to_images):
        for file_name in file_names:
            # 用os.path.join安全拼接路径,避免斜杠问题
            img_path = os.path.join(root, file_name)
            # 打开图片
            img = Image.open(img_path)
            # 提取图片文本
            text = pytesseract.image_to_string(img)        
            list_1 = text.split()             
            print(list_1)
            # 写入当前图片的提取结果到CSV的一行
            csvwriter.writerow(list_1)
关键修改说明
  • 补导入csv模块,解决csv.writer未定义的错误
  • 将文件打开操作移到循环外部,只用'w'模式初始化一次文件,循环内仅执行写入操作,避免覆盖之前的内容
  • 用os.path.join拼接图片路径,避免手动拼接时因路径末尾无斜杠导致的错误
  • 添加newline=''和encoding='utf-8',解决CSV文件自动添加空行和中文乱码问题

内容的提问来源于stack exchange,提问作者Gaurav Tiwari

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 15:41:12