OpenCV TextRecognitionModel使用CTC-prefix-beam-search解码出现维度不匹配报错
错误原因
这个报错是CRNN文本识别的CTC解码校验失败,核心逻辑是CTC解码要求识别模型输出的最后一维长度 = 加载的词表字符数 + 1(额外1位是CTC专用的空白符):
- 你使用的
crnn_cs.onnx模型输出最后一维长度为96,对应要求词表字符数为95 - 你当前用的
alphabet_94.txt有效字符数为94,加1后总长度为95,和模型要求的96差1位,触发校验失败。
解决方法
你可以根据自己的使用场景选择以下任意一种方案:
- 替换配套词表:使用和
crnn_cs.onnx训练时完全匹配的95字符词表,替换当前的alphabet_94.txt,注意要保证词表字符顺序和训练时一致,否则会出现识别结果乱码。 - 补全现有词表:确认模型训练时比当前词表多的1个字符(通常是空格),在
alphabet_94.txt末尾补充该字符,让词表总长度变为95,即可满足95 + 1 = 96的维度要求。 - 更换匹配模型:如果要保留
alphabet_94.txt作为词表,更换输出最后一维长度为95的CRNN识别模型即可满足校验规则。
内容的提问来源于stack exchange,提问作者Albi
相关产品推荐
相关产品推荐

