99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁大數(shù)據(jù)時(shí)代12306驗(yàn)證碼為什么那么變態(tài)?都是這項(xiàng)深度學(xué)習(xí)應(yīng)用給逼的
12306驗(yàn)證碼為什么那么變態(tài)?都是這項(xiàng)深度學(xué)習(xí)應(yīng)用給逼的
2020-06-29
收藏

作者:莫凡

來源:大數(shù)據(jù)DT(ID:hzdashuju)

導(dǎo)讀:12306為什么要設(shè)置那么復(fù)雜的驗(yàn)證碼機(jī)制呢?就是因?yàn)镺CR。

今天聊OCR。

OCR是人工智能、機(jī)器學(xué)習(xí)特別是深度學(xué)習(xí),在圖像識(shí)別方向最為重要的應(yīng)用之一。OCR全稱Optical Chararcter Recogition,中文翻譯為光學(xué)字符識(shí)別,通常簡寫為OCR。

如果之前沒有接觸過OCR,光看名字上又光學(xué)又識(shí)別的,容易產(chǎn)生“聽起好像很高端很復(fù)雜”的距離感,但實(shí)際上,計(jì)算機(jī)科學(xué)的每一項(xiàng)技術(shù)都是為了機(jī)器具備多一項(xiàng)技能,而OCR要機(jī)器具備的,是一項(xiàng)對(duì)于我們?nèi)藖碚f屬于最最基本的技能——“看圖識(shí)字”。

我們可能對(duì)這個(gè)能力習(xí)以為常了,以至于不會(huì)覺得這算是一項(xiàng)能力,但仔細(xì)想一想就知道,看圖識(shí)字雖然最最基本,不過同樣也最最基礎(chǔ),很多工作都需要首先具備看圖識(shí)字這項(xiàng)技能才能開展。同樣的道理,OCR現(xiàn)在也已經(jīng)是我們?nèi)粘I钪袘?yīng)用最為廣泛的智能技術(shù)之一。

如果一時(shí)沒想起來,不妨從咱們中國人都很熟悉的春運(yùn)說起。12306大家應(yīng)該都知道,是訂火車票的官方網(wǎng)站,2015年12306出了一個(gè)轟動(dòng)全國的“大新聞”,12306改變“驗(yàn)證碼機(jī)制”了。買火車票之前,用戶先得要做幾道頗為棘手的智力題,譬如要求在幾張圖片中找出某位名人,據(jù)說有些用戶因?yàn)橹R(shí)面比較窄最后選擇放棄了購買火車票。

這事大家都知道,不過有沒有想過一個(gè)最基本的問題:12306為什么要改變驗(yàn)證碼機(jī)制呢?

就是因?yàn)镺CR。

▲網(wǎng)友惡搞的12306驗(yàn)證碼

驗(yàn)證碼之所以叫驗(yàn)證“碼”,是因?yàn)樽铋_始驗(yàn)證碼大都是一串保存在圖片里的四位數(shù)字。驗(yàn)證碼的作用自然是區(qū)別真人和機(jī)器,聽起來很厲害,其實(shí)原理異常簡單:機(jī)器擅長處理結(jié)構(gòu)化數(shù)據(jù),而對(duì)于圖像、文本和音頻這些生活中很常見但屬于非結(jié)構(gòu)化的數(shù)據(jù),對(duì)機(jī)器來說,用傳統(tǒng)的算法處理難度非常大。

為什么呢?不妨想象一個(gè)最最傳統(tǒng)的驗(yàn)證碼,白底黑字,上面一共四個(gè)阿拉伯?dāng)?shù)字,我們?nèi)俗匀豢匆谎劬椭朗悄乃膫€(gè)數(shù)字。但是在機(jī)器看起來,這張圖片是由一個(gè)挨一個(gè)的像素?cái)?shù)值構(gòu)成的數(shù)據(jù)矩陣,這就產(chǎn)生一個(gè)問題,我們?nèi)丝雌饋硎恰翱瞻住钡牡胤?,在機(jī)器看起來同樣也存在著數(shù)字,并沒有什么不同,自然無法區(qū)分到底上面寫了什么。

OCR的研究人員當(dāng)然也沒有偷懶,努力嘗試了很多辦法,有一種思路是提取圖片特征,也研究出兩種傳統(tǒng)的提取方法,分別是基于結(jié)構(gòu)形態(tài)的特征提取,和基于幾何分布的特征提取,也取得一些成果。

