请教识别这样子的验证码的思路

2022-07-13 11:22:12 +08:00
 sleepybear1113

有如下验证码,是某个游戏的。这个验证码有点阴间,人眼辨别也不简单。于是想走识别。

收集了大几千张,统计出来,大约有 500 个字的选项。然后上面的条纹背景的字自动生成的。

自己主业是写 Java 后端的,然后尝试现学 Python 先用 OpenCV 搞了一下。先做轮廓检测,再二值化,抠字。发现部分能抠出来,但是部分背景和字不太能区分,或者把字当做了背景。字可以走 ocr 问题不大。

由于自己是垃圾本科,没有研究生的机器学习、深度学习的前置知识,所以这块还得重新学。

然后这个图是一张样图。

下面是已经有标注 ABCD 答案的样本,有大几千张,正确率在 90-95%。

现在需要处理的思路,就是,具体需要学习哪些方面的知识,样本大致的处理方向,和识别的方式,还有样本最好的数量规模是多少。

2583 次点击
所在节点    程序员
16 条回复
LuffyGu
2022-07-13 11:37:57 +08:00
第一行第一个字是什么?
raycool
2022-07-13 11:43:22 +08:00
直接神经网络一把梭
不过肉眼看着都费劲,标注数据能准确吗。
cutepig
2022-07-13 11:46:44 +08:00
我猜这种验证码 ai 做得比人都好
sleepybear1113
2022-07-13 11:51:06 +08:00
@LuffyGu 第一个字的确我也不知道是啥
sleepybear1113
2022-07-13 11:52:29 +08:00
@raycool 标注正确率差不多是有 90-95 ,也是花钱了的。可惜这方面没学过
rming
2022-07-13 11:54:31 +08:00
对整张图片进行 ABCD 分类的话,准确率不太确定能做到多少,不过可以尝试下,先搜集所有图片子元素,然后做数据增强,好处是分类少。

或者对中间文字区域的文字分割出来,就变成了三部分 OCR ,其实也是分类,会增加一部分预处理和业务逻辑,不过应该准确率可以搞上去
newaccount
2022-07-13 11:59:49 +08:00
总有一天这验证码会变成:
人一定识别不出来,你能识别出来一定不是人
BeautifulSoup
2022-07-13 12:07:53 +08:00
问题和选项部分都是很规整的宋体字,直接 ocr 就行。验证码核心部分我的思路是目标检测+分类;目标检测主要是确定哪个部分是字,哪个部分是背景,以及框选出来第几行第几列的那个目标字。如果用 yolo3 这样的框架去实现,大概训练集在 500 张左右就可以做的很好了。
考虑到图中的字都是华文舒体,因此分类部分可以设计一个多层卷积+前馈网络,输入为选项的华文舒体图像(颜色及大小有待进一步考虑)以及框选出来的目标字,输出为标签( 0-不匹配; 1-匹配)这个部分优化的关键是对图中目标字如何处理,使得文字和背景能有效分离,如果得到二值化图像则最好。参考收集的数据,文字部分随机性较大,个人估计训练集规模可能得上万。
我主要做 nlp ,上面这个思路可能比较粗浅的,供大家参考。
Juszoe
2022-07-13 15:17:38 +08:00
关于数据,我建议你也可以按照他的逻辑生成,看起来还是挺有规律的,背景是各种彩色条纹线性渐变,字体扭曲一下,这类规律的图像手动标费时费力。
Juszoe
2022-07-13 15:20:42 +08:00
@BeautifulSoup #8 输入图像预测是否匹配的设计训练难度比较大,也不方便推理,OP 已知只有 500 个字的话直接做五百类的分类就可以了
sakujo
2022-07-13 15:21:43 +08:00
第一行第一个好像是起或者超
BeautifulSoup
2022-07-13 15:36:53 +08:00
@Juszoe 也有道理,上面说的思路我解决过一个只包含英语字母+数字的验证码。我又仔细看了一下图片,随机变换的形态差异比较大,匹配训练的难度确实不小。
Saxton
2022-07-13 16:35:40 +08:00
这验证码,别说机器了,我一个人都识别不了
cherryas
2022-07-13 17:57:55 +08:00
确实有用,但是过于阴间,

一般正规的大网站应该不会用的.
ldyisbest
2022-07-13 21:39:27 +08:00
我的思路是首先明确题目问的是什么,然后找到对应的图像块,然后和答案的图像计算相似度。可以参考下 siamesenet
SoarSoga
2022-07-15 14:45:14 +08:00
顶起。。。。好帖需要讨论

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/865865

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX