1 前言

前面有两篇文章分别介绍过华为HMS MLKit的银行卡识别功能,第一篇是写的怎么简单集成银行卡识别,实现银行卡绑定功能,第二篇又给大家介绍了下银行卡识别和其它文本类识别服务之间的区别和关系,详情请戳往期链接:

超简单集成华为HMS MLKit 机器学习服务 银行卡识别SDK,一键实现银行卡绑定

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

一文搞懂华为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安装在了手机上,下面就开始我们的对比吧。

3 对比分析维度

作为一个开发者,想选用一款好用的SDK,主要会考虑这款SDK收不收费、识别准不准、快不快等,小编从开发者角度来列下希望对比的维度,对比将从如下几个维度展开。

开发者关注项 对比维度
收不收费? 使用成本和费用对比
都在哪些设备上支持? 设备类型覆盖度对比
集成SDK需要占用APP多大空间? SDK包大小对比
能识别哪些国家和类型的卡? 支持识别的卡类型对比
识别速度快不快? 识别速度对比
识别的准不准? 识别准确率对比
集成开发工作量大不大? 集成难易度对比

4 收不收费?–使用成本和费用对比

这个对比简单,直接列个表格出来吧。

SDK 使用成本和费用对比 说明
华为 HMS MLKit 银行卡识别服务 免费 资费情况可以看官方的服务介https://developer.huawei.com/consumer/cn/doc/development/HMS-Guides/ml-introduction-4
Card.io 免费 前面小编已经讲过,Card.io是github上开源的项目,因此使用是免费的

4.1 对比结论:平手,两者均为免费

5 都在哪些设备上支持?–设备类型覆盖度对比

SDK 设备类型覆盖度对比 说明
华为 HMS MLKit 银行卡识别服务 全机型覆盖 华为HMS MLKit所有端侧的能力都是全机型覆盖的,也就是说华为机型可以使用,非华为手机也可以用
Card.io 全机型覆盖 Card.io本身是开源项目,也是全机型覆盖。

5.1 对比结论:平手,均是全机型覆盖

6 集成SDK需要占用APP多大空间?–SDK包大小对比

card.io提供了x86_64、arm64-v8a、X86、armeabi-v7a、armeabi、mips等多种算法库,这个主要是用来针对不同的CPU做适配的,由于当前安卓手机基本都是arm架构的,而armeabi当前已经被淘汰,因此为了公平起见我们只计算arm64-v8a、armeabi-v7a两种架构的算法库,华为HMS ML Kit 银行卡识别服务同样支持提供这两种算法库,下面看下对比结果。

