【全球新要闻】Python通用验证码识别OCR库ddddocr的安装使用教程
(资料图)
目录
前言一、安装ddddocr二、使用ddddocr1. 使用举例2. 完整代码3. 验证码样例4. 识别结果三、代码说明总结前言
在使用自动化登录网站的时候,经常输入用户名和密码后会遇到验证码。今天介绍一款通用验证码识别 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("code.png", "rb") as f:
img_bytes = f.read()
res = ocr.classification(img_bytes)
print("识别出的验证码为:" + res)
2. 完整代码
import os
import ddddocr
from time import sleep
from PIL import Image
from selenium import webdriver
from selenium.webdriver.common.by import By
class GetVerificationCode:
def __init__(self):
self.res = None
url = "要登录的地址"
self.driver = webdriver.Chrome()
self.driver.maximize_window() # 将浏览器最大化
self.driver.get(url)
# 获取验证码信息
def getVerification(self):
# 获取当前文件的位置、并获取保存截屏的位置
current_location = os.path.dirname(__file__)
screenshot_path = os.path.join(current_location, "..", "VerificationCode")
# 截取当前网页并放到自定义目录下,并命名为printscreen,该截图中有我们需要的验证码
sleep(1)
self.driver.save_screenshot(screenshot_path + "//" + "printscreen.png")
sleep(1)
# 定位验证码
imgelement = self.driver.find_element(By.XPATH, "验证码图片的Xpath定位")
# 获取验证码x,y轴坐标
location = imgelement.location
# 获取验证码的长宽
size = imgelement.size
# 写成我们需要截取的位置坐标
rangle = (int(location["x"] + 430),
int(location["y"] + 200),
int(location["x"] + size["width"] + 530),
int(location["y"] + size["height"] + 250))
# 打开截图
i = Image.open(screenshot_path + "//" + "printscreen.png")
# 使用Image的crop函数,从截图中再次截取我们需要的区域
fimg = i.crop(rangle)
fimg = fimg.convert("RGB")
# 保存我们截下来的验证码图片,并读取验证码内容
fimg.save(screenshot_path + "//" + "code.png")
ocr = ddddocr.DdddOcr()
with open(screenshot_path + "//" + "code.png", "rb") as f:
img_bytes = f.read()
self.res = ocr.classification(img_bytes)
print("识别出的验证码为:" + self.res)
# 判断验证码错误时的提示信息是否存在
def isElementPresent(self, by, value):
try:
element = self.driver.find_element(by=by, value=value)
except NoSuchElementException:
pass
# 发生了NoSuchElementException异常,说明页面中未找到该元素,返回False
return False
else:
# 没有发生异常,表示在页面中找到了该元素,返回True
return True
# 登录
def login(self):
self.getVerification()
self.driver.find_element(By.XPATH, "用户名输入框Xpath定位").send_keys("用户名")
self.driver.find_element(By.XPATH, "密码输入框Xpath定位").send_keys("密码")
self.driver.find_element(By.XPATH, "验证码输入框Xpath定位").send_keys(self.res)
sleep(1)
self.driver.find_element(By.XPATH, "登录按钮Xpath定位").click()
sleep(2)
isFlag = True
while isFlag:
try:
isPresent = self.isElementPresent(By.XPATH, "验证码错误时的提示信息Xpath定位")
if isPresent is True:
codeText = self.driver.find_element(By.XPATH, "验证码错误时的提示信息Xpath定位").text
if codeText == "验证码不正确":
self.getVerification()
sleep(2)
self.driver.find_element(By.XPATH, "验证码输入框Xpath定位").clear()
sleep(1)
self.driver.find_element(By.XPATH, "验证码输入框Xpath定位").send_keys(self.res)
sleep(1)
self.driver.find_element(By.XPATH, "登录按钮Xpath定位").click()
sleep(2)
tips = self.driver.find_element(By.XPATH,
"未输入验证码时的提示信息Xpath定位").text
if tips == "请输入验证码":
self.getVerification()
sleep(2)
self.driver.find_element(By.XPATH, "验证码输入框Xpath定位").click()
sleep(1)
self.driver.find_element(By.XPATH, "验证码输入框Xpath定位").send_keys(self.res)
sleep(1)
self.driver.find_element(By.XPATH, "登录按钮Xpath定位").click()
sleep(2)
continue
else:
print("验证码正确,登录成功!")
except NoSuchElementException:
pass
else:
isFlag = False
sleep(5)
self.driver.quit()
if __name__ == "__main__":
GetVerificationCode().login()3. 验证码样例
4. 识别结果
可以实现:验证码识别错误后,继续识别
三、代码说明
本文代码中时间等待都是使用了强制等待,如有需要可对代码进行修改,可以使用显示等待。关于selenium的三种等待方式(显示等待,隐式等待,强制等待)可以参考其他博主的文章了解学习。
总结
对于现在已有的验证码图片都有可能具备一定的识别能力。简单来说,ddddocr 让验证码识别变得如此简单与易用,可以快速的检测出图片上的文字、数字或图标,让更多的伙伴能够快速的破解网站的登录验证码。
到此这篇关于Python通用验证码识别OCR库ddddocr的安装使用教程的文章就介绍到这了,更多相关Python验证码识别OCR库ddddocr内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
X 关闭
X 关闭
- 1转转集团发布2022年二季度手机行情报告:二手市场“飘香”
- 2充电宝100Wh等于多少毫安?铁路旅客禁止、限制携带和托运物品目录
- 3好消息!京东与腾讯续签三年战略合作协议 加强技术创新与供应链服务
- 4名创优品拟通过香港IPO全球发售4100万股 全球发售所得款项有什么用处?
- 5亚马逊云科技成立量子网络中心致力解决量子计算领域的挑战
- 6京东绿色建材线上平台上线 新增用户70%来自下沉市场
- 7网红淘品牌“七格格”chuu在北京又开一家店 潮人新宠chuu能红多久
- 8市场竞争加剧,有车企因经营不善出现破产、退网、退市
- 9北京市市场监管局为企业纾困减负保护经济韧性
- 10市场监管总局发布限制商品过度包装标准和第1号修改单

