Python 百度ai身份证接口案例
调用百度Ai
完成一个学生信息录入的网页小案例
添加图片,身份证信息对号入座

官方文档中心:https://ai.baidu.com/docs#/OCR-API/7e4792c7
utils.py
#encoding:utf-8
import requests
import urllib
from urllib import parse
import os
import json
import base64
URL = 'https://aip.baidubce.com/rest/2.0/ocr/v1/idcard'
class PersonIdCard(object):
Access_Token_URL = 'https://aip.baidubce.com/oauth/2.0/token'
Access_Key = 'your_ak'
Secret_Key = 'your_sk'
def get_access_token(self):
date = {
'grant_type':'client_credentials',
'client_id':self.Access_Key,
'client_secret':self.Secret_Key
}
headers = {
'Content-Type': 'application/json; charset=UTF-8'
}
resp = requests.post(self.Access_Token_URL,data=date,headers=headers)
return resp.json()['access_token']
def personalMsg(self,access_token,imgInput):
header = {
'Content-Type':'application/x-www-form-urlencoded'
}
f = open(imgInput,'rb')
img = base64.b64encode(f.read())
params = {
'image':img,
'id_card_side':'front',
'access_token':access_token,
}
params = parse.urlencode(params)
resp = requests.post(url=URL,data=params,headers=header)
return json.loads(resp.text)
def getworlds(resp,key):
result = resp['words_result']
return result[key]['words']
views.py
p = PersonIdCard()
access_token = p.get_access_token()
resp = p.personalMsg(access_token,os.path.join(settings.MEDIA_ROOT,file.name))
place = getworlds(resp,'住址')
gender = getworlds(resp,'性别')
birthday = getworlds(resp,'出生')
name = getworlds(resp,'姓名')
nation = getworlds(resp,'民族')
idcard = getworlds(resp,'公民身份号码')
data = {
'name':name,'gender':gender,'place':place,'birthday':birthday,'nation':nation,
'idcard':idcard
}
后台代码用的django,其它框架类似:personalMsg(access_token,you_file_path)
前台js代码:
function getObjectURL(file) {
var url = null;
if (window.createObjectURL != undefined) { // basic
url = window.createObjectURL(file);
}
else if (window.URL != undefined) {// mozilla(firefox)
url = window.URL.createObjectURL(file);
}
else if (window.webkitURL != undefined) {
// webkit or chrome
url = window.webkitURL.createObjectURL(file);
}
return url;
} //添加一个展示图片的url
$(function () {
var name = $("input[name='name']");
var gender = $("input[name='gender']");
var nation = $("input[name='nation']");
var birthday = $("input[name='birthday']");
var place = $("input[name='place']");
var idcard = $("input[name='idcard']");
var formData = new FormData();
$("#card").change(function () {
var objUrl = getObjectURL(this.files[0]);
$("#mycard").attr('src',objUrl);
formData.append('card',this.files[0]);
myajax.post({
'url':'/person/',
'data':formData,
processData:false,
contentType:false,
'success':function (result) {
if(result['code']==200){
var person = result['data'];
name.val(person['name']);
gender.val(person['gender']);
birthday.val(person['birthday']);
place.val(person['place']);
idcard.val(person['idcard']);
nation.val(person['nation']);
}
}
})
})
})
html代码:
{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
<title>学生档案</title>
<script src="https://cdn.bootcss.com/jquery/1.10.2/jquery.min.js"></script>
<link rel="stylesheet" href="{% static 'add_student_archives.css' %}">
<script src="{% static 'xfzajax.js' %}"></script>
<script src="{% static 'add_student_archives.js' %}"></script>
</head>
<body>
<label for="card" class="lab-card">添加身份证照片</label>
<input type="file" id="card" style="display: none">
<img src="" alt="" id="mycard">
<form action="">
<fieldset>
<legend>学生档案</legend>
<label for="">
姓名: <input type="text" required autofocus placeholder="请输入姓名" name="name">
</label>
<label for="">
性别: <input type="text" placeholder="请输入性别" name="gender">
</label>
<label for="">
民族: <input type="text" placeholder="请输入民族" name="nation">
</label>
<label for="">
出生日期: <input type="text" placeholder="请输入出生日期" name="birthday">
</label>
<label for="">
住址: <input type="text" placeholder="请输入住址" name="place">
</label>
<label for="">
身份证号: <input type="text" placeholder="请输入身份证号" name="idcard">
</label>
<label for="">
所属学院: <input type="text" list="course" placeholder="选择专业">
<datalist id="course">
<option value="软件设计"></option>
<option value="树媒"></option>
<option value="JAVA"></option>
<option value="Android"></option>
<option value="IOS"></option>
<option value="大数据"></option>
<option value="游戏"></option>
<option value="网安"></option>
</datalist>
</label>
<label for="">
入学日期: <input type="date" value="2016-09-01">
</label>
<label for="">
毕业时间: <input type="date" value="2020-06-01">
</label>
<label for="" class="btn">
<input type="submit" value="保存">
</label>
</fieldset>
</form>
</body>
</html>
css
body {
margin: 0;
padding: 0;
background-color: #F7F7F7;
background: url("../../media/bg.jpg") no-repeat;
font-family: '汉仪大隶书繁';
}
.lab-card{
padding: 10px 10px 10px 20px;
background: #CCCCCC;
border-radius: 5px;
width: 40px;
float: left;
}
#mycard{
float: left;
}
form {
max-width: 640px;
margin: 24px auto;
font-size: 28px;
background: #FFFFFF;
}
label {
display: block;
margin: 10px 10px 15px;
font-size: 24px;
}
form input {
display: block;
width: 100%;
height: 40px;
font-size: 22px;
margin-top: 10px;
padding: 6px 10px;
color: #333;
border: 1px solid #CCC;
box-sizing: border-box;
}
meter, progress {
display: block;
width: 100%;
margin-top: 10px;
}
.btn {
margin-top: 30px;
}
.btn input {
color: #FFF;
background-color: green;
border: 0 none;
outline: none;
cursor: pointer;
}
效果展示:

