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
sml2h3
V2EX  ›  Python

卷一卷, Python 通用验证码识别库开源

  •  3
     
  •   sml2h3 · 2022-01-04 11:06:20 +08:00 · 6828 次点击
    这是一个创建于 1088 天前的主题,其中的信息可能已经有所发展或是发生改变。

    今天 ddddocr 又更新啦!

    当前版本为 1.3.0

    想必很多做验证码的新手,一定头疼碰到点选类型的图像,做样本费时费力,神经网络不会写,训练设备太昂贵,模型效果又不好。

    市场上常见的点选类验证码图片如下图所示

    Test

    Test

    Test

    Test

    那么今天,他来了,ddddocr 带着重磅更新大摇大摆的走来了。

    简介

    ddddocr 是由 sml2h3 开发的专为验证码厂商进行对自家新版本验证码难易强度进行验证的一个 python 库,其由作者与 kerlomz 共同合作完成,通过大批量生成随机数据后进行深度网络训练,本身并非针对任何一家验证码厂商而制作,本库使用效果完全靠玄学,可能可以识别,可能不能识别。

    ddddocr 奉行着开箱即用、最简依赖的理念,尽量减少用户的配置和使用成本,希望给每一位测试者带来舒适的体验

    项目地址: 点我传送

    更新说明

    本次更新其实分为两部分,其中有一部分是在 1.2.0 版本就已经更新了,但是在这里还是有必要提一下的。

    第一部分 OCR 识别部分

    在 1.2.0 开始,ddddocr 的识别部分进行了一次 beta 更新,主要更新在于网络结构主体的升级,其训练数据并没有发生过多的改变,所以理论上在识别结果上,原先可能识别效果的很好的图形在 1.2.0 上有一小部分概率会有一定程度的下降,也有可能原本识别不好的图形在 1.2.0 之后效果却变得特别好。 测试代码:

    import ddddocr
    
    ocr = ddddocr.DdddOcr()
    
    with open("test.jpg", 'rb') as f:
        image = f.read()
    
    res = ocr.classification(image)
    print(res)
    

    OCR 部分应该已经有很多人做了测试,在这里就放一部分网友的测试图片。

    Test Test Test Test Test Test Test Test Test Test Test Test 等等更多图片等你测试哟~

    第二部分 目标检测部分

    在本次 1.3.0 的更新中,目标检测部分隆重登场! 目标检测部分同样也是由大量随机合成数据训练而成,对于现在已有的点选验证码图片或者未知的验证码图片都有可能具备一定的识别能力,适用于文字点选和图标点选。 简单来说,对于点选类的验证码,可以快速的检测出图片上的文字或者图标。

    import ddddocr
    import cv2
    
    det = ddddocr.DdddOcr(det=True)
    
    with open("test.jpg", 'rb') as f:
        image = f.read()
    
    poses = det.detection(image)
    print(poses)
    
    im = cv2.imread("test.jpg")
    
    for box in poses:
        x1, y1, x2, y2 = box
        im = cv2.rectangle(im, (x1, y1), (x2, y2), color=(0, 0, 255), thickness=2)
    
    cv2.imwrite("result.jpg", im)
    
    

    举些例子:

    Test Test Test Test Test Test Test

    以上只是目前我能找到的点选验证码图片,做了一个简单的测试。

    安装

    环境支持

    python <= 3.9

    Windows/Linux/Macos..

    暂时不支持 Macbook M1(X),M1(X)用户需要自己编译 onnxruntime 才可以使用

    安装命令

    pip install ddddocr

    以上命令将自动安装符合自己电脑环境的最新 ddddocr

    交流群 (加我好友拉你进群)

    Test

    50 条回复    2022-01-08 16:28:21 +08:00
    anxn
        1
    anxn  
       2022-01-04 11:09:19 +08:00
    用过 识别效果很不错 支持 lz
    linupy
        2
    linupy  
       2022-01-04 11:10:10 +08:00
    dddd ,yyds
    triangle111
        3
    triangle111  
       2022-01-04 11:13:16 +08:00
    dddd
    dangyuluo
        4
    dangyuluo  
       2022-01-04 11:17:49 +08:00
    FightPig
        5
    FightPig  
       2022-01-04 11:30:31 +08:00   ❤️ 1
    优秀
    Souukou
        6
    Souukou  
       2022-01-04 11:37:29 +08:00 via Android
    厉害。楼主人在国内么,小心被抓啊
    sml2h3
        7
    sml2h3  
    OP
       2022-01-04 11:45:45 +08:00
    @Souukou 不做破解呀,数据都是随机合成的,所以识别效果都是玄学随缘
    ppllss
        8
    ppllss  
       2022-01-04 11:58:52 +08:00
    牛皮
    ctro15547
        9
    ctro15547  
       2022-01-04 12:15:24 +08:00
    强啊👍🏻
    wangyu17455
        10
    wangyu17455  
       2022-01-04 12:19:39 +08:00
    6666666
    0o0O0o0O0o
        11
    0o0O0o0O0o  
       2022-01-04 12:24:27 +08:00 via iPhone
    @sml2h3 #7 效果示例图片里有它们家的 logo
    sml2h3
        12
    sml2h3  
    OP
       2022-01-04 12:30:02 +08:00
    @0o0O0o0O0o 毕竟识别纯靠玄学,图片里的图标和文字都有可能被检测出来
    streamrx
        13
    streamrx  
       2022-01-04 12:58:31 +08:00 via iPhone
    赞👍
    NBY
        14
    NBY  
       2022-01-04 13:07:06 +08:00
    2022-01-04 13:50:14.024762 [W:onnxruntime:, execution_frame.cc:770 VerifyOutputSizes] Expected shape from model of {1,19} does not match actual shape of {1,27} for output output
    请问怎么把这种报错屏蔽掉
    bbbb
        15
    bbbb  
       2022-01-04 13:09:23 +08:00
    太厉害了
    sml2h3
        16
    sml2h3  
    OP
       2022-01-04 13:30:47 +08:00
    @NBY 最新版 1.3.x 应该已经没有问题了
    encro
        17
    encro  
       2022-01-04 13:38:53 +08:00
    一个.onnx 文件叫开源?
    sml2h3
        18
    sml2h3  
    OP
       2022-01-04 13:39:54 +08:00
    @encro 要不然呢?
    c1273082756
        19
    c1273082756  
       2022-01-04 14:01:39 +08:00
    牛逼
    lianjin
        20
    lianjin  
       2022-01-04 14:37:45 +08:00
    必须支持下
    cryboy007
        21
    cryboy007  
       2022-01-04 17:19:45 +08:00
    赞,之前想爬一个网站。就困在解析验证码来着,看来可以重启之前得项目了
    sml2h3
        22
    sml2h3  
    OP
       2022-01-04 17:21:25 +08:00
    @cryboy007 可以试试哈
    hakaei
        23
    hakaei  
       2022-01-04 17:22:54 +08:00 via iPhone
    dddd
    huruwo
        24
    huruwo  
       2022-01-04 17:34:07 +08:00
    楼上这也太谨慎了,如果开源识别库被抓的话。那么说实话人工领域也不要发展算了。
    什么 语音 图像 视频开源框架统统都要进去了,顺便把机器学习框架开发者一起抓了。
    encro
        25
    encro  
       2022-01-04 17:34:11 +08:00
    @sml2h3
    要有点素材,算法?
    huruwo
        26
    huruwo  
       2022-01-04 17:37:03 +08:00
    @encro 还要论文 模型
    sml2h3
        27
    sml2h3  
    OP
       2022-01-04 17:53:28 +08:00
    @encro 我又不是开源训练框架的
    sml2h3
        28
    sml2h3  
    OP
       2022-01-04 17:54:34 +08:00
    @huruwo 哈哈哈,是的没毛病,咱也不是针对某个产商做的,再说了识别又不是破解
    fank99
        29
    fank99  
       2022-01-04 17:59:56 +08:00
    6666
    kile
        30
    kile  
       2022-01-04 18:07:44 +08:00
    想了半天,这个项目叫点点点点 ocr...
    sml2h3
        31
    sml2h3  
    OP
       2022-01-04 19:45:08 +08:00
    @kile 哈哈哈,带带弟弟
    7gugu
        32
    7gugu  
       2022-01-04 20:57:18 +08:00
    厉害👍👍
    yxnwh
        33
    yxnwh  
       2022-01-04 21:18:56 +08:00
    必须马克一下,厉害了
    ClericPy
        34
    ClericPy  
       2022-01-04 22:08:43 +08:00
    还没点进去看, 全程离线吗?

    突然心疼上个月莫名其妙引战了的内个水友...
    llsquaer
        35
    llsquaer  
       2022-01-04 22:29:54 +08:00
    哈哈 用了一段时间..牛啊..不用交钱打码了
    sml2h3
        36
    sml2h3  
    OP
       2022-01-04 22:51:19 +08:00
    @ClericPy 是的呀,哈哈哈哈,引战了啥内容突然好奇
    sml2h3
        37
    sml2h3  
    OP
       2022-01-04 22:51:43 +08:00
    @llsquaer 就硬卷
    ClericPy
        38
    ClericPy  
       2022-01-04 23:02:07 +08:00
    @sml2h3 我还以为你看到了才卷的... 好像是有个水友吐槽了一句 tesseract 不好使(原生没训练的), 然后吐槽标题里写的是 py 不好使... 帖子找不到了, 总之挺惨的
    sml2h3
        39
    sml2h3  
    OP
       2022-01-04 23:04:44 +08:00
    @ClericPy 哈哈哈,是挺惨的
    steveway
        40
    steveway  
       2022-01-05 00:39:16 +08:00 via iPhone
    坐等支持滑块.jpg 不过滑块似乎就不属于 ocr 了
    qyzxgl
        41
    qyzxgl  
       2022-01-05 10:44:04 +08:00
    牛哇牛哇,今天开始用了,识别效果不错
    qyzxgl
        42
    qyzxgl  
       2022-01-05 10:44:52 +08:00
    谢谢楼主,上山给你拜拜^_^
    sml2h3
        43
    sml2h3  
    OP
       2022-01-05 11:41:17 +08:00
    @qyzxgl 这就用上了?哈哈哈
    qyzxgl
        44
    qyzxgl  
       2022-01-05 11:57:51 +08:00
    @sml2h3 是啊,好用啊
    janxin
        45
    janxin  
       2022-01-05 14:54:46 +08:00
    dddd ,这个是真的好用
    manyfish
        46
    manyfish  
       2022-01-05 17:17:17 +08:00
    可以,比某麻瓜好用
    sml2h3
        47
    sml2h3  
    OP
       2022-01-05 17:48:12 +08:00
    @manyfish 毕竟新一些,麻瓜开源那会大家都用 tensorflow 比较多,我跟麻瓜作者也好几年朋友啦,ddddocr 的出现麻瓜作者也帮了很多忙
    css3
        48
    css3  
       2022-01-06 09:36:05 +08:00
    sml2h3
        49
    sml2h3  
    OP
       2022-01-06 13:12:10 +08:00
    @css3 貌似不太行,下个版本把这个特征做进去
    css3
        50
    css3  
       2022-01-08 16:28:21 +08:00 via iPhone
    @sml2h3 坐等支持了😂
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   974 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 22:54 · PVG 06:54 · LAX 14:54 · JFK 17:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.