zoukankan      html  css  js  c++  java
  • 01_识别图片&验证码登录

    概述

    有些场景的自动化测试中,需要带验证码登录,如下图,这种情况就需要识别图片中的验证码信息,然后转成文字进行登录

    常用的方法有

    • 1 利用baidu提供的api方法
    • 2 利用pytesseract+Tesseract-OCR图片文字识别
    • 3 使用一些训练方法识别(暂时未研究)

    1 利用baidu提供的api方法

    这个是产品界面的连接 https://cloud.baidu.com/product/ocr
    使用之前需要创建自己的api id 在这个link里创建 https://console.bce.baidu.com/ai/?_=1595927511997#/ai/ocr/overview/index

    Demo1 简单图片处理

    # -*- coding: UTF-8 -*-
    from aip import AipOcr
    
    # 下面三个变量都是需要在百度里注册后才能使用的
    APP_ID = '21647273'
    API_KEY = 'qk3p1gELsLrjMFI4E9ZKWGi3'
    SECRET_KEY = 'WQVPU7F4HIHc4s15fmx3QjqeoGGGktyA'
    
    # 初始化AipFace对象
    client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
    
    # 读取图片
    def get_file_content(filePath):
        with open(filePath, 'rb') as fp:
            return fp.read()
    # 图片的地址需要根据实际情况修改
    image = get_file_content('../test6.png')
    # 调用通用文字识别, 图片为本地图片
    res = client.general(image)
    print(res)
    
    for item in res['words_result']:
        print(item['words'])
    

    执行后的效果图


    但是不能处理日语

    Demo2:附带需要处理验证码的情况

    from selenium import webdriver
    from PIL import Image
    from aip import AipOcr
    
    browser = webdriver.Chrome()  # 实例化对象
    url = 'http://daido.sitetest1.com/login'
    browser.get(url)
    png = browser.find_element_by_id('img_seccode')  # 查找验证码元素
    png.screenshot('test.png')
    
    img = Image.open('test.png')
    img = img.convert('L')  # P模式转换为L模式(灰度模式默认阈值127)
    count = 127  # 设定阈值
    table = []
    for i in range(256):
        if i < count:
            table.append(0)
        else:
            table.append(1)
    
    img = img.point(table, '1')
    img.save('captcha.png')  # 保存处理后的验证码
    
    # 识别码
    APP_ID = '21647273'
    API_KEY = 'qk3p1gELsLrjMFI4E9ZKWGi3'
    SECRET_KEY = 'WQVPU7F4HIHc4s15fmx3QjqeoGGGktyA'
    # 初始化对象
    client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
    # 读取图片
    def get_file_content(file_path):
        with open(file_path, 'rb') as f:
            return f.read()
    
    image = get_file_content('captcha.png')
    # 定义参数变量
    options = {'language_type': 'CHN_ENG', }  # 识别语言类型,默认为'CHN_ENG'中英文混合
    # 调用通用文字识别
    result = client.basicGeneral(image, options)  # 高精度接口 basicAccurate
    print(result)
    try:
        code = result['words_result'][0]['words']
    except:
        code = '验证码匹配失败'
        print(code)
    
  • 相关阅读:
    Django之templates模板
    Django视图函数之request请求与response响应对象
    Django视图函数之三种响应模式
    Django视图函数函数之视图装饰器
    django 获取request请求对象及response响应对象中的各种属性值
    Django 项目中设置缓存
    python 中 使用sys模块 获取运行脚本时在命令行输入的参数
    Mac 设置终端中使用 sublime 打开文件
    iterm2 恢复默认设置
    Python replace方法的使用
  • 原文地址:https://www.cnblogs.com/Alice1005/p/13395105.html
Copyright © 2011-2022 走看看