深度評測--安卓免費的銀行卡識別SDK,華爲 HMS MLKit 和Card IO哪一個好?

1 前言

  前面有兩篇文章分別介紹過華爲HMS MLKit的銀行卡識別功能,第一篇是寫的怎麼簡單集成銀行卡識別,實現銀行卡綁定功能,第二篇又給你們介紹了下銀行卡識別和其它文本類識別服務之間的區別和關係,詳情請戳往期連接:java

  超簡單集成華爲HMS MLKit 機器學習服務 銀行卡識別SDK,一鍵實現銀行卡綁定git

  https://developer.huawei.com/consumer/cn/forum/topicview?tid=0201217390745110144&fid=18github

  一文搞懂華爲HMS ML Kit文本識別、銀行卡識別、通用卡證識別、身份證識別算法

  https://developer.huawei.com/consumer/cn/forum/topicview?tid=0201242744680220246&fid=18架構

  經過以上兩篇文章,小夥伴們想必已經知道銀行卡識別的使用場景,以及要怎麼用華爲的銀行卡識別SDK了,那華爲提供的SDK效果如何,競爭力怎麼樣?小編本期文章就給你們作一個深度評測,看下效果怎麼樣?機器學習


2 選一個競品--Card IO

  就像手機評測同樣,小編爲了更好的體現評測效果,須要選一個競爭對手,好一較高下,咱們就選一個使用量比較多的github開源項目Card.io做對比,看下二者效果那個好。小編從github上下載了一份demo代碼下來,經過編譯生成了一個APK安裝在了手機上,下面就開始咱們的對比吧。ide


3 對比分析維度

  做爲一個開發者,想選用一款好用的SDK,主要會考慮這款SDK收不收費、識別準不許、快不快等,小編從開發者角度來列下但願對比的維度,對比將從以下幾個維度展開。學習

開發者關注項 對比維度
收不收費? 使用成本和費用對比
都在哪些設備上支持? 設備類型覆蓋度對比
集成SDK須要佔用APP多大空間? SDK包大小對比
能識別哪些國家和類型的卡? 支持識別的卡類型對比
識別速度快不快? 識別速度對比
識別的準不許? 識別準確率對比
集成開發工做量大不大? 集成難易度對比

4 收不收費?--使用成本和費用對比

  這個對比簡單,直接列個表格出來吧。
SDK 使用成本和費用對比
華爲 HMS MLKit 銀行卡識別服務 免費 華爲 HMS MLkit 全部端側能力目前都是免費的 資費狀況能夠看官方的服務介紹:https://developer.huawei.com/consumer/cn/doc/development/HMS-Guides/ml-introduction-4
Card.io 免費 前面小編已經講過,Card.io是github上開源的項目,所以使用是免費的

對比結論:平手,二者均爲免費測試


5 都在哪些設備上支持?--設備類型覆蓋度對比

SDK 設備類型覆蓋度對比
華爲 HMS MLKit 銀行卡識別服務 全機型覆蓋 華爲HMS MLKit全部端側的能力都是全機型覆蓋的,也就是說華爲機型可使用,非華爲手機也能夠用
Card.io 全機型覆蓋 Card.io自己是開源項目,也是全機型覆蓋。

對比結論:平手,均是全機型覆蓋字體


6 集成SDK須要佔用APP多大空間?--SDK包大小對比

  card.io提供了x86_6四、arm64-v8a、X8六、armeabi-v7a、armeabi、mips等多種算法庫,這個主要是用來針對不一樣的CPU作適配的,因爲當前安卓手機基本都是arm架構的,而armeabi當前已經被淘汰,所以爲了公平起見咱們只計算arm64-v8a、armeabi-v7a兩種架構的算法庫,華爲HMS ML Kit 銀行卡識別服務一樣支持提供這兩種算法庫,下面看下對比結果。

6.1 Cardio SDK包大小:

在這裏插入圖片描述
  此爲整個sample APK大小,去除sample代碼後的SDK部分大小約爲6.1M。

6.2 華爲 MLKit 銀行卡識別 SDK包大小 :

