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

调用Google Vision批量转图片为文本报IndexError: list index out of range如何解决

错误原因
  • 索引对应关系错误:外层循环变量i是图片的序号(范围0~234),而write1、write2是全局累加的列表,每识别到1个文本块才追加1个元素,列表长度是所有图片已识别的文本块总数量,和图片序号没有对应关系。例如第一张图只识别到1个文本块,处理第二张图(i=1)时write1长度仅为1,访问write1[1]就会触发越界。
  • 写文件逻辑位置错误:写文件操作放在了遍历文本块的内层循环中,每次遍历文本块都会用覆盖写模式打开文件,最终每个txt只会保存当前图片最后一个文本块的内容,不符合批量识别输出全量内容的需求。
  • 列表未重置导致内容混杂:write1、write2是全局变量,所有图片的识别结果都会追加到同一个列表中,就算索引不越界,输出的内容也会混杂多张图片的识别结果。
排查验证方法
  • 在报错行前添加打印语句,确认索引和列表长度的对应关系:
print(f"当前图片序号:{i}, write1列表长度:{len(write1)}, write2列表长度:{len(write2)}")
  • 打印每张图的len(texts),确认是否存在部分图片无识别结果、texts为空的情况,这种情况也会导致没有元素追加到列表中,后续索引访问越界。
修复后的代码
import io
import os
os.environ["GOOGLE_APPLICATION_CREDENTIALS"]="future-shuttle-323208-1e6aebdb018d.json"
from google.cloud import vision        

# 客户端仅需初始化一次,无需放在循环内重复创建提升效率
client = vision.ImageAnnotatorClient()

for i in range(0,235):      
    file_name = os.path.abspath("v2i/%d.png"%(i))
    with io.open(file_name, 'rb') as image_file:
        content = image_file.read()
    
    image = vision.Image(content=content)
    response = client.text_detection(image=image)
    texts = response.text_annotations
    
    i_str=str(i)
    filename='i2tvision/'+i_str+'.txt'
    
    # 每张图单独初始化存储列表,避免和其他图片内容混杂
    write_content = []
    for text in texts:
        text_str = '\n"{}"'.format(text.description)
        vertices = (['({},{})'.format(vertex.x, vertex.y)
                      for vertex in text.bounding_poly.vertices])
        bound_str = ' bounds: {}'.format(','.join(vertices))
        # 直接拼接当前文本块的内容和坐标加入列表,无需拆分两个列表
        write_content.append(text_str + bound_str)
    
    # 遍历完当前图所有文本块后,一次性写入文件,避免覆盖问题
    with open(filename, 'w', encoding='utf-8') as f:
        f.writelines(write_content)

    if response.error.message:
        raise Exception(
            '{}\nFor more info on error messages, check: '
            'https://cloud.google.com/apis/design/errors'.format(
                response.error.message))

内容的提问来源于stack exchange,提问作者陳昱廷

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 12:33:02