【Android Tips】小厂的扫码还能怎么做?

先说重点,你的App能识别下面这个二维码吗?

二维码链接

(说明: 由于的异常检查机制,包含某些二维码的文章会检测不通过,本文所有包含二维码的图片将以链接形式给出)

如果扫码功能基于ZXingZBar,而且没有自定义处理过数据,大概率是不行的。
这个时候,你可以试试google这个(基于机器学习的)库:

  • Scan Barcodes with ML Kit on Android
  • Sample: ML Kit Vision Showcase App with Material Design()

结果截图:

扫码结果


下面说一下我面临的问题与思考过程

今天接到一个优化扫码的任务,然后收到了下面的二维码(就是上面那个):

二维码链接

扫码比较差我是知道的,只是用了ZXing这个库,在大部分情况下能扫出来,但是与超级App有着肉眼可见的差距(如微信、支付宝都成功识别了上面的二维码)。

跪在上面这张二维码上后,我不怀好意地测试了一些不以扫码为主要用户场景的应用,发现他们也都跪了。。。

锤子的相机-没有识别到二维码

网易云音乐(versionCode=8000041) - 未能识别

得到App(versionCode=20201231) - 未能识别

今日头条(versionCode=8090) - 只是偶尔可以成功。。。对不起宇宙厂,这只是巧合

最后,ZXing的官方App(versionCode=108)也失败了...

于是开始搜索一些解决方案,对于图像做一些中间的处理,处理后的数据ZXing更容易识别。看到这里,没有马上动手,而是开始想另一个问题:

这样的问题,最应该谁来解决?
应用层的程序员真的要研究图像识别,二维码原理这些吗?

带着这些问题,我搜索了微信的解决方案,看到微信对整个扫码的流程都做了很多处理,而且这篇文章是2016年的,听说现在的微信扫码用到了机器学习的技术(后来一想,图像识别可能是最适合用机器学习的场景了)。另外,微信阿里的方案都是闭源的(当然,他们没有任何义务开源),腾讯云还有一个产品就叫智能扫码, 想着替公司剩下10万一个应用的授权费用,我继续了搜寻。。。

。。。很久(大概半个小时吧)之后,

我找到了文章开头提到的google的方案,作为机器学习的应用之一,ML Kit项目中包含一个barcode-scanning模块。项目还比较新,init到现在也就半年多(如果有坑可别怪我,嘿嘿~),但理论上基于机器学习的图像识别技术已经非常成熟了。具体的用法可以参考Guideline和Sample, 如上文,结果是快速成功识别:

ML Kit识别结果

这可能是我第一次真真实实地意识到机器学习的力量,联想到韩寒的文章《我也曾对这种力量一无所知》,机器学习已经在很多方面展现出它的过人之处了,感谢Google,让我对机器学习一无所知的情况下也能分享收益,只是。。。

如果没有Google,只有国内的大厂(再次强调,它们没有义务开源),
机器学习的时代,会加速公平还是加速分化呢?

你可能感兴趣的:(【Android Tips】小厂的扫码还能怎么做?)