V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
sleepyfevniv
V2EX  ›  程序员

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

  •  
  •   sleepyfevniv · Jul 13, 2022 · 3179 views
    This topic created in 1385 days ago, the information mentioned may be changed or developed.

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

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

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

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

    然后这个图是一张样图。

    验证码-dt

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

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

    验证码-all

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

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

    一般正规的大网站应该不会用的.
    ldyisbest
        15
    ldyisbest  
       Jul 13, 2022
    我的思路是首先明确题目问的是什么,然后找到对应的图像块,然后和答案的图像计算相似度。可以参考下 siamesenet
    SoarSoga
        16
    SoarSoga  
       Jul 15, 2022
    顶起。。。。好帖需要讨论
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3686 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 74ms · UTC 05:00 · PVG 13:00 · LAX 22:00 · JFK 01:00
    ♥ Do have faith in what you're doing.