乐趣区

关于python:用Python提取韦小宝身份证信息

记得以前有个广告词叫:“学好数理化,走遍天下都不怕”,感觉应该再加一句:“带上身份证”,本文咱们看一下如何应用 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 联合百度云接口几行代码就提取了身份证信息,其实除了身份证信息也能够提取其余卡片信息,比方银行卡信息等,有趣味的能够试一下。

源码在公众号 Python 小二 后盾回复 201216 获取。

申明:本文非首发于集体号

退出移动版