但總的來說,要求機(jī)器準(zhǔn)確識(shí)別圖片中的數(shù)字仍然很困難,只要圖片中存在一點(diǎn)點(diǎn)雜質(zhì)干擾,識(shí)別的正確率就大幅度下降,這就是為什么后來驗(yàn)證碼都會(huì)選擇采用一些隨機(jī)線條,對(duì)于OCR來說,這都是低成本高收益的防破解手段。但對(duì)人來說卻輕而易舉,只需要看一眼就能識(shí)別。

正是因?yàn)槿撕蜋C(jī)器在處理非結(jié)構(gòu)化數(shù)據(jù)存在能力鴻溝,在驗(yàn)證碼這里,就是人和機(jī)器在識(shí)別圖片中字符上的能力存在顯著差異,因此,只要簡單使用驗(yàn)證碼,就能相當(dāng)準(zhǔn)確地辨別正在輸入的究竟是人還是機(jī)器。

那為什么12306在2015年就非得換了很好用的驗(yàn)證碼機(jī)制呢?是因?yàn)榫驮?012年,發(fā)生了一件轟動(dòng)整個(gè)研究界的事件,這個(gè)事件影響深遠(yuǎn),推動(dòng)OCR技術(shù)發(fā)生飛躍,從此機(jī)器也能很輕易就準(zhǔn)確識(shí)別圖片上的數(shù)字了。

OCR并不是新出現(xiàn)的概念,起步非常早。根據(jù)《深度實(shí)踐OCR:基于深度學(xué)習(xí)的文字識(shí)別》一書介紹,早在1929年,德國科學(xué)家就已經(jīng)提出了OCR的想法,后續(xù)又有一些科學(xué)家加入進(jìn)行這方面研究,不過,直到計(jì)算機(jī)出現(xiàn)以后,想法才慢慢落地。

相比之下,中國對(duì)OCR的研究起步稍晚,起步于70年代,算起來也有近50年的歷史了。

但是,雖然早就開始了對(duì)OCR的研究,科學(xué)家們也從各個(gè)方面貢獻(xiàn)了很多頗有益處的奇思妙想,為后續(xù)研究奠定了堅(jiān)實(shí)基礎(chǔ),但總的來說,OCR技術(shù)的應(yīng)用發(fā)展遲緩,直到前些年仍然處于學(xué)術(shù)研究的領(lǐng)域。不過,每一項(xiàng)科研領(lǐng)域的僵局都最終會(huì)被一項(xiàng)劃時(shí)代的技術(shù)打破,打破OCR領(lǐng)域僵局的就是鼎鼎大名的深度學(xué)習(xí)技術(shù)。

2012年發(fā)生了什么事呢?發(fā)生了這么一件事,基于深度學(xué)習(xí)的卷積網(wǎng)絡(luò)模型AlexNet,在ImageNet圖像分類比賽中拔得頭籌。拔得頭籌這事本身不算什么,畢竟只要有比賽就一定會(huì)有人拔得頭籌,問題是在以往的比賽,不同模型之間的差距很小,第一名都是“險(xiǎn)勝”,第二名都是“惜敗”。

而到了2012年,AlexNet不但贏了第一名,而且在識(shí)別準(zhǔn)確率方面超過第二名10%,相當(dāng)于百米短跑我第一名沖線,而且我不但沖線了,我還在終點(diǎn)吃了頓飯,然后第二名才剛剛跑完全程。這種碾壓式的勝利讓業(yè)界對(duì)這場賽事的評(píng)論紛紛變成了B站的彈幕,概括來說就一句話:大人,時(shí)代變了。

當(dāng)然了,前面這段講得很戲劇化,也有很多人喜歡用“石破天驚”之類的詞來形容,但應(yīng)該說,深度學(xué)習(xí)并不是什么憑空出現(xiàn)的新技術(shù),它是由機(jī)器學(xué)習(xí)下面的神經(jīng)網(wǎng)絡(luò)模型發(fā)展而來的。

人工智能、機(jī)器學(xué)習(xí)深度學(xué)習(xí)三者之間千絲萬縷的關(guān)系,我們?cè)谇懊娴奈恼乱呀?jīng)進(jìn)行了細(xì)致的介紹,不再贅述,但深度學(xué)習(xí)的崛起,確實(shí)給OCR的應(yīng)用注入了全新的活力。

