利用python识别身份证号后获取年龄和性别信息

1. 实验目的

利用python识别身份证号后,从身份证号中获取年龄和性别信息

2. 主代码

1. 身份证号码识别

# !/usr/bin/python
#-*-coding:utf-8-*-
import sys
import importlib
importlib.reload(sys)
# reload(sys)
# sys.setdefaultencoding('utf-8')import time
time1 = time.time()
from PIL import Image
import pytesseract###########二值化算法
def binarizing(img,threshold):pixdata = img.load()w, h = img.sizefor y in range(h):for x in range(w):if pixdata[x, y] < threshold:pixdata[x, y] = 0else:pixdata[x, y] = 255return img###########去除干扰线算法
def depoint(img):   #input: gray imagepixdata = img.load()w,h = img.sizefor y in range(1,h-1):for x in range(1,w-1):count = 0if pixdata[x,y-1] > 245:count = count + 1if pixdata[x,y+1] > 245:count = count + 1if pixdata[x-1,y] > 245:count = count + 1if pixdata[x+1,y] > 245:count = count + 1if count > 2:pixdata[x,y] = 255return img########身份证号码识别
def identity_OCR(pic_path):#####身份证号码截图img1=Image.open(pic_path)w,h=img1.size##将身份证放大3倍out=img1.resize((w*3,h*3),Image.ANTIALIAS)region = (125*3,200*3,370*3,250*3)#裁切身份证号码图片cropImg = out.crop(region)# 转化为灰度图img= cropImg.convert('L')# 把图片变成二值图像。img1=binarizing(img,100)img2=depoint(img)code = pytesseract.image_to_string(img2)print("识别该身份证号码是:"+str(code))return code

2. 获取年龄和性别信息

import datetimeclass GetInformation(object):def __init__(self, id):self.id = idself.birth_year = int(self.id[6:10])self.birth_month = int(self.id[10:12])self.birth_day = int(self.id[12:14])def get_birthday(self):# 通过身份证号获取出生日期birthday = "{0}-{1}-{2}".format(self.birth_year, self.birth_month, self.birth_day)return birthdaydef get_sex(self):# 男生:1 女生:0num = int(self.id[16:17])if num % 2 == 0:return 0else:return 1def get_age(self):# 获取年龄now = (datetime.datetime.now() + datetime.timedelta(days=1))year = now.yearmonth = now.monthday = now.dayif year == self.birth_year:return 0else:if self.birth_month > month or (self.birth_month == month and self.birth_day > day):return year - self.birth_year - 1else:return year - self.birth_year

3. 主程序

if __name__ == '__main__':pic_path="id.png"code=identity_OCR(pic_path)time2 = time.time()print(u'总共耗时:' + str(time2 - time1) + 's')id = codebirthday = GetInformation(id).get_birthday()  # 1990-11-11age = GetInformation(id).get_age()  # 28sex = GetInformation(id).get_sex()  # 1print('nowtime:', datetime.datetime.now().date())print('birthday:', birthday)print('age:', age)print('sex:', sex)

利用python识别身份证号后获取年龄和性别信息相关推荐

  1. ## 根据身份证号自动生成年龄以及性别

    根据身份证号自动生成年龄以及性别 <div class="form-group"><label class="col-sm-3 control-labe ...

  2. 用python实现身份证号的解析(输出性别,生日,生肖,星座)

    用python实现身份证号的解析,输出性别,生日,生肖,星 实现功能: 1.解析生日 2.解析性别 3.解析所在省份 4.解析生肖,星座 代码如下: ID=input('请输入18位身份证号码:'); ...

  3. 利用python实现身份证号验证系统

    大家好哇,又是一个愉快的周末,今天本鸟给大家分享1个有趣的实战项目,用python制作"全国身份证号验证及查询系统",成品界面如下图: 本系统可以实现身份证号真伪验证,年龄.性别及 ...

  4. 使用 OpenCV 和 Python 识别信用卡号

    使用 OpenCV 和 Python 识别信用卡号 在之前的博文中,我们学习了如何安装 Tesseract 二进制文件并将其用于 OCR. 然后我们学习了如何使用基本的图像处理技术来清理图像以提高 T ...

  5. python识别图片文字_如何利用Python识别图片中的文字

    一.前言 不知道大家有没有遇到过这样的问题,就是在某个软件或者某个网页里面有一篇文章,你非常喜欢,但是不能复制.或者像百度文档一样,只能复制一部分,这个时候我们就会选择截图保存.但是当我们想用到里面的 ...

  6. python zxing 识别条码_详解利用python识别图片中的条码(pyzbar)及条码图片矫正和增强...

    前言 这周和大家分享如何用python识别图像里的条码.用到的库可以是zbar.希望西瓜6辛苦码的代码不要被盗了.(zxing的话,我一直没有装好,等装好之后再写一篇) 具体步骤 前期准备 用open ...

  7. python 检查身份证号的正确性

    python简单验证身份证号的正确性和年龄 我这里只写了长度和是不是数字或者数字加X的情况 还有身份证的年月日是否正确. 如果想要完整验证的还是需要正则表达式. import os import da ...

  8. Excel中如何用身份证号提取计算年龄?

    Excel中如何用身份证号提取计算年龄? 目录 Excel中如何用身份证号提取计算年龄? 1.在年龄D2单元格中输入公式[=DATEDIF(TEXT(MID(C2,7,8),"00-00-0 ...

  9. python判断真假身份证号

    python判断真假身份证号 ''' python判断真假身份证号 识别一串身份证是否是真实的身份证号码: 公民身份号码是特征组合码,共18位,由十七位数字本体码和一位数字校验码组成. 排列顺序从左至 ...

最新文章

  1. [JMX一步步来] 1、JMX的Hello World
  2. 64位开源处理器Rocket该人士介绍
  3. python制作缩略图
  4. 浏览器版本不支持页面示例 supper.html
  5. [LeetCode] Count Numbers with Unique Digits 计算各位不相同的数字个数
  6. nrm:安装与配置记录
  7. setsockopt函数功能介绍
  8. DeepMind为明年的AAAI,准备了一份各种DQN的混血
  9. Codeforces Round #518 (Div. 2): F. Knights(神题)
  10. Android 自定义带文字图片的view,宝马上线娱乐亚洲第一-宝马上线娱乐亚洲第一...
  11. 汉王OCR6.0软件使用分享
  12. python控制电机正反转_树莓派Python控制步进电机
  13. 计算机考研数学2019,2019计算机考研数学复习:最常遇到的10个问题
  14. 冒险岛 mysql 添加账号密码_Win7系统玩冒险岛079单机版输入账号密码后出现error38怎么办...
  15. 在Eclipse上搭建Android开发环境
  16. 优秀课程案例|如何用scratch画扇形统计图
  17. Centos 大于4TB 硬盘LVM 水平扩容
  18. 多线程下载神器IDM,永久使用
  19. 如何在2小时内用1块钱赚到100块钱?
  20. 深度学习100问之提高深度学习模型训练效果(调参经验)

热门文章

  1. spark整合hive
  2. aspose html转换pdf,aspose html转pdf java
  3. java 开发之商品规格属性(SKU)组合算法
  4. TypeError: FC() takes no arguments
  5. 软件测试岗位英文自我介绍,软件测试工程师自我介绍_工程师英文自我介绍范文...
  6. Android之手机号码格式的正则表达式
  7. 【音视频基础】视频基础理论
  8. 电脑端扫描二维码(java)
  9. iOS3DTouch功能实现
  10. SpringBoot项目实现短信发送接口开发