中文编程,最精致的python访客登记系统实例项目,微信机器人不再只当人工智障------02

接着上一篇的思路,那么实现机器人登记,有个重点是要自动识别身份证,有什么办法呢?

  1. 下载名片和身份证识别类的app。
  2. 借助大公司提供的api接口进行识别。
  3. 自己做人工智能识别。

先说方法3,github上有现成的方法,但安装上看着就比较麻烦,所以先搁置。方法1,其实不错,但是考虑到两个app来回撤换,会造成使用上的繁复。于是先试试方法2,用大公司的接口。于是泛舟申请了百度的api,身份证识别免费使用 500次一天,估计就是一般的酒店,都明显够用了。

到百度AI开放平台注册账号,并开通文字识别ocr,获取相应的APP_ID ,API_KEY ,SECRET_KEY 。再下载相应python SDK ,解压压缩包,把里面的 api 文件件 整个复制到程序对应的文件夹内就可以了。SDK 功能比较丰富,我们只用到其中身份证识别的部分。

新建一个身份证识别的文档 命名为 shenfz_shibie.py。好吧,泛舟的英文不好,直接用拼音,名字随便怎么起,随你喜欢。具体代码如下:

# -*- coding: utf-8 -*-
"""
Created on Mon Nov 27 22:48:12 2018
 python 识别身份证信息
@author: 浩海泛舟
"""
from aip import AipOcr as 包_百度身份证接口


# 读取身份证图片
def 方法_获取图片码(图片路径):
    with open(图片路径, 'rb') as 图片:
        return 图片.read()

def 方法_获取身份证信息(图片码):
    """ 你的 APPID AK SK ,还是继续用对应的英文,免得搞混"""
    APP_ID = '你的APPID'
    API_KEY = '你的API_KEY'
    SECRET_KEY = '你的SECRET_KEY'
    处理接口 = 包_百度身份证接口(APP_ID, API_KEY, SECRET_KEY)
   
    # 识别身份证正面
    身份证正反面 = "front"
    # 识别身份证背面
    #身份证正反面 = "back"
    # 调用身份证识别
    处理接口.idcard(图片码, 身份证正反面);
    # 如果有可选参数
    参数集 = {}
    #参数集对应接口的参数,所以里面内容要根据接口而定,不能用中文。
    参数集["detect_direction"] = "true" # 是否检测图像朝向,默认不检测
    参数集["detect_risk"] = "false"     # 是否身份证风险类型(复印件)
    """ 带参数调用身份证识别 """
    结果 = 处理接口.idcard(图片码, 身份证正反面, 参数集)
    # 获取返回识别结果
    if isinstance(结果, dict):
        资料字段 = 结果['words_result']
        姓名 = 资料字段[u'姓名']['words']
        性别 = 资料字段[u'性别']['words']
        民族 = 资料字段[u'民族']['words']
        出生日期 = 资料字段[u'出生']['words']
        住址 = 资料字段[u'住址']['words']
        身份证号码 = 资料字段[u'公民身份号码']['words']
    return 姓名,性别,民族,出生日期,住址,身份证号码

if __name__ == '__main__':
    图片码 = 方法_获取图片码('./pic/181127-212314.png')
    姓名,性别,民族,生日,住址,身份证号码 = 方法_获取身份证信息(图片码)
    
    print('姓名:',姓名)
    print('性别:',性别)
    print('民族:',民族)
    print('出生:',生日)
    print('住址:',住址)
    print('公民身份号码:',身份证号码)

泛舟喜欢把导入的包 加上前缀 ‘’包_‘’,函数加上 ‘’方法_‘’,方便如果出现错误的时候,可以方便替换,不会因为有时候同名的变量和方法替换错误。

测试结果还算不错,只是有时会因为网络问题超时,泛舟十分怀疑是长城宽度垃圾所致。

这个算是完成了身份证识别的部分,之后直接调用就可以了。接下来就是微信机器人itchat了。

感谢各位的阅读,望勿喷。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值