Python使用通用识别OCR库:ddddocr识别验证码

前言
在使用自动化登录网站的时候,经常输入用户名和密码后会遇到验证码。今天介绍一款通用验证码识别 OCR库,对验证码识别彻底说拜拜,它的名字是 ddddocr(带带弟弟 OCR )。这里主要以字母数字类验证码进行说明。
项目地址:https://github.com/sml2h3/ddddocr

一、安装ddddocr
通过命令将自动安装符合自己电脑环境的最新 ddddocr。

pip install ddddocr
如果安装速度慢,可以连接国内镜像进行安装,命令如下:

pip install ddddocr -i https://pypi.tuna.tsinghua.edu.cn/simple/
二、使用ddddocr
1. 使用举例

import ddddocr

# 识别图片验证码
ocr = ddddocr.DdddOcr()
with open('e:/image.jpg','rb') as f:
    img_bytes = f.read()
res = ocr.classification(img_bytes)
print(res)

2、案例

# pip install ddddocr
# _*_ coding:utf-8 _*_
import ddddocr
import urllib.request
import urllib.parse
import re
import shutil
import http.cookiejar
import json
import requests
from urllib import error

#验证码接口
CaptchaUrl = "http://192.168.0.41:8860/passport/code/image"
#登录接口
PostUrl = "http://192.168.0.41:8860/passport/login/account"



# 实例化cookie对象
cookie = http.cookiejar.CookieJar()
# 创建一个cookie处理器
handler = urllib.request.HTTPCookieProcessor(cookie)
# 创建带有cookie的opener
opener = urllib.request.build_opener(handler)
# 用户名和密码

username = 'aiotadmin'
password = 'qwert!@#123'

picture = opener.open(CaptchaUrl).read()
# 用openr访问验证码地址,获取cookie
local = open('e:/image.jpg', 'wb')
local.write(picture)
local.close()

# 识别图片验证码
ocr = ddddocr.DdddOcr()
with open('e:/image.jpg','rb') as f:
    img_bytes = f.read()
res = ocr.classification(img_bytes)
print(res)

PostUrl001="http://192.168.0.41:8860/passport/lb/token"

postData = {"username":username,"password":password,
"code":res
 }

# 根据抓包信息 构造表单
headers = {
'Accept': '*/*',
'Accept-Language': 'zh-CN,zh;q=0.8',
'Accept-Encoding': 'gzip, deflate',
'Content-Type': 'application/json',
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36'
}

headers001={
'Content-Type': 'application/json',
'Origin': 'http://192.168.0.41:8860',
'Referer': 'http://192.168.0.41:8860/passport/oauth/authorize?client_id=9EU2WH38MAJ2HYuYf2r5qi&redirect_uri=http://192.168.0.41:7001/iot/user/login&response_type=code&scope=AIOT&state=n579Qz',
'Cookie': 'IOTSESSION=ZDE3MTY4N2UtZWM0OS00MWQ3LThkMzctYzFjYTdmYWRhMjM5; OAUTH2SESSION=YWQ0MmE5MWMtNTQzNC00NmU2LWI1ZDctZWMzNWI3ZGYwOTI0'
}


#postData=urllib.parse.urlencode(postData)
#result=opener.open(PostUrl,postData.encode("utf-8"))
#Result=result.read().decode("utf-8")
#regex=re.compile(r"1440407133")
#print(type(regex.search(Result)))

r = requests.post(url=PostUrl001,data=json.dumps(postData),headers=headers001)

print(r.text)

 

参考:https://blog.csdn.net/weixin_58839230/article/details/124243584

 

posted on 2022-07-14 15:13  uestc2007  阅读(4568)  评论(0编辑  收藏  举报

导航