在這裏插入圖片描述
  經過分析sample APK大小,能夠看到SDK包含了算法和資源兩部分,能夠看到SDK部分大小合計約3.1M。

6.3 對比結論:顯然,華爲HMS MLKit更勝一籌

  對比總結以下:
SDK SDK包大小對比
華爲 HMS MLKit 銀行卡識別服務 約3.1M
Card.io 約6.1M

7 能識別哪些國家和類型的卡?--支持識別的卡類型對比

7.1 常見卡類型分析

  國際上常見的銀行卡有Visa、JCB、萬事達、運通卡、中國銀聯等,咱們分別針對這些卡選一些樣例出來,看兩個SDK識別結果如何。

7.2 Visa卡識別對比

  小編找了幾張visa卡進行識別,看是否能夠正確識別出發卡類型和卡號。

7.2.1 Card.io:能夠正確識別Visa卡

在這裏插入圖片描述

7.2.2 華爲 HMS MLKit:能夠正確識別Visa卡

在這裏插入圖片描述
  看來針對Visa卡,均可以正確的識別出卡類型和卡號。

7.3 萬事達卡識別對比

7.3.1 Card.io:能夠正確識別

在這裏插入圖片描述

7.3.2 華爲 HMS MLKit:能夠正確識別

在這裏插入圖片描述

7.4 JCB卡識別對比

7.4.1 Card.io:識別測試未成功

  因爲手頭沒有真實的JCB卡,所以互聯網上找了一些卡,測試多張,均未識別,有真實卡的小夥伴能夠本身體驗下,反饋下測試結果。

  測試結果說明:以下截圖中,銀行卡外圍的對準框所有變綠表示已經完成對準,但未返回識別結果。

在這裏插入圖片描述

7.4.2 華爲 HMS MLKit:能夠正確識別

在這裏插入圖片描述

  注:因爲沒有真實卡,因此沒有識別出發卡組織,有真實卡的小夥伴能夠本身體驗下,反饋下測試結果。

7.5 運通卡對比

7.5.1 Card.io:識別測試未成功

  測試結果說明:以下截圖中,銀行卡外圍的對準框所有變綠表示已經完成對準,但未返回識別結果。
在這裏插入圖片描述
  手頭沒有真實運通卡,所以互聯網上找了一些卡,測試多張,均未識別,有真實卡的小夥伴能夠本身體驗下,反饋下測試結果。

7.5.2 華爲 HMS MLKit:能夠正確識別

在這裏插入圖片描述
  因爲沒有真實卡,因此沒有識別出組織,有真實卡的小夥伴能夠本身體驗下,反饋下測試結果。

7.6 銀聯卡對比

7.6.1 Card.io:能夠正確識別,但髮卡行識別錯誤

在這裏插入圖片描述
  卡類型被錯誤的識別成了discover卡。

7.6.2 華爲HMS ML Kit: 能夠正確識別

在這裏插入圖片描述
  可以正確的識別卡號和卡類型。

7.7 對比結論:華爲HMS MLKit從測試狀況上來看要好於Card.io

SDK Visa卡 萬事達卡 JCB卡 運通卡 銀聯卡
華爲 HMS MLKit 銀行卡識別服務 可正確識別 可正確識別 可正確識別 可正確識別 可正確識別
Card.io 可正確識別 可正確識別 未測試成功 未測試成功 可正確識別(卡類型識別錯誤)

  經過以上對比能夠看到,華爲HMS MLKit銀行卡識別國際主流卡都可以識別,Card.io 對Visa、萬事達等常見卡能夠識別,但JCB卡、運通卡等未測試經過。


8 識別的快不快?--識別速度對比

  公平起見,此處咱們只選兩個SDK均可以識別的卡進行測試。

8.1 Card.io:校準慢但識別快

  Card.io前面須要有較長的校準時間,必需要等到卡徹底在框內(此時框會變成全綠色)纔開始進行檢測,因爲校準很是嚴格,所以此處很是考驗使用者的耐心,須要當心翼翼的徹底對準。但一旦徹底對準後,識別速度很是快,幾乎是無時延,一對準即立馬返回結果。

