1. 前言
在AI人工智能的潮流下,出現(xiàn)了很多方便人們生活的產(chǎn)品:人臉識(shí)別技術(shù)-完成人臉開(kāi)鎖,人臉核身;車(chē)牌識(shí)別-完成停車(chē)場(chǎng)無(wú)人計(jì)費(fèi)系統(tǒng)設(shè)計(jì);自動(dòng)駕駛-輔助車(chē)主行車(chē),自動(dòng)泊車(chē)等等,還有很多相關(guān)的應(yīng)用。
這篇文章就是利用華為云提供的銀行卡信息識(shí)別接口來(lái)提取識(shí)別銀行卡詳細(xì)信息,這個(gè)接口是文字識(shí)別接口中的一個(gè),銀行卡信息識(shí)別主要是應(yīng)用在各種購(gòu)物app里綁卡、保險(xiǎn)在線(xiàn)理賠填卡號(hào)、社交軟件綁卡、證券軟件綁卡等等很多地方,以前都是人工輸入卡號(hào),非常不方便,有了AI識(shí)別功能,可以提前將銀行卡圖片保存在手機(jī)里,也可以選擇現(xiàn)場(chǎng)拍攝,這樣軟件通過(guò)圖片快速識(shí)別出當(dāng)前銀行卡的類(lèi)別、所屬銀行、卡號(hào)等信息完成自動(dòng)填充,極大的方便用戶(hù)體驗(yàn)。
2. 文字識(shí)別云服務(wù)
2.1 開(kāi)通文字識(shí)別服務(wù)功能
地址: https://console.huaweicloud.com/ocr/?region=cn-north-4&locale=zh-cn#/ocr/overview
文字識(shí)別服務(wù)接口支持API方式調(diào)用,支持按需計(jì)費(fèi),每個(gè)用戶(hù)每月有1000次的免費(fèi)調(diào)用額度,前期的體驗(yàn)調(diào)試比較方便。
接口的計(jì)費(fèi)使用說(shuō)明: https://support.huaweicloud.com/productdesc-ocr/ocr_01_0070.html
2.2 API接口使用介紹
幫助文檔地址: https://support.huaweicloud.com/api-ocr/ocr_03_0104.html
接口識(shí)別銀行卡上的關(guān)鍵文字信息后,是以json格式返回識(shí)別的結(jié)果,根據(jù)說(shuō)明解析就能拿到信息。
接口格式:
URL請(qǐng)求格式:POST https://{endpoint}/v2/{project_id}/ocr/bankcard
?
endpoint 指定承載REST服務(wù)端點(diǎn)的服務(wù)器域名或IP,不同服務(wù)不同區(qū)域的endpoint不同,可以從終端節(jié)點(diǎn)中獲取。
例如,OCR服務(wù)在"華北-北京四"區(qū)域的"endpoint"為"ocr.cn-north-4.myhuaweicloud.com"。
?
project_id是項(xiàng)目ID,可以從這里 https://support.huaweicloud.com/api-ocr/ocr_03_0130.html 獲取。
?
?
完整請(qǐng)求示例:
https://ocr.cn-north-4.myhuaweicloud.com/v2/0e5957be8a00f53c2fa7c0045e4d8fbf/ocr/bankcard
?
請(qǐng)求頭:
{
"X-Auth-Token": "******",
"Content-Type": "application/json;charset=UTF-8"
}
?
X-Auth-Token參考在這里獲取:https://support.huaweicloud.com/api-ocr/ocr_03_0005.html
?
請(qǐng)求體里包含了圖片的bash編碼數(shù)據(jù)
{
"image": ..............
}
?
?
識(shí)別后響應(yīng)的結(jié)果:
{
"result": {
"bank_name": "中國(guó)建設(shè)銀行",
"card_number": "6217003860002354304",
"issue_date": "",
"expiry_date": "09/22",
"type": "借記卡",
"confidence": {
"bank_name": 0.9608,
"card_number": 0.9793,
"issue_date": 0,
"expiry_date": 0.8646,
"type": 0
}
}
}
?
響應(yīng)結(jié)果里字段含義解釋?zhuān)? ?
bank_name 發(fā)卡行。
?
card_number 銀行卡號(hào)。
?
issue_date 有效期開(kāi)始日期。
?
expiry_date 有效期截止日期。
?
type 銀行卡類(lèi)別,如:借記卡,信用卡,準(zhǔn)貸記卡,預(yù)付費(fèi)卡。
2.3 在線(xiàn)調(diào)試
在線(xiàn)調(diào)試地址: https://apiexplorer.developer.huaweicloud.com/apiexplorer/debug?product=OCR&api=RecognizeBankcard
先通過(guò)調(diào)試接口體驗(yàn)之后,再編寫(xiě)代碼可以少走一些彎路,很多參數(shù)都比較清楚了。
將圖片的base64編碼貼到 image字段里,點(diǎn)擊調(diào)試即可查看結(jié)果。
3. 示例代碼
代碼采用QT編寫(xiě),主要是就是HTTP請(qǐng)求,獲取結(jié)果,解析結(jié)果,API接口不依賴(lài)語(yǔ)言,任何語(yǔ)言使用都是一樣的流程。
3.2 發(fā)起請(qǐng)求,獲取銀行卡信息
//獲取銀行卡信息
void Widget::getCardInfo(QString file)
{
function_select=1;
QString requestUrl;
QNetworkRequest request;
?
//存放圖片BASE64編碼
QString imgData;
?
//設(shè)置請(qǐng)求地址
QUrl url;
?
//人臉?biāo)阉髡?qǐng)求地址
requestUrl = QString("https://ocr.%1.myhuaweicloud.com/v2/%2/ocr/bankcard")
.arg(SERVER_ID)
.arg(PROJECT_ID);
?
//設(shè)置數(shù)據(jù)提交格式
request.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("application/json"));
?
//將圖片進(jìn)行Base64編碼
imgData = QString(toBase64(QImage(file))); //編碼后的圖片大小不超過(guò)2M
//設(shè)置token
request.setRawHeader("X-Auth-Token",Token);
?
//構(gòu)造請(qǐng)求
url.setUrl(requestUrl);
request.setUrl(url);
?
QString post_param=QString
("{"
""image": "%1""
"}").arg(imgData);
?
//發(fā)送請(qǐng)求
manager- >post(request, post_param.toUtf8());
}
3.3 獲取token
/*
功能: 獲取token
*/
void Widget::GetToken()
{
//表示獲取token
function_select=3;
?
QString requestUrl;
QNetworkRequest request;
?
//設(shè)置請(qǐng)求地址
QUrl url;
?
//獲取token請(qǐng)求地址
requestUrl = QString("https://iam.%1.myhuaweicloud.com/v3/auth/tokens")
.arg(SERVER_ID);
?
//自己創(chuàng)建的TCP服務(wù)器,測(cè)試用
//requestUrl="http://10.0.0.6:8080";
?
//設(shè)置數(shù)據(jù)提交格式
request.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("application/json;charset=UTF-8"));
?
//構(gòu)造請(qǐng)求
url.setUrl(requestUrl);
?
request.setUrl(url);
?
QString text =QString("{"auth":{"identity":{"methods":["password"],"password":"
"{"user":{"domain": {"
""name":"%1"},"name": "%2","password": "%3"}}},"
""scope":{"project":{"name":"%4"}}}}")
.arg(MAIN_USER)
.arg(IAM_USER)
.arg(IAM_PASSWORD)
.arg(SERVER_ID);
?
//發(fā)送請(qǐng)求
manager- >post(request, text.toUtf8());
}
3.4 解析結(jié)果
//解析反饋結(jié)果
void Widget::replyFinished(QNetworkReply *reply)
{
QString displayInfo="";
int statusCode = reply- >attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
?
//讀取所有數(shù)據(jù)
QByteArray replyData = reply- >readAll();
?
qDebug()< "狀態(tài)碼:"<
審核編輯:湯梓紅
-
AI
+關(guān)注
關(guān)注
87文章
30728瀏覽量
268873 -
人工智能
+關(guān)注
關(guān)注
1791文章
47183瀏覽量
238209 -
人臉識(shí)別
+關(guān)注
關(guān)注
76文章
4011瀏覽量
81854 -
文字識(shí)別
+關(guān)注
關(guān)注
0文章
16瀏覽量
8634 -
華為云
+關(guān)注
關(guān)注
3文章
2445瀏覽量
17406
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論