本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理

记得以前有个广告词叫:“学好数理化,走遍天下都不怕”,感觉应该再加一句:“带上身份证”,本文我们看一下如何使用 Python 提取身份证信息。

实现方式

实现方式大致可以分为两种:

  • 自己造轮子,如:使用 OpenCV 等自己编码实现,该方式所有功能都需自己来实现,比较耗时耗力,优点是更灵活一些

  • 使用现成的轮子,如:百度云,平台已经实现好了核心功能,并对外提供了 API 接口,我们直接调用接口即可,该方式省时省力,但灵活性可能差一些

实现过程

因为我们要实现的功能也比较简单,这里就用第二种方式来演示一下,下面简单看一下实现过程。

SDK 安装

百度云 SDK 对多种语言提供了支持,这里我们安装 Python 版的 SDK,使用 pip install baidu-aip 命令即可,SDK 目录结构如下:

├── README.md
├── aip // SDK 目录
│ ├── __init__.py // 导出类
│ ├── base.py // aip 基类
│ ├── http.py // http 请求
│ └── ocr.py //OCR
└── setup.py // setuptools 安装

创建应用

SDK 安装好后,我们接着需要创建应用了,这里需要一个百度账号或百度云账号,如果没有的话自己注册一个即可,登录及注册地址为: https://login.bce.baidu.com/?redirect=http%3A%2F%2Fcloud.baidu.com%2Fcampaign%2Fcampus-2018%2Findex.html.

我们先找一张身份证图片,如图所示:

接着看一下代码实现,首先创建 AipOcr,AipOcr 是 OCR 的 Python SDK 客户端,代码实现如下:

# 自己的 APPID AK SK
APP_ID = '自己的 App ID'
API_KEY = '自己的 Api Key'
SECRET_KEY = '自己的 Secret Key' client = AipOcr(APP_ID, API_KEY, SECRET_KEY)

信息的提取有普通和高精度两种模式,普通模式代码实现如下:

# 打开并读取文件内容
fp = open("card.jpg", "rb").read()
res = client.basicGeneral(fp) # 普通
# 遍历结果
for tex in res["words_result"]:
row = tex["words"]
print(row)

输出结果如下:

姓名韦小宝
性别男民族汉
出生1654年12月20日
住址北京市东城区景山前街4号
紫禁城敬事房
公民身份证号码112441654122日2438

再来试一下高精度模式,代码实现如下:

# 打开并读取文件内容
fp = open("card.jpg", "rb").read()
res = client.basicAccurate(fp) # 高精度
# 遍历结果
for tex in res["words_result"]:
row = tex["words"]
print(row)

输出结果如下:

姓名韦小宝
性别男民族汉
出生1654年12月20日
住址北京市东城区景山前街4号
紫禁城敬事房
公民身份证号码11204416541220243X

通过输入结果我们可以看到:高精度模式提取了正确的身份证号码,普通模式提取的身份证号码是有一些误差的。

总结

本文我们使用 Python 结合百度云接口几行代码就提取了身份证信息,其实除了身份证信息也可以提取其他卡片信息,比如银行卡信息等,有兴趣的可以试一下。

示例代码: py-discern

想要获取更多Python学习资料可以加
QQ:2955637827私聊
或加Q群630390733
大家一起来学习讨论吧!