Python 百度ai身份证接口案例的更多相关文章
- 用百度AI平台接口实现OCR文字识别
目录 一.接入指南 1.注册 2.登录 3.创建应用 二.安装接口模型 三.编写python代码 四.识别结果 一.接入指南 若想利用百度AI开放平台进行软件开发,首先应成为百度AI开放平台的开发者. ...
- 百度AI身份证识别demo,使用js提交图片数据
<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8&quo ...
- django--调用百度AI接口实现人脸注册登录
面部识别----考勤打卡.注册登录.面部支付等等...感觉很高大上,又很方便,下面用python中的框架--django完成一个注册登录的功能,调用百度AI的接口,面部识别在网上也有好多教程,可以自己 ...
- 百度AI认为最漂亮的中国女星是----范冰冰
一.程序说明 1.1 程序说明 之前写调用百度AI接口的程序,然后刷到了两条明星的新闻,就想到了写个给明星颜值排下名的程序. 程序的关键点是两个,第一个是百度AI接口的调用这点其实直接使用早前实现的类 ...
- 基于Flask和百度AI实现与机器人对话
实现对话机器人主要有个步骤 : 一.前端收集语音传入后端 二.后端基于百度AI接口进行语音识别,转换成文字 三.对文字进行自定义验证或通过图灵端口进行处理,生成回复内容 四.将文字通过百度AI接口合成 ...
- 百度AI接口---身份证识别Demo
题记:自己是做java web的,但是本人以前接触并学习很多图像的知识,所以对图像很敏感.下面以百度的一个接口,实现身份证识别案例 1.需要百度开发者AppID.SecretKey .API Key. ...
- Python人工智能-基于百度AI接口
参考百度AI官网:http://ai.baidu.com/ 准备工作: 支持Python版本:2.7.+ ,3.+ 安装使用Python SDK有如下方式 >如果已经安装了pip,执行 pip ...
- python 全栈开发,Day122(人工智能初识,百度AI)
一.人工智能初识 什么是智能? 我们通常把人成为智慧生物,那么”智慧生物的能力”就是所谓的”智能”我们有什么能力?听,说,看,理解,思考,情感等等 什么是人工智能? 顾名思义就是由人创造的”智慧能力” ...
- java通过百度AI开发平台提取身份证图片中的文字信息
废话不多说,直接上代码... IdCardDemo.java package com.wulss.baidubce; import java.io.BufferedReader; import jav ...
随机推荐
- springboot深入学习(二)-----profile配置、运行原理、web开发
一.profile配置 通常企业级应用都会区分开发环境.测试环境以及生产环境等等.spring提供了全局profile配置的方式,使得在不同环境下使用不同的applicaiton.properties ...
- 第28章:MongoDB-索引--过期索引(TTL)
①过期索引(TTL) TTL索引是让文档的某个日期时间满足条件的时候自动删除文档,这是一种特殊的索引,这种索引不是为了提高查询速度的,TTL索引类似于缓存,缓存时间到了就过期了,就要被删除了 ②范例: ...
- Effective C++ 随笔(4)
条款21:必须返回对象时,别妄想返回其reference 例子: Raional类可以执行有理数的一些运算,并且使用heap内存申请 并且其operator*函数为 const Rational&am ...
- 20155205 2016-2017-2 《Java程序设计》第8周学习总结
20155205 2016-2017-2 <Java程序设计>第8周学习总结 教材学习内容总结 第十四章 NIO使用频道来衔接数据节点,可以设定缓冲区容量,在缓冲区中对感兴趣的数据区块进行 ...
- canvas打字效果
运用fillText,写的打字效果. 唯一麻烦的地方是,换行问题, 我是把字符串转化为数组,数组一个单位完成,就换行,继续下一个单位. <!doctype html> <html&g ...
- Web模板引擎—Mustache
Web模板引擎——Mustache 2012年9月12日 BY BELL·12 COMMENTS Web 模板引擎是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,通常是标准的 ...
- Codeforces Beta Round #27 E. Number With The Given Amount Of Divisors 含n个约数最小数
http://codeforces.com/problemset/problem/27/E RT,求含n个约数的最小的数 我们设答案p = 2^t1 * 3^t2 * -- * p^tk(其中p是第k ...
- tarjan算法的补充POJ2533tarjan求度
做题时又遇到了疑惑,说明一开始就没有完全理解 基于dfs的tarjan,搜索时会有四种边 树枝边:DFS 时经过的边,即 DFS 搜索树上的边 前向边:与 DFS 方向一致,从某个结点指向其某个子孙的 ...
- stm32f103_高级定时器——输入捕获/输出比较中断+pwm=spwm生成
****************************首选我们了解一下它们的功能吧********************************************************** ...
- 冲刺博客NO.4
今天开站立会议时,有一点分歧,原本我认为的隐私保护和其他人认为的不一样,在沟通后这部分功能达成共识. 今天做了什么:组员完成了用户输入部分,信息输入.添加了一些组件和活动完善界面. 遇到的苦难,界面 ...