目前项目在做的一个身份证信息提取的api,目前的思路如下:
1.利用opencv过滤出身份证上的有用信息
(1)姓名 (2)性别 (3)民族 (4)住址 (5)身份证
2.通过opencv的方法定位有用的内容抠出来
3.利用深度学习的方法识别文字并提取出来整合。
目前先做第一步,身份证上有两种颜色的字,蓝色和黑色,有用的就只有黑色了,初步想法是遍历像素点只留下黑色的部分,实现代码如下:
from PIL import Image import matplotlib.pyplot as plt import numpy as np import cv2 gray = cv2.imread('C:/Users/sd/Desktop/img/7.jpg') gray = cv2.bilateralFilter(gray,9,50,50) for i in range(gray.shape[0]): for j in range(gray.shape[1]): b = int(gray[i,j,0]) g = int(gray[i,j,1]) r = int(gray[i,j,2]) if abs(b-r)<30 and abs(g-r)<30 and abs(b-g)<30 and b<125 and g<125 and r<125 : continue else: gray[i,j,0]=255 gray[i,j,1]=255 gray[i,j,2]=255 plt.imshow(gray) plt.show()
执行效果:
看起来勉勉强强。。。但是这玩意受光线影响太大了,只要照片拍得不太好就凉凉了,接下来再继续想优化的办法。。
此文待续。。。。。