V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
dongyulin353
V2EX  ›  Python

验证码识别请教

  •  
  •   dongyulin353 · 2019-11-19 22:46:10 +08:00 · 3533 次点击
    这是一个创建于 1831 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近学习验证码识别,规则是 4 位的字母和数字组合,图片是 gif 的,有一定的干扰,gif 图片有几帧,目前能二值化识别其中 3 个,gif 不知道怎么处理好,用的语言是 python,大家有什么好的思路吗,有开源的识别项目推荐吗 验证码如图 avatar

    12 条回复    2019-12-30 16:18:13 +08:00
    hkitdog
        1
    hkitdog  
       2019-11-19 23:04:36 +08:00 via iPhone
    用打码兔
    Velip
        2
    Velip  
       2019-11-19 23:22:16 +08:00
    假设图片有 5 帧,逐帧获取每一张图片,一共 5 张图片
    然后对每张图片根据字母位置 4 等分
    对第一个字母 f,5 帧能有 5 张 f 的图片,
    先根据这 5 张 f 的图片上像素点或者颜色啥的去除掉干扰线
    然后识别剩下的几张字母 f 的图片,根据识别结果取出现频率最高的字母
    剩下的三个字母跟上面的一样处理

    抛个砖,看看楼下有没有什么更好的办法
    Velip
        3
    Velip  
       2019-11-19 23:27:32 +08:00 via Android
    @Velip 先去干扰线,再分割图片
    nosilence
        4
    nosilence  
       2019-11-19 23:33:49 +08:00
    实际上变简单了,先把 gif 分解为单张图片,随便找了个网站分解出了 4 张,即 4 帧。
    每个位置取 2 次有颜色的点,画新的图,干扰线基本没了,然后分割。
    picone
        5
    picone  
       2019-11-19 23:35:35 +08:00
    差帧法轻松提取。。都不用分割了。。
    dongyulin353
        6
    dongyulin353  
    OP
       2019-11-19 23:41:25 +08:00
    @nosilence #4 感谢楼上各位,思路大概是将 gif 的每一帧提取出来,然后分别处理
    wangkai0351
        7
    wangkai0351  
       2019-11-20 10:26:02 +08:00
    @dongyulin353 你经过发帖讨论后得出的这个方案啊也太。。。了吧
    tfdetang
        8
    tfdetang  
       2019-11-20 10:56:55 +08:00
    首先 gif 肯定要把每一帧提取出来。然后用 rcnn+ctc loss 的模型来识别就好了,这种验证码应该算是 very easy 难度了吧
    dongyulin353
        9
    dongyulin353  
    OP
       2019-11-20 11:30:46 +08:00
    @wangkai0351 #7 至少知道怎么处理了,难道等哪位大佬现场贴出代码?
    photon006
        10
    photon006  
       2019-11-20 14:13:16 +08:00
    多收集点样本,标注一下,cnn 模型撸它
    Marsss
        11
    Marsss  
       2019-11-21 10:33:45 +08:00
    如果不分割,标注样本将是很痛苦的工作,当然花钱或者能在网上找到别人分享的样本除外。所以,可以尝试自己折腾一个有效的分割算法。这种程度的验证码,折腾的难度不算难,可也不是那么简单,正好拿来练手。分割之后的标注工作量,肉眼可见。分割:不分割,大约为 100:5000 这样子。而且分割之后只需要 sklearn 即可,不用搭 cnn 环境。
    goodlucky
        12
    goodlucky  
       2019-12-30 16:18:13 +08:00
    我还比较好奇一点是,他每帧图片缺失的字母位置不一样,识别出来每张图片的字母,如何确定那个是第一个,就是要正确排列字母的顺序,这个我没有想到如何处理的,请大佬指教
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1059 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 19:24 · PVG 03:24 · LAX 11:24 · JFK 14:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.