前面有两篇文章分别介绍过华为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效果如何,竞争力怎么样?小编本期文章就给你们作一个深度评测,看下效果怎么样?机器学习
就像手机评测同样,小编为了更好的体现评测效果,须要选一个竞争对手,好一较高下,咱们就选一个使用量比较多的github开源项目Card.io做对比,看下二者效果那个好。小编从github上下载了一份demo代码下来,经过编译生成了一个APK安装在了手机上,下面就开始咱们的对比吧。ide
做为一个开发者,想选用一款好用的SDK,主要会考虑这款SDK收不收费、识别准不许、快不快等,小编从开发者角度来列下但愿对比的维度,对比将从以下几个维度展开。学习
开发者关注项 | 对比维度 |
---|---|
收不收费? | 使用成本和费用对比 |
都在哪些设备上支持? | 设备类型覆盖度对比 |
集成SDK须要占用APP多大空间? | SDK包大小对比 |
能识别哪些国家和类型的卡? | 支持识别的卡类型对比 |
识别速度快不快? | 识别速度对比 |
识别的准不许? | 识别准确率对比 |
集成开发工做量大不大? | 集成难易度对比 |
这个对比简单,直接列个表格出来吧。 |
SDK | 使用成本和费用对比 | |
---|---|---|---|
华为 HMS MLKit 银行卡识别服务 | 免费 | 华为 HMS MLkit 全部端侧能力目前都是免费的 资费状况能够看官方的服务介绍:https://developer.huawei.com/consumer/cn/doc/development/HMS-Guides/ml-introduction-4 | |
Card.io | 免费 | 前面小编已经讲过,Card.io是github上开源的项目,所以使用是免费的 |
对比结论:平手,二者均为免费测试
SDK | 设备类型覆盖度对比 | |
---|---|---|
华为 HMS MLKit 银行卡识别服务 | 全机型覆盖 | 华为HMS MLKit全部端侧的能力都是全机型覆盖的,也就是说华为机型可使用,非华为手机也能够用 |
Card.io | 全机型覆盖 | Card.io自己是开源项目,也是全机型覆盖。 |
对比结论:平手,均是全机型覆盖字体
card.io提供了x86_6四、arm64-v8a、X8六、armeabi-v7a、armeabi、mips等多种算法库,这个主要是用来针对不一样的CPU作适配的,因为当前安卓手机基本都是arm架构的,而armeabi当前已经被淘汰,所以为了公平起见咱们只计算arm64-v8a、armeabi-v7a两种架构的算法库,华为HMS ML Kit 银行卡识别服务一样支持提供这两种算法库,下面看下对比结果。
此为整个sample APK大小,去除sample代码后的SDK部分大小约为6.1M。
经过分析sample APK大小,能够看到SDK包含了算法和资源两部分,能够看到SDK部分大小合计约3.1M。
对比总结以下: |
SDK | SDK包大小对比 |
---|---|---|
华为 HMS MLKit 银行卡识别服务 | 约3.1M | |
Card.io | 约6.1M |
国际上常见的银行卡有Visa、JCB、万事达、运通卡、中国银联等,咱们分别针对这些卡选一些样例出来,看两个SDK识别结果如何。
小编找了几张visa卡进行识别,看是否能够正确识别出发卡类型和卡号。
看来针对Visa卡,均可以正确的识别出卡类型和卡号。
因为手头没有真实的JCB卡,所以互联网上找了一些卡,测试多张,均未识别,有真实卡的小伙伴能够本身体验下,反馈下测试结果。
测试结果说明:以下截图中,银行卡外围的对准框所有变绿表示已经完成对准,但未返回识别结果。
注:因为没有真实卡,因此没有识别出发卡组织,有真实卡的小伙伴能够本身体验下,反馈下测试结果。
测试结果说明:以下截图中,银行卡外围的对准框所有变绿表示已经完成对准,但未返回识别结果。
手头没有真实运通卡,所以互联网上找了一些卡,测试多张,均未识别,有真实卡的小伙伴能够本身体验下,反馈下测试结果。
因为没有真实卡,因此没有识别出组织,有真实卡的小伙伴能够本身体验下,反馈下测试结果。
卡类型被错误的识别成了discover卡。
可以正确的识别卡号和卡类型。
SDK | Visa卡 | 万事达卡 | JCB卡 | 运通卡 | 银联卡 |
---|---|---|---|---|---|
华为 HMS MLKit 银行卡识别服务 | 可正确识别 | 可正确识别 | 可正确识别 | 可正确识别 | 可正确识别 |
Card.io | 可正确识别 | 可正确识别 | 未测试成功 | 未测试成功 | 可正确识别(卡类型识别错误) |
经过以上对比能够看到,华为HMS MLKit银行卡识别国际主流卡都可以识别,Card.io 对Visa、万事达等常见卡能够识别,但JCB卡、运通卡等未测试经过。
公平起见,此处咱们只选两个SDK均可以识别的卡进行测试。
Card.io前面须要有较长的校准时间,必需要等到卡彻底在框内(此时框会变成全绿色)才开始进行检测,因为校准很是严格,所以此处很是考验使用者的耐心,须要当心翼翼的彻底对准。但一旦彻底对准后,识别速度很是快,几乎是无时延,一对准即立马返回结果。
从下面动图能够看到,华为HMS 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时一启动即彻底对准了校准框,但这一般是难于实现的。
不一样的银行卡可能会对准确率有影响,有可能SDK对某一类银行卡识别特别好,某一类识别特别差,为了公平起见,咱们把银行卡作进一步的详细分类,而后在某一类内去测试准确率,了解机器学习的小伙伴可能清楚,常见的机器学习技术每每经过大量的样本数据集进行样本训练生成识别模型,进而能够对待识别的内容进行推理分析,银行卡识别也是采用相似方式,那银行卡的字体将是银行卡识别的一个重要影响因子。
所以咱们先把银行卡按照字体作个简单分类,银行卡的字体并无统一标准,但国际上常见的银行卡字体有7B-OCR、OCR-A
Farrington7B字体,又称7B-OCR字体,由加拿大条形码公司Barcodesoft创造的一种字体,该字体在国际上应用很是普遍,包括国内多种卡均采用此类字体
选了10个测试样本进行测试
Card.io:所有能够正确识别
但银联卡的卡组织会被识别成discover,这个问题在前面章节已经阐述过,再也不展开。
此外小编在作一些扩展测试时发现,虽然Card.io能够识别Farrington7B字体银行卡,但仅支持识别xxxx-xxxx-xxxx-xxxx这种每连续4个数字有空格的卡片,而不支持其它不带空格,以及诸如xxxxxx-xxxxxx-xxxxxx这种格式的银行卡,好比下方这张卡片,是没法识别的。
以下图所示:xxxx-xxxx-xxxx-xxxx格式银行卡绿框彻底对准,但没法返回结果。
华为HMS ML Kit:所有能够正确识别
HMS MLKit 一样能够所有识别。
小编手头没有真实的话,网上找了半天找了4张知足编码规则的卡。
Card.io:四张卡所有没法识别
不一一列出,选其中两个录屏供参考
华为HMS ML Kit:所有能够正确识别
不一一列出,选其中两个录屏供参考
小编选了以下几张银行卡作样张进行测试,看下两种SDK识别效果如何。
Card.io:四张卡所有没法识别
四张卡即便对准后,也没法检测成功,举例以下:
华为HMS ML Kit:所有能够正确识别
四张卡都可正确识别卡号和卡类型,举例以下:
相信经过以上对比结论,你们内心已经很清楚对比结果了,这里列个表格给你们总结下:
SDK | Farrington7B字体准确率 | OCR-A字体准确率 | 其它字体准确率 |
---|---|---|---|
Card.io | 100%(仅支持xxxx-xxxx-xxxx-xxxx格式的银行卡) | 0% | 0% |
华为 HMS MLKit 银行卡识别服务 | 100% | 100% | 100% |
[备注] 以上准确率数据仅表明本人收集的样本测试所得出来的结果,不表明官方准确率,数据仅供参考
小编分别参考两边的官网开发步骤,给你们总结下:
从上面的对比你们能够看到,两个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