我从deep-text-recognition-benchmark仓库训练了一个名为decryptzero
的自定义模型。当我尝试使用reader = easyocr.Reader(['en'], gpu = True, recog_network='decryptzero')
测试该模型时,它给我一个IndexError。
起初我认为这是因为我的字符列表和英文字母字符列表的大小不匹配(它说了一些类似IndexError: index 40 is out of bounds for axis 0 with size 39
的话),所以我将我的字符列表更改为与字母表完全相同,然后IndexError消失了。现在当我尝试使用OpenCV对处理后的图像进行OCR时,它突然告诉我索引是54,而列表长度是39。
我正在使用贪婪解码器。当我在处理后的图像上测试英语语言的默认设置时,它运行正常,但我的自定义模型不行。但是,英语模型和我的自定义模型在未处理的图像上“工作”正常(换句话说,没有错误)。
1条答案
按热度按时间qjp7pelc1#
您遇到的问题似乎与模型训练期间使用的字符列表与推理期间预期的字符列表之间的不匹配有关。自定义模型的字符列表可能与EasyOCR使用的默认设置不一致,导致IndexError。
可能的建议:
确保在训练过程中使用的字符列表与推理过程中使用的完全一致。任何差异都可能导致索引问题。
确保自定义模型在EasyOCR中正确配置。确保模型路径和相关配置已正确设置。
打印或记录字符列表和索引以确保它们匹配。在训练和推理过程中都要检查它们是否一致。
修改EasyOCR的模型加载代码以正确加载您的自定义字符列表。这可能涉及调整EasyOCR源代码。
既然您提到使用了贪婪解码器,请确保它已正确设置并与您的字符列表兼容。
确保图像(使用OpenCV)的预处理步骤在训练和推理之间保持一致。
希望这有助于找到问题所在,
谢谢!