1. 程式人生 > >快速高效 android, iOS銀行卡識別

快速高效 android, iOS銀行卡識別

一:簡介

快捷支付涉及到方方面面,同時安全問題既是使用者所關心的,也是製作者不容忽視的重要部分。

比如涉及到支付和金錢的app,商戶端app等等,都需要進行實名認證,實名認證可以通過銀行卡認證和身份證認證。

今天我就和大家介紹一下銀行卡識別功能,這個方法是通過影象識別,可以快速、高效的識別銀行卡資訊。

二:原理

經實踐發現,只要銀行卡處於攝像頭預覽圖層中並且銀行卡號與識別線重合,即不用完全對準銀行卡也可以讀取到銀行卡號。

與身份證識別不同的是,銀行卡識別主要識別銀行卡號,因此獲取到的影象主要是銀行卡號位置。

在獲取到銀行卡號之後,通過資訊對比獲取到銀行卡的開戶行。在銀行卡資訊頁面可以展示出銀行卡識別截圖、銀行卡開戶行、銀行卡號。

很多人對微信的掃描識別銀行卡(銀行卡識別)功能非常感興趣,非常想了解其中的原理。

其實這只是運用了移動端的OCR識別技術)。手機攝像頭掃描採集影象後,通過移動端OCR識別軟體對圖片程序處理,提取卡號的過程。

銀行卡識別

但肯定有想了解的更細的開發者。下面詳細介紹一下銀行卡識別技術原理,銀行卡號識別技術實現的主要步驟如下:

1.取圖到彩色銀行卡圖片:目前主要是採用視訊預覽方式,對視訊進行抽針,取一針清晰的彩色影象。也就是手機相機掃描介面在實時取圖,目前主要的是通過檢測邊框來判斷銀行卡是否已經放到指定框內,這樣保證能取到質量比較好的圖片。

2.影象預處理:這裡主要是去噪(包含灰度處理)和二值化,最終只留下黑色和白色。

3.卡號行定位:二值化完成後,需要定位到銀行卡號的行業為主。

4.卡號單字元切分:將銀行卡號單個數字進行切分(切分其實也是銀行卡識別技術中一大難點)

5.卡號字型檔比對識別:這一步只有是將切分完成後的單數字與字型檔中的數值模版進行對比,取置信度最高值。

6.輸出前校驗:銀行卡識別輸出前需要做校驗,主要是使用Luhn演算法進行校驗,校驗正確後進行輸出。(這裡詳細說下Luhn演算法:所有銀行發的銀行卡都是有校驗規則的,卡號最好一位是校驗碼。主要符合以下規則:

1)從卡號最後一位數字開始,逆向將奇數位(1、3、5等等)相加。

2)從卡號最後一位數字開始,逆向將偶數位數字,先乘以2(如果乘積為兩位數,則將其減去9),再求和。

3)將奇數位總和加上偶數位總和,結果應該可以被10整除。)

7:輸出:輸出銀行卡號字串。

整個銀行卡識別過程結束。雖然說起來感覺簡單,但是有很多細節處理方面還是需要很強的技術積累的,如果只是簡單做出一個SDK,識別效果肯定不好,這需要專業級的OCR技術才能做好。這就是為什麼這麼多APP都使用銀行卡識別的原因。