Python利用百度AI图像识别技术识别图片

准备工作:在百度云控制台创建文字识别模块;装备几张简单的有文字的图片。

百度官方文档:http://ai.baidu.com/docs#/OCR-API/7e4792c7

然后进入编码阶段:

如下代码获取access_token 

client_id和client_secret是百度云列表提供的,复制即可。
#!/usr/bin/env python
# encoding: utf-8
import urllib, urllib.request, sys
import ssl

# client_id 为官网获取的AK, client_secret 为官网获取的SK
host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=5Yk7ssa……yymyqV&client_secret=zMlhp5……P2fkZGdpbq6l '
request = urllib.request.Request(host)
request.add_header('Content-Type', 'application/json; charset=UTF-8')
response = urllib.request.urlopen(request)
content = response.read()
if (content):
    print(content)

从输出数据中截取access_token备用。

{"refresh_token":"25.5e3f0e551cb27c58ea1e7a4e4c0f443d.315360000.1859339833.282335-15049974","expires_in":2592000,"session_key":"9mzdXUMTh7C5l1k1D3BszGAXcDeKGM1PQaJ8kw20KKC+5wFOSDNhmDsFK4yWsL5MidWg7ixprSo\\/sfCta6TiS38mA2eCRw==","access_token":"24.f73c8f69fe8837dcebbae5b42394df37.2592000.1546571833.282335-15049974","scope":"public vis-ocr_ocr brain_ocr_scope brain_ocr_general brain_ocr_general_basic brain_ocr_general_enhanced vis-ocr_business_license brain_ocr_webimage brain_all_scope brain_ocr_idcard brain_ocr_driving_license brain_ocr_vehicle_license vis-ocr_plate_number brain_solution brain_ocr_plate_number brain_ocr_accurate brain_ocr_accurate_basic brain_ocr_receipt brain_ocr_business_license brain_solution_iocr brain_ocr_handwriting brain_ocr_vat_invoice brain_numbers brain_ocr_train_ticket brain_ocr_taxi_receipt wise_adapt lebo_resource_base lightservice_public hetu_basic lightcms_map_poi kaidian_kaidian ApsMisTest_Test\\u6743\\u9650 vis-classify_flower lpq_\\u5f00\\u653e cop_helloScope ApsMis_fangdi_permission smartapp_snsapi_base iop_autocar oauth_tp_app smartapp_smart_game_openapi oauth_sessionkey smartapp_swanid_verify","session_secret":"b964ff4e36293ff095d411371f45d9a2"}

以下代码用来识别图片信息:

注意替换access_token的值。

#!/usr/bin/env python
# encoding: utf-8
import urllib.parse, urllib.request, base64
access_token = '#####调用鉴权接口获取的token#####'
url = 'https://aip.baidubce.com/rest/2.0/ocr/v1/general?access_token=' + '替换access_token'
# 二进制方式打开图文件
f = open(r'I:\\a.jpg', 'rb')#本地图片
# 参数image:图像base64编码
img = base64.b64encode(f.read())
params = {"image": img}
params = urllib.parse.urlencode(params).encode(encoding='UTF8')
request = urllib.request.Request(url, params)
request.add_header('Content-Type', 'application/x-www-form-urlencoded')
response = urllib.request.urlopen(request)
content = response.read()
if (content):
    print((content).decode())

图片a.jpg

 运行代码结果:

{"log_id": 9118799040756169381, "words_result_num": 1, "words_result": [{"location": {"width": 76, "top": 146, "left": 79, "height": 41}, "words": "百度"}]}

 装一个身份证照片:

 

再次运行代码,结果:

 所有数据都识别到!