十行 Python 代码就提取了韦小宝的身份证信息的更多相关文章

  1. 文字转语音?我只用十行Python代码就搞定了!

    详细使用教程 1.没安装Python的小伙伴需要先安装一下 2.win+r输入cmd打开命令行,输入:pip install baidu-aip,如下安装百度AI的模块. 3.新建文本文档,copy如 ...

  2. Python代码样例列表

    扫描左上角二维码,关注公众账号 数字货币量化投资,回复“1279”,获取以下600个Python经典例子源码 ├─algorithm│       Python用户推荐系统曼哈顿算法实现.py│    ...

  3. 数据关联分析 association analysis (Aprior算法,python代码)

    1基本概念 购物篮事务(market basket transaction),如下表,表中每一行对应一个事务,包含唯一标识TID,和购买的商品集合.本文介绍一种成为关联分析(association a ...

  4. Python 代码实现模糊查询

    Python 代码实现模糊查询 1.导语: 模糊匹配可以算是现代编辑器(如 Eclipse 等各种 IDE)的一个必备特性了,它所做的就是根据用户输入的部分内容,猜测用户想要的文件名,并提供一个推荐列 ...

  5. 用200行Python代码“换脸”

    介绍 本文将介绍如何编写一个只有200行的Python脚本,为两张肖像照上人物的“换脸”. 这个过程可分为四步: 检测面部标记. 旋转.缩放和转换第二张图像,使之与第一张图像相适应. 调整第二张图像的 ...

  6. 200行Python代码实现2048

    200行Python代码实现2048 一.实验说明 1. 环境登录 无需密码自动登录,系统用户名shiyanlou 2. 环境介绍 本实验环境采用带桌面的Ubuntu Linux环境,实验中会用到桌面 ...

  7. 学习TensorFlow,浅析MNIST的python代码

    在github上,tensorflow的star是22798,caffe是10006,torch是4500,theano是3661.作为小码农的我,最近一直在学习tensorflow,主要使用pyth ...

  8. 60行python代码分析2018互联网大事件

    2018年是改革开放四十周年,也是互联网发展的重要一年.经历了区块链,人工智能潮的互联网行业逐渐迎来了冬天.这一年里有无数的事件发生着,正好学了python数据处理相关,那么就用python对18年的 ...

  9. 【学习】Python进行数据提取的方法总结【转载】

    链接:http://www.jb51.net/article/90946.htm 数据提取是分析师日常工作中经常遇到的需求.如某个用户的贷款金额,某个月或季度的利息总收入,某个特定时间段的贷款金额和笔 ...

随机推荐

  1. css3系列之详解border-image

     border-image border-image呢,是给 边框加上背景图片的.没错,就是平常那一小小条的边框,也能加图片. 参数: border-image-source border-image ...

  2. 开源认证和访问控制的利器keycloak使用简介

    目录 简介 安装keycloak 创建admin用户 创建realm和普通用户 使用keycloak来保护你的应用程序 安装WildFly client adapter 注册WildFly应用程序 安 ...

  3. java线程与内存的关系

    转载: https://blog.csdn.net/hellozhxy/article/details/91972846

  4. 用PyCharm打个专业的招呼

    PyCharm 是什么 PyCharm(读作"拍恰姆")是 JetBrains 全家桶中的一员,专门用来写 Python 的: 官方网址是: https://www.jetbrai ...

  5. JavaScript原型链及其污染

    JavaScript原型链及其污染 一.什么是原型链? 1.JavaScript中,我们如果要define一个类,需要以define"构造函数"的方式来define: functi ...

  6. mysql索引原理以及优化

    一.常见查找算法: 1.顺序查找: 最基础的查找方法,对比每一个元素进行查找.在数据量很大的时候效率相当的慢. 数据结构:有序或者无需的队列 时间复杂度:O(n) 2.二分查找: 二分查找首先要求数组 ...

  7. 记一次MongoDB的失败导出

    MongoDB用的是阿里云的,今天想着把原来的数据导出进行一次去重处理,整理下数据.操作了好几个小时,还是未能成功导出. MongoDB用的是阿里云的专有网络连接,本想通过公网直接访问,申请了公网地址 ...

  8. python核心高级学习总结1---------*args和**kwargs

    *args 和 ** kwargs 的用法 首先,这两者在用法上都是用来补充python中对不定参数的接受. 比如下面的列子 def wrappedfunc(*args, **kwargs): pri ...

  9. PyQt(Python+Qt)学习随笔:QTreeWidgetItem项是否禁用disable、隐藏isHidden和允许选中isSelected

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 树型部件QTreeWidget的项QTreeWidgetItem对象具有是否禁用disable.是否 ...

  10. flask对数据库的外键 主键

    近期一直在学flask框架,后悔当初没有好好学习数据库.一个外键的知识,真的是太....蓝瘦香菇 创建数据库 class Users(db.Model): __tablename__ = 'users ...