V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Xbluer
V2EX  ›  问与答

如何处理这样的验证码:图片内容是用 5 个汉字描述的计算题(如『伍加叁等于』)。每个位置的内容是固定的: 13 数字、2 计算符号、45 一直是『等于』,且『等于』在所有图片中的位置不变。

  •  
  •   Xbluer · 2015-01-07 21:47:39 +08:00 · 5487 次点击
    这是一个创建于 3626 天前的主题,其中的信息可能已经有所发展或是发生改变。

    先展示下:

    验证码 验证码
    验证码 验证码
    验证码 验证码

    其它特征特征如下:
    1.所有的汉字都是方方正正的,大小一致,间距一致,并在同一水平线上。
    2.在图像软件里快速切换图片会发现『等于』完全重合。

    我觉得可以有方法来解决这个问题。
    目前的思路就是,生成所有的组合(10×4×10)然后和验证码依次对比,但是没有接触图像处理这方面的知识,不太清楚具体如何处理。

    请给的建议,谢谢!

    PS:今天验证码敲得手疼。

    第 1 条附言  ·  2015-01-09 22:43:11 +08:00
    问题解决了。确实挺简单的。

    把所有可能出现的汉字都人工取出来,保存为黑白图片。把验证码按照字体颜色二值化,去除噪点。然后让所有黑白图片依次与之进行像素对比,得出相似度。取相似度最高的那个。到目前为止已经处理近1W个验证码,正确率100%。正如大家所言,相当机器友好。

    对自己没接触过的领域,还是有畏难心理。

    TKS,感谢已发。
    14 条回复    2015-01-08 04:26:16 +08:00
    BGLL
        1
    BGLL  
       2015-01-07 22:03:42 +08:00   ❤️ 1
    这么简单的验证码...字体、位置都不带变的,二值化,去噪点就完了
    halfcrazy
        2
    halfcrazy  
       2015-01-07 22:22:18 +08:00   ❤️ 1
    搭车关注一下,中文验证码如何识别。相比字母数字,中文汉字的可能性太多了。
    msg7086
        3
    msg7086  
       2015-01-07 22:24:54 +08:00 via iPhone
    Captcha的目的就在于防止批量自动处理。
    aaaa007cn
        4
    aaaa007cn  
       2015-01-07 22:41:31 +08:00   ❤️ 1
    但是顶楼示例就是个典型的对机器友好,对人不友好的反面例子……
    BGLL
        5
    BGLL  
       2015-01-07 23:55:32 +08:00
    @halfcrazy 楼主这个验证码就14个字比一般字母混合数字的还简单....
    ooxxcc
        6
    ooxxcc  
       2015-01-08 00:01:07 +08:00   ❤️ 1
    这个验证码简直太机器友好了……

    颜色聚类(k均值?)然后按照点数量可以知道那个是字体,去噪,分割字符,对前三个字符ocr

    因为字符固定(第一个和第三个有10种,第二个有4种),都好识别,提取个特征最近邻识别就好

    剩下的就简单了
    ooxxcc
        7
    ooxxcc  
       2015-01-08 00:02:33 +08:00
    卧槽位置都固定的直接切出来,提个特征,最近邻就行了,分离前景背景去噪都省了
    9hills
        8
    9hills  
       2015-01-08 00:03:52 +08:00 via iPad
    我又想起以前在v2ex上看到的一个滑块式验证码了,看起来很高大上,但其实是Post的时候加了个参数,对机器友好的厉害。。
    BGLL
        9
    BGLL  
       2015-01-08 00:07:31 +08:00
    @ooxxcc 就14个字还聚什么类啊,位置、字体都一样,都是不用任何图像算法,直接无脑取一个个像素点与14个标准字比,二值化都不带用的。
    omi4399
        10
    omi4399  
       2015-01-08 00:07:36 +08:00   ❤️ 1
    算上零总共才13*13*2 338种可能性。。。。。
    omi4399
        11
    omi4399  
       2015-01-08 00:09:24 +08:00
    @omi4399 算错了,如果也有乘除的话就再乘4
    omi4399
        12
    omi4399  
       2015-01-08 00:10:04 +08:00
    @9hills 记得是阿三哥的一个网站来着
    halfcrazy
        13
    halfcrazy  
       2015-01-08 03:22:34 +08:00 via iPad
    @BGLL 怪我没说清楚,我这里指的中文是指普遍意义上的。在楼主的case中,中文的独立字体确实有限。
    loveminds
        14
    loveminds  
       2015-01-08 04:26:16 +08:00   ❤️ 1
    @9hills http://www.36kr.com/p/211940.html
    你说的是这个么,我印象中滑块是滑动到一定位置才有效
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2646 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 14:44 · PVG 22:44 · LAX 06:44 · JFK 09:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.