利用百度身份证识别服务和python语言实现身份证信息的提取和保存
闲来无事,鉴于日常录入身份证等信息枯燥乏味,效率底下。因而试做一个自动提取身份证信息的代码。素材:拍照获得身份证的正面,剪裁图片尺寸在500*400像素左右。
代码包括:token获取和身份证信息提取保存两个部分:
第一:token获取
这需要事先注册百度账号然后,创建应用后,根据平台提供的SecretKey和API Key进行获取,平台提供了相应的代码;需要替换代码中host 内的SecretKey和API Key为自己应用对应的字符串。
access_token.py文件:
# 官方代码是2.x,这里使用的是3.x的版本,所以库的名字有所改变
import urllib.request,urllib.parse,urllib.error
import sys,ssl
# client_id 为官网获取的AK, client_secret 为官网获取的SK
host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=API KEY j&client_secret=SecretKey'
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)
第二:身份证信息的获取和保存
身份证照片必须放在代码指定位置,当然自己也可修改代码中的路径,任意放置。返回的信息将保存早xlsx文件中,该文件的路径也可自行修改。包含两个文件:xlsWrite.py 和 IDcard.py 。
IDcard.py文件内容如下:
# -*- coding:utf8 -*-
import base64,sys,json
import urllib.request,urllib.parse
from xlsWrite import write_excel# access_token 是一个月换一次,注意更换!
access_token = '24.0062cd927abfd4a24cecb0e419dfebea.2592000.1570977795.282335-17233176'
url = 'https://aip.baidubce.com/rest/2.0/ocr/v1/idcard?access_token=' + access_token# 二进制读方式打开图文件
# 照片要求500*400像素附近即可,不要过大
f = open('C:\\BB.jpg','rb')
# 参数image:图像base64编码
img = base64.b64encode(f.read())
params = {"image":img,"id_card_side":"front"}
# 注意编码一定要是UTF8,byte类型
params = urllib.parse.urlencode(params).encode('utf-8')
request = urllib.request.Request(url, params)
request.add_header('Content-Type', 'application/x-www-form-urlencoded')
response = urllib.request.urlopen(request)
# 需要使用decode()函数,否则显示16进制数
content = response.read().decode()
if (content):print("信息获取成功!")
else:print("信息获取失败!")sys.exit(1)
# 判断A 的类型,并转换为dictionary类型
# print(type(content))
content_dict = json.loads(content)
# 取出里面的关键字“words_result”的值
words_result = content_dict.get("words_result")
# 判断是否正确识别了:“姓名”,“性别”,“民族”等汉字,然后再读这些key的值
# Python 3.X 里不包含 has_key() 函数,被 __contains__(key) 替代:
if(words_result.__contains__("姓名") and words_result.__contains__("性别") and words_result.__contains__("民族") and words_result.__contains__("出生") and \words_result.__contains__("住址") and words_result.__contains__("公民身份号码")):flag = True
else:flag = Falseprint("识别结果中某个关键词识别错误!错误信息:")print(words_result)sys.exit()# 如果关键词都有,那么输出相关信息
name = words_result.get("姓名")
name_value = name.get("words")gender = words_result.get("性别")
gender_value = gender.get("words")nationality = words_result.get("民族")
nationality_value = nationality.get("words")born_time = words_result.get("出生")
born_value = born_time.get("words")address = words_result.get("住址")
address_value = address.get("words")id_num = words_result.get("公民身份号码")
id_value = id_num.get("words")# json = json.dumps(A)print("姓名:" + name_value)
print("性别:" + gender_value)
print("民族:" + nationality_value)
print("出生:" + born_value)
print("住址:" + address_value)
print("公民身份号码:" + id_value)# 将数据写入exls文件
row_data = [name_value,gender_value,nationality_value,born_value,address_value,id_value]
write_excel(row_data)
保存函数写在另一个xlsWrite.py文件中:
# _*_ coding:utf-8 _*_
import os,xlwt,openpyxl
from openpyxl import Workbookdef write_excel(rowdata):'''函数作用:打开一个Excel文件,不存在就新建。给Excel写入一行数据。:param rowdata: data in a row,[1,2,3,4,5,6...]:return: null'''fn = 'D:\\mydata.xlsx' # 文件名# 如果文件不存在就新建一个if(os.path.exists(fn)):wb = openpyxl.load_workbook(fn) # 打开已有的Excel文件else:# 创建wbwb = Workbook()#ws = wb.create_sheet("Mysheet")ws = wb.worksheets[0] # 打开指定索引的工作表# print(ws['A1'].value) # 读取并输出指定单元格的值# ws.merge_cells('F2:F3') # 合并单元格# ws['F2'] = "=sum(A2:E2)" # 写入公式ws.append(rowdata) # 添加一行数据# 保存文件wb.save(fn)
if __name__ == "__main__":A = [1, 2, 3, 4, 5, 6]write_excel(A)B = [4, 5, 6, 7, 8, 89]write_excel(B)
素材是网上随便找的一张:
效果:
效果没有想象的理想,不过在使用真人身份证的清晰照片时效果较为满意。
利用百度身份证识别服务和python语言实现身份证信息的提取和保存相关推荐
- Python 利用百度文字识别 API 识别并提取图片中文字
Python 利用百度文字识别 API 识别并提取图片中文字 利用百度 AI 开发平台的 OCR 文字识别 API 识别并提取图片中的文字.首先需注册获取 API 调用的 ID 和 key,步骤如下: ...
- Python 利用百度文字识别验证码、文字、图片并提取图片中文字或数字
Python 利用百度文字识别验证码.文字.图片并提取图片中文字或数字 Python 利用百度文字识别验证码.文字.图片并提取图片中文字或数字 以下是代码实现, Python 利用百度文字识别验证码. ...
- 利用百度人脸识别API和pyqt5实现基于人脸识别的可视化课堂签到管理系统
利用百度人脸识别API和pyqt5实现基于人脸识别的可视化课堂签到管理系统 一.项目介绍 基于人脸识别的课堂签到管理系统 二.概要设计 工程项目:基于人脸识别的课堂签到管理系统 分为:三个阶段 1.定 ...
- 【Python例】利用 python 进行图片文字信息的提取 --- OCR-EasyOCR
[Python例]利用 python 进行图片文字信息的提取 - OCR-EasyOCR 本文主要用于记录,并使用 python 脚本进行图片文字信息的生成. 什么是 OCR? OCR OCR(Opt ...
- 基于SpringBoot调用百度ocr以及企查查接口实现对营业执照信息的提取并识别真伪
基于SpringBoot调用百度ocr以及企查查接口实现对营业执照信息的提取并识别真伪 1.application.yml 2.Controller层接口 3.相关工具类 3.1 DateUtils ...
- 使用百度地图Web服务API查询地点的经纬度信息
使用百度地图Web服务API查询地点的经纬度信息 API地理编码服务 数据 结果 API地理编码服务 地理编码服务(又名Geocoder)是一类Web API接口服务: 地理编码服务提供将结构化地址数 ...
- python 百度ocr安装_Python利用百度文字识别(OCR)服务实现图片文字提取,准确率超高...
最近和朋友聊天,聊到一个充满使命感但又略显心酸的话题--下班回家在网上给小朋友抄题...那么问题来了,除了大家所知的QQ文字识别功能之外,还有哪些方式可以做到文字识别呢. 作为一名热心的Python小 ...
- AUTOJS利用百度OCR识别找字点击 详细代码
//此段代码要先在百度智能云上注册并开通百度OCR文字识别,开通方法请自行百度 //https://login.bce.baidu.com/?account=&redirect=http%3A ...
- java 获取百度云盘图片_java 利用百度云识别图片文字
一.百度云使用步骤 1.进入https://console.bce.baidu.com/#/index/overview 登录百度云账号.百度所有账号都是通用的,可以直接利用百度的其他账号(百度网盘. ...
最新文章
- OpenCV3.3中主成分分析(Principal Components Analysis, PCA)接口简介及使用
- JDK 13 的 12 个新特性,真心涨姿势了
- 主流大数据系统在后台的层次角色及数据流向
- Maven Jrebel 多模块热部署方案
- 美图每天亿级消息存储演进——从Redis到Titan,完美解决扩容问题
- mysql增量同步kafka_MySQL数据实时增量同步到Kafka - Flume
- 计算机软件通常称为,计算机软件通常分为
- android html邮件 messagecompose,android email 转发附件丢失问题
- docker 安装nacos_康过来!Nacos配置和管理微服务的使用
- Android自定义控件学习(二)-----自定义attr Style styleable以及其应用
- python库下载(包括一些pip安装不成功的库下载)
- 广州恒义计算机科技,【长文】SONY MAP-S1解码一体机恒义科技HY-05台式耳放听感测评...
- 一维连续傅里叶变换和逆变换公式的一种推导
- 卖货文案二:建立消费者信任
- stringexample.java_给出如下声明:String s = “Example”; 合法的代码有哪些?()_学小易找答案...
- 使用STN的行人属性识别
- DataTable转换为ListT或者DataRow转换为T
- jdk9、jdk10、jdk11、jdk12、jdk13新特性
- 用气发声五大问题的解析
- 尚硅谷_在线教育_Nuxt整合错误