python读取身份证照片信息_使用Python提取身份证上的信息2
python读取⾝份证照⽚信息_使⽤Python提取⾝份证上的信息2这⾥利⽤pytesseract,opencv3等库提取⾝份证上某些有⽤的信息(不带照⽚的那⼀⾯)。如果图像的分辨率不是很⾼,⾸先需要对图像通过插值的⽅法,提⾼图像的分辨率,这样才能较好的识别⾝份证的信息。因为不能像带⼈脸的那⼀⾯,通过⼈脸特征将⾝份证转正,所以需要图⽚⾥的⾝份证⽅置的较正。
%matplotlib inline
%config InlineBackend.figure_format = 'retina'
靖王妃import pytesseract
import cv2
import matplotlib.pyplot as plt
import matplotlib.patches as mpatches
from skimage import io
import numpy as np
import pandas as pd
import re一顿是多少升
先⾯试读取图像,然后放⼤图像:
image = io.imread("⾝份证背⾯3.jpg")
print(image.shape)
high,width = image.shape[0:2]
## 图像放⼤两倍 ,4x4像素邻域的双三次插值
鲁迅先生珍惜时间
image = size(image,(width*4,high*4), interpolation=cv2.INTER_CUBIC)
plt.imshow(image)
plt.axis("off")
plt.show()
print(image.shape)
(403, 640, 3)
(1612, 2560, 3)
接下来使⽤pytesseract库中的⽅法,直接识别图像中的中⽂:
## 可以通过pytesseract库来查看检测效果,但是结果并不是很好
text = pytesseract.image_to_string(image,lang='chi_sim')
print(text)
重阳节感恩老人诗句签发机关 建瓯市公安局
有效期隔 2012.06.25-2022.O6.25
可以发现,已经可以识别⼀些信息了,但是并没有完全识别所有中⽂。
下⾯对图像进⾏⼆值化处理,在识别中⽂:
## 对图像进⾏处理,转化为灰度图像=>⼆值图像
imagegray = cv2.cvtColor(image,cv2.COLOR_RGB2GRAY)
retval, imagebin = cv2.threshold(imagegray, 120, 255, cv2.THRESH_OTSU + cv2.THRESH_BINARY) plt.imshow(imagebin,ay)
plt.axis("off")
plt.show()
## 再次通过pytesseract库来查看检测效果,但是结果并不是很好
text = pytesseract.image_to_string(imagebin,lang='chi_sim')
print(text)
`『熹熹′"′'「〕′…′'_'′′`…′_′′`~…`〈_" 中华⼈民共和国
居民⾝份证
签发机关 建瓯市公安局
有效期隔 2012-06.25-2022.06.25
可以发现有⽤的信息均识别正确。
接下来提取有⽤的内容:
## 提取识别的内容
textlist = text.split("\n")
textdf = pd.DataFrame({"text":textlist})
吉克隽逸中国好声音textdf["textlen"] = apply(len)
## 去除长度《=1的⾏
textdf = len > 1].reset_index(drop = True)
textdf
text textlen
0`『熹熹′"′'「〕′…′'_'′′`…′_′′`~…`〈_" 中华⼈民共和国 39
1居民⾝份证 5
2签发机关 建瓯市公安局 11
3有效期隔 2012-06.25-2022.06.25 26
进⼀步处理:
## 提取相应的信息
print("第⼀⾏:",[0][-7:])
print("=====================")
print("第⼆⾏:",[1][-5:])
print("=====================")
print("签发机关:",[2].split(" ")[-1])
print("=====================")文科热门专业排名
## 提取时间信息
timetext = [3]
timetext = re.findall("\d+",timetext)
timetext
print("有效开始时间:",".".join(timetext[0:3]))
print("=====================")
print("失效时间:",".".join(timetext[3:]))
print("=====================")
第⼀⾏: 中华⼈民共和国
=====================
第⼆⾏: 居民⾝份证
=====================
签发机关: 建瓯市公安局
=====================
有效开始时间: 2012.06.25
=====================
失效时间: 2022.06.25
=====================
因为这⼀⾯的⽂字⼤⼩差距悬殊,⽽且缺少定位图像倾斜的因素,所以对照⽚的要求更⾼⼀点。相应的上⾯的⽅法还需要进⼀步的优化来提⾼适⽤性。⾝份证照⽚来⾃⽹络图。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。