OCR(汉字光符阅读器)
本文轉至:http://blog.csdn.net/byxdaz/article/details/469548
3 漢字光符閱讀器——印刷漢字識別
3.1 從超市收款機說起
“光符閱讀器”全稱是光學字符閱讀器,其英文縮寫是OCR (Optical Character Reader,簡記為OCR)。它是指將印寫在紙上的字符借助光學方法變換為電信號后,用計算機進行自動識別(閱讀)的裝置。
光符閱讀器的類型很多,用途也很廣,和我們每個人的日常生活與工作都有直接或間接的、千絲萬縷的關系。到超市購物,付款時收款員把貨物在收款臺上一個發亮的小窗口照一照,或者用一支手提掃描儀在貨物上“掃”一下,隨著“吱”的一聲,貨物上的“條碼”便被光符閱讀器所識別,把品名、價格和其他數據記錄下來。這種用于識別條碼的裝置叫做“條碼識別器”。顯然,這種收款方式十分方便、快捷、準確。收款員可以不必牢記成千上百種貨物的名稱和價格,也不必敲鍵盤,既減輕了負擔,又提高了效率。可以毫不夸張地說,如果沒有這種自動記賬收款的光符閱讀器,巨型的超級市場是難以在商場上生存的。還值得指出的是:如果把光符閱讀器輸入的銷售數據再用計算機進行統計、分析,則不但可以迅速得出有關營業額的各種數據,有時還可能獲得意想不到的結果。讀者會記得本書第1章談論過轟動國際棋壇的“人機大戰”。棋王卡斯帕洛夫戰敗后很不服氣,多次希望能跟“深藍”計算機再做另一次決斗。但是“深藍”負責人譚崇仁和許峰雄兩位工程師明確表示,他們研究“深藍”的真正目的不是為了下棋,而是探索如何利用“并行處理”方法解決復雜問題。他們舉了一個淺顯而有趣的例子來說明“并行處理技術”在處理大量數據時的強大功能。這個例子說的是“一家超市的分析員用電腦分析超市產品搭配出售的規律,其中有一個結果竟是:顧客在買尿布的同時有極大的幾率買啤酒。繼續分析發現,這種現象大多發生在晚上6點鐘前后。分析員對這種情況茫然不解,反復思索無法得出合理解釋,最后親自跑到超市觀察,結果發現,原因是有一些家庭,妻子在家發現小孩的尿布不夠了,請丈夫下班回家順便到超市買,丈夫則順便買了一些啤酒回家。從此,這家超市的尿布區總擺一些啤酒,方便買尿布的先生們”。譚崇仁工程師舉這個例子是為了說明具有并行處理功能的大型計算機在處理大量數據時比人腦好使。但它也表明:收款機的條碼識別器也是處理系統的一個重要環節,計算機要先輸入大量的數據,才能進行處理,否則就成為無米之炊。
印刷漢字識別系統是光符閱讀器的一種。它的用途也是借光學方法把方塊漢字圖形變換為電信號、經識別后自動地錄入計算機,為后者提供進一步處理的資料。
漢字錄入原來是中文信息處理的瓶頸,曾經是計算機能否在我國廣泛應用的“攔路虎”。20世紀80年代以后漢字鍵入和筆輸入(聯機手寫漢字識別系統)研制成功并付諸實用,漢字錄入問題在一定程度上得到解決。但是這兩種方法都是人工錄入,費時費力,對于已寫好的手稿或印刷材料,特別是大量報刊及古往今來的典籍,人工錄入不但速度慢、效率低,而且要花費大量人力。利用脫機漢字識別系統(即光符閱讀器)自動錄取,可以得到事半功倍的效果。就如超市收款員用“條碼識別器”那樣,只需“舉手之勞”,就可以把大量的漢文信息錄入計算機,然后按需要進行相應的中文信息處理,如機器翻譯、摘要提取、建立中文數據庫,以及在網上發布信息等等。這種類似的裝置也可用于郵局信函自動分揀,或用于銀行的統計作業等方面,既節省大量人力,也提高處理速度。它是現代信息領域具有廣泛應用價值的技術裝備之一。
3.2 脫機漢字識別的困難
脫機漢字識別的工作原理大體上和收款機的條碼識別器相同,都是先把印在紙上或貨物上的符號變換為電圖像信號,再進行處理、識別。但是漢字識別的識別對象種類(字量)更多,結構也更復雜,因而識別系統必須考慮的問題更多,困難更大,曾經被認為是模式識別領域最為困難的問題之一。經過國內外科技工作者30多年的艱苦努力,近幾年來才得到較好的解決。
首要的問題是:漢字識別的對象是幾千個(種)方塊漢字。從模式識別的觀點上說,這是一種超多類的模式集合,已有的適用于模式類別較少的識別方法和理論已不完全適用。具體地說,計算機認某漢字時應把這個漢字跟字典中每個標準漢字逐個比較,找出其中最相似的字作為識別結果,漢字字量越多,認字的速度越慢。如果識別速度過低,不能滿足實際應用的要求,使用價值就不大。這是超多類模式識別的重要問題之一。通常這個問題可以采用多級分類的辦法來解決:先按某種準則把所有漢字分成若干個子類(叫做候選類),再把待識漢字跟它所屬子類中的每個標準漢字匹配比較,求得最相似的標準漢字。由于各個子類中的漢字字數較少,識別速度可以提高。這種方法和通常查字典相似:先按部首分類,再找所需的單字,而不必從頭到尾把整個字典查一遍。
但是,上述先粗分類的辦法在漢字識別中也有困難。原因是:如果粗分類發生錯誤,就一定得不到正確的結果。這和查字典的道理也是一樣的。通常漢字的部首也很難找,部首找不到或者找錯了,要查的字就難以找到。識別速度和識別率(質量)是一對天生的矛盾,速度提高了,質量很容易受到影響。在類別很多的漢字識別系統中這個問題尤為突出
漢字識別中遇到的另一個困難是字體多。其實對于人來說,字體不同,特別是印刷字體不同,對認字似乎并沒有什么影響。因為不同字體的同一個印刷漢字,其拓撲結構絕大多數是相同的,只是筆畫粗細、形態、長短及位置略有差異而已。但是,現代計算機的智能并不高,還沒有“去粗存精、去偽存真”的能力,往往把不同字體的同一個漢字看做是不同的字。在漢字識別系統中為了解決這個問題,不得不在字典中采用多模板的方法,把不同字體的同一個漢字用幾種標準模板來代表;對某個漢字進行識別時,只要其中一種標準模板和待識字最相似,就判決為所需的漢字。顯然這是一種比較笨拙的辦法,其影響是增加了字典中的模板數量,這相當于增加了識別系統的字數。既增加了系統的復雜性,又降低了識別速度。漢字識別系統所應識別的字數本來就很多,由于字體不同使實際的識別字典容量成倍地增加,困難很大。顯然解決這個問題的較好方法是努力提高計算機的“智能”,精心選擇用于識別的特征,使其適用于多字體的漢字識別。這是本書將要討論的主要問題之一。
漢字識別的另一個突出困難是:結構復雜,相似字又很多,這也是一對矛盾,已有的結構識別法和統計識別法都難以很好地解決所有漢字的識別問題。采用結構法可以照顧到漢字字形中的細微結構,有利于相似字的識別,但它卻容易受干擾的影響,即抗干擾性能差。統計法的特點與此相反。
手寫字的字形問題更多,本書第2章“筆輸入”對此已有.所論述。但脫機手寫漢字識別的問題跟聯機識別不完全一樣,后者在輸入漢字字形時已由書寫板在書寫過程中將各筆畫逐一分開,脫機手寫漢字識別的識別對象仍是方塊漢字的二維圖形,同一個字不但字形不盡相同,拓撲結構也可能不一樣(參看圖2.2),因而困難更大。為了區分手寫漢字的工整程度,目前我們把它分為兩種類型,一種叫做“限制性手寫漢字”,要求用戶書寫工整,盡量做到筆畫橫平豎直,不連筆。另一種是“非限制性手寫漢字”,用戶可以按自己的習慣書寫,不受限制或少受限制。這種字體大體上相當于行書和草書。日常生活中有的人書寫相當潦草,有的字甚至很有文化素養的人也不一定能看懂,讓計算機識別就更是難之又難。因此當前聯機手寫漢字識別研究,還限于對“限制性手寫漢字”的研究。此外,所謂“限制性”的提法過于籠統。為了研究工作的需要,國內外有關單位編制了一些“手寫漢字庫”,這一問題在第4章“脫機手寫漢字識別”中再作討論。
漢字識別還有一些其他的問題。第一,我國的出版物雖然以漢字為主,但經常也有西文、日文和各種數碼符號。不同文字符號混排在同一頁面上,必定會使識別難度大大增加。其次,印刷質量對識別結果也有直接影響。實踐證明,好紙鉛印的書刊,其識別率大都可以在99%以上,印刷質量差的文件識別率顯著下降。目前由于傳真機廣泛使用,對識別傳真材料的要求越來越迫切,但傳真文件的質量較低,識別率很難提高。這是我們進一步擴大脫機印刷漢字識別的應用領域所必須解決的另一課題。
漢字識別的研究范圍及其困難程度可以用圖3.1的三維空間來表示。圖中三個坐標分別是文字數量、文字類型和版面質量。三維空間上的每一點代表該處的識別難度。顯然離開原點越遠,研究難度越大。例如版面質量差的脫機手寫漢字識別難度最大,因此我們將專辟一章來討論這個問題。
3.3 漢字OCR系統的構成
第1章中我們簡要地介紹了漢字OCR的工作原理。作為一個實用的漢字識別系統,應該考慮的問題還很多。這些問題主要有:如何把印(寫)在紙上的方塊漢字送入計算機?計算機能否同時識別印在同一頁面上的成百上千個大小不同的漢字?如果不能,必須怎樣處理?更重要的問題是:怎樣建立識別字典?在建立好字典之后,怎樣利用它來進行識別?識別結果如何輸出?如果識別中有錯誤,能否自動糾正,如何糾正?等等。
上面列舉的問題非常具體,也十分重要。但是在這一章中我們還不能全面、詳盡地給予回答,只能進行一些原則性的討論,使讀者對漢字OCR的基本構成和工作原理有進一步的了解。
按照上面所列舉的問題,一個漢字識別系統大體上可分為輸入、預處理、識別、后處理和輸出共五個部分,如圖3.2的框圖所示。本章著重討論預處理,識別和后處理三部分的作用和工作原理。
1)預處理模塊
脫機漢字識別系統的對象是印(寫)在紙上的文字。它的輸入裝置可以是掃描儀、傳真機、一般攝像機或數字相機等。這些輸入裝置通常把印在紙上的圖文整頁地輸入計算機。“預處理”的主要作用不但要把頁面上的圖文分開,還必須把所有文字逐個分離。圖文分離的問題留在第5章去討論,這里先討論行、字切割。
我們曾反復指出:計算機的主要特點是處理速度快,但智能不高。它“閱讀”書面材料不能“一目十行”,只能一個字一個字地辨認,因而對輸入計算機的文本需進行“行切割”和“字切割”。
圖3.3和圖3.4分別給出行切割和字切割方法的示意。圖3.3(b)是被識別的文字片段,共八行,圖3.3(a)是各行文字在水平方向的投影。在正常情況下,各行文字的投影之間有一空隙。利用這些間隔可以實現行切割,把各行文字分開。同理把每一行文字向垂直方向投影也可以得到如圖3.4的投影圖。漢字通常是矩形,彼此間有間隔,因此利用各行的垂直投影進行字切割也不困難。但是如果漢字和數碼、特別是和西文拼音文字混排時,漢字和它們的切分就比較麻煩。這個問題以后將再討論。
?
應該指出:在同一頁面上的印刷漢字可能有大小不同的字號,其點陣圖像的大小也不相同。歸一化模塊的作用就是使它們大小劃一。通常歸一化為128×128,96×96,64×64點陣等等。如果歸一化的方法不夠好,歸一化后的點陣圖形將有失真,對識別性能將有影響。字、行切割和歸一化等處理屬于識別系統的預處理工作,經預處理得到各個單字之后,才可以進行識別。
2)識別模塊
前面講過,正確識別率、識別速度和設備復雜性是漢字識別系統的三個基本指標,它們有著彼此相關但互相矛盾的聯系。當前計算機的“智能”不高,識別方法還較“笨拙”。對某一待識字進行識別時,一般必須將該字按一定準則,與存儲在機內的每一個標準漢字模板逐一比較,找出其中最相似的字,作為識別的結果。顯然,漢字集合的字量越大,識別速度越低。為了提高識別速度,常采用樹分類,即多級識別方法,先進行粗分類,再進行單字識別。因此圖3.2中的識別模塊包含粗分類和單字識別兩部分。粗分類的作用是把整個漢字集合劃分為若干個較小的子集,叫做候選集。有時有的候選集中的字數較多,還可以進行第二次粗分類,使候選集的字數進一步減少。這樣的識別方法通常叫做樹分類法,它好像是一棵樹,整個漢字集合是樹根;然后有樹干和樹枝,最后的樹葉就是單字(圖3.5 )。順便指出,這種具有多層分類結構的識別方法,對粗分類特征的要求更高,因為如果粗分類錯誤,影響很大。這和查字典一樣,如果部首錯了,想查的字一定查不到。這個問題以后還會講到。
3)后處理模塊
后處理模塊的作用是對單字識別器的輸出進行校對、糾錯,以提高整個系統的正確識別率。
后處理糾錯方法可以是人工的,也可以是自動的。
人工校對方法一般需對識別輸出的文字從頭至尾地閱看;檢出錯識的字,再加以糾正。這樣做效率很低;為了提高人工糾錯的效率,在輸出的顯示器中往往把錯識可能性較大的單字用特殊顏色加以標示,以引起用戶注意,同時把輸入文件的相應部分顯示在屏幕上,以便用戶對照校正。自動檢錯是理想的方法。這種方法對拼音文字比較適宜。目前的文字處理器一般都附有這種自動檢錯裝置,以校正拼寫錯誤(Spelling Check).漢字識別系統原則上也可以利用漢語的組詞規律和上下文關系來發現并糾正識別中的錯誤。但由于漢語的構詞規則相當靈活,很不規范,目前采用這種方法來實現后處理自動糾錯還有困難。這個問題在第5章中將再討論。
上面扼要介紹了脫機漢字識別系統的構成及各模塊的作用。下面各節將介紹幾種典型的漢字識別系統,著重討論選擇識別特征的原則和提取方法,并比較它們的優劣,最后介紹國內外有關研究工作的進展和我國所做成果和貢獻。
3.4 第一個實驗性印刷漢字識別系統
印刷漢字識別研究于20世紀60年代逐漸受到人們的重視。較早從事漢字識別研究的是美日等國的一些大學和企業。IBM公司是信息領域的老牌企業,對人機接口問題尤為關注。上一章中我們已經介紹他們研制的一種筆輸入——聯機手寫漢字識別系統;在脫機漢字識別方面他們也早就開展研究工作。國際上第一篇關于印刷漢字識別研究的論文就是該公司兩位學者R.Casey和G.Nagy撰寫的。1966年他們在IEEE"電子計算機”雜志EC發表了一篇關于印刷漢字識別研究的文章,序言中著重談論了研究這個問題的原因。他們說:“中國正在迅速發展成為出版大國之一。對于關注中國各種活動的美國翻譯人員來說,把中文資料翻譯成英文已成為越來越艱巨的任務”。他們接著說:“據審慎估計,1962年的漢英翻譯約為350萬字,而情報部門當年的預測是3440萬字,這個數字今后每年還將以25%的速度遞增,即約每三年翻一番”。為了適應這種情況,該公司當時就成立了一個情報小組,專門從事收集、研究中國的出版資料、并制訂有關漢字識別和漢英翻譯的研究計劃。這種深謀遠慮的周密安排和對基礎研究的重視,是值得我們認真學習的。
Casey等在文章序言中特別強調漢字自動輸入的重要性。他們指出,如何把大量的中文資料變換為便于計算機處理的編碼是最大的障礙。當時的中文打字機每分鐘只能錄入12個漢字,遠遠低于英文打字速度。因此,即使英漢翻譯的問題解決了,包括漢字錄入在內的整個翻譯系統還只是一個有“殘疾”的系統。毫無疑問,漢字自動錄入是一個極其迫切的必須解決的問題。20世紀60年代那些歲月,我們的矛盾很多,無暇顧及科研的事,有的人甚至對漢字是否有存在的價值也提出疑問。相反,國外不少有識之士對中文及中文信息處理的重要性卻十分重視。這種遠見卓識,值得我們深思。
書歸正傳,下面就來介紹IBM研制的印刷漢字識別系統,以及與此有關的一些問題。
Casey等用于漢字識別研究的漢字只有1000個,是紐約一家印刷公司提供的仿宋體(單體)印刷漢字。每個字各有20個樣本,其中10個樣本用于制作“字典”,叫做“訓練樣本”;10個用作試驗,以評定系統的優劣,叫做“試驗樣本”。為了提高識別速度,系統采用三級:前兩級為粗分類,第三級是單字識別。因此識別系統的字典需要用兩種粗分類特征和一種單字識別特征,分別用于第一、第二級粗分類和最后的單字識別。
方塊漢字是由筆畫組成的象形文字,含有豐富的結構信息。漢字識別研究初期,以筆畫為基元的結構識別法是一種較常用的方法。1929年G.Tausher“閱讀機”的掩模就是直接根據字符而制成的,也是采用了結構識別法。但是漢字筆畫多,結構復雜,字數也很多,直接用漢字的點陣字形(筆畫、部首或單字)來制作模板時,字典的數據量將十分龐大,這在當時的技術條件下是難以實現的,必須設法對特征的數據量加以壓縮。這個問題,今天仍然存在。和30年前相比,當前計算機的水平雖然已大大提高,存儲器的容量也呈數量級地增大,但是在保證識別系統性能要求的條件下,盡量壓縮字典的數據量,以降低整個系統的復雜性和成本,并提高識別速度,仍然是應該努力的方向。
如何設計字典的模板是Casey等研究工作重點之一。當時他們所采用的方法在原理上基本跟Tausher閱讀機的模板法相同,屬于典型的結構識別法。用于第一級粗分類的特征跟一般字典的部首相同,也叫做部首。他們提出一種叫做“窺視孔”的辦法來壓縮模板的數據量。
其設計方法是:將部首相同的10個標準漢字(訓練樣本)的點陣圖形疊加在一起。假設在同一位置(x,y)上的黑像素數為N,采用其中N值為最大的50個像素點作為該部首的標準模板,圖3.6是部首“阝”的模板。第二、第三類模板的設計方法與此相似。在識別時,先用所有粗分類模板逐一跟試驗樣本的點陣圖形進行比較、匹配,以確定該待識漢字屬于哪一種候選類。然后再用該候選類的各個單字識別模板,依上法逐字進行匹配,得到最后的單字識別結果。
Casey等設計的字典有三套標準模板。第一套是部首模板,共39種,用來對1000個漢字按部首進行粗分類:最小的候選類有5個漢字,最大的有60個漢字,不屬于這39種部首的漢字還約有300個;Casey等用第二套粗分類模板,把這300個字又分為25類。因此1000個漢字可分為64個候選類,每一子類中的漢字都較少、便于提高單字識別速度。第三套模板是單字識別模板,每個漢字各有各的識別模板,共有1000種。單字識別時只需對候選類中的字逐個加以比較匹配,就可以找出相同(或最相似)的字作為識別結果。
Casey等研制的漢字識別系統對1000種漢字(共5000個樣本)的試驗結果是:正確識別率為91.8%,誤識率為1.2%,拒識率為7%,識別速度為3400字/分,這在30年前是相當滿意的結果。他們提出的識別系統的構成框架(包括粗分類、單字識別,以及分類模板的提取與匹配、判別等)基本上也是合理的。由于條件限制,他們所用的漢字較少,提取樣板的方法也比較煩瑣,因此,當字量增大,字體不同或漢字點陣圖形有位移時,這種簡單的模板匹配法就很難適用。識別字典是所有模式識別系統的核心。近20多年來,我國學者在漢字識別研究工作中取得的成果,主要是我們能更好結合方塊漢字的特點,選用一些好的特征(模板),大大提高了識別系統的性能,使它適應實際情況,達到實用化的要求。
IBM公司是信息產業的巨擎,雖然未見有漢字識別的產品問世,但近年來在漢語話音識別方面卻已取得突破性的進展,以Via Voice為商標的漢語連續話音識別軟件已開發成功,其產品已在我國大量銷售。這種軟件不但能識別我國的普通話,也能識別上海話、廣東話等方言,識別率達90%,是一種較為理想的漢語錄入手段。我國研究話音識別的單位為數不少,時間也較長。近年來,在連續話音研究方面有些單位也已取得很好成果,技術上處于國際先進行列,但遲遲未能轉化成實用產品。目前我國話音錄入市場,幾乎由IBM公司所獨占。這種情況是令人擔心的。
3.5 能識別6763個印刷漢字的系統
1986年11月我們研制成功一個采用結構特征、能識別GB 2312-80《國家標準信息交換編碼——基本集》的6763個宋體漢字的實驗系統。這是我國在漢字識別研究工作的第一次突破。識別字數多達6763個的情況,當時還無先例。初戰告捷,對我們是極大的鼓舞。
日本也是使用漢字的國家,技術發達,對漢字識別的研究較早。1977年東芝公司宣布采用專用大型機,研制成功能識別2000個印刷漢字的系統;1985年8月日本電話電報公司(NTT)又宣布制成4000個多體印刷漢字識別系統,輸入樣張采用專用OCR紙印刷,售價3550萬日元。這大體上代表了當時國際上漢字識別研究的水平。由于日本使用的漢字字量較少(教學用字881個、日常用字為1850個,標準字2669個),他們研制的系統的識別字數不多,適合于他們的需要,卻較難直接為我所用。我們必須識別的漢字字量,比日本多2~3倍,是一種超多類模式識別。實踐證明,能用于模式類較少的識別特征,不完全適用于我國的情況。更有甚者,當時我們使用的是和IBM-XT差不多的長城0520機,內存小、速度低,跟日本的專用大型機相比,真是大巫小巫之別。“殺牛只有雞刀”,似乎難于想象。但是,我們是漢字的祖國,對它最為了解,應該最有責任和能力解決漢字識別以及各種中文信息處理的問題。事實也證明我們能夠解決這些問題。經過短短幾年的努力,1986年我們終于研制成功一個能識別6763個漢字(國標GB2312-80的兩級漢字)的系統。在此期間,哈工大、清華計算機系和沈陽自動化所也分別研制成功國標一級3755個漢字的識別系統,總參通信部和中科院自動化所合作研制的聯機手寫漢字識別系統也宣告成功,并付諸應用。從此我國漢字識別研究終于在國際上占有一席之地,為境內外同行所矚目。
6763個單體印刷漢字識別系統研制成功,在我國漢字識別研究的發展歷程中具有一定的代表性。圖3.7是該系統的框圖。待識別文件逐頁由掃描儀輸入計算機,然后,用投影法確定每一行和每個字的位置,進行“行分離”和“字分離”。這種方法用于方塊漢字識別比較簡單,文件頁面發生傾斜時所產生的旋轉失真也很容易校正。
本系統采用結構識別方法,其原理圖如圖3.7所示。系統共有三級,前兩級為預分類,第一級按漢字邊框特征把6763個字分成21大類,第二級按漢字局部特征把每一大類分別再分為若干小類。每一小類的字數較少,便于提高單字匹配、識別的速度。
單字識別特征庫中存儲著每個漢字的端結點特征(單字識別模板)。當待識字X的特征F和參考模板S的相似度為最大時,即判定X為模板S所對應的字。識別結果可打印輸出,或以指定的編碼存儲在計算機中。待識字的圖形和識別結果分別顯示在屏幕上,兩相對照,可立即判定識別是否正確。
如何選擇識別特征,使系統在以0520機為主機的條件下,具有較高的識別率和識別速度,是我們研制工作成敗的關鍵。
為此,我們在借鑒國內外已有識別方法的同時,特別注意研究方塊漢字的結構,力求從中取得較好的特征。我們認為:其一,采用部首(邊框)特征把6763個漢字的集合先粗分為若干個較小的候選集是較好的方法,但Casey等所用的部首較少,提取也很麻煩,必須加以改進。其二,由于本系統的漢字字量多達6763個,經第一次粗分類后各子類的字數仍然較多,必須加以細分,使候選類字數進一步減小,才能保證識別速度進一步提高。其三,利用端結點進行單字識別,雖然前人已證明是一種較好的方法,但仍須進行大量優化工作,以減小特征庫的容量。基于上述三點,經過分析試驗,我們提出三種反映漢字結構規律的特征來實現漢字的預分類和單字識別:
1)邊框特征(部首)及第一級預分類
人認字的過程大體上是由外及里,從粗到細,逐步分析、
比較、鑒別,然后確認待識的字。例如對“回、四、囚、圍”、“隊、限、除、陪”、“艾、芝、若、蘋”、“鄧、那、邯、部”等字,一般是先找出它們“邊框”的偏旁、部首,再區分它們的局部結構和細節。根據這種想法,我們選擇反映漢字四邊結構的邊框特征,作為第一級預分類的參量。利用部首把眾多的漢字加以預分類,便于檢索查找,是一種傳統的、行之有效的提高查字速度的方法。但是我國字典的部首很多,有的比較簡單,有的非常復雜,規律性也不強,直接采用一般字典的部首作為特征是不合適的。我們在對邊框結構進行仔細分析之后,定義了20種適用于第一級預分類的“部首”。這些“部首”可以分為三種類型。一種跟字典的部首相同,如“亻”、“土”、“艸”等;另一種則跟字典部首相似,如“礻”、“衤”合并為一種部首,不加區分;第三種“部首”則是將字典的部首簡化,去掉其中影響不大的筆畫,或只取具有特點的部分,例如把原來的“雨”、“西”等部首簡化為“一”部。
按照上述辦法選取的邊框特征,不但提取方便,而且可靠性和穩定性都很好,預分類所有各子類的字數分布也比較均勻。但第一級分類后,每一大類的字數仍有幾百個,這是超多類模式識別共同的困難問題。這個問題需再用第二級預分類加以解決。
2)局部特征和第二級預分類
如何選用第二級分類的特征是一個困難的問題。經過對方塊漢字結構進行細致的研究,我們發現,漢字有一些局部結構,可以作為第二級分類的特征,這種特征是由橫豎筆畫組成的簡單圖形,如“口、日、汗、田”等,共8種。
利用局部特征進行第二級分類,可以把不同部首的每一類漢字,再細分為若干小類,每一小類的字數大大減少。其中最大一個小類的字數有177個,最小的是4個,這是相當滿意的結果。
3)端點、結點特征和單字識別
本系統的第三級是單字識別。按照“從粗到細”的認字過程,我們選擇反映漢字細節結構的筆畫端結點作為識別匹配的參量。這種端結點共13種。每個字的筆畫及相互關系,都可以用這些端結點來表示。在設計單字識別模塊時,對這些端結點應加以優選,在保證足夠高的正確率條件下,盡量減少其數目,以減少特征庫的容量和匹配的計算量。
本系統端結點特征庫的容量約為500kB,比6763個漢字(每個字為40×40點陣)的庫容量約少2/3。
采用上述結構特征研制成功的漢字識別系統,能識別國標6763個宋體印刷漢字,正確識別率達98%;對一些字形相似的字,如“巳已己”等,也能正確識別;但識別速度還較慢,用長城0520計算機作為主機時,每分鐘只能識別30個字左右,低于當時用鍵盤輸入的速度。但是,無論如何,這是我們第一個研究成果,而且是一個識別字數達6700多個漢字、接近實用化的成果,這大大加強我們的信心。之后,又經過三年的努力,終于使我們研制的產品達到實用要求,初步解決了把漢字印刷文件自動、高速地輸入計算機的難題,成為“建立漢字數據庫三大技術裝備之一”;再后,又經過幾年的艱苦奮斗,以TH-OCR為注冊商標的印刷漢字識別系統被評為1994年全國十大電子科技成果之一。其產品遠銷海內外,包括美歐各國。我們為中國在信息科技領域中占領漢字識別這一陣地爭得了一份榮譽。
3.6 讓漢字光符閱讀器變得更聰明—關于多體漢字識別
上兩節介紹的漢字OCR采用的都是“結構識別法”。這種方法的工作原理簡明易懂,也反映了方塊漢字的特點。但漢字結構復雜,脫機識別時筆畫提取很不容易,抗干擾性差;當質量較差的印刷品中的漢字出現筆畫粘連或斷裂時,容易造成筆畫提取錯誤;由于采用按層次順序串行的判決方法,依次對各個子任務進行認別,故任何一次誤判都將把整個判決引入歧途,造成識別錯誤。這是結構法主要缺點之一。
1986年我們研制成功能識別6763個宋體漢字識別系統之后,就發現這一系統很難推廣用于其他的字體,特別是楷體的識別。它似乎還比較“笨”,不能“舉一反三”。用于識別楷體印刷漢字時,識別率顯著下降,只有80%左右。對這個問題我們曾反復進行分析研究,終于對問題有所認識。一方面,原來用于識別6763個漢字的系統是針對宋體漢字的字形進行訓練的,識別特征的選擇與優化較適合于宋體的情況。楷體漢字的拓撲結構雖然和宋體相同,但它們的形態有較大差異:宋體字的筆畫橫平豎直,楷書筆畫則具有一定的弧度,筆畫提取比較困難。
怎樣才能使漢字OCR變得更“聰明”,能“去粗存精,去偽存真”,既能識別宋體字,也能認識其他字體的漢字呢?從技術上說,識別系統能否只用一個“字典”就可以識別幾種不同字體的漢字呢?在20世紀80年代這是一個有爭論的、困擾我們的難題,是漢字OCR走向實用化道路上的巨大障礙。如果這個問題不能很好解決,那么漢字OCR就很難在實際上推廣應用。
當時解決這個問題有兩種截然不同的策略。
一種想法是:在一個漢字OCR中設置若干個字典,分別用于識別不同字體的單字。因此對文件中的文字進行識別時,要先識別待識漢字的字體,再調用相應的字典對它進行識別。這種方法曾用于某些英文OCR,取得較好的效果。據說英文字母的字體有1700余種、各種字體的差別也較大。有大寫與小寫,拉丁體與希臘體等等。字體不同的字母,不但筆畫形態不同,其拓撲結構也不一樣,因而英文OCR系統采用先識別字體、再用相應的字典來識別字母的方法是合適的。漢字的情況不太一樣。我國主要的印刷字體有宋、仿宋、黑和楷體四種,它們的拓撲結構是相同的,只是筆畫粗細和形態等不太一樣而已。因此不但漢字字體的識別相當困難,從設備復雜性的觀點看也不恰當,采用多字典識別方案時,每種字體都需用一套識別字典和相應的匹配判決機構,這顯然是很不合算的。
解決這一問題的另一途徑是:采用單一字典來識別多種字體的漢字。我們提出這種策略是有根據的,也是可行的。這是因為,前面多次提到:各種字體同一個印刷漢字的拓撲結構是相同的,只是筆畫的形態、粗細、長短和位置略有差別而已。只要我們能夠找出這些細小差異的變化規律,建立相應的方塊漢字圖形的模型,并找出描述該模型的特征,就能夠制成可以識別多體漢字的字典,并保證識別系統具有足夠高的識別率。
基于這種思想,我們把形態多變的漢字筆畫分為形態基本不變的筆段(叫做結構元),每一筆畫由若干結構元組成。在單字中各結構元之間有一定的統計關系:同一筆畫的結構元彼此的相關性最強,部首相同但筆畫不同的結構元的相關性次之,不同部首中的結構元的相關性最小。這些關系可以由實驗方法求得,并以相關系數來表示。這樣,方塊漢字的圖形便可以用結構元及其統計關系來描述。
上述方法較好地描述方塊漢字圖形的結構,特別是漢字內部的結構。但是實踐表明,只用一種特征來識別印刷漢字的識別率還不高。這是因為,只用一種特征很難全面反映所有漢字的特點,它所能利用的漢字信息量還有限。任何一種特征都有一些識別“死角”,即利用該特征仍難區分的漢字。解決這個問題的辦法是選擇另一種特征,其識別能力恰好和前一種特征“互補”。在我們的識別系統中我們發現,方塊漢字的周邊包含有很豐富的信息,可以用來作為識別的特征。基于這一概念,我們提出一種由“微結構特征”和“周邊結構特征”組成的新特征,加以優化,并把它叫做“組合優化特征”。采用這種組合特征,順利地解決了多體漢字識別問題,即只用一個特征庫就可以識別多體漢字。在工作中我們進一步認識到:不同字體的漢字圖形有所不同,實質上可以認為相當于某種字體的圖形加上一定的干擾。從這一觀點出發,我們又進一步加以深入研究,調整特征庫的特征,使識別系統在能夠識別多體漢字的同時,還具有更高的抗干擾能力。從某種意義上說,經過改進后的識別系統的“智能”有所提高,在一定程度上能夠“去粗存精、去偽存真”,變得更為“聰明”了。
技術上精益求精、系統性能不斷改進完善,使其更滿足實際應用的要求,是我們科技人員努力的標的;對于漢字識別來說,力爭這方面的研究工作由中國人自己更好、更快地完成,更是我們的職責。多體漢字識別問題雖然解決了,但擺在我們面前的問題還很多,中西文混排識別就是突出問題之一。隨著信息技術的發展,不同語言文化的交流日益增加,這個問題將越來越為突出。經過努力,中西文混排識別問題基本上解決了。我們利用漢字和拼音字母在字形上的差異,不但把它們相互分開,而且可以判定哪一個是漢字,哪一個是英文字母,然后用不同的字典,分別加以識別。圖3.8是漢英混排文字切分的例子。其中下面加圓圈字符被確定為英文并加以識別。
目前我國的漢字OCR技術已基本成熟。以清華大學電子工程系研制的“清華文通”公司出品的THOCR 7.5版本為例,其主要性能指標如下:
識別字體??簡/繁體漢字的宋體、仿宋體、黑體、楷體、魏碑、小姚等及其變體;十多種流行的英文字體以及數字與標點符號等。
識別字量??簡體3755個漢字,繁體5401個漢字及幾百個非常用漢字。
識別精度??質量好的簡體漢字99.17%;繁體字98.5%;日文98.3%。
識別字號??7號以上。
識別速度??大于100字/秒(主機為PⅡ/233)。
3.7 “研”以致用——把“智能”更高的漢字OCR投入市場
把性能更好的漢字OCR投入市場,實現印刷文件自動、快速地輸入計算機是我們始終不渝、為之奮斗的目標。經過約20年的努力這個目標基本上達到了。
我國的漢字OCR研究約始于20世紀70年代末。20年來的研究工作大致上可分為三個階段。
1)探索階段(1978~1985)
這一階段主要是學習和探索。日本也是使用漢字的國家,60年代以后他們在漢字識別方法研究方面做了很多工作,提出了多種識別方法和特征,如粗網格特征、外圍特征,筆畫復雜指數特征與四周面積編碼特征、基于筆畫方向的統計特征,以及筆畫密度特征等等;1985年以前日本也研制成功幾種OCR產品,但是系統容量只有2000個漢字,所采用的是專用計算機,價格昂貴,很難在我國推廣應用,他們所提出的特征和識別方法也很難搬用來識別我國的印刷文件。因而在這一歷史階段中,我國科技工作者除了借鑒國外的研究成果之外,主要研究如何根據我國情況,研究適合我國漢字字量更多,字體差別更大的識別方法。在這一歷史階段中,沈陽自動化所,清華大學計算機系、北京信息工程學院鄭州解放軍工程學院、河北大學、郵電科學研究院、南通電子技術應用研究所和哈爾濱工業大學等單位,都做了很多工作,發表了一些論文,研制了幾種模擬識別軟件或系統。這些奠基性的研究工作,揭開了我國漢字識別的序幕,為近10多年來的迅速發展打下了很好的基礎。
2)發展階段(1986~1990)
這是我國印刷漢字OCR技術發展的高潮期。在這幾年中,我國有11個單位研制的印刷漢字識別系統通過了技術鑒定,提出了多種較適用于我國印刷文件的識別方法和特征,如漢字特征點特征、周邊特征、脫殼透視分類法、漢字微結構特征、組合優化特征等等;有的試驗系統,能夠識別宋、仿宋、黑和楷體,識別字數最多達到6763個漢字、字號從3號到5號,對訓練樣張的識別率高達98.5%,采用286微機時識別速度達到10~14字/秒。但是這些成果絕大多數仍屬于實驗室的樣品,還不能在市場上付諸應用。特別是對真實文本識別率明顯降低,也不能適應實際文件中經常出現的各種不利因素,如印刷質量較差、筆畫粘連、斷筆、黑白不均、油墨反透等。應該強調指出的是:在這種情況下,有關領導單位的支持和應用部門的合作是極其重要的。1992年原國家科委組織清華大學電子工程系成立了“文通公司”,專門從事漢字OCR的銷售工作,有力地把漢字OCR推向市場;同樣重要的是,很多用戶在我國漢字OCR技術還不過關,其產品仍有不少問題時,積極購買、使用OCR來輸入漢字,并經常把工作中的問題向研制單位提出,共同研究改進提高的方法。如果沒有上面的領導和應用部門的支持,我國的漢字OCR技術是很難很快發展起來的。
3)走向成熟(1991~)
從90年代開始,漢字OCR技術進入一個關鍵的階段:將實驗室研究成果推向市場(表3.1列出了當時我國市場銷售的主要中文印刷體OCR系統),以更高質量在更寬的領域中推廣應用。能否實現這個目標取決于兩個重要因素。
其一,作為一個實用系統必須解決諸多實用中必不可少的問題,如版面的自動分析與理解,行、字的正確切分(包括漢西文字的切分),表格處理、后處理糾錯,以及良好的人機界面等等。進入90年代以后,在不同的研究單位中對這些問題做了不少研究工作,取得不少進展,在市場中初步形成幾種優選的系統,如清華大學電子系的TH-OCR、北京電信工程學院的BI-OCR和沈陽中科院自動化所的SY-OCR等。
其二,是如何進一步提高識別系統的正確識別率。這是問題的核心。當時國內幾個單位研制的漢字OCR對實際文本的識別率大多在98%左右,誤識率在2%上下,離理想要求10-4~10-5的誤識率相差1~2個數量級,如何進一步提高系統性能成為當時各方面關注的焦點。
當時解決這個問題有兩種方案。一是采用多系統集成的方法。1993年有關部門將THOCR-94、BI-4F、SY-OCR三個系統集成在一起,構成一個稱為“集成OCR”(型號為NI-OCR)的系統,它采用簡單的表決方案來確定整個系統的識別結果。實驗表明,集成OCR系統的正確識別率有所提高,誤識率有所下降,但改善程度只有1%的量級,很難達到表3.1??我國市場銷售的主要中文印刷體OCR系統誤識率降低至10-3~10-4的目標。更突出問題是:這種方法是以成倍地增加系統復雜性為代價的。從性能/價格比角度看,采用這種集成方案,特別是簡單的“投票”方法是不太可行的。
進一步提高識別率的另一種方案是繼續在改進識別方法和識別特征方面下功夫,使系統具有足夠高的“魯棒性”,能夠在使用環境較差條件下(如印刷質量較低、干擾較大、版面排版較為復雜等)保持高的正確識別率。這些要求早期通過技術鑒定的一些識別系統大都不能滿足。很多實驗系統在實驗室內或在應用范圍較窄的情況下可以獲得較好的效果,但在面對更寬闊的應用領域中千變萬化的問題時就暴露出弱點,識別率難以滿足要求。通過對實際問題的深入研究,我們發覺由于漢字結構特別復雜,只采用一種類型的識別特征往往顧此失彼,難以含有足夠的充分反映所有方塊漢字的信息。因此,采用若干種類型不同的識別特征組成綜合特征,使它們在對漢字集合各個漢字識別時具有互補的作用,達到提高識別率的目的。從某種意義上說:這也是一種多識別方法的集成,只不過是采用特征綜合的方法,而不是把幾個識別“引擎”集成起來,從而可大大減小整個系統的復雜性。
經過20世紀90年代近10年的艱苦努力,不斷改進,現在我國的漢字OCR技術已日漸成熟,在境內外中文信息處理方面得到廣泛應用。但是應該強調指出,所漢字OCR不只是指印刷漢字文件的識別,還應包括手寫漢字文稿的識別。這個問題目前還沒有解決。在印刷漢字識別方面也還存在一些問題。例如:對質量差的印刷資料(包括傳真資料等)識別,錯識率還較高,人機界面還不完善,這方面仍有很多工作要做。百尺竿頭,更進一步,我們仍需努力。
總結
以上是生活随笔為你收集整理的OCR(汉字光符阅读器)的全部內容,希望文章能夠幫你解決所遇到的問題。