安全矩阵

 找回密码
 立即注册
搜索
查看: 2660|回复: 0

傻瓜式 Python OCR 识别库 -- ddddocr

[复制链接]

249

主题

299

帖子

1391

积分

金牌会员

Rank: 6Rank: 6

积分
1391
发表于 2022-3-21 10:02:18 | 显示全部楼层 |阅读模式
原文链接:傻瓜式 Python OCR 识别库 -- ddddocr

来自公众号:Python技术
在使用爬虫登录网站的时候,经常输入用户名和密码后会遇到验证码,简单一点的有字母验证码,复杂一点的有滑块验证码,点选文章和点选图片验证码。这些都是爬虫中的老大难问题,今天介绍一款通用验证码识别 SDK 对他们彻底说拜拜,它的名字是 ddddocr 带带弟弟 OCR 通用验证码识别 SDK 免费开源版。

安装

将自动安装符合自己电脑环境的最新 ddddocr。Python 环境需要小于等于 3.9。

  1. pip install ddddocr
复制代码

使用

带带弟弟 OCR 可以识别三种验证码,小编就用这三种来实验一下。

滑块验证码

滑块验证码这里用的是豆瓣的滑块验证。下滑块是单独的透明背景图 hycdn.png。


背景图是带小滑块坑位的 background.jpg。


  1. import ddddocr

  2. det = ddddocr.DdddOcr(det=False, ocr=False)

  3. with open('hycdn.png', 'rb') as f:
  4.         target_bytes = f.read()
  5.    
  6. with open('background.jpg', 'rb') as f:
  7.     background_bytes = f.read()

  8. res = det.slide_match(target_bytes, background_bytes, simple_target=True)

  9. print(res)
复制代码
识别结果:
  1. {'target_y': 0, 'target': [486, 126, 622, 262]}
复制代码
target 属性的前两个值正好和豆瓣验证滑块 url 中提交的 ans 差不多。


点选类验证码

点选类验证码用的是网易登录


  1. det = ddddocr.DdddOcr(det=True)

  2.     with open("eb.jpg", 'rb') as f:
  3.         image = f.read()

  4.     poses = det.detection(image)

  5.     im = cv2.imread("eb.jpg")

  6.     for box in poses:
  7.         x1, y1, x2, y2 = box
  8.         im = cv2.rectangle(im, (x1, y1), (x2, y2), color=(0, 0, 255), thickness=2)

  9.     cv2.imwrite("result.jpg", im)
复制代码
识别结果

字母数字验证码

字母数字验证码的图片来自于 google 搜索

  1. ocr = ddddocr.DdddOcr(old=True)

  2. with open("z1.jpg", 'rb') as f:
  3.     image = f.read()

  4. res = ocr.classification(image)
  5. print(res)
复制代码
识别结果
  1. 3n3d
  2. 8342
复制代码

总结

ddddocr 让验证码变得如此简单与易用,,让不会用 opencv, pytorch, tensorflow 的小伙伴也能快速的破解网站的登录验证码。小伙伴们如果有其他好的 ocr 识别也可以在留言中分享出来。

--- EOF ---






本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2025-4-24 15:01 , Processed in 0.013703 second(s), 19 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表