在這裏插入圖片描述

8.2 華爲HMS ML Kit: 可快速校準並識別

  從下面動圖能夠看到,華爲HMS MLKit銀行卡識別不須要徹底對準,只必需要大概在檢測框內便可啓動識別,總體端到端算下來要比Card.IO快。

在這裏插入圖片描述

8.3 對比結論:各有千秋,一般狀況下端到端識別速度MLKit要好於Card.io

  Card.io雖然識別速度較快,但須要依賴校準框徹底校準,而校準框徹底校準有必定難度,每每須要較長時間。華爲HMS ML Kit則無需徹底對準校準框。

SDK 識別速度 說明
Card.io 識別速度很是快,但須要依賴校準框徹底校準 校準框徹底對準有必定難度,這個操做每每須要較長時間,導正整個識別過程時間很是長
華爲 HMS MLKit 銀行卡識別服務 一般總體速度快於card.io 無需徹底對準校準框,在對準校準框時會同時啓動識別,總體速度一般好於Card.io

  所以對比結論以下:在徹底對準校準框狀況下,Card.io識別速度好於ML Kit。但若是從端到端(從開始啓動到最終返回結果)來看識別速度的話,則HMS ML Kit大機率會快於Card.io,除非使用Card.io時一啓動即徹底對準了校準框,但這一般是難於實現的。


9 識別的準不許?--識別準確率對比

  不一樣的銀行卡可能會對準確率有影響,有可能SDK對某一類銀行卡識別特別好,某一類識別特別差,爲了公平起見,咱們把銀行卡作進一步的詳細分類,而後在某一類內去測試準確率,瞭解機器學習的小夥伴可能清楚,常見的機器學習技術每每經過大量的樣本數據集進行樣本訓練生成識別模型,進而能夠對待識別的內容進行推理分析,銀行卡識別也是採用相似方式,那銀行卡的字體將是銀行卡識別的一個重要影響因子。

  所以咱們先把銀行卡按照字體作個簡單分類,銀行卡的字體並無統一標準,但國際上常見的銀行卡字體有7B-OCR、OCR-A

  1. Farrington7B字體,又稱7B-OCR字體,由加拿大條形碼公司Barcodesoft創造的一種字體,該字體在國際上應用很是普遍,包括國內多種卡均採用此類字體

    在這裏插入圖片描述

  2. OCR-A字體,由美國American Type Founders公司創造的一種字體,後來被世界普遍用於支票編碼、銀行卡號等領域,能夠看到其數字「8」 像一個「葫蘆」同樣。
    在這裏插入圖片描述
  3. 其餘字體,常見的有Arial字體:
    在這裏插入圖片描述
      Times字體:
    在這裏插入圖片描述
      下面咱們針對不一樣字體維度展開測試:

9.1 Farrington7B字體準確率測試

  選了10個測試樣本進行測試
在這裏插入圖片描述
在這裏插入圖片描述
Card.io:所有能夠正確識別

  但銀聯卡的卡組織會被識別成discover,這個問題在前面章節已經闡述過,再也不展開。

  此外小編在作一些擴展測試時發現,雖然Card.io能夠識別Farrington7B字體銀行卡,但僅支持識別xxxx-xxxx-xxxx-xxxx這種每連續4個數字有空格的卡片,而不支持其它不帶空格,以及諸如xxxxxx-xxxxxx-xxxxxx這種格式的銀行卡,好比下方這張卡片,是沒法識別的。

  以下圖所示:xxxx-xxxx-xxxx-xxxx格式銀行卡綠框徹底對準,但沒法返回結果。

在這裏插入圖片描述
華爲HMS ML Kit:所有能夠正確識別

  HMS MLKit 一樣能夠所有識別。

9.2 OCR-A字體準確率測試

  小編手頭沒有真實的話,網上找了半天找了4張知足編碼規則的卡。

在這裏插入圖片描述

Card.io:四張卡所有沒法識別

  不一一列出,選其中兩個錄屏供參考

在這裏插入圖片描述
在這裏插入圖片描述

