闲来无事,鉴于日常录入身份证等信息枯燥乏味,效率底下。因而试做一个自动提取身份证信息的代码。素材:拍照获得身份证的正面,剪裁图片尺寸在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语言实现身份证信息的提取和保存相关推荐

  1. Python 利用百度文字识别 API 识别并提取图片中文字

    Python 利用百度文字识别 API 识别并提取图片中文字 利用百度 AI 开发平台的 OCR 文字识别 API 识别并提取图片中的文字.首先需注册获取 API 调用的 ID 和 key,步骤如下: ...

  2. Python 利用百度文字识别验证码、文字、图片并提取图片中文字或数字

    Python 利用百度文字识别验证码.文字.图片并提取图片中文字或数字 Python 利用百度文字识别验证码.文字.图片并提取图片中文字或数字 以下是代码实现, Python 利用百度文字识别验证码. ...

  3. 利用百度人脸识别API和pyqt5实现基于人脸识别的可视化课堂签到管理系统

    利用百度人脸识别API和pyqt5实现基于人脸识别的可视化课堂签到管理系统 一.项目介绍 基于人脸识别的课堂签到管理系统 二.概要设计 工程项目:基于人脸识别的课堂签到管理系统 分为:三个阶段 1.定 ...

  4. 【Python例】利用 python 进行图片文字信息的提取 --- OCR-EasyOCR

    [Python例]利用 python 进行图片文字信息的提取 - OCR-EasyOCR 本文主要用于记录,并使用 python 脚本进行图片文字信息的生成. 什么是 OCR? OCR OCR(Opt ...

  5. 基于SpringBoot调用百度ocr以及企查查接口实现对营业执照信息的提取并识别真伪

    基于SpringBoot调用百度ocr以及企查查接口实现对营业执照信息的提取并识别真伪 1.application.yml 2.Controller层接口 3.相关工具类 3.1 DateUtils ...

  6. 使用百度地图Web服务API查询地点的经纬度信息

    使用百度地图Web服务API查询地点的经纬度信息 API地理编码服务 数据 结果 API地理编码服务 地理编码服务(又名Geocoder)是一类Web API接口服务: 地理编码服务提供将结构化地址数 ...

  7. python 百度ocr安装_Python利用百度文字识别(OCR)服务实现图片文字提取,准确率超高...

    最近和朋友聊天,聊到一个充满使命感但又略显心酸的话题--下班回家在网上给小朋友抄题...那么问题来了,除了大家所知的QQ文字识别功能之外,还有哪些方式可以做到文字识别呢. 作为一名热心的Python小 ...

  8. AUTOJS利用百度OCR识别找字点击 详细代码

    //此段代码要先在百度智能云上注册并开通百度OCR文字识别,开通方法请自行百度 //https://login.bce.baidu.com/?account=&redirect=http%3A ...

  9. java 获取百度云盘图片_java 利用百度云识别图片文字

    一.百度云使用步骤 1.进入https://console.bce.baidu.com/#/index/overview 登录百度云账号.百度所有账号都是通用的,可以直接利用百度的其他账号(百度网盘. ...

最新文章

  1. OpenCV3.3中主成分分析(Principal Components Analysis, PCA)接口简介及使用
  2. JDK 13 的 12 个新特性,真心涨姿势了
  3. 主流大数据系统在后台的层次角色及数据流向
  4. Maven Jrebel 多模块热部署方案
  5. 美图每天亿级消息存储演进——从Redis到Titan,完美解决扩容问题
  6. mysql增量同步kafka_MySQL数据实时增量同步到Kafka - Flume
  7. 计算机软件通常称为,计算机软件通常分为
  8. android html邮件 messagecompose,android email 转发附件丢失问题
  9. docker 安装nacos_康过来!Nacos配置和管理微服务的使用
  10. Android自定义控件学习(二)-----自定义attr Style styleable以及其应用
  11. python库下载(包括一些pip安装不成功的库下载)
  12. 广州恒义计算机科技,【长文】SONY MAP-S1解码一体机恒义科技HY-05台式耳放听感测评...
  13. 一维连续傅里叶变换和逆变换公式的一种推导
  14. 卖货文案二:建立消费者信任
  15. stringexample.java_给出如下声明:String s = “Example”; 合法的代码有哪些?()_学小易找答案...
  16. 使用STN的行人属性识别
  17. DataTable转换为ListT或者DataRow转换为T
  18. jdk9、jdk10、jdk11、jdk12、jdk13新特性
  19. 用气发声五大问题的解析
  20. 尚硅谷_在线教育_Nuxt整合错误

热门文章

  1. cadence软件安装教程
  2. 包包各部位名称图解_手袋各部位名称
  3. 《认知突围:做复杂时代的明白人》感想
  4. python壁纸数据抓取_Python爬虫:爬取必应壁纸(可直接运行)
  5. 100道积分公式证明(41-50)
  6. 高中会考计算机都考啥,高中会考都有哪些科目
  7. 《东周列国志》第八十一回 美人计吴宫宠西施 言语科子贡说列国
  8. 闲谈mac地址学习以及IVL/SVL
  9. html5中检测网络状态的方法,前端js监听浏览器网络变化
  10. 倍福电子凸轮实现案例展示