爬虫--使用百度OCR来识别图片验证码

通过使用用百度AI的OCR来自动识别图片中的文字,效果很不错。

在这里跟大家简单分享一下如何使用,在处理图片前,最好先经过灰度化、二值化、降噪等预处理,直接上代码:

# encoding:utf-8

import requests
import base64


def get_access_token():
    '''获取access_token'''
    API_KEY = 【'官网获取的AK'】#通过百度账号登陆百度AI,进入控制台,创建对应的应用就能获得
    SECRET_KEY = 【'官网获取的SK'】
    # client_id 为官网获取的AK, client_secret 为官网获取的SK
    host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id={}&client_secret={}'.format(API_KEY,SECRET_KEY)
    response = requests.get(host)
    return response.json().get('access_token')


def get_text():
    '''获取验证码文本'''
    img_name = input("请输入需要识别的图片文件名:")
    with open(img_name,'rb') as f:
        img_data = f.read()
    request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic" #高精度版
    # request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic" 标准版
    # 二进制方式打开图片文件
    img = base64.b64encode(img_data)
    params = {"image":img}
    access_token = get_access_token()
    request_url = request_url + "?access_token=" + access_token
    headers = {'content-type': 'application/x-www-form-urlencoded'}
    response = requests.post(request_url, data=params, headers=headers)
    if response.json()["words_result"]:
        return response.json()["words_result"][0]["words"].replace(' ','')
    else:
        return '未能成功识别'

if __name__ == '__main__':
    text = get_text()
    print('验证码:%s'%text)

 

上一篇:移动端车牌识别SDK


下一篇:Boxes in a Line UVA - 12657 (双向链表)