6.1 Cardio SDK包大小:

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” 像一个“葫芦”一样。

  1. 其他字体,常见的有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识别效果如何 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200807093747899.png) **Card.io:四张卡全部无法识别** 四张卡即使对准后,也无法检测成功,举例如下: ![请添加图片描述](https://img-blog.csdnimg.cn/20200807094022780.gif) **华为HMS ML Kit:全部可以正确识别** 四张卡均可正确识别卡号和卡类型,举例如下: ![请添加图片描述](https://img-blog.csdnimg.cn/20200807094023199.gif) ### 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 集成难易度:同样只需要两步即可完成代码开发

1.设置识别参数,调起界面

2.通过回调获取识别结果

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

资深工程师专业评测--安卓免费的银行卡识别SDK,华为 HMS MLKit 和Card IO哪个好?相关推荐

  1. 超简单集成华为HMS Core MLKit 机器学习服务银行卡识别SDK,一键实现银行卡绑定

    前言 小编前面几期文章分别给大家介绍了使用HMS ML Kit SDK实现微笑抓拍.证件照DIY.拍照翻译的功能开发(链接见文章末尾),本次小编给大家带来的是使用HMS 机器学习服务(ML Kit)银 ...

  2. 安卓开发实战,用华为HMS MLKit 图像分割 SDK快速开发一个证件照DIY小程序

    文章目录 引子 核心提示:此SDK免费,安卓全机型覆盖! 证件照DIY开发实战 1 开发准备 1.1 在项目级gradle里添加华为maven仓 1.2 在应用级的build.gradle里面加上SD ...

  3. 安卓开发实战,用华为HMS MLKit 图像分割 SDK开发一个证件照DIY小程序

    文章目录 引子 ==**核心提示:此SDK免费,安卓全机型覆盖!**== 证件照DIY开发实战 1 开发准备 1.1 在项目级gradle里添加华为maven仓 1.2 在应用级的build.grad ...

  4. OCR扫描识别录入之安卓Android行驶证驾驶证识别SDK

    现如今车辆走入了千家万户,已成为居民生活的必需品,而查驾照违章记录.缴纳违章罚款,也已经成了人们的生活常态了.而移动互联的发展,让这些以前需要跑银行.跑交警大队的事项,如今通过手机端就能解决了.但是手 ...

  5. 手机端银行卡识别SDK,支持Android、iOS系统

    在互联网和大数据时代,为了高效.快速的抢占新增客户市场,银行.保险.移动支付.财务管理等众多领域.行业均把为用户提供最贴心.高效的服务作为企业的业务重心. 目前,在众多需要录入银行卡信息才能办理的业务 ...

  6. 【下载】推荐一款免费的人脸识别SDK

    现已进入刷脸的时代,例如,人脸支付.人脸识别的门禁.人流监控等等.如何在Firefly开源板上快速搭建DEMO,并快速产品化?为了让更多产品可以用上人脸识别技术,Firefly推出了一款高性能人脸识别 ...

  7. 安卓java百度人脸识别SDK简单使用

    首先在百度智能云注册之后创建自己的应用.当前SDK版本4.11.1.具体注册和导入jar包可以参考其他教程. 由于涉及网络访问,请先申请网络访问权限. public class MainActivit ...

  8. 安卓开发实战,用HMS MLKit华为机器学习服务开发一个拍照翻译小程序

    文章目录 引子 想象中的旅游 实际中的旅游 太难了 拍照翻译帮你忙 文本识别 翻译 拍照翻译APP开发实战 1 开发准备 1.1 在项目级gradle里添加华为maven仓 1.2 在应用级的buil ...

  9. 9月27日云栖精选夜读:阿里云首推免费人脸识别SDK 让每个APP轻松拥有短视频AR特效...

    摘要: 早在今年五月,阿里云已经推出了短视频解决方案.近日,阿里云再次率先颠覆行业,在业内首推免费的人脸识别SDK,结合其原有的短视频能力,大大降低了人脸识别+AR特效+短视频的入行门槛. 早在今年五 ...

最新文章

  1. STM32 基础系列教程 33 - Lwip_tcp_client
  2. 使用Java调用以WSDL形式发布的web service
  3. 如何编写testbench的总结(非常实用的总结)
  4. C#操作SQLite数据库增、删、改、查 实例
  5. 在python中字符串可以使用什么来表示_Python 字符串定义
  6. notepad编译java_Notepad++直接编译运行java代码的具体步骤
  7. 怎么在activity里面操作listView的item里的组件的点击事件
  8. 折半查找(非递归与递归实现)
  9. BeginnersBook Java 集合教程
  10. 正确地实现以太币转账
  11. java 对象排重_现代化的 Java (八)——重说对象序列化
  12. Java抓取电脑屏幕
  13. 【编程题目】寻找丑数
  14. css基础知识汇总8
  15. Express框架学习笔记-模板引擎
  16. 拖放 Drag and drop
  17. NC21499-今天,你惹对象生气了吗(dfs)
  18. android使用百度地图SDK 去掉百度Logo的小技巧
  19. 三对角行列式计算(涉及等差数列的构造+一元二次方程两个解的关系)
  20. sanity测试_使用Sanity CLI可以做的5件事

热门文章

  1. 最全的BAT大厂面试题整理
  2. [MacOSX]_[LaunchDaemons]_[Mac OS X 安装Tomcat开机启动服务的方法之一]
  3. 给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数,使它们的和与 target 最接近。 /返回这三个数的和。
  4. c语言循环中怎样读取多行,c++循环读取多行文本文件
  5. Excel 两列合并为一列中间加空格
  6. ticktock卖给oracle,Intel拾起Tick-Tock战略:2024/2025年重返CPU巅峰
  7. python为啥爬取数据会有重复_使用python爬取B站千万级数据
  8. 项目经理的能力模型和能力提升的方法
  9. Oracle安装后检查内容,ORA-12541:TNS:no listener错误解决方法
  10. FlowJO X 流式补偿调整