调用阿里API实现图片验证码识别

目 录

  • 1.作者介绍
  • 2.阿里云OCR算法介绍
    • 2.1 OCR介绍
    • 2.2 基于阿里云的OCR算法介绍
    • 3.1 实验过程
    • 3.2 实验代码
    • 3.3 实验结果

1.作者介绍

王柯欣,女,西安工程大学电子信息学院,2021级硕士研究生
研究方向:模式识别与人工智能
电子邮件:[email protected]

孟莉苹,女,西安工程大学电子信息学院,2021级硕士研究生,张宏伟人工智能课题组
研究方向:机器视觉与人工智能
电子邮件:[email protected]

2.阿里云OCR算法介绍

2.1 OCR介绍

OCR,即图像文字的识别和理解;OCR前期是识别图片中的文字,即找到文字的位置,然后识别是什么字。后期在原本文字识别的基础上进行文字理解,文字理解是文字识别的一个应用。OCR根据空间关系和语义的了解输出用户想要的结果。

2.2 基于阿里云的OCR算法介绍

阿里云视觉智能开放平台(vision.aliyun.com)是基于阿里巴巴视觉智能技术实践经验,提供视觉智能API服务,帮助企业、开发者快速建立视觉智能技术的应用能力的综合性视觉AI能力平台。基于阿里云的OCR算法(AI技术),能够快速准确识别各种网络图片中的不规则文字,支持手写文字识别,在复杂字体和复杂背景的情况下仍保持非常高的识别准确率。
应用场景:机票,验证码识别,海报,实体广告识别,微商广告,百度贴吧,淘宝图文识别,演唱会门票等。
3.调用阿里API实现图片验证码识别

3.1 实验过程

进入阿里云官网(https://www.aliyun.com/)注册账号并登录
调用阿里API实现图片验证码识别_第1张图片

点击“云市场”→“API市场”→“人工智能”
调用阿里API实现图片验证码识别_第2张图片

找到产品:“通用文字识别-高精版OCR文字识别”
调用阿里API实现图片验证码识别_第3张图片

注册并开通文字识别免费额度
调用阿里API实现图片验证码识别_第4张图片

在“控制台”-“产品与服务”中找到“云市场”
调用阿里API实现图片验证码识别_第5张图片

在已购买的通用文字识别服务中,找到AppCode,稍后需要粘贴在代码中
调用阿里API实现图片验证码识别_第6张图片

此外,我们可以通过接口文件,查询接口地址,请求方式,和验证方式
调用阿里API实现图片验证码识别_第7张图片

接下来建立数据集,选择的数据集都是比较简单的验证码图片。这里保存的都是本地图片,图片格式为 .png
调用阿里API实现图片验证码识别_第8张图片

3.2 实验代码

使用python对阿里云的图片识别算法接口API,识别验证码中文字,图像数据可使用base64编码和url参数(只能同时使用一种格式),要求base64编码后大小不超过4M,图像越小效率越高,支持jpg/png/bmp格式。

#python3
#导入需要的库
import urllib.request
import urllib.parse
import json
import time
import base64
 #加载本地图片
image_path = '输入图片地址'
with open(image_path, 'rb') as f:  # 以二进制读取本地图片
    data = f.read()
    encodestr = str(base64.b64encode(data),'utf-8') # base64编码图片
#设置请求头
headers={'Authorization':'APPCODE 申请到的个人APPCODE',  # 填入个人APPCODE
 'Content-Type': 'application/json; charset=UTF-8'# 定义接口格式
    }
def posturl(url,data={}):
    try:
        params=json.dumps(dict).encode(encoding='UTF-8')
        req = urllib.request.Request(url, params, headers)
        r = urllib.request.urlopen(req)
        html =r.read()
        r.close();
        return html.decode("utf8")
    except urllib.error.HTTPError as e:
        print(e.code)
        print(e.read().decode("utf8"))
    time.sleep(1)
if __name__=="__main__":
url_request="https://gjbsb.market.alicloudapi.com/ocrservice/advanced"   # 对应官网APIURL
    dict = {'img': encodestr}
    html = posturl(url_request, data=dict)
    jos = json.loads(html.encode("utf-8").decode("utf-8"))    # str转json对象,<class 'dict'>
    result = jos['content']  # 获得参数结果
    print('识别的结果:',result)

3.3 实验结果

程序运行成功后,验证码基本能够被正确识别,识别结果如下图所示
调用阿里API实现图片验证码识别_第9张图片
调用阿里API实现图片验证码识别_第10张图片

分析实验结果可以看出,图片识别准确率较高,但存在细微误差,并且创建的数据集样本较少,本次实验能够快速准确识别各种网络图片中的不规则文字,支持手写文字识别,在复杂字体和复杂背景的情况下仍保持非常高的识别准确率

你可能感兴趣的:(Python,阿里云)