Python中AI圖像識別實現(xiàn)身份證識別
圖像識別說白了就是把一張照片上面的文字進行提取,提供工作效率
需求分析
身份證識別主要是把一張身份證照片上面的文字信息進行提取,不用再使用人工去手動抄寫了,下面給大家說的這個身份識別主要是使用python+flask+華為云OCR進行實現(xiàn)的。
步驟
- 申請華為云OCR接口
- 獲取token
- 調(diào)用身份證識別接口
- 提取身份證信息
申請華為云OCR接口
圖像識別主要使用的就是華為云OCR平臺申請的接口,申請地址為:“https://www.huaweicloud.com”。訪問申請的地址后點擊菜單欄中的“控制臺”,點擊后會進入登錄頁面。
登錄成功后進入控制臺,依次單擊“服務列表”-“人工智能”-“文字識別OCR”
進入后點擊身份證識別后面的“開通服務”即可,(這里需要主要的是免費開通的身份證識別服務僅有1000次的免費調(diào)用次數(shù),超過次數(shù)將會收費,建議購買套餐包,購買可以找我,我可以給優(yōu)惠哦)
獲取token
獲取token值時你需要知道你的以下信息:
- IAM用戶所屬賬號名
- IAM用戶名
- IAM用戶的登錄密碼
- IAM用戶所屬賬號的項目名稱
首先就是獲取IAM用戶所屬賬號名,IAM用戶所屬賬號名為你登陸的那個賬號
獲取IAM用戶名,選擇右上角“用戶名”-點擊“統(tǒng)一身份認證”
里面的用戶即為IAM用戶名
獲取IAM用戶所屬賬號的項目名稱,點擊“項目”
里面的項目很多,你只需要記錄你開啟OCR身份證識別區(qū)域的項目名稱ID就可以了,比如我選擇的北京四所以我的項目名稱就是:“cn-north-4”
知道了這些信息之后,后面就是如何通過這些信息去獲取token了,下面我就直接上代碼了哦
import requests # 下面url為華為云獲取token的接口,這個接口基本一致,需要注意的是“iam.cn-north-4.myhuaweicloud.com”這個需要根據(jù)具體需求進行修改,不同區(qū)域項目不同 url = "https://iam.cn-north-4.myhuaweicloud.com/v3/auth/tokens" # 頭部信息 headers = {'Content-Type': 'application/json'} # json內(nèi)容,需要上傳進行做驗證 payload = { "auth": { "identity": { "methods": [ "password" ], "password": { "user": { # name值為你的IAM賬號名 "name": "XXX", # password值為你的IAM密碼 "password": "XXX", "domain": { # name值為你的主賬號的賬號名 "name": "XXX" } } } }, "scope": { "project": { # name值為你的項目ID "name": "cn-north-4" } } } } # 使用POST上傳頭部內(nèi)容和body內(nèi)容 response = requests.post(url, headers=headers, json=payload) # 獲取token值 token = response.headers['X-Subject-Token'] # 打印token值 print(token)
打印出來的值是類似于下面這種的字符串
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UiOiJvcF9nYXRlZF9jaWUiLCJpZCI6IjAifSx7Im5hbWUiOiJvcF9nYXRlZF9zZnN0dXJibyIsImlkIjoiMCJ9LHsibmFtZSI6Im9wX2dhdGVkX3Zwbl92Z3dfaW50bCIsImlkIjoiMCJ9LHsibmFtZSI6Im9wX2dhdGVkX2h2X3ZlbmRvciIsImlkIjoiMCJ9LHsibmFtZSI6Im9wX2dhdGVkX2FfY24tbm9ydGgtNGUiLCJpZCI6IjAifSx7Im5hbWUiOiJvcF9nYXRlZF9hX2NuLW5vcnRoLTRkIiwiaWQiOiIwIn0seyJuYW1lIjoib3BfZ2F0ZWRfZWNzX2dwdV9nNnYiLCJpZCI6IjAifSx7Im5hbWUiOiJvcF9nYXRlZF9JRUMiLCJpZCI6IjAifSx7Im5hbWUiOiJvcF9nYXRlZF9kYXl1X2RsbV9jbHVzdGVyIiwiaWQiOiIwIn0seyJuYW1lIjoib3BfZ2F0ZWRfaW50bF9jb25maWd1cmF0aW9uIiwiaWQiOiIwIn0seyJuYW1lIjoib3BfZ2F0ZWRfY2NlX21jcF90aGFpIiwiaWQiOiIwIn0seyJuYW1lIjoib3BfZ2F0ZW456Rfc2VydmljZXN0YWdlX21ncl9kdG0iLCJpZCI6IjAifSx7Im5hbWUiOiJvcF9nYXRlZF9hX2NuLW5vcnRoLTRmIiwiaWQiOiIwIn0seyJuYW1lIjoib3BfZ2F0ZWRfdWdvX3B1YmxpY3Rlc3QiLCJpZCI6IjAifSx7Im5hbWUiOiJvcF9nYXRlZF9tdGQiLCJpZCI6IjAifSx7Im5hbWUiOiJvcF9nYXRlZF9lY3NfZ3B1X2c1ciIsImlkIjoiMCJ9LHsibmFtZSI6Im9wX2dhdGVkX3drc19rcCIsImlkIjoiMCJ9LHsibmFtZSI6Im9wX2dhdGVkX2NjaV9rdW5wZW5nIiwiaWQiOiIwIn0seyJuYW1lIjoib3BfZ2F0ZWRfcmlfZHdzIiwiaWQiOiIwIn0seyJuYW1lIjoib3BfZ2F0ZWRfdnBjX2Zsb3dfbG9nIiwiaWQiOiIwIn0seyJuYW1lIjoib3BfZ2F0ZWRfYXRjIiwiaWQiOiIwIn0seyJuYW1lIjoib3BfZ2F0ZWRfYWFkX2JldGFfaWRjIiwiaWQiOiIwIn0seyJuY456W1lIjoib3Bf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-ZIS2UdDK-q7gBsR3mT2LRqjQ+J6vpcCzAe6v71IHAf77lgE+vwg7f6qOfhYjRNB9kSC2L1YxJ1eS9j5pzuqlnK+9BOv2U3BIaKsP9yNiP-luS78LzwuEG2rD9OInMst7bCr7HeWT2bZ8gCT4567BvsONvGqVvr3AA==
調(diào)用身份證識別接口
下面就是調(diào)用識別接口,調(diào)用這個接口需要了解以下信息
- URL
- Header參數(shù)
- Body參數(shù)
首先是URL
POST https://{endpoint}/v2/{project_id}/ocr/id-card
參數(shù) | 說明 |
---|---|
endpoint | 項目接口域名,這里還是需要確定開通服務的區(qū)域,每個區(qū)域不同的域名 |
project_id | 項目ID,不出意外的話就是你上面獲取token的項目ID |
請求參數(shù)
請求Header參數(shù)
參數(shù) | 說明 |
---|---|
X-Auth-Token | 用戶Token,就是上面獲取到的token值 |
Content-Type | 發(fā)送的實體的MIME類型,參數(shù)值為“application/json” |
請求Body參數(shù)
參數(shù) | 說明 |
---|---|
image | 圖像數(shù)據(jù),base64編碼,要求base64編碼后大小不超過10MB。圖片最小邊不小于15px,最長邊不超過8000px。支持JPEG、JPG、PNG、BMP、TIFF格式。 |
url | 圖片的url路徑 |
side | front:身份證人像面,back:身份證國徽面 |
了解了上面的一系列信息之后,后面就是如何寫代碼了,下面就是直接代碼
import requests import base64 # url值 url = https://{endpoint}/v2/{project_id}/ocr/id-card # 上面獲取到的token值 token = "" # 設置頭部信息 headers = {'Content-Type': 'application/json', 'X-Auth-Token': token} # 圖片路徑 imagepath = r'./static/XXX.jpg' # 設置圖片 with open(imagepath, "rb") as bin_data: image_data = bin_data.read() # 使用圖片的base64編碼 image_base64 = base64.b64encode(image_data).decode("utf-8") # url與image參數(shù)二選一 payload = {"image": image_base64} # 上傳參數(shù) response = requests.post(url, headers=headers, json=payload) # 打印識別的信息 response = response.text print(response)
最后識別出來的結(jié)果類似于下面的信息:
{ "result": { "name": "XXX", "sex": "男", "ethnicity": "漢", "birth": "XXX", "address": "XXX", "number": "XXX" } }
如果想獲取其中的某一個值的話需要先轉(zhuǎn)換為字典,通過字典再進行單一讀取
import json # 轉(zhuǎn)換為字典 test = json.loads(response) # 從字典中獲取相應的值 username = test['result']['name']
到這里就已經(jīng)完成了這個項目
總結(jié)
上面已經(jīng)簡單說明了如何調(diào)用相應的接口去識別身份證了,下面我把源碼給到大家吧,大家可以作為參考哦,下面是使用python+flask+redis+華為云OCR實現(xiàn)的
import json from flask import Flask, render_template import requests from flask_redis import FlaskRedis import base64 app = Flask(__name__) # 設置redis連接地址 REDIS_URL = 'redis://127.0.0.1:6379/0' # 實例化redis rd = FlaskRedis(app, decode_responses=True) @app.route('/') def hello_world(): # 獲取redis緩存中token token = rd.get('token') # 判斷redis中是否有token值,有則直接使用,沒有則獲取token值并寫入redis中 if token is None: url = "https://iam.cn-north-4.myhuaweicloud.com/v3/auth/tokens" headers = {'Content-Type': 'application/json'} payload = { "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "name": "XXX", "password": "XXX", "domain": { "name": "XXX" } } } }, "scope": { "project": { "name": "cn-north-4" } } } } response = requests.post(url, headers=headers, json=payload) requst = response.ok # 判斷是否獲取token值成功 if not requst: error = "獲取token失敗" return render_template('test.html', db=error) # 從返回值中獲取token值 token = response.headers['X-Subject-Token'] # 在redis添加token值,下次不再調(diào)用,并設置緩存時間為24小時 relue = rd.set('token', token, ex=60 * 1440) # 判斷是否再redis中添加token值成功 if relue != 1: error = "寫入錯誤" return render_template('test.html', db=error) url = "https://ocr.cn-north-4.myhuaweicloud.com/v2/cn-north-4/ocr/id-card" headers = {'Content-Type': 'application/json', 'X-Auth-Token': token} imagepath = r'./static/XXX.jpg' with open(imagepath, "rb") as bin_data: image_data = bin_data.read() image_base64 = base64.b64encode(image_data).decode("utf-8") # 使用圖片的base64編碼 payload = {"image": image_base64} # url與image參數(shù)二選一 response = requests.post(url, headers=headers, json=payload) # 判斷是否識別成功 if not response.ok: error = "識別失敗,請聯(lián)系管理員" return render_template('test.html', db=error) response = response.text test = json.loads(response) username = test['result']['name'] return render_template('test.html', db=username) if __name__ == '__main__': app.run()
到此這篇關(guān)于Python中AI圖像識別實現(xiàn)身份證識別的文章就介紹到這了,更多相關(guān)Python AI圖像識別 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python?matplotlib實戰(zhàn)之散點圖繪制
散點圖,又名點圖、散布圖、X-Y圖,是將所有的數(shù)據(jù)以點的形式展現(xiàn)在平面直角坐標系上的統(tǒng)計圖表,本文主要為大家介紹了如何使用Matplotlib繪制散點圖,需要的可以參考下2023-08-08基于PyTorch實現(xiàn)一個簡單的CNN圖像分類器
本文記錄了一個簡單的基于pytorch的圖像多分類器模型構(gòu)造過程,參考自Pytorch官方文檔、磐創(chuàng)團隊的《PyTorch官方教程中文版》以及余霆嵩的《PyTorch 模型訓練實用教程》。從加載數(shù)據(jù)集開始,包括了模型設計、訓練、測試等過程。2021-05-05python3基于OpenCV實現(xiàn)證件照背景替換
這篇文章主要為大家詳細介紹了python3基于OpenCV實現(xiàn)證件照背景替換,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-07-07Python中常見的數(shù)據(jù)類型小結(jié)
這篇文章主要對Python中常見的數(shù)據(jù)類型進行了總結(jié)歸納,很有參考借鑒價值,需要的朋友可以參考下2015-08-08Python使用matplotlib和pandas實現(xiàn)的畫圖操作【經(jīng)典示例】
這篇文章主要介紹了Python使用matplotlib和pandas實現(xiàn)的畫圖操作,結(jié)合實例形式分析了Python基于matplotlib和pandas的數(shù)值運算與圖形顯示操作相關(guān)實現(xiàn)技巧,并對部分代碼的圖形顯示進行了顯示效果測試,需要的朋友可以參考下2018-06-06python中實現(xiàn)將多個print輸出合成一個數(shù)組
下面小編就為大家分享一篇python中實現(xiàn)將多個print輸出合成一個數(shù)組,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-04-04Python獲取網(wǎng)頁數(shù)據(jù)詳解流程
讀萬卷書不如行萬里路,只學書上的理論是遠遠不夠的,只有在實戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用Python來獲取網(wǎng)頁的數(shù)據(jù),主要應用了Requests庫,大家可以在過程中查缺補漏,提升水平2021-10-10