Python开发---试用OCR文字识别API

AI如今发展迅速,各云厂商对通用的人脸识别,文字识别,语音识别和语音合成提供了接口。在日常中有些小场景还是可以用到这些通用AI接口使平台或软件锦上添花的。

比如身份管理。除了基本字段信息,同时可以上传身份证原件照片,来保证数据的准确性。(截图里的身份证照片和信息来源于网上公开,并且已经被模糊处理)

使用百度AI提供的身份证识别接口,同时使用它供演示的身份证照片。

当我们在浏览器上传过身份证照片后,同时调用百度AI的身份证识别接口返回身份证记录各字段信息,然后检查无误后,再添加识别结果到数据库。百度云网站上提供有多种语言版本的示例代码,分为两步:根据自己的API Key和Secret Key调用鉴权接口获取token,然后用token和图片的base64数据去调用身份证识别接口。Python代码如下:

代码语言:python
代码运行次数:0
复制
Cloud Studio 代码运行
# -*- coding:utf-8 -*-
import urllib, urllib2, sys
import ssl
import json
import base64

client_id 为官网获取的AK, client_secret 为官网获取的SK

def getAccess_Token(ak,sk):
print 'getAccess_Token'
host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=%s&client_secret=%s'%(ak,sk)
request = urllib2.Request(host)
request.add_header('Content-Type', 'application/json; charset=UTF-8')
response = urllib2.urlopen(request)
content = response.read()
if(content):

    #print(content)
    res=json.loads(content)
    if(not res.has_key('error')):
        
        return res['access_token']
return 0

def getIdcard(access_token,picUrl):
print 'getIdcard'
if(access_token==0):
return None

url = 'https://aip.baidubce.com/rest/2.0/ocr/v1/idcard?access_token=' + access_token
# 二进制方式打开图文件
f = open(picUrl, 'rb')
# 参数image:图像base64编码
img = base64.b64encode(f.read())
f.close()
params = {"image": img, "id_card_side": "front"}
params = urllib.urlencode(params)
request = urllib2.Request(url, params)
request.add_header('Content-Type', 'application/x-www-form-urlencoded')
response = urllib2.urlopen(request)
content = response.read()
if (content):
    #print(content) 
    res=json.loads(content)
    if(res['image_status']=='normal'):
        return res['words_result']


return None

#accessToken=getAccess_Token('Your API Key','Your Secret Key')

#res=getIdcard(access_token,'static/files/jpg/406811d6-a093-11e9-ab0f-5254004bb78e.jpg')