注意,本文只提供学习的思路,严禁违反法律以及破坏信息系统等行为,本文只提供思路
如有侵犯,请联系作者下架
本文识别已同步上线至OCR识别网站: http://yxlocr.nat300.top/ocr/textclick/12
之前写过一篇水文,腾讯包含文字验证码,但是由于腾讯的AI背景越来越多越来越杂,文字越来越变态,并且标题种类也在增加,成语,同音字等等。。。
过程介绍
- 训练介绍
- 生成过程
- 结尾
训练介绍
仅靠手里那小十几万,几十万数据集是远远不够的,并且此类场景只能做二阶段,但凡做一阶段,那就是XX,根本适应不了后续的更新,二阶段,还想要无限泛化,靠人工标注肯定是不够的,你的成本无限上升,那么本篇文章还是自己去生成,自给自足才能恒久远,最终效果可以到网站上测试下,当然,再好的模型也不会有百分百的准确率的,各位伙伴自己随机尝试即可,注意,网站目前只支持输入文字,判断文字所在的位置,暂不开放适配成语、同音字这样的类型,需要该类型可以单独找我
生成过程
首先就是选型,字体类型、背景类型、形变类型都要确保充足覆盖,这里我使用了上百种字体,2w+的字库,首先确保无论是常用字还是生僻字,都能覆盖全面
背景的选型就不是很讲究了,只要你的背景数量够多够杂,每次随机背景中的一块区域,基本上你的背景也能做到很随机了,甚至你拿其他验证码图片作为背景都可以,以下这种都可以,
这里使用pillow生成文字,代码层面,只需要做到在随机选取背景和文字的情况下,也能随机应用形态学,这里我使用了数十种图像增强,部分代码如下:
其中,部分生成数据集如下,从简单背景到复杂背景,从简单形变到复杂形变,均有生成,其中部分生僻字,经过图像增强后,也许看不清,但这并不影响模型的训练数据集总数达2000W+
在有了大量数据集后,训练就是一个简单的事情了,如果你的模型选型就比较大,比方说resnet101这种,训练都要个把礼拜了,总之,准备好gpu和合适的模型选型,开练吧!
结尾
通过该方法训练的模型后,并不只适用于腾讯,普通文字点选,生僻字识别等等都有很高的准确率,通过测试,该模型对字的字体、形态、形变、角度等都训练到了不错的效果,基本上可以做到通用了,下面是适配的文字识别,能适配但不限于
即便是咸鱼这种变态文字也能覆盖