放假在家闲来无事,看到一个接口,于是想试着用这几天学的Python玩玩,就用Python的urllib2对接了身份证图片识别接口,这里面还有很多关于图片识别类的接口(虽然有些要钱),不过里面文字识别和场景识别还有证件识别是免费的,初尝Python,屡试不爽。
对于Python还在摸索当中,欢迎各位赐教,让我能更好的进步。
版权所有:CSND_Ayo,转载请注明出处:http://blog.csdn.net/csnd_ayo
编程IDE:Pycharm 2016.1.2
开发环境:Python 2.7.13
操作系统:Window 7
Face++ 接口:https://www.faceplusplus.com.cn/
接口协议:HTTP 协议 POST
由于最近有人邮件跟我说,POST老是不响应,原因我看了下,因为是免费用户频繁调用,他们服务器自动屏蔽一段时间,防止恶意调用(说白了就是免费的,休想有优质服务),大家可以自己创建帐号,用自己的密钥和公钥,也许这样会稍微好一点。
# -*- coding: utf-8 -*-
#
# Face++ 身份证图片识别
# 作者:陈鲁勇
# 邮箱:[email protected]
# 创建时间:2017年04月01日04:26:48
# Python版本:2.7.13
# CSDN:http://blog.csdn.net/csnd_ayo
#
import urllib2
import urllib
import time
import json
########################################################################
# 协议URL
http_url='https://api-cn.faceplusplus.com/cardpp/v1/ocridcard'
# 公钥
key = "q9LNKjuFDAbUbfh5VG8FEMdJqyVVexM3"
# 密钥
secret = "bYTXhWRlT-DhfCf45dp2R50adZTu8wVd"
# 身份证件地址 支持PNG\JPG格式
filepath = r"F:/project/Python/inteface/python-sdk-master/python-sdk/demo.jpg"
# 参数协议分割标识
boundary = '----------%s' % hex(int(time.time() * 1000))
########################################################################
# 制作协议包
data = []
data.append('--%s' % boundary)
data.append('Content-Disposition: form-data; name="%s"\r\n' % 'api_key')
data.append(key)
data.append('--%s' % boundary)
data.append('Content-Disposition: form-data; name="%s"\r\n' % 'api_secret')
data.append(secret)
data.append('--%s' % boundary)
fr=open(filepath,'rb')
data.append('Content-Disposition: form-data; name="%s"; filename="CSND_Ayo.jpg"' % 'image_file')
data.append('Content-Type: %s\r\n' % 'application/octet-stream')
# print data
data.append(fr.read())
fr.close()
data.append('--%s--\r\n' % boundary)
########################################################################
# 发送POST请求
http_body='\r\n'.join(data)
req=urllib2.Request(http_url)
req.add_header('Content-Type', 'multipart/form-data; boundary=%s' % boundary)
req.add_data(http_body)
########################################################################
resp = urllib2.urlopen(req, timeout=5)
# 获得结果
qrcont=resp.read()
# 打印结果
json_dict = json.loads(qrcont)
for items in json_dict['cards']:
for item in items:
if type(items[item]) != int:
print ("%s=%s" % (item,items[item]))
else:
print ("%s=%d" % (item,items[item]))
########################################################################