当前位置: 首页 > 后端技术 > Python

自动化神器!Python批量读取身份证信息写入Excel

时间:2023-03-25 19:54:40 Python

今天分享一个实用技巧,用Python批量读取身份证信息写入Excel。以图片形式的身份证为例,我们使用百度文字识别OCR读取信息。百度接口提供了免费额度,基本够日常使用了。下面我们就来看看如何使用百度文字识别。SDK安装百度云SDK提供了对Python、Java等语言的支持。Python版SDK的安装非常简单,使用pipinstallbaidu-aip即可,支持Python2.7+&3.x版本。创建应用需要百度或百度云账号。注册登录地址为:https://login.bce.baidu.com/?redirect=http%3A%2F%2Fcloud.baidu.com%2Fcampaign%2Fcampus-2018%2Findex.html,登录后移动鼠标移至登录头像,在弹出的菜单中点击用户中心,如图:首次进入,需要选择相应的信息,如图:选择后,点击保存。然后将鼠标移动到左边>符号位置,然后选择人工智能,点击文字识别,如图:点击之后,会进入下图:现在,我们可以点击创建应用,然后进入如下图所示:从上图我们可以看出,百度文字识别OCR可以识别很多类型的信息,也就是说不仅仅是身份证,如果你有其他信息识别需求,它可以也可以通过它快速实现。这里我们填写应用名称和应用描述,填写完成后立即点击创建。创建完成后,返回应用列表,如下图:我们需要用到AppID&APIKey&SecretKey这三个值,记录下来。代码实现代码实现很简单,几行Python代码就可以搞定,如下图:fromaipimportAipOcrAPP_ID='yourownAPP_ID'API_KEY='yourownAPI_KEY'SECRET_KEY='yourownSECRET_KEY'#创建客户端对象client=AipOcr(APP_ID,API_KEY,SECRET_KEY)#打开并读取文件内容fp=open("idcard.jpg","rb").read()#res=client.basicGeneral(fp)#Generalres=client.basicAccurate(fp)#高精度从上面的代码可以看出,识别函数分为普通和高精度两种模式。为了有更高的识别率,我们这里使用高精度模式。以下面我在网上找到的三张假身份证为例:因为身份证图片有多张,所以我们需要写一个方法来遍历它们。代码实现如下:deffindAllFile(base):forroot,ds,fsinos.walk(base):forfinfs:yieldbase+f通过识别函数得到的原始身份证信息格式为如下:{'words_result':[{'words':'姓名韦小宝'},{'words':'性别男汉族'},{'words':'1654年12月20日出生'},{'words':'地址北京市东城区景山前大街4号'},{'words':'故宫尊室'},{'words':'公民身份证号码11204416541220243X'}],'log_id':1411522933129289151,'words_result_num':6}文档信息的写入使用Pandas实现。这里我们还需要对获取到的原始证书信息进行预处理,写入到Excel中。我们将证书的名称和地址分别存储在数组中。处理代码实现如下:fortexinres["words_result"]:row=tex["words"]if"name"inrow:names.append(row[2:])elif"gender"inrow:genders.append(row[2:3])nations.append(row[5:])elif"Birth"inrow:births.append(row[2:])elif"Address"inrow:addr+=row[2:]elif"公民身份证号"inrow:ids.append(row[7:])else:addr+=row后可以很方便的直接将信息写入Excel,写入代码实现如下:df=pd.DataFrame({"Name":姓名,"Gender":性别,"ethnicity":nations,"birth":出生时间,"address":地址,"身份证号码":ids})df.to_excel('idcards.xlsx',index=False)看写入效果:至此,我们就实现了身份证信息的批量读写功能。源码在公众号Python小二回复身份证领取后台。