深度學(xué)習(xí)很快火遍全球,有意思的是,很多面向初學(xué)者的深度學(xué)習(xí)教程不約而同選擇了將使用深度學(xué)習(xí)模型識(shí)別MNIST手寫數(shù)據(jù)集作為深度學(xué)習(xí)領(lǐng)域的“Hello World”,從前極為困難的驗(yàn)證碼識(shí)別,在深度學(xué)習(xí)時(shí)代居然變成了初學(xué)者的第一堂功課,這是深度學(xué)習(xí)與OCR結(jié)合最為成功的案例。從此,OCR展翅飛出象牙塔,飛入尋常百姓家。

不過,我還是想特別說明一下,OCR是一項(xiàng)通用性非常強(qiáng)的技術(shù),OCR與深度學(xué)習(xí)的結(jié)合逼得12306改驗(yàn)證碼機(jī)制,這只是OCR技術(shù)的能力展示,OCR活躍的天地遠(yuǎn)比驗(yàn)證碼廣闊得多,我們的機(jī)器距離我們的生活差的最后一公里,可能就有賴OCR來打通。

你可能會(huì)問,機(jī)器和生活還差最后一公里,我怎么沒感覺到,這是什么意思?

回想一下,我們現(xiàn)在的生活其實(shí)是有兩套并行記錄體系,就拿最常見的去銀行辦理業(yè)務(wù)來說吧,我們先得用筆手工填寫一份紙質(zhì)的表格,上面包含了各項(xiàng)信息,這是一套記錄體系。然后我們給銀行柜臺(tái)的工作人員提交表格,工作人員會(huì)讓我們先等一會(huì),等什么呢,就是等工作人員通過電腦終端把信息轉(zhuǎn)錄到另一套記錄體系。

現(xiàn)代銀行基本都依靠各類信息系統(tǒng)進(jìn)行管理,但這些信息系統(tǒng)是不能直接讀取紙質(zhì)表格的信息,那怎么辦呢,只好通過人來轉(zhuǎn)錄,這個(gè)轉(zhuǎn)錄的過程免不了需要消耗人的時(shí)間和精力,增加了辦理業(yè)務(wù)的成本,甚至成為限制提升業(yè)務(wù)辦理效率的瓶頸之一。

兩套并行記錄體系對(duì)我們的影響當(dāng)然遠(yuǎn)不止于銀行,從更為宏觀的視角來看,消耗了人類社會(huì)大量的人力物力,以及對(duì)于人來說更為寶貴的時(shí)間。

你可能又要說了,這些都是窗口業(yè)務(wù),和日常生活關(guān)系并不緊密。其實(shí)不然,舉一個(gè)我們很熟悉例子,二維碼。

就拿春晚的觀眾互動(dòng)來說吧,過去主持人是說想要和春晚互動(dòng)的觀眾朋友,可以把信息發(fā)到屏幕下方公布的號(hào)碼。那么,觀眾如果真要互動(dòng),就必須得把在屏幕上看到的這串長長的數(shù)字逐個(gè)逐個(gè)敲進(jìn)手機(jī),光是想就覺得麻煩,再加上有時(shí)候看錯(cuò)或者敲錯(cuò),感覺就更費(fèi)勁了。

現(xiàn)在有了二維碼,主持人說想要和春晚互動(dòng)的觀眾朋友,掃描屏幕下方的二維碼就可以了,操作起來就簡單太多了。所以,現(xiàn)在滿大街都是二維碼,就是因?yàn)槎S碼更為便捷。

不過,二維碼只能解決兩套記錄體系并行問題的很小一部分,其它手段譬如內(nèi)置芯片也只能治標(biāo)不治本,畢竟我們?nèi)祟惿鐣?huì)幾千年來都以紙作為信息的記錄介質(zhì),已經(jīng)產(chǎn)生了太多不可能符合機(jī)器讀取要求的信息,要從根本上解決兩套記錄體系并行的問題,還是需要機(jī)器具備和人一樣的“看圖識(shí)字”的能力,也就是最終還得依靠OCR。

那么,現(xiàn)在的OCR技術(shù)發(fā)展到什么水平,又解決了什么實(shí)際問題了呢?

