PaddlePaddle / PaddleOCR

Awesome multilingual OCR toolkits based on PaddlePaddle (practical ultra lightweight OCR system, support 80+ languages recognition, provide data annotation and synthesis tools, support training and deployment among server, mobile, embedded and IoT devices)
https://paddlepaddle.github.io/PaddleOCR/
Apache License 2.0
44.72k stars 7.86k forks source link

一定报这个错RecursionError: maximum recursion depth exceeded while calling a Python object #7552

Closed VieteChen closed 2 years ago

VieteChen commented 2 years ago

请提供下述完整信息以便快速定位问题/Please provide the following information to quickly locate the problem

已确定标签用\t分隔用\n分行 train_str[:100] 'crop_img/c03573d72bc14ced94bda0a77add1e1a_0.jpg\t炸\ncrop_img/c03573d72bc14ced94bda0a77add1e1a_1.jpg\t脂\n'

通过data/simple_dataset.py debug,outs一直是None,请问多出来的\r是否有影响,我强行把\r删除依然报错 data_line = 'crop_img/cba6d5a442f54569882b4c9273cfcd5d_1.jpg\t仁\r\n' file_name = 'crop_img/cba6d5a442f54569882b4c9273cfcd5d_1.jpg' label = '仁\r' image

andyjiang1116 commented 2 years ago

提供一下你的label文件看看,可能是换行问题或者部分分隔符不是\t,或者使用这个函数看一下数据读取是否正确 https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.6/tools/train.py#L203

ZzyChris97 commented 2 years ago

请问你最后是怎么解决的!

andyjiang1116 commented 2 years ago

label标签格式要统一,如下

图像路径\t图像标签\n
图像路径\t图像标签\n

可以对label进行检查,看是不是有不合法的

VieteChen commented 2 years ago

label标签格式要统一,如下

图像路径\t图像标签\n
图像路径\t图像标签\n

可以对label进行检查,看是不是有不合法的

已经找到原因,max_text_length不能改,一改就报这个错,不知道这算不算Bug

andyjiang1116 commented 2 years ago

应该不会的,这个参数是支持修改的,默认最大长度是25,超过的会自动过滤

andyjiang1116 commented 2 years ago

另外,RecConAug数据增强里面也涉及max_text_length这个参数,注意同步修改, 或者不使用该数据增强方式 https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.6/ppocr/data/imaug/rec_img_aug.py#L133

andyjiang1116 commented 2 years ago

另外,RecConAug数据增强里面也涉及max_text_length这个参数,注意同步修改, 或者不使用该数据增强方式 https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.6/ppocr/data/imaug/rec_img_aug.py#L133

最新版2.6分支代码已经暴露了该参数

ZzyChris97 commented 2 years ago

应该不会的,这个参数是支持修改的,默认最大长度是25,超过的会自动过滤

label标签格式要统一,如下

图像路径\t图像标签\n
图像路径\t图像标签\n

可以对label进行检查,看是不是有不合法的

已经找到原因,max_text_length不能改,一改就报这个错,不知道这算不算Bug

我是用来做四位验证码识别,把max_text_length设置成了4,然后就报了这个错误,后来我把max_text_length扩大成了6,就没有再出现这个问题了

andyjiang1116 commented 2 years ago

这是因为v3使用了一个attention 分支,编码期间需要添加开始和结束字符,所以有效字符长度>= max_text_length-1就会过滤,你这里是4位,所以要设置成6

ZzyChris97 commented 2 years ago

这是因为v3使用了一个attention 分支,编码期间需要添加开始和结束字符,所以有效字符长度>= max_text_length-1就会过滤,你这里是4位,所以要设置成6

了解了!当时看到有人说max_text_length的值,我就猜是不是因为有额外字符的原因,就想着扩大试试,看来果然如此

andyjiang1116 commented 2 years ago

嗯嗯,因为正常来说max_text_length这个参数默认是25,会满足大部分文本场景,如果需要适配自己的文本场景,看情况修改即可