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