本文介紹應用百度AI的文字識別功能對身份證進行識別,感興趣的朋友一起來看看效果吧,

??
一、安裝baidu-aip模塊
??
按win+R打開cmd,在里面輸入
pip3 install baidu-aip
若出現如下界面,即成功安裝了baidu-aip模塊:

如果想快速了解識別營業執照代碼原理,可以跳過第二部分,先看第三部分的內容,
??
??
二、獲取百度AI介面密鑰
??
在應用python識別身份證的程序中,有三行代碼使用了百度AI介面密鑰,故先闡述如何獲得該密鑰,首先,進入如下百度AI官方網站:
https://ai.baidu.com/tech/ocr
有百度賬戶的輸入賬戶密碼進行登錄,沒有的點擊注冊,按指示輸入相關資訊即可注冊登錄,

??
登錄后找到文字識別中的產品串列,下方有卡證文字識別內容,點擊了解詳情,
??
??
可以發現卡證文字識別中包含了我們常見的一些證件的識別,比如身份證、銀行卡、營業執照、戶口本、護照等,本文闡述營業執照的識別,感興趣的同學可以自行研究其它證件的識別,在卡證文字識別的詳情中可以發現如下產品串列:
??

??
找到身份證識別,點擊了解詳情,即可進入如下界面:
??

??
點擊立即使用,就會出現如下服務協議:
??

??
點擊我已同意百度AI開放平臺服務協議,就可以進入如下界面:
??

??
下滑后點擊卡證OCR,就可以發現身份證別功能,點擊開通按鈕,
??

??
可以進入如下篩選開通付費頁面:
??

??
在確認開通之前,要先進行實名驗證,按指示進行操作即可完成實名驗證,

??
接著可以勾選要開通的識別功能,具體如下:
??

??
然后點擊去支付,由于每天前多少次是免費的,且采取后付費模式,故不需提前付費,若開通成功,會出現如下界面:
??

??
開通成功后,點擊概覽中的創建應用,
??

??
填寫應用名稱(自己想一個貼合自己應用場景的名字即可)、選擇文字識別包名、選擇應用歸屬、填寫應用描述,點擊立即創建即可,
??

??
最后,點擊應用詳情,即可找到我們需要的介面密鑰(紅框對應的值),
??

??
??
三、呼叫百度介面識別身份證
??
安裝好baidu-aip模塊,獲取了百度AI介面密鑰后,即可呼叫百度介面識別身份證了,身份證識別每天有5百次的免費呼叫機會,首先來看下今天要識別的身份證,

??
這張身份證是在百度上下載的一張虛擬身份證,如有侵權,請聯系我洗掉,識別該身份證的具體python代碼如下:
import re
import os
import time
from aip import AipOcr
os.chdir(r'F:\公眾號\27.證件識別')
#設定證件存放的路徑
APP_ID = 'XXX'
API_KEY = 'XXXXXXXX'
SECRET_KEY = 'XXXXXXXXXXXX'
#百度賬號和密鑰,需替換成你的
picture = open('2_身份證_v3.jpg', 'rb')
img = picture.read()
#讀取圖片
idCardSide = 'front' #身份證正面
#idCardSide = 'back' #身份證反面
options = {}
options['detect_direction'] = 'true' #是否檢測影像朝向,默認不檢測
options['detect_risk'] = 'false' #是否開啟身份證風險型別
client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
text = client.idcard(img, idCardSide, options)
#識別圖片中的資訊
concat_text = []
if isinstance(text, dict):
words = text['words_result']
for k, v in words.items():
print(u'{k}:{v}'.format(k=k, v=v['words']))
tt = u'{k}:{v}'.format(k=k, v=v['words'])
concat_text.append(tt)
#把字典決議成我們熟悉的形式
注:其中os.chdir中的內容應該替換成你存盤圖片的地址,APP_ID、API_KEY、SECRET_KEY應該替換成第二章末尾你獲取的百度密鑰,
??
得到結果如下:

??
對比原始圖片可以發現,出生是直接從身份證號碼中截取的,住址的資訊可能由于反光沒有識別出來,結果為空,這里有個小插曲,我之前一直使用png格式的身份證圖片進行呼叫識別,但一直報如下錯誤:
ConnectionError: ('Connection aborted.', ConnectionResetError(10054, '遠程主機強迫關閉了一個現有的連接,', None, 10054, None))
??
后面調整為jpg圖片后,就沒有出現該問題了,所以建議在進行身份證識別時最好把圖片的格式設定為jpg,為進一步規范輸出成標準格式,通過如下代碼進行規范化:
import pandas as pd
date_concat_text = pd.DataFrame(concat_text)
date_concat_text.columns =['text']
df = date_concat_text["text"].str.split(':',expand=True)
date_concat_text['label'] = df.iloc[:,0]
date_concat_text['content'] = df.iloc[:,1]
date_concat_text.to_csv("id_card_to_text.csv")
??
得到結果如下:

??
至此,呼叫百度介面識別身份證已講解完畢,感興趣的朋友自己實作一遍吧,
??
參考文獻
https://www.pianshen.com/article/7641312664/
https://www.cnblogs.com/z-x-h/p/12116453.html
https://www.cnblogs.com/zh-1721342390/p/9318619.html
https://blog.csdn.net/zhyl4669/article/details/88947571
??
你可能感興趣:
用Python繪制皮卡丘
用Python繪制詞云圖
Python人臉識別—我的眼里只有你
Python畫好看的星空圖(唯美的背景)
【Python】情人節表白煙花(帶聲音和文字)
用Python中的py2neo庫操作neo4j,搭建關聯圖譜
Python浪漫表白原始碼合集(愛心、玫瑰花、照片墻、星空下的告白)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/374547.html
標籤:AI
上一篇:DeepLabV1簡析
