資訊
  • 視頻
  • 焦點(diǎn)
  • 娛樂(lè)
  • 文化
  • 財(cái)經(jīng)
  • 掃描文字識(shí)別拼音,學(xué)拼音最簡(jiǎn)單最快的方法

    本文的作者在教育行業(yè)搞OCR識(shí)別工作,教育領(lǐng)域的OCR比較復(fù)雜,除了文字外,還有圖片、表格、公式等等。即便同樣是公式,在數(shù)學(xué)里要斜體,在化學(xué)里要正體,這都是行業(yè)規(guī)范。

    本文的讀者是誰(shuí)呢?讀者是……最終誰(shuí)會(huì)讀,我不知道。但是,我定位以下人群為本文的讀者,換句話說(shuō),我就是寫給他們看的。

    很多企業(yè)領(lǐng)導(dǎo),看到OCR屬于人工智能范疇,很恐懼。哎呀,我們公司的員工,連正常的業(yè)務(wù)邏輯都寫不好,交付個(gè)系統(tǒng)一堆Bug。

    現(xiàn)在需要使用OCR功能了,怎么辦?買一個(gè)吧。不買難道自己做嗎?那樣,我還要建一個(gè)人工智能團(tuán)隊(duì)。

    這個(gè)情況,還真得具體分析。

    我了解到有一家公司,他們的OCR識(shí)別需求非常簡(jiǎn)單:僅僅識(shí)別0到9,共10個(gè)數(shù)字。而且,數(shù)據(jù)來(lái)源單一,保證透明背景純色線條字跡。這種待識(shí)別的樣本,非常規(guī)范

    其實(shí),隨便找一本圖像識(shí)別的書,翻開(kāi)第一章,幾乎都是在講如何識(shí)別這類數(shù)字,這個(gè)例題已經(jīng)20多年了。這在程序員中,被稱為是Hello World級(jí)別的程序,是入門的第一課,沒(méi)有難度。

    甚至谷歌公司覺(jué)得這太簡(jiǎn)單了,以至于人工智能受到了侮辱。于是,他們率先把入門的例子,由10個(gè)數(shù)字,改成了識(shí)別“輪船”、“汽車”、“青蛙”、“小鳥”等10類物體。

    但是,這家公司依然以30萬(wàn)一年的價(jià)格,購(gòu)買了一個(gè)識(shí)別數(shù)字的OCR服務(wù)。

    這就像是買了輛大巴車,當(dāng)電動(dòng)車來(lái)用,一個(gè)人開(kāi)著它走街串巷,維護(hù)成本高,利用率也低。

    因此,我感覺(jué),領(lǐng)導(dǎo)不需要了解技術(shù)細(xì)節(jié),但是需要大體了解它的成熟度和行業(yè)狀態(tài)

    本文會(huì)講述做OCR的流程,以及每一步需要的資源支持,以便領(lǐng)導(dǎo)們可以盤點(diǎn)資源,量入為出。

    產(chǎn)品經(jīng)理經(jīng)常被開(kāi)發(fā)人員懟。一方面是開(kāi)發(fā)人員性格過(guò)于剛直。另外就是產(chǎn)品經(jīng)理,有時(shí)候確實(shí)不了解實(shí)現(xiàn)過(guò)程就亂提需求:比如,App主題色要隨手機(jī)殼的顏色來(lái)變化。

    但是,我也見(jiàn)過(guò)那種開(kāi)發(fā)出身的產(chǎn)品經(jīng)理,他不僅懂產(chǎn)品,也懂技術(shù)。

    他經(jīng)常把開(kāi)發(fā)人員懟得一愣一愣的:怎么實(shí)現(xiàn)不了?這邊有數(shù)據(jù),那邊也有,做一個(gè)關(guān)聯(lián),查詢時(shí)別不加限制,那樣太慢!

    開(kāi)發(fā)人員則紅著臉,遇到新需求時(shí),先自己百度一下,做完了功課再去找這個(gè)產(chǎn)品經(jīng)理辯論。最后,開(kāi)發(fā)人員沮喪著回來(lái),百度也不靠譜啊,原來(lái)是有實(shí)現(xiàn)思路的!

    因此,我感覺(jué)產(chǎn)品經(jīng)理需要了解技術(shù)的實(shí)現(xiàn)過(guò)程,以便在關(guān)鍵節(jié)點(diǎn)上,可以提出產(chǎn)品側(cè)的更優(yōu)方案

    本文會(huì)講述實(shí)現(xiàn)OCR需要幾個(gè)步驟,以及每個(gè)步驟的關(guān)鍵點(diǎn)是什么。我覺(jué)得產(chǎn)品經(jīng)理有必要看。

    有人覺(jué)得OCR好神奇,怎么做到的?我不明白,誰(shuí)來(lái)給我解釋解釋。這是對(duì)此感興趣的求知者。

    也有人,非常喜歡圖像識(shí)別,自己想學(xué),但是經(jīng)常會(huì)被拒之門外。這是懷有滿腔熱情和憤懣的技術(shù)小白。

    網(wǎng)絡(luò)上,確實(shí)有很多大牛,博士碩士研究生,但是因?yàn)樗麄兊乃胶芨撸覀兒茈y與他們對(duì)話。我曾經(jīng)被鄙視:一個(gè)傅里葉變換,一句話就可以解釋清楚,你卻寫了幾千字,說(shuō)了一堆廢話。

    于是,我認(rèn)識(shí)到“同等對(duì)話”很重要。如果我想要實(shí)現(xiàn)小康家庭的生活,那我去找全球商業(yè)大亨請(qǐng)教,可能起不到什么效果,反而去跟樓下五金店的老板拉拉家常,能有所收益。

    現(xiàn)在,我弄明白了OCR識(shí)別。同時(shí),我也想起之前的迷茫和無(wú)助。現(xiàn)在,或許還存在很多曾經(jīng)的我,我要自己幫一下自己。

    本文會(huì)講整個(gè)OCR的完整流程,以及其中的難點(diǎn)和解決方案(思路以及術(shù)語(yǔ)關(guān)鍵詞)。如果你是程序員的話,我在專業(yè)版里,還有代碼詳解。

    OCR這個(gè)行業(yè),如果無(wú)法入門,掉頭就走,一旦入門,愛(ài)不釋手。

    好了,前言我說(shuō)完了,也算是導(dǎo)讀,如果覺(jué)得本文適合你,可以繼續(xù)往下看了。

    OCR是一個(gè)簡(jiǎn)稱,全稱叫Optical Character Recognition,中文是:光學(xué)字符識(shí)別。

    它的本質(zhì)是:把圖像形狀轉(zhuǎn)變?yōu)槲谋咀址?/p>

    下面說(shuō)一下,我在教育行業(yè)是如何應(yīng)用OCR的。

    信息化教學(xué)越來(lái)越普及,很多教學(xué)素材都要搬到信息化平臺(tái),比如試卷試題。那么,紙質(zhì)的試卷要電子化,就會(huì)用到OCR識(shí)別技術(shù)。

    掃描文字識(shí)別拼音,學(xué)拼音最簡(jiǎn)單最快的方法

    這么一張圖,需要識(shí)別成結(jié)構(gòu)化(圖片、文字、公式、表格可獨(dú)立提取出來(lái))的數(shù)據(jù),識(shí)別結(jié)果如下所示:

    而且,識(shí)別結(jié)果還可以下載成word文檔,便于老師校對(duì)并進(jìn)行二次編輯

    這就是OCR的一個(gè)典型應(yīng)用。

    除此之外,我們常見(jiàn)的各種證件識(shí)別、名片識(shí)別、車牌識(shí)別等,也涉及OCR技術(shù)。

    我在入門OCR的時(shí)候,做過(guò)一個(gè)小功能,我把它作為一次學(xué)習(xí)總結(jié)和畢業(yè)小考,效果如下:

    上面這個(gè)例子,在github上已經(jīng)完全開(kāi)源。此例子基本囊括了OCR的全過(guò)程,下面我就以它作為樣板,來(lái)講一講OCR的全流程。

    OCR技術(shù)的實(shí)現(xiàn),總體上可以分為五步:預(yù)處理圖片切割字符識(shí)別字符恢復(fù)版面后處理文字

    中間的三步是核心,頭尾兩步最難。

    我們買回來(lái)水果,需要洗一下再吃。如果運(yùn)氣不好的話,還需要挖掉蟲眼和糙皮才能吃。我們把吃水果前的這些步驟,叫做CSG(吃水果)的預(yù)處理。

    在進(jìn)行OCR之前,也需要對(duì)圖片進(jìn)行預(yù)處理。因?yàn)椋话愦R(shí)別的圖片千奇百怪,來(lái)源復(fù)雜:有拍照、有掃描、有截圖。

    拿拍照來(lái)說(shuō),有夏至那天中午頭兒,在陽(yáng)光直射下拍的;也有人在傍晚,拿著大頂轉(zhuǎn)著圈兒拍的。如果不進(jìn)行預(yù)處理,OCR會(huì)很為難,就像你面對(duì)剛從糞池里撈上來(lái)的大棗一樣為難。

    一般情況下,我們定義白色為背景,黑色為字體。

    但是,如果圖片上有了光影,就會(huì)存在模糊狀態(tài)。說(shuō)它是背景吧,它不是白色的。要說(shuō)它是文字吧,黑乎乎地一片兒,也認(rèn)不出來(lái)有什么字符。這導(dǎo)致OCR經(jīng)常人格分裂,這是……這不是……它是不是呢?智能出現(xiàn)了問(wèn)題,人工一看,我給做個(gè)預(yù)處理吧,交給你的時(shí)候保證非黑即白,你專心做事就行。OCR很感動(dòng)。

    理想條件下的文檔圖像,應(yīng)該是水平的,這樣方便切割方塊字。

    但是,現(xiàn)實(shí)世界中,不管是人,還是素材,都很難擺正自己的位置。

    不正,切起來(lái)就復(fù)雜了。治圖,如同治人,需要分門別類(強(qiáng)制升華文章格調(diào))。

    上面這種傾斜最為常見(jiàn),處理起來(lái)也最簡(jiǎn)單。只需要幾句代碼就能搞定,我會(huì)在以后專門介紹。基本原理就是找到文本的最小面積矩形(關(guān)鍵詞:minAreaRect),然后旋轉(zhuǎn)這個(gè)矩形,實(shí)現(xiàn)角度矯正,看下面這個(gè)動(dòng)態(tài)圖。

    但是,這種方法有時(shí)候也不靈,比如下面這張圖。

    我們現(xiàn)在框一個(gè)矩形,完美!

    我們?cè)侔丫匦螖[正,完蛋!

    這種傾斜,無(wú)論怎么擺矩形都不行,因?yàn)榫匦螀^(qū)域內(nèi)的文字又有傾斜!

    這時(shí)候,就需要用另一種方法,叫做霍夫線變換(關(guān)鍵詞:HoughLinesP。有時(shí)候搜索一個(gè)問(wèn)題,都不知道該搜啥,此處我提供了關(guān)鍵詞,其解決方案可直達(dá)靈魂)。

    霍夫線變換就是在圖上找直線,因?yàn)閳D中的若干點(diǎn),是可構(gòu)成一條直線的。把這些直線畫出來(lái),你會(huì)發(fā)現(xiàn)玄機(jī),看下面的動(dòng)態(tài)圖。

    一段若干行的文本,每一行的字都應(yīng)該是在一條直線上的。

    從結(jié)果倒推過(guò)程,如果找到了一行直線,那么是不是就找到了一個(gè)文本行。

    當(dāng)把這些直線擺正時(shí),就實(shí)現(xiàn)了文檔的矯正。看下面的動(dòng)態(tài)圖。

    上面講的是平面的角度傾斜,此類情況在復(fù)印和掃描中較多(紙張放斜了)。

    這不算嚴(yán)重,頂多就如同用涼水泡方便面,問(wèn)題不大。

    其實(shí),我們遇到更多的圖像是照片。拍照,問(wèn)題就多了,會(huì)存在空間的扭曲。看下面的動(dòng)態(tài)圖(圖是動(dòng)態(tài)的,如果不是,等一等,或者你遇到盜版的作者了,正版作者是ITF男孩)。

    上面的圖,問(wèn)題就比較嚴(yán)重了,就如同用煤油泡方便面,還非得讓別人吃,這叫扭曲。

    空間的扭曲,體現(xiàn)在視覺(jué)上就是遠(yuǎn)大近小。

    我們來(lái)矯正下面這張圖,這張圖應(yīng)該是站在長(zhǎng)城上拍的長(zhǎng)廊,越遠(yuǎn)越小。

    肯定能矯正,就是步驟有點(diǎn)多。但是,換算成代碼,也不會(huì)超過(guò)100行。下面這張動(dòng)態(tài)圖里,我把每一步對(duì)圖片處理的方法也都列上了。總共9步,每一步都可以單拉出一篇文章來(lái)講解(寫到這里,我想出視頻教程了,給我點(diǎn)贊,鼓勵(lì)我)。

    上面的2.1章節(jié)部分,講的都是最基礎(chǔ)的預(yù)處理操作。

    如果你的圖片來(lái)源很復(fù)雜,尤其是包含各種場(chǎng)景下的拍照,或者也有從漫山遍野撿來(lái)的野生圖片、二手改裝圖片。那么,你的預(yù)處理工作將會(huì)比較費(fèi)勁,沒(méi)有難點(diǎn),但是需要耗費(fèi)人力物力,需要時(shí)間

    如果,你的圖片來(lái)源很簡(jiǎn)單。就像我開(kāi)頭講的,0到9數(shù)字識(shí)別還購(gòu)買OCR服務(wù)的例子。他們公司是用電子采集筆在電子方格上寫數(shù)字,電子方格是統(tǒng)一的,筆是統(tǒng)一的,樣本非常標(biāo)準(zhǔn)。這種情況,不需要預(yù)處理,直接進(jìn)入下一步,切割字符(媽呀,這個(gè)轉(zhuǎn)場(chǎng),太絲滑了)。

    假設(shè),通過(guò)了預(yù)處理,我們的圖片都變成像下圖這樣規(guī)范。

    我忽然想到,我們是要做OCR字符識(shí)別的(你……干啥來(lái)的)。

    于是,我們需要切割字符,把每一個(gè)字……都給他(咬著牙,發(fā)狠的表情)……挖出來(lái)。

    為什么要把每個(gè)字符都切割出來(lái)?因?yàn)镺CR最終是對(duì)單個(gè)字符進(jìn)行識(shí)別的(識(shí)別26,其實(shí)是識(shí)別“2”和“6”)。

    并且,還需要對(duì)每個(gè)字符做好標(biāo)記,因?yàn)樽R(shí)別完了,還得還原回去。識(shí)別完了,結(jié)果是一堆單蹦的“1”、“2”、“3”、“+”、“-”字符。我們需要根據(jù)它們的相對(duì)位置,還原成“8-7=1”。所以,我們就知道了,哪個(gè)題目做對(duì)了,做錯(cuò)了,從而給出批改結(jié)果。

    上帝說(shuō)要有光,就有了光。如果有姓尚的朋友,可以給孩子起名叫:尚有光。

    有光以后,當(dāng)光投過(guò)來(lái)時(shí),物體的背后就有了影。有影子的地方就有實(shí)體,沒(méi)影子的地方就有空隙。

    那位說(shuō)了(我也不知道哪位),你扯這些干什么?這是三歲小孩子都懂的常識(shí)。

    沒(méi)錯(cuò),三歲小孩子都知道。但是三十歲的大孩子不一定能想到,這個(gè)常識(shí)可以用來(lái)分割字符。

    假設(shè)我們拿著一根頭發(fā)絲兒,橫著收集像素點(diǎn),從左側(cè)插入,從右側(cè)推出。把所有黑點(diǎn)都?jí)嚎s到一起,把黑色素……嗯,黑色素堆到最右側(cè)。就像下面的圖這樣。

    此時(shí),我們就能清楚地知道哪個(gè)區(qū)域是有文字的行,哪個(gè)區(qū)域是白紙。這個(gè)價(jià)值兩百五的操作,可以實(shí)現(xiàn)行的切分

    這一招就是投影大法,三歲孩子都了解。

    切行是橫著切,切列就得豎著切了。

    一定要先切行,再切列。多數(shù)情況,行是有行距的,每一行都會(huì)有明顯的界限。但是列……如果把整個(gè)文檔做投影的話,基本上就淪陷了。

    上面那樣做投影,拆不出單個(gè)字符。因?yàn)橐黄臋n的字,就像城墻一樣,磨磚對(duì)縫,無(wú)法切分。

    但是,換成對(duì)一行文本進(jìn)行投影分析,就可以了。看下面這個(gè)圖,非常之清晰。

    通過(guò)投影之間的間隙,我們就可以把每個(gè)字符切割開(kāi)來(lái)。

    有了行與列切分的方法,相信把字符切出來(lái),應(yīng)該是不難的。其實(shí)就是很簡(jiǎn)單,代碼也不復(fù)雜。全都是數(shù)組的分析。

    那么切出來(lái)的字,最終是這樣。

    不是白紙黑字嗎?為什么都變成了黑底白字呢?

    其實(shí),這是故意的。為的就是要方便OCR進(jìn)行識(shí)別。我們都知道(也可能不知道),在RGB色值中,0代表黑色,255代表白色。

    不管計(jì)算機(jī)的算力多么強(qiáng)大,一秒鐘能運(yùn)算多少億萬(wàn)次,它的底層還是二進(jìn)制,也就是101010。你可以簡(jiǎn)單地理解成它只認(rèn)識(shí)數(shù)字。你看到字母A是A,計(jì)算機(jī)沒(méi)有你那么厲害,計(jì)算機(jī)偷偷地在顯示器上輸出A這個(gè)圖案,然后心里暗自記下這個(gè)物體是65。

    因此,任何文本、圖片、音視頻,最終都要被解析成數(shù)字,這樣計(jì)算機(jī)才能干活。

    扯這些有什么用?你在逃避什么?黑白顛倒的問(wèn)題呢?

    別急,馬上。我們希望計(jì)算機(jī)識(shí)別圖片上的字,而不是背景。所以,把背景置為黑色,也就0,把字符變成白色,也就是255,這樣有利于計(jì)算機(jī)更專注于分析字符的痕跡。因?yàn)椋?默認(rèn)是忽略掉的。

    你看,說(shuō)著說(shuō)著,就談到了人工智能的機(jī)器學(xué)習(xí)。哈哈,又轉(zhuǎn)場(chǎng)了,真爽。

    圖片究竟是怎么變?yōu)樽址模克€能自己學(xué)習(xí)。

    計(jì)算機(jī)通過(guò)學(xué)習(xí)一些樣本之后,遇到一些從未遇到過(guò)的同類樣本,也能正確地識(shí)別出結(jié)果,這很神奇。我想了一夜也沒(méi)想明白。

    第二天,我?guī)е⒆尤ス珗@,公園門口有一對(duì)大獅子。孩子指著獅子說(shuō),狗!我說(shuō),哦,那不是狗,那是獅子,跟狗有點(diǎn)像是不是。又走了一段路,公園里又出現(xiàn)一個(gè)麒麟的雕塑。孩子指著它說(shuō),獅子!我說(shuō),那不是獅子。孩子說(shuō),是狗。我說(shuō)也不是狗,它叫:麒麟。我感覺(jué)到,孩子的大腦在反向矯正信息,這就是監(jiān)督學(xué)習(xí)

    當(dāng)我給他看狗的圖片時(shí),我告訴她這是狗。

    她根據(jù)自己的認(rèn)知,找了幾個(gè)特征,構(gòu)建了一個(gè)模型:長(zhǎng)嘴+尖牙=狗。

    雖然只是看過(guò)圖片,但是出門遇到真狗,她根據(jù)這個(gè)模型也認(rèn)識(shí)對(duì)了。

    后來(lái),她遇到了獅子,她修改了模型:長(zhǎng)嘴+尖牙+鬃毛≠狗=獅子。

    后來(lái),又遇到了麒麟,這個(gè)公式變得越來(lái)越復(fù)雜……決策項(xiàng)越來(lái)越多。

    人工智能,就是模擬的人類的神經(jīng)元,構(gòu)建神經(jīng)網(wǎng)絡(luò)來(lái)嘗試尋找特征和結(jié)果的關(guān)系。如果對(duì)了,就給這個(gè)特征加分。如果,錯(cuò)了,就給這個(gè)特征減分。

    識(shí)別數(shù)字,也是一樣。

    比如在學(xué)習(xí)識(shí)別數(shù)字6的時(shí)候,它隨機(jī)認(rèn)為只要有一個(gè)圈圈特征,就是數(shù)字6。

    驗(yàn)證其他樣本時(shí),發(fā)現(xiàn)這個(gè)隨機(jī)特征是對(duì)的(不對(duì)就再換一個(gè)特征再試)。于是,它建立了一個(gè)模型:只要有圈這個(gè)特征,就是6。

    后來(lái),這個(gè)模型遇到了數(shù)字0。加入新樣本后,人工智能發(fā)現(xiàn),0也有圈,但它不是6,也有可能是0。得再找一個(gè)特征,于是,新增一條,有勾就是6。后來(lái),它又遇到了9。那勾在上面的就是6。后來(lái),它又遇到了字母b……反正計(jì)算機(jī)有的是算力,能在很短的時(shí)間內(nèi)完成這些學(xué)習(xí)。上面我是摟著說(shuō)的,其實(shí)即便在32*32像素的小圖片上,它隨機(jī)上幾十個(gè)特征去做驗(yàn)證,一點(diǎn)都不吃力。

    這就是識(shí)別字符的原理。具體到代碼,也很簡(jiǎn)單,因?yàn)槿斯ぶ悄芸蚣苣壳耙呀?jīng)非常成熟。雖然,這篇是科普版,不是專業(yè)版,不適合講代碼,但是我還是非常想貼上一段代碼,給大家看看。打破你的認(rèn)知,人工智能的應(yīng)用層很簡(jiǎn)單,別被忽悠了。

    舉個(gè)例子,識(shí)別10類常見(jiàn)物體:飛機(jī)、自行車、鳥,貓,鹿、狗、青蛙、馬、輪船、汽車。

    它的核心代碼只有……6行。

    所以,OCR字符的識(shí)別從來(lái)不難。難的是兩頭,比如開(kāi)頭的預(yù)處理,以及下面要說(shuō)的后處理。

    識(shí)別出了字符,意義不大,有效地連接起來(lái)才能發(fā)揮作用。

    一定要記住我上面說(shuō)的這句話,默讀3遍以上。

    其實(shí),這句話沒(méi)啥用,只是有助于緩解緊張的氣氛!

    對(duì)于類似的話,我認(rèn)為是廢話,因?yàn)闆](méi)有任何指導(dǎo)意義,但是說(shuō)的也沒(méi)錯(cuò)。

    可能有人會(huì)覺(jué)得,我接下來(lái)講的會(huì)比較跳躍,有點(diǎn)作者著急去廁所的感覺(jué)。這并不是什么寫作風(fēng)格,這篇文章我快寫吐了,很想快點(diǎn)結(jié)束。或許我該搞一個(gè)系列專題,我比較喜歡講述體系化的東西,不喜歡一次冒一個(gè)點(diǎn),那樣對(duì)別人沒(méi)有什么深度價(jià)值。

    也可能有人覺(jué)得,版面還原不難(是的,進(jìn)入正題了),字符我都拆開(kāi)了,坐標(biāo)也記錄了,把識(shí)別的字符畫上,不就還原了?!

    沒(méi)錯(cuò),說(shuō)的很對(duì),把識(shí)別的結(jié)果畫上去,視覺(jué)上是還原了。

    但是,這依然屬于單個(gè)字符識(shí)別的那一步,只不過(guò)做成了結(jié)果可視化,是坐標(biāo)還原,并不是版面還原。

    我們期望的拆分和還原應(yīng)該是下面這樣:

    “10+2= 4-3= 5+6=11”這些文本從數(shù)據(jù)結(jié)構(gòu)上應(yīng)該是一行。而且,“10+2=”從數(shù)據(jù)結(jié)構(gòu)上是一個(gè)基本單位。因?yàn)椋覀円獙?duì)基本單位做運(yùn)算和批改。這才叫還原,其實(shí)并不簡(jiǎn)單。

    有點(diǎn)震驚,我拆字的時(shí)候,沒(méi)有人跟我要求過(guò)這些規(guī)則。

    舉個(gè)小例子,這個(gè)例子非常小,假設(shè)你識(shí)別出來(lái)了2個(gè)字,你現(xiàn)在有2個(gè)字符的數(shù)據(jù):

    請(qǐng)問(wèn),這兩個(gè)字,是不是在處于同一行?

    你通過(guò)肉眼無(wú)法判定,得計(jì)算。

    這就需要你用代碼編寫算法處理。如果你數(shù)學(xué)不好,那可能還真的是一個(gè)不小的挑戰(zhàn)。從圖上看,你的眼睛可能幾毫秒就識(shí)別出來(lái)了,但是計(jì)算機(jī)沒(méi)有眼睛,只有大腦。它就等著你告訴它要怎么去算什么數(shù)據(jù)。

    其實(shí)也好處理(話都讓你說(shuō)了,難也是你說(shuō)的),看兩個(gè)字在Y軸的重疊情況。如果重疊達(dá)到一定占比,那就可以認(rèn)為這兩組數(shù)據(jù)是處于同一行。

    其實(shí)字符與字符之間的關(guān)系還有很多情況。

    根據(jù)情況的不同,我們就可以做不同的判定。

    上圖所示,如果文本1的矩形區(qū)域和公式1的矩形區(qū)域,在橫向上有一定比例的重疊,那我們可以認(rèn)為,它們是處于同一行。如果文本2的區(qū)域完全包含(重疊率100%)于表格1的區(qū)域中,那么我們可以認(rèn)為文本2屬于表格1。同樣,文本2文本3在縱向的重疊率,可以作為它倆是否位于同一列的一個(gè)指標(biāo)。

    OCR識(shí)別的最終目的,是要獲得一份準(zhǔn)確的、結(jié)構(gòu)化的文本內(nèi)容。

    單個(gè)字符識(shí)別,其實(shí)是各自為戰(zhàn),前后不商量。

    就比如,遇到一個(gè)圓圈形狀的字符圖片。OCR識(shí)別就犯了難,它是數(shù)字“0”?漢字“〇”?大寫字母“O”?小寫字母“o”?中文句號(hào)“。”?還是“Q”忘了加尾巴……。

    啥都對(duì),啥都不對(duì)。

    所以,需要矯正……校正。這兩個(gè)詞,都是高頻詞,尤其拼音打字jiaozheng,容易出錯(cuò)。其實(shí),也好分辨。看語(yǔ)境,如果我前后提到了“文稿”,那么是“校正”的可能性就大。如果我剛剛說(shuō)了“牙齒”、“視力”、“角度”啥的,那么基本上就應(yīng)該是“矯正”了。

    OCR識(shí)別的最后一步校正也是一樣。如果無(wú)法確定是數(shù)字“0”還是字母“o”,可以觀察它相鄰的幾個(gè)字符,下面一圖勝千言。

    單個(gè)字符識(shí)別不對(duì)沒(méi)關(guān)系,后期智能校正可以結(jié)合語(yǔ)境來(lái)幫你糾正。這個(gè)步驟就叫做后處理

    我想,OCR流程介紹的差不多了。下面該總結(jié)了。

    其實(shí),我已經(jīng)迫不及待地想睡覺(jué)了。但是,睡覺(jué)前,我還是想輸出幾個(gè)觀點(diǎn)。

    需要企業(yè)領(lǐng)導(dǎo)視自身業(yè)務(wù)需求和研發(fā)能力來(lái)確定。

    通過(guò)上面的流程講解,其實(shí)我們也了解到,做OCR并不難,這在業(yè)界已經(jīng)非常成熟了。如果,你的業(yè)務(wù)需求很單一,另外也有一兩個(gè)喜歡研究技術(shù)的程序員(三年經(jīng)驗(yàn)起),其實(shí)可以投入幾個(gè)人、幾個(gè)月搞一搞試試看效果。就算不成功,起碼他們?cè)俑谌綄?duì)接起來(lái),也屬于專業(yè)級(jí)別了。

    那么,如果你的業(yè)務(wù)需求復(fù)雜多樣,是不是就要用第三方服務(wù)了。也不一定,需求太復(fù)雜,通用的第三方平臺(tái),不一定能滿足你的個(gè)性化需求。我之前遇到過(guò)一個(gè)例子,也是在教育行業(yè)。他們有一個(gè)場(chǎng)景是用在填空題手寫答案上。一般的手寫識(shí)別,你就算寫的80%正確,它會(huì)給你智能糾正,輸出字符。但是,教育行業(yè)不行,寫錯(cuò)了就是寫錯(cuò)了,不要糾正。比如,武術(shù)的“武”,學(xué)生如果右下角寫成了“戈”那樣多了一撇,不要輸出“武”,要輸出不是字,并記錄下學(xué)生的錯(cuò)字圖片。這一下,沒(méi)有一家平臺(tái)可以對(duì)接。其實(shí),自己研發(fā)是可以做到的。但是,研發(fā)這玩意有什么用?只有自己用。

    如果業(yè)務(wù)比較通用,且第三方費(fèi)用不是很高的情況下,可以考慮購(gòu)買服務(wù)。其實(shí),不管是個(gè)人生活還是企業(yè)運(yùn)轉(zhuǎn),總歸都是要考慮成本的控制。最終都是資金限制了一切。所以,我說(shuō)多少都是白扯。那種說(shuō),我有錢,但是找不到人才的老板,請(qǐng)聯(lián)系我。

    我認(rèn)為是數(shù)據(jù)。

    現(xiàn)今而言,瓶頸已經(jīng)不是技術(shù)了,數(shù)據(jù)量決定識(shí)別率。短期內(nèi),技術(shù)沒(méi)有太多可提高的空間了。剩余的就是拼數(shù)據(jù)量。

    很多人覺(jué)得人工智能不智能,甚至智障。其實(shí),有一部分原因就是訓(xùn)練數(shù)據(jù)太少。就拿智能問(wèn)答來(lái)說(shuō),很多人問(wèn)的問(wèn)題,人工智能回答不好。原因就是,你問(wèn)的這些問(wèn)題它從來(lái)沒(méi)有接觸過(guò)。

    就像我和孩子去公園的例子,我一直給她看狗的圖像,突然問(wèn)她麒麟是什么,她會(huì)從狗的答案里去找類似的應(yīng)對(duì)。

    我還是拿教育行業(yè)舉例(我熟啊),如果我們拿一本魯教版七年級(jí)地理上冊(cè),交給人工智能學(xué)習(xí)。如果它學(xué)完了,你問(wèn)它書本上的知識(shí),它絕對(duì)是回答準(zhǔn)確。但是,你如果問(wèn)它七年級(jí)下冊(cè)的,它估計(jì)就蒙了。更何況,還有八年級(jí)、九年級(jí)呢?更何況學(xué)科還有物理、化學(xué)、生物呢?更何況,我們生活化的對(duì)話場(chǎng)景,不會(huì)出現(xiàn)在課本里呢!想讓它聰明,得多少數(shù)據(jù),誰(shuí)又有這些數(shù)據(jù)?!

    OCR也是一樣。識(shí)別那一塊兒,大人寫的字和小孩寫的字,是有差別的,想要識(shí)別準(zhǔn)確,肯定是樣本越多越準(zhǔn)確。后處理校正那一塊兒,無(wú)他,只能是見(jiàn)多了才能識(shí)廣。

    有人說(shuō),你講總結(jié),最好不要超過(guò)三條,多了記不住。

    但是,如果不夠3條呢?也不用湊。

    本文寫了不少。是否對(duì)大家有幫助,現(xiàn)在還不好說(shuō)。這得看大家的反饋了。

    我曾經(jīng)寫過(guò)一個(gè)Android開(kāi)發(fā)的專欄。

    但是,大家對(duì)于Android開(kāi)發(fā)其實(shí)并不看好,閱讀量少,而且大家也嘲諷現(xiàn)在居然還有人學(xué)Android。那我寫這個(gè)專欄,其實(shí)幫不到很多人。也就是,沒(méi)有需求。那我完全可以投入同等精力,去寫另一個(gè)受眾更廣的專欄。

    對(duì)于OCR相關(guān)的題材,我有知識(shí)儲(chǔ)備,包括github也開(kāi)源了上面的自動(dòng)批改項(xiàng)目。至于大家是否有需求,這個(gè)是無(wú)法預(yù)測(cè)的。我也會(huì)根據(jù)文章的閱讀和互動(dòng)情況,調(diào)整后續(xù)的內(nèi)容輸出。

    是再出一篇專業(yè)版文章,還是出一系列專題,或者是不再更新。也希望大家給我一些反饋。

    本文作者頭條—ITF男孩 @ITF男孩,禁止以二次發(fā)布的形式轉(zhuǎn)載,侵權(quán)必究。

    熱點(diǎn)圖片

    備案號(hào):贛ICP備2022005379號(hào)
    華網(wǎng)(http://m.fshsdq.com.cn) 版權(quán)所有未經(jīng)同意不得復(fù)制或鏡像

    QQ:51985809郵箱:51985809@qq.com