我認(rèn)為,一項(xiàng)應(yīng)用技術(shù)最重要的不是聽起來有多前沿多高端,而是能解決什么實(shí)實(shí)在在的問題。我們說OCR突飛猛進(jìn),是因?yàn)镺CR和深度學(xué)習(xí)結(jié)合以后,只需要簡單拍照,就可以直接從圖片中提取相應(yīng)的文字,在很多應(yīng)用場景已經(jīng)有點(diǎn)“掃碼即可”的意思了。

很多紙質(zhì)的表格,譬如前面說的銀行各類業(yè)務(wù)的表格,現(xiàn)在只需要簡單地拍照就可以一下完成信息錄入。以前我們拿到紙質(zhì)名片,還需要手工敲字記錄,現(xiàn)在很多APP都提供一項(xiàng)功能,只要對(duì)名片進(jìn)行拍照,就能自動(dòng)提取上面的文字。

同時(shí),OCR帶來的不僅僅是簡化錄入,很多傳統(tǒng)的軟件功能,也因?yàn)镺CR技術(shù)的發(fā)展,而帶來了全新的使用體驗(yàn)。就說我印象最深的翻譯軟件,翻譯軟件當(dāng)然不是什么新產(chǎn)品,大家應(yīng)該都用過。

但一直以來使用翻譯軟件都有一個(gè)限制,那就是不管軟件本身的翻譯能力有多強(qiáng),你得先錄入原文然后才能看到譯文,這有一個(gè)什么問題呢?有一些外語的原文我不知道怎么通過英文鍵盤輸入,譬如日文、德文、法文,相信不是專門學(xué)這些語言的朋友都有和我同樣的困擾。

現(xiàn)在有了OCR就方便多了,只需要直接拍照就能提取文字,不但解決了輸入問題,效率還要高得多,有些翻譯軟件干脆就在原圖上P上譯文,更加直接明了,讓我對(duì)翻軟件有一種耳目一新的感覺。

除了翻譯軟件,OCR給我們熟悉的產(chǎn)品帶來的改變還有很多,畢竟只要可以從圖片中準(zhǔn)確提取文字,就有太多的地方等待著我們發(fā)揮廣闊的想象力。譬如說,通過OCR技術(shù),即使是掃描生成的PDF也支持文本搜索了。

如果覺得這個(gè)例子太小,那就說搜索引擎,現(xiàn)在的搜索引擎還笨得很,輸入文字只能搜到文字,輸入圖片只能搜到圖片,文字和圖片是涇渭分明,如果你想用文字搜帶有這段文字的圖片呢?對(duì)不起不行。

不過使用了OCR,以后也可以以文搜圖了。譬如你翻老照片時(shí)找到一張你光著屁股坐在一塊寫著一段文字的石頭上,你想知道這張照片在哪拍的。可是現(xiàn)在你去搜這段文字,很可能要么就什么都找不到,要么就找到一大堆無關(guān)的內(nèi)容。

未來如果搜索引擎支持搜索圖中文字的功能,你就能馬上找到帶有這段文字的其它照片,沒準(zhǔn)其中就有你想要找的內(nèi)容。

OCR就介紹到這里,相信大家對(duì)于OCR是什么,能做什么,未來會(huì)有怎樣的發(fā)展已經(jīng)有了初步的了解。可是,OCR技術(shù)的原理是什么,傳統(tǒng)的做法是什么,現(xiàn)在和深度學(xué)習(xí)又是怎樣結(jié)合在一起?

我推薦大家閱讀前面提過的這本專門介紹這些問題的書,《深度實(shí)踐OCR:基于深度學(xué)習(xí)的文字識(shí)別》。這本書對(duì)OCR的介紹很全面,先從OCR的發(fā)展歷程和經(jīng)典的技術(shù)原理說起,然后介紹了深度學(xué)習(xí)的主要技術(shù),最后再仔細(xì)介紹OCR和深度學(xué)術(shù)如何結(jié)合,而且還對(duì)如何通過代碼實(shí)現(xiàn)進(jìn)行了詳細(xì)說明??赐赀@本書,對(duì)OCR的全貌、原理和應(yīng)用,應(yīng)該就能有比較清晰的了解。

數(shù)據(jù)分析咨詢請(qǐng)掃描二維碼

若不方便掃碼,搜微信號(hào):CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個(gè)參數(shù)驗(yàn)證碼對(duì)象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺(tái)檢測極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請(qǐng)參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時(shí)完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請(qǐng)輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請(qǐng)輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }