先說(shuō)重點(diǎn),你的App能識(shí)別下面這個(gè)二維碼嗎?
(說(shuō)明: 由于簡(jiǎn)書(shū)的異常檢查機(jī)制魏宽,包含某些二維碼的文章會(huì)檢測(cè)不通過(guò)腐泻,本文所有包含二維碼的圖片將以鏈接形式給出)
如果掃碼功能基于ZXing
與ZBar
,而且沒(méi)有自定義處理過(guò)數(shù)據(jù)湖员,大概率是不行的贫悄。
這個(gè)時(shí)候瑞驱,你可以試試google這個(gè)(基于機(jī)器學(xué)習(xí)的)庫(kù):
結(jié)果截圖:
下面說(shuō)一下我面臨的問(wèn)題與思考過(guò)程
今天接到一個(gè)優(yōu)化掃碼的任務(wù)娘摔,然后收到了下面的二維碼(就是上面那個(gè)):
掃碼比較差我是知道的,只是用了ZXing
這個(gè)庫(kù)唤反,在大部分情況下能掃出來(lái)凳寺,但是與超級(jí)App有著肉眼可見(jiàn)的差距(如微信、支付寶都成功識(shí)別了上面的二維碼)彤侍。
跪在上面這張二維碼上后肠缨,我不懷好意地測(cè)試了一些不以掃碼為主要用戶場(chǎng)景的應(yīng)用,發(fā)現(xiàn)他們也都跪了盏阶。晒奕。。
網(wǎng)易云音樂(lè)(versionCode=8000041) - 未能識(shí)別
得到App(versionCode=20201231) - 未能識(shí)別
今日頭條(versionCode=8090) - 只是偶爾可以成功名斟。脑慧。。對(duì)不起宇宙廠砰盐,這只是巧合
最后闷袒,ZXing的官方App(versionCode=108)也失敗了...
于是開(kāi)始搜索一些解決方案,對(duì)于圖像做一些中間的處理岩梳,處理后的數(shù)據(jù)ZXing
更容易識(shí)別囊骤。看到這里冀值,沒(méi)有馬上動(dòng)手也物,而是開(kāi)始想另一個(gè)問(wèn)題:
這樣的問(wèn)題,最應(yīng)該誰(shuí)來(lái)解決列疗?
應(yīng)用層的程序員真的要研究圖像識(shí)別滑蚯,二維碼原理這些嗎?
帶著這些問(wèn)題作彤,我搜索了微信的解決方案膘魄,看到微信對(duì)整個(gè)掃碼的流程都做了很多處理,而且這篇文章是2016年的竭讳,聽(tīng)說(shuō)現(xiàn)在的微信掃碼用到了機(jī)器學(xué)習(xí)的技術(shù)(后來(lái)一想创葡,圖像識(shí)別可能是最適合用機(jī)器學(xué)習(xí)的場(chǎng)景了)。另外绢慢,微信阿里的方案都是閉源的(當(dāng)然灿渴,他們沒(méi)有任何義務(wù)開(kāi)源)洛波,騰訊云還有一個(gè)產(chǎn)品就叫智能掃碼, 想著替公司剩下10萬(wàn)一個(gè)應(yīng)用的授權(quán)費(fèi)用骚露,我繼續(xù)了搜尋蹬挤。。棘幸。
焰扳。。误续。很久(大概半個(gè)小時(shí)吧)之后吨悍,
我找到了文章開(kāi)頭提到的google的方案,作為機(jī)器學(xué)習(xí)的應(yīng)用之一蹋嵌,ML Kit
項(xiàng)目中包含一個(gè)barcode-scanning
模塊育瓜。項(xiàng)目還比較新,init
到現(xiàn)在也就半年多(如果有坑可別怪我栽烂,嘿嘿~)躏仇,但理論上基于機(jī)器學(xué)習(xí)的圖像識(shí)別技術(shù)已經(jīng)非常成熟了。具體的用法可以參考Guideline和Sample, 如上文腺办,結(jié)果是快速成功識(shí)別:
這可能是我第一次真真實(shí)實(shí)地意識(shí)到機(jī)器學(xué)習(xí)的力量焰手,聯(lián)想到韓寒的文章《我也曾對(duì)這種力量一無(wú)所知》,機(jī)器學(xué)習(xí)已經(jīng)在很多方面展現(xiàn)出它的過(guò)人之處了菇晃,感謝Google册倒,讓我對(duì)機(jī)器學(xué)習(xí)一無(wú)所知的情況下也能分享收益,只是磺送。驻子。。
如果沒(méi)有Google估灿,只有國(guó)內(nèi)的大廠(再次強(qiáng)調(diào)崇呵,它們沒(méi)有義務(wù)開(kāi)源),
機(jī)器學(xué)習(xí)的時(shí)代,會(huì)加速公平還是加速分化呢馅袁?