请教识别这样子的验证码的思路 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
sleepyfevniv
V2EX    程序员

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

  •  
  •   sleepyfevniv 2022-07-13 11:22:12 +08:00 2941 次点击
    这是一个创建于 1191 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

    然后这个图是一张样图。

    验证码-dt

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

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

    验证码-all

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

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

    一般正规的大网站应该不会用的.
    ldyisbest
        15
    ldyisbest  
       2022-07-13 21:39:27 +08:00
    我的思路是首先明确题目问的是什么,然后找到对应的图像块,然后和答案的图像计算相似度。可以参考下 siamesenet
    SoarSoga
        16
    SoarSoga  
       2022-07-15 14:45:14 +08:00
    顶起。。。。好帖需要讨论
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5808 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 36ms UTC 06:19 PVG 14:19 LAX 23:19 JFK 02:19
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86