写在前面
这应该是本年度的最后一篇技术博客了,今年在CSDN上总共发表了20篇博客,除掉几篇LeetCode的博客,都是个人工作的总结,总体来说,收获不少,随手记录的习惯也养成了。希望来年持之以恒。
这篇博客主要介绍的是百度AI开放平台的OCR识别,包括文字识别和车型识别,个人感受是功能强大,但也还有提升的空间。
语言环境:Python3.7编译工具:Spyder
相关接口和秘钥申请
首先上两个接口的地址:
文字识别车型识别
在调用API之前,你得按百度要求申请API Key和Secret Key(简称AK、SK),然后根据AK和SK获取access_token
先上一下access_token获取的代码
import requests import base64# client_id 为官网获取的AK, client_secret 为官网获取的SKak = 'yourak'sk = 'yoursk'host = '/oauth/2.0/token?grant_type=client_credentials&client_id=%s&client_secret=%s' % (ak, sk)response = requests.get(host).json()token = response['access_token']
ak和sk都要换成自己申请的,有了ak和token后就可以进行下面的工作了。
手写字体识别
首先上一张自己随手写的文字,辛弃疾的《永遇乐》,多少年来最爱的宋词之一
觉得能把上面的文字识别出来不,我觉得费劲。
好了,上文字识别的代码
request_url = "/rest/2.0/ocr/v1/handwriting"# 二进制方式打开图片文件f = open('手写识别-草书风格.jpg', 'rb')img = base64.b64encode(f.read())params = {"image":img}access_token = tokenrequest_url = request_url + "?access_token=" + access_tokenheaders = {'content-type': 'application/x-www-form-urlencoded'}response2 = requests.post(request_url, data=params, headers=headers).json()result = response2['words_result']results = []for i in range(len(result)):results.append(result[i]['words'])print(result[i]['words'])
请求过程很简单,结果在response2[‘words_result’]中,看看识别成啥玩意儿了:
哈哈,这么难识别的文字,居然还有不少是对的。那我换个正楷一点的字体呢,会不会好一点,说干就干。
换一张写的标准一点的手写照片
看看结果
wow,只有三个字识别错了,还是很棒的。这玩意儿可以用在很多地方,比如小学老师批改作业,最合适不过了,不过就得要求孩子们把字写好,不然容易扣分哦。
车型识别
代码差不多,我直接写上来了
request_url = "/rest/2.0/image-classify/v1/car"# 二进制方式打开图片文件f = open('车辆识别.jpg', 'rb')img = base64.b64encode(f.read())params = {"image":img,"top_num":5}access_token = tokenrequest_url = request_url + "?access_token=" + access_tokenheaders = {'content-type': 'application/x-www-form-urlencoded'}response = requests.post(request_url, data=params, headers=headers).json()
看看我在网上找的一张比亚迪的照片
看看识别情况
识别的很准确呢,真棒。
当然这是比较清晰的照片,如果遇到模糊的照片,识别成功率不到一半,百度AI加油哦。
小结
很棒的工具,这里只提到了两个功能,其他的应用各行各业似乎都能找到对应的接口,总之技术在进步,学习的脚步不能停。
共勉~~