先说重点,你的App能识别下面这个二维码吗?
(说明: 由于简书的异常检查机制,包含某些二维码的文章会检测不通过,本文所有包含二维码的图片将以链接形式给出)
如果扫码功能基于ZXing
与ZBar
,而且没有自定义处理过数据,大概率是不行的。
这个时候,你可以试试google这个(基于机器学习的)库:
结果截图:
下面说一下我面临的问题与思考过程
今天接到一个优化扫码的任务,然后收到了下面的二维码(就是上面那个):
扫码比较差我是知道的,只是用了ZXing
这个库,在大部分情况下能扫出来,但是与超级App有着肉眼可见的差距(如微信、支付宝都成功识别了上面的二维码)。
跪在上面这张二维码上后,我不怀好意地测试了一些不以扫码为主要用户场景的应用,发现他们也都跪了。。。
网易云音乐(versionCode=8000041) - 未能识别
得到App(versionCode=20201231) - 未能识别
今日头条(versionCode=8090) - 只是偶尔可以成功。。。对不起宇宙厂,这只是巧合
最后,ZXing的官方App(versionCode=108)也失败了...
于是开始搜索一些解决方案,对于图像做一些中间的处理,处理后的数据ZXing
更容易识别。看到这里,没有马上动手,而是开始想另一个问题:
这样的问题,最应该谁来解决?
应用层的程序员真的要研究图像识别,二维码原理这些吗?
带着这些问题,我搜索了微信的解决方案,看到微信对整个扫码的流程都做了很多处理,而且这篇文章是2016年的,听说现在的微信扫码用到了机器学习的技术(后来一想,图像识别可能是最适合用机器学习的场景了)。另外,微信阿里的方案都是闭源的(当然,他们没有任何义务开源),腾讯云还有一个产品就叫智能扫码, 想着替公司剩下10万一个应用的授权费用,我继续了搜寻。。。
。。。很久(大概半个小时吧)之后,
我找到了文章开头提到的google的方案,作为机器学习的应用之一,ML Kit
项目中包含一个barcode-scanning
模块。项目还比较新,init
到现在也就半年多(如果有坑可别怪我,嘿嘿~),但理论上基于机器学习的图像识别技术已经非常成熟了。具体的用法可以参考Guideline和Sample, 如上文,结果是快速成功识别:
这可能是我第一次真真实实地意识到机器学习的力量,联想到韩寒的文章《我也曾对这种力量一无所知》,机器学习已经在很多方面展现出它的过人之处了,感谢Google,让我对机器学习一无所知的情况下也能分享收益,只是。。。
如果没有Google,只有国内的大厂(再次强调,它们没有义务开源),
机器学习的时代,会加速公平还是加速分化呢?
网友评论