|
人工智能這個詞可謂是耳熟能詳,近幾年人工智能熱潮再次席卷而來,引起轟動的要數(shù)google的AlphaGo,相繼打敗了圍棋界的韓國選手李世石以及世界冠軍柯潔,見證了人工智能發(fā)展的里程碑式的變革,人工智能再度引起了眾人的關(guān)注。 人工智能當(dāng)然不止會下棋這么簡單,其實在20年前,智能家居的開發(fā)就有不少團隊在進行,只是切入點不對,所以一直沒有什么起色,現(xiàn)在大家都以語音為切入點,使得人工智能開始步入正軌,亞馬遜的智能音箱echo就是代表產(chǎn)品,自然語言互動會逐漸擺脫人對著屏幕互動的束縛,其最大的價值就是回歸人生,在未來就會遷就人類,語音交互就是這樣一個在各個場景中都可以嵌入的技術(shù)。 目前我國的語音識別技術(shù)也已經(jīng)從進場發(fā)展到遠場,如果要實現(xiàn)人工智能,OCR技術(shù)則是必不可少的基石,智能文字識別的主要依據(jù)就是OCR技術(shù)識別原理,現(xiàn)在也有許多智能產(chǎn)品加入了人臉識別的項目。 OCR英文全稱是Optical Character Recognition,中文叫做光學(xué)字符識別。它是利用光學(xué)技術(shù)和計算機技術(shù)把印在或?qū)懺诩埳系奈淖肿x取出來,并轉(zhuǎn)換成一種計算機能夠接受、人又可以理解的格式。文字識別是計算機視覺研究領(lǐng)域的分支之一,而且這個課題已經(jīng)是比較成熟了,并且在商業(yè)中已經(jīng)有很多落地項目了。比如漢王OCR,百度OCR,阿里OCR等等,很多企業(yè)都有能力都是拿OCR技術(shù)開始掙錢了。其實我們自己也能感受到,OCR技術(shù)確實也在改變著我們的生活:比如一個手機APP就能幫忙掃描名片、身份證,并識別出里面的信息;汽車進入停車場、收費站都不需要人工登記了,都是用車牌識別技術(shù);我們看書時看到不懂的題,拿個手機一掃,APP就能在網(wǎng)上幫你找到這題的答案。太多太多的應(yīng)用了,OCR的應(yīng)用在當(dāng)今時代確實是百花齊放啊。 OCR概念的產(chǎn)生是在1929年,德國的科學(xué)家Tausheck首先提出了OCR的概念,并且申請了專利。幾年后,美國科學(xué)家Handel也提出了利用技術(shù)對文字進行識別的想法。但這種夢想直到計算機的誕生才變成了現(xiàn)實?,F(xiàn)在這一技術(shù)已經(jīng)由計算機來實現(xiàn),OCR的意思就演變成為利用光學(xué)技術(shù)對文字和字符進行掃描識別,轉(zhuǎn)化成計算機內(nèi)碼。 我國在OCR技術(shù)方面的研究工作起步較晚,在70年代才開始對數(shù)字、英文字母及符號的識別進行研究,70年代末開始進行漢字識別的研究,到1986年漢字識別的研究進入一個實質(zhì)性的階段,取得了較大的成果,不少研究單位相繼推出了中文OCR產(chǎn)品。我國OCR都是有 OMR演變過來的,我國的一些研究部門在 80年代初就開始對OCR識別進行研究,如:清華的吳估壽教授、丁曉青教授、夏瑩教授、北大的顧小鳳教授、北信的張昕中教授、中科院的劉品平博士、李明敬博士可以稱作我國OCR研究開發(fā)隊伍中的導(dǎo)航人,為此付出了不懈努力。二十多年的研究開發(fā)積累了大量人才,專家就有上百人。在中關(guān)村的硅谷地帶,我國的OCR專家多達20多位,他們也為我國的信息領(lǐng)域留下了自己奮斗的足跡。我國目前使用的文本型OCR軟件主要有清華文通TH-OCR、北信BI-OCR、中自ICR、沈陽自動化所SY-OCR、北京曙光公司NI-OCR(已被中自漢王并購)等,匹配的掃描儀則使用市面上的平板掃描儀。中文OCR即采用掃描儀、數(shù)碼相機等輸入設(shè)備,把中文印刷體的文稿送入計算機并以計算機文檔表示出來的高新技術(shù)。中文印刷體識別技術(shù)(OCR)主要用于文字和表格輸入,可以用掃描儀將整頁的印刷文稿或者表格輸入計算機,由計算機上的識別系統(tǒng)自動生成漢字文件,替代人工鍵入漢字和表格的工作。中文OCR有普及版和專業(yè)版之分,現(xiàn)在市場上掃描儀捆綁的OCR軟件均為普及版。目前印刷體OCR的識別技術(shù)已經(jīng)達到可以實用的程度,即使對印刷質(zhì)量較差的文字的識別率也達到95%以上。由于手寫體OCR技術(shù)的限制,專業(yè)型OCR系統(tǒng)的產(chǎn)品多是面向特定的行業(yè),即適用于每天需處理大量表格信息錄入的部門,如郵政、稅務(wù)、海關(guān)、統(tǒng)計等等。這種面向特定行業(yè)的專業(yè)型OCR系統(tǒng)信息格式較為固定,識別的字符集相對小,經(jīng)常與專用的輸入設(shè)備結(jié)合使用,因此具有速度快、效率高等特點。在國外已經(jīng)被廣泛地應(yīng)用,充分發(fā)揮著作用。在我國隨著計算機應(yīng)用的深入,這方面的需求已經(jīng)出現(xiàn)。專業(yè)版 OCR有批處理功能,性能更加優(yōu)化,識別率也不同于普通版OCR。國家的"863計劃"對OCR技術(shù)的研究給予了很大的資助,促進了OCR的重大成果的取得。如"863"項目的啟用者漢王最新推出的專業(yè)版"新世紀OCR",將我國當(dāng)今的OCR技術(shù)推進了新的巔峰。它的特點主要是:識別率大幅度提高,尤其是對中英文混排文稿,識別率為99%??勺R別宋、仿宋、楷、隸、行等八種印刷字體,對數(shù)字、標點符號的識別也可點可圈;對表格識別也有了一定的突破,無論橫版、豎版、中文表格、圖文混排文件都能識別,自動版面分析和識別功能也大大加強。從80年代開始,OCR的研究開發(fā)就一直受到國家"863"計劃的資助,我國在信息技術(shù)領(lǐng)域付出的努力,已經(jīng)有了初步的回報。目前我們正在實現(xiàn)將OCR軟件針對表格形式的特征設(shè)計了大量的優(yōu)化功能,使得識別精度更高、識別速度更快,并且為適應(yīng)不同環(huán)境的使用提供了多種識別方式選項,支持單機和網(wǎng)絡(luò)操作,極大地方便了使用,使應(yīng)用范圍更加廣泛,能達到各種不同用戶的應(yīng)用要求。我們相信經(jīng)過眾多專家或?qū)I(yè)人士的努力,及國家在信息產(chǎn)業(yè)領(lǐng)域的大力資助,使OCR進入到網(wǎng)絡(luò)的各個領(lǐng)域,會有更多的新品種奉獻給我們的用戶,OCR技術(shù)將會有一個質(zhì)的飛躍。 光學(xué)字符識別(英語 :Optical Character Recognition)是指電子設(shè)備(例如掃描儀或數(shù)碼相機)檢查紙上打印的字符,通過檢測暗、亮的模式確定其形狀,然后用字符識別方法將形狀翻譯成計算機文字的過程;即,針對印刷體字符,采用光學(xué)的方式將紙質(zhì)文檔中的文字轉(zhuǎn)換成為黑白點陣的圖像文件,并通過識別軟件將圖像中的文字轉(zhuǎn)換成文本格式,供文字處理軟件進一步編輯加工的技術(shù)。如何除錯或利用輔助信息提高識別正確率,是OCR最重要的課題,ICR(Intelligent Character Recognition)的名詞也因此而產(chǎn)生。衡量一個OCR系統(tǒng)性能好壞的主要指標有:拒識率、誤識率、識別速度、用戶界面的友好性,產(chǎn)品的穩(wěn)定性,易用性及可行性等。 OCR技術(shù)的興起便是從印刷體識別開始的,印刷體識別的成功為了以后手寫體的發(fā)展奠定了堅實的基礎(chǔ),一般處理圖片的步驟包括以下幾個:圖像輸入,圖像前處理,預(yù)識別,圖像切分,特征提取,匹配及模型訓(xùn)練,識別后處理。 對不同的圖像格式,有著不同的存儲格式,不同的壓縮方式,目前有OpenCV,CxImage等開源項目。 輸入文本經(jīng)過掃描儀進入計算機后,由于紙張的厚薄、光潔度和印刷質(zhì)量都會造成文字畸變,產(chǎn)生斷筆、粘連和污點等干擾,所以在進行文字識別之前,要對帶有噪聲的文字圖像進行處理。由于這種處理工作是在文字識別之前,所以被稱為預(yù)處理。預(yù)處理一般包括灰度化、二值化,傾斜檢測與校正,行、字切分,平滑,規(guī)范化等等。 3.2.1 灰度化: 通過外設(shè)采集的圖像通常為彩色圖像,彩色圖像會夾雜一些干擾信息,灰度化處理的主要目的就是濾除這些信息,灰度化的實質(zhì)其實就是將原本由三維描述的像素點,映射為一維描述的像素點。轉(zhuǎn)換的方式和規(guī)則有很多,在這里不詳細介紹。 3.2.2 二值化處理: 對攝像頭拍攝的圖片,大多數(shù)是彩色圖片,彩色圖像所含的信息量巨大,對于圖片的內(nèi)容,我們可以簡單的分為前景和背景,為了讓計算機更快的,更好的識別文字,我們可以簡單地分為前景和背景,為了讓計算機更快的,更好的識別文字,我們需要對彩色圖進行處理,使圖片只剩下前景信息和背景信息,可以簡單的定義前景信息為黑色,背景信息為白色,這就是二值化圖。 3.2.3 噪聲去除 對于不同的文檔,我們對噪聲的定義可以不同,根據(jù)噪聲的特征進行去噪,就叫做噪聲去除。 3.2.4 傾斜校正 由于一般的用戶,在拍攝文檔時候,都比較隨意,因此拍出來的圖片不可避免的產(chǎn)生傾斜,這就需要文字識別軟件進行矯正。 印刷體文本資料大多是由平行于頁面邊緣的水平(或者垂直)的文本行(或者列)組成的,即傾斜角度為零度。然而在文本頁面掃描過程中,不論是手工掃描還是機器掃描,都不可避免地會出現(xiàn)圖像傾斜現(xiàn)象。而傾斜的文檔圖像對后期的字符分割、識別和圖像壓縮等工作將產(chǎn)生很大影響。為了保證后續(xù)處理的正確性,對文本圖像進行傾斜檢測和校正是十分必要的。 文本圖像的傾斜校正分為手動校正和自動校正兩種。手動校正,是指識別系統(tǒng)提供某種人機交互手段,實現(xiàn)文本圖像的傾斜校正。自動校正,是指由計算機自動分析文本圖像的版面特征,估計圖像的傾斜角度,并根據(jù)傾斜角度對文本圖像進行校正。 目前,文本圖像的傾斜檢測方法有許多種,主要可以劃分為以下五類:基于投影圖的方法,基于Houhg變換的方法,基于交叉相關(guān)性的方法,基于Fourier變換的方法和基于最近鄰聚類方法。 最簡單的基于投影圖的方法是將文本圖像沿不同方向進行投影。當(dāng)投影方向和文字行方向一致時,文字行在投影圖上的峰值最大,并且投影圖存在明顯的峰谷,此時的投影方向就是傾斜角度。 Huogh變換也是一種最常用的傾斜檢測方法,它是利用Hough變換的特性,將圖像中的前景像素映射到極坐標空間,通過統(tǒng)計極坐標空間各點的累加值得到文檔圖像的傾斜角度。 Fourier變換的方法是利用頁面傾角對應(yīng)于使Fourier空間密度最大的方向角的特性,將文檔圖像的所有像素點進行Fourier變換。這種方法的計算量非常大,目前很少采用。 基于最近鄰聚類方法,取文本圖像的某個子區(qū)域中字符連通域的中心點作為特征點,利用基線上的點的連續(xù)性,計算出對應(yīng)的文本行的方向角,從而得到整個頁面的傾斜角 3.2.5 版面分析 將文檔圖片分段落,分行的過程就叫做版面分析,由于實際文檔的多樣性,復(fù)雜性,因此,目前還沒有一個固定的,最優(yōu)化的切割模型。 由于拍照條件的限制,經(jīng)常造成字符粘連,斷筆,因此極大限制了識別系統(tǒng)的性能。 這一研究很早了,比較早有模板匹配,后來以特征提取為主,由于文字的位移,筆畫的粗細,斷筆,粘連,旋轉(zhuǎn)等因素的影響,極大影響特征的提取的難度。 人們希望識別后的文字,任然像源文檔圖片那樣排列著,段落不變,位置不變,順序不變地輸出到Word文檔,PDF文檔等,這一過程就叫做版面還原。 將文本圖像分割為不同部分,并標定各部分屬性,如:文本、圖像、表格。目前在版面分析方面的工作核心思想都是基于連通域分析法,后衍生出的基于神經(jīng)網(wǎng)絡(luò)的版面分析法等也都是以連通域為基礎(chǔ)進行的。連通域是指將圖像經(jīng)過二值化后轉(zhuǎn)為的二值矩陣中任選一個像素點,若包圍其的所有像素點中存在相同像素值的像素點則視為兩點連通,以此類推,這樣的像素點構(gòu)成的一個集合在圖像中所在的區(qū)域即一個連通域。根據(jù)連通域大小或像素點分布等特征可以將連通域的屬性標記出來,用作進一步處理的依據(jù)。 根據(jù)特定的語言上下文的關(guān)系,對識別結(jié)果進行校正,就是后處理。 如果要給OCR進行分類,我覺得可以分為兩類:手寫體識別和印刷體識別。這兩個可以認為是OCR領(lǐng)域兩個大主題了,當(dāng)然印刷體識別較手寫體識別要簡單得多,我們也能從直觀上理解,印刷體大多都是規(guī)則的字體,因為這些字體都是計算機自己生成再通過打印技術(shù)印刷到紙上。在印刷體的識別上有其獨特的干擾:在印刷過程中字體很可能變得斷裂或者墨水粘連,使得OCR識別異常困難。當(dāng)然這些都可以通過一些圖像處理的技術(shù)幫他盡可能的還原,進而提高識別率??偟膩碚f,單純的印刷體識別在業(yè)界已經(jīng)能做到很不錯了,但說100%識別是肯定不可能的,但是說識別得不錯那是沒毛病。 印刷體已經(jīng)識別得不錯了,那么手寫體呢?手寫體識別一直是OCR界一直想攻克的難關(guān),但是時至今天,感覺這個難關(guān)還沒攻破,還有很多學(xué)者和公司在研究。為什么手寫體識別這么難識別?因為人類手寫的字往往帶有個人特色,每個人寫字的風(fēng)格基本不一樣,雖然人類可以讀懂你寫的文字,但是機器缺很難。那為什么機器能讀懂印刷體?因為印刷體是機器造出來的啊,那機器當(dāng)然能讀懂自己造的字體啦哈哈~其實上面也提到了,印刷體一般都比較規(guī)則,字體都基本就那幾十種,機器學(xué)習(xí)這幾十種字體并不是一件難事,但是手寫體,每個人都有一種字體的話,那機器該學(xué)習(xí)多少字體啊?這就是難度所在。 如果按識別的內(nèi)容來分類,也就是按照識別的語言的分類的話,那么要識別的內(nèi)容將是人類的所有語言(漢語、英語、德語、法語等)。如果僅按照我們國人的需求,那識別的內(nèi)容就包括:漢字、英文字母、阿拉伯?dāng)?shù)字、常用標點符號。根據(jù)要識別的內(nèi)容不同,識別的難度也各不相同。簡單而言,識別數(shù)字是最簡單了,畢竟要識別的字符只有0~9,而英文字母識別要識別的字符有26個(如果算上大小寫的話那就52個),而中文識別,要識別的字符高達數(shù)千個(二級漢字一共6763個)!因為漢字的字形各不相同,結(jié)構(gòu)非常復(fù)雜(比如帶偏旁的漢字)如果要將這些字符都比較準確地識別出來,是一件相當(dāng)具有挑戰(zhàn)性的事情。但是,并不是所有應(yīng)用都需要識別如此龐大的漢字集,比如車牌識別,我們的識別目標僅僅是數(shù)十個中國各省和直轄市的簡稱,難度就大大減少了。當(dāng)然,在一些文檔自動識別的應(yīng)用是需要識別整個漢字集的,所以要保證識別的整體的識別還是很困難的。 現(xiàn)在我們只想單純地想對字符進行識別,那方法會有哪些呢?我列了一下可以采取的策略: 上面提到的OCR方法都有其有點和缺點,也正如此,他們也有各自特別適合的應(yīng)用場景。 首先說開源OCR引擎Tesseract。搞字符識別的童鞋應(yīng)該都聽說過Tesseract這個東西,這是谷歌維護的一個OCR引擎,它已經(jīng)有一段相當(dāng)悠久的歷史了。Tesseract現(xiàn)在的版本已經(jīng)支持識別很多種語言了,當(dāng)然也包括漢字的識別。畢竟Tesseract是外國人搞得一個東西,所以在漢字識別的精度上還是不能擺上臺面,不過還是自己去改善。但是Tesseract在阿拉伯?dāng)?shù)字和英文字母上的識別還是可以的,如果你要做的應(yīng)用是要識別英文或者數(shù)字,不妨考慮一下使用Tesseract,畢竟拿來就能得到不錯的結(jié)果。當(dāng)然啦,要做到你想要的識別率,后期微調(diào)或者優(yōu)化肯定要多下功夫的。 接下來說一下借用OCR開放平臺做文字識別。現(xiàn)在很多大公司都開放了OCR的API供開發(fā)者調(diào)用,當(dāng)然啦,小量調(diào)用是不收費的,但是大量調(diào)用就要收費了。最近我也在百度開放平臺上調(diào)用OCR的API做一些識別的工作,說實話,在漢字的識別上,我們中國公司的技術(shù)還是頂尖的,在漢字識別的準確率上已經(jīng)讓人很滿意了。比如我要識別一些文本,自己寫個python腳本,調(diào)用開放平臺的服務(wù),返回的就是識別結(jié)果了。這種模式有啥不好的地方嗎?首先是需要錢(當(dāng)然每天小批量識別一下是不用錢的),第二是自己的控制程度不足,我們想要提升識別精度,我們不可以從OCR識別上做改進(畢竟別人的東西,我們改不了),能做只是預(yù)處理和后期矯正,能做的還是比較有限的。但是,如果自己不想花大量時間做OCR模型并且手上有錢的話,這種識別方法還是OK的。 上面提到的都是用的是別人的東西,那我們想從頭自己做,咋辦? 那就自己做吧!先談一談字符模板那匹配法。暴力的字符模板匹配法看起來很蠢,但是在一些應(yīng)用上可能卻很湊效。比如在對電表數(shù)字進行識別時,考慮到電表上的字體較少(可能就只有阿拉伯?dāng)?shù)字),而且字體很統(tǒng)一,清晰度也很高,所以識別難度不高。針對這種簡單的識別場景,我們首先考慮的識別策略當(dāng)然是最為簡單和暴力的模板匹配法。我們首先定義出數(shù)字模板(0~9),然后用該模板滑動匹配電表上的字符,這種策略雖然簡單但是相當(dāng)有效。我們不需要左思右想去建模,訓(xùn)練模型,只需要識別前做好模板庫就可以了。 模板匹配法只限于一些很簡單的場景,但對于稍微復(fù)雜的場景,那就不太實用了。那此時我們可以采取OCR的一般方法,即特征設(shè)計、特征提取、分類得出結(jié)果的計算機視覺通用的技巧。在深度學(xué)習(xí)大放異彩之前,OCR的方法基本都是這種方法,其效果嘛,并不算特別好。在這里簡單說一下這里常見的方法。第一步是特征設(shè)計和提取,特征設(shè)計是一件很煩人的事情,做過模式識別相關(guān)項目的童鞋也深有體會,我們現(xiàn)在識別的目標是字符,所以我們要為字符設(shè)計它獨有的的特征,來為后面的特征分類做好準備。字符有啥特征呢?有結(jié)構(gòu)特征,即字符的端點、交叉點、圈的個數(shù)、橫線豎線條數(shù)等等,都是可以利用的字符特征。比如“品”字,它的特征就是它有3個圈,6條橫線,6條豎線。除了結(jié)構(gòu)特征,還有大量人工專門設(shè)計的字符特征,據(jù)說都能得到不錯的效果。最后再將這些特征送入分類器(SVM)做分類,得出識別結(jié)果。這種方式最大的缺點就是,人們需要花費大量時間做特征的設(shè)計,這是一件相當(dāng)費工夫的事情。通過人工設(shè)計的特征(例如HOG)來訓(xùn)練字符識別模型,此類單一的特征在字體變化,模糊或背景干擾時泛化能力迅速下降。而且過度依賴字符切分的結(jié)果,在字符扭曲、粘連、噪聲干擾的情況下,切分的錯誤傳播尤其突出。針對傳統(tǒng)OCR解決方案的不足,學(xué)界業(yè)界紛紛擁抱基于深度學(xué)習(xí)的OCR。 這些年深度學(xué)習(xí)的出現(xiàn),讓OCR技術(shù)煥發(fā)第二春?,F(xiàn)在OCR基本都用卷積神經(jīng)網(wǎng)絡(luò)來做了,而且識別率也是驚人的好,人們也不再需要花大量時間去設(shè)計字符特征了。在OCR系統(tǒng)中,人工神經(jīng)網(wǎng)絡(luò)主要充當(dāng)特征提取器和分類器的功能,輸入是字符圖像,輸出是識別結(jié)果,一氣呵成。當(dāng)然用深度學(xué)習(xí)做OCR并不是在每個方面都很優(yōu)秀,因為神經(jīng)網(wǎng)絡(luò)的訓(xùn)練需要大量的訓(xùn)練數(shù)據(jù),那么如果我們沒有辦法得到大量訓(xùn)練數(shù)據(jù)時,這種方法很可能就不奏效了。其次,神經(jīng)網(wǎng)絡(luò)的訓(xùn)練需要花費大量的時間,并且需要用到的硬件資源一般都比較多,這幾個都是需要考慮的問題。 在一些簡單環(huán)境下OCR的準確度已經(jīng)比較高了(比如電子文檔),但是在一些復(fù)雜環(huán)境下的字符識別,在當(dāng)今還沒有人敢說自己能做的很好。現(xiàn)在大家都很少會把目光還放在如何對電子文檔的文字識別該怎么進一步提高準確率了,因為他們把目光放在更有挑戰(zhàn)性的領(lǐng)域。OCR傳統(tǒng)方法在應(yīng)對復(fù)雜圖文場景的文字識別顯得力不從心,越來越多人把精力都放在研究如何把文字在復(fù)雜場景讀出來,并且讀得準確作為研究課題,用學(xué)界術(shù)語來說,就是場景文本識別(文字檢測+文字識別)。 1) 辦公自動化 工廠企業(yè)、公司及事業(yè)單位的日常辦公用文件及資料等需要輸入計算機存儲檢索。使用OCR,既比存儲圖像文件大大地節(jié)省存儲量,又不需要專職錄入人員,是減輕勞動量、節(jié)約資金、提高辦公效率的最好措施。 2) 建立中文資料庫 要大量輸入各種文書、刊、報及文件,使用OCR可以縮短建庫時間,減輕勞動強度,降低費用。 3) 打字公司、書刊出版社、報社等 使用OCR可以自動錄入已經(jīng)出版的文章和打印文件,稍加修改編輯成新文章或再版己有書刊。OCR輸出的標準漢字代碼文件可為大多數(shù)中文處理系統(tǒng)、輕印刷系統(tǒng)、照排系統(tǒng)所接受,可重新打印、印刷輸出。 4) 圖書館、文獻中心 用本系統(tǒng)自動錄入圖書有關(guān)信息,可建立書目數(shù)據(jù)庫自動錄入經(jīng)典圖書全文,將紙上文字轉(zhuǎn)移到計算機內(nèi),便于保存、查找、檢索,更大的好處可以提供給專家用計算機對書籍內(nèi)容進行研究。 5) 機器翻譯機器翻譯的第一步是將全文輸入計算機。利用OCR可以將機器自動翻譯相匹配,實現(xiàn)高速自動翻譯。 6) 個人使用 當(dāng)您閱讀資料時,可用OCR將您感興趣的段落自動錄入。特別是作家,利用本軟件可以將一些書載歷史資料或文獻快速錄入到計算機內(nèi)。 |
|
|