華爲HMS ML Kit:所有能夠正確識別

  不一一列出,選其中兩個錄屏供參考

在這裏插入圖片描述
在這裏插入圖片描述

9.3 其它字體銀行卡

  小編選了以下幾張銀行卡作樣張進行測試,看下兩種SDK識別效果如何。

在這裏插入圖片描述
Card.io:四張卡所有沒法識別

  四張卡即便對準後,也沒法檢測成功,舉例以下:

在這裏插入圖片描述
華爲HMS ML Kit:所有能夠正確識別

  四張卡都可正確識別卡號和卡類型,舉例以下:
在這裏插入圖片描述

9.4 對比結論:從本次測試結果上來看,華爲HMS MLKit 在OCR-A以及其它字體識別率要遠超Card.io

  相信經過以上對比結論,你們內心已經很清楚對比結果了,這裏列個表格給你們總結下:

SDK Farrington7B字體準確率 OCR-A字體準確率 其它字體準確率
Card.io 100%(僅支持xxxx-xxxx-xxxx-xxxx格式的銀行卡) 0% 0%
華爲 HMS MLKit 銀行卡識別服務 100% 100% 100%

[備註] 以上準確率數據僅表明本人收集的樣本測試所得出來的結果,不表明官方準確率,數據僅供參考


10 集成工做量大不大?--集成難易度對比

  小編分別參考兩邊的官網開發步驟,給你們總結下:

10.1 Card.io 集成難易度: 只須要兩步便可完成代碼開發

  1. 設置識別參數,調起界面
    在這裏插入圖片描述
  2. 重寫onActivityResult()方法獲取結果
    在這裏插入圖片描述

    10.2 華爲HMS MLKit 集成難易度:一樣只須要兩步便可完成代碼開發

  3. 設置識別參數,調起界面
    在這裏插入圖片描述
  4. 經過回調獲取識別結果
    在這裏插入圖片描述
    在這裏插入圖片描述

10.3 對比結論:平手,二者均很是容易集成

  從上面的對比你們能夠看到,兩個SDK集成都很是簡單,只須要幾行代碼就能夠完成


最後總結

  整個評測到這裏基本就結束了,經過以上評測,如今能夠回答文章開始的問題了,咱們直接上對比表格對以上對比結論作個總結:

開發者關注項 對比維度 結論
收不收費? 使用成本和費用對比 平手
都在哪些設備上支持? 設備類型覆蓋度對比 平手
集成SDK須要佔用APP多大空間? SDK包大小對比 測試華爲約3.1M, card.io約6.1,華爲佔優
都能識別哪些國家和類型的卡? 支持識別的卡類型對比 測試華爲可識別五種,card.io三種,華爲佔優
識別的快不快? 識別速度對比 各有千秋,一般端到端識別速度華爲要好於Card.io
識別的準不許? 識別準確率對比 華爲總體要好於Card.io,測試樣本中Card.io對除Farrington 7B之外字體銀行卡未能很好識別
好很差開發? 集成難易度對比 平手

結論分析
  爲何會出現這樣的對比結果,小編我的認爲這是由於Card.io主要瞄準的是國際通用卡,如Visa、Master卡,但對各個國家的本地卡支持欠佳,另外僅支持很是主流的銀行卡號字體及格式,對部分卡號字體和格式支持欠佳,若是想更加普遍的識別各類銀行卡的話,那麼相信華爲HMS MLKit銀行卡識別SDK是個不錯的選擇。

HMS MLKit Demo和Github地址:
  HMS MLKit 的Demo下載和github地址請參考:
  https://developer.huawei.com/consumer/cn/doc/development/HMS-Examples/ml-samplecode-4

  https://github.com/HMS-Core/hms-ml-demo

  銀行卡識別demo代碼路徑:MLKit-Sample\module-text\src\main\java\com\mlkit\sample\activity\BankCardRecognitionActivity.java


往期連接:接入卡片類快服務你必須知道的事情
內容來源:https://developer.huawei.com/consumer/cn/forum/topicview?tid=0201272756582550132&fid=18原做者:AI_talking

相關文章
相關標籤/搜索