第-9-章光學(xué)字符識別技術(shù)_第1頁
第-9-章光學(xué)字符識別技術(shù)_第2頁
第-9-章光學(xué)字符識別技術(shù)_第3頁
第-9-章光學(xué)字符識別技術(shù)_第4頁
第-9-章光學(xué)字符識別技術(shù)_第5頁
已閱讀5頁,還剩93頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第 9章 光學(xué)字符識別技術(shù)(上) 光學(xué)字符識別技術(shù)是計算機(jī)自動、高速地辨別紙上的文字,并將其轉(zhuǎn)化為可編輯的文本的一項實用技術(shù)。它是新一代計算機(jī)智能接口的一個重要組成部分,也是模式識別領(lǐng)域的一個重要分支。文字識別技術(shù)的研究涉及圖像處理、人工智能、形式語言、自動機(jī)、統(tǒng)計決策理論、模糊數(shù)學(xué)、信息論、計算機(jī)科學(xué)、語言文字學(xué)等學(xué)科,它是介于基礎(chǔ)研究和應(yīng)用研究之間的一門綜合性學(xué)科。 隨著計算機(jī)技術(shù)的推廣應(yīng)用,尤其是互聯(lián)網(wǎng)的日益普及,人類越來越多地依賴計算機(jī)獲得各種信息,大量的信息處理工作也都轉(zhuǎn)移到計算機(jī)上進(jìn)行。在日常生活和工作中,存在著大量的文字信息處理問題,因而將文字信息快速輸入計算機(jī)的要求就變得非常迫切?,F(xiàn)代社會的信息量空前豐富,其中絕大部分信息又是以印刷體的形式進(jìn)行保存和傳播的,這使得以鍵盤輸入為主要手段的計算機(jī)輸入設(shè)備變得相形見絀,輸入速度低已經(jīng)成為信息進(jìn)入計算機(jī)系統(tǒng)的主要瓶頸,影響著整個系統(tǒng)的效率。因此,要求有一種能將文字信息高速、自動地輸入計算機(jī)的方法。目前,文字輸入方法主要有鍵盤輸入、手寫識別、語音輸入和機(jī)器自動識別輸入等。人工鍵盤輸入方法需要經(jīng)過一定時間的學(xué)習(xí)訓(xùn)練才能掌握;手寫識別和語音輸入雖然簡單便捷,但其輸入速度不高,對于大量已有的文檔資料,采用這些方法要花費大量的人力和時間。因此,能夠?qū)崿F(xiàn)文字信息高速、自動輸入的只能是計算機(jī)自動識別技術(shù),即光學(xué)字符識別(OCR)技術(shù)。 目前文字識別技術(shù)已經(jīng)廣泛地應(yīng)用到了各個領(lǐng)域中。它作為計算機(jī)智能接口的重要組成部分,在信息處理領(lǐng)域中可以大大提高計算機(jī)的使用效率,是辦公自動化、新聞出版、計算機(jī)翻譯等領(lǐng)域中最理想的輸入方式;將龐大的文本圖像壓縮成機(jī)器內(nèi)碼可以節(jié)省大量的存儲空間。 本章和第 10 章主要介紹光學(xué)字符識別中的一些關(guān)鍵技術(shù),包括預(yù)處理、字符分割、特征提取、分類器設(shè)計以及后處理等。另外,會給出一些相關(guān)的算法代碼。當(dāng)然給出的代碼只是一個雛形,只要讀者在這個框架的基礎(chǔ)上作修改,就可以構(gòu)建自己的應(yīng)用系統(tǒng)。 本章首先介紹了預(yù)處理技術(shù)及特征提取技術(shù),其他技術(shù)將在第 10 章作詳細(xì)介紹。 9.1 概述 這一小節(jié)從總體上介紹光學(xué)字符識別技術(shù)。 9.1.1 文字識別系統(tǒng)的構(gòu)成 印刷體文字識別的原始圖像是通過掃描儀、CCD 器件或傳真機(jī)等獲得的二維圖像,它可以是灰度(Grayscale)或二值(Binary)圖像,其識別過程如圖 9-1 所示,它包括 6 個組成部分。 1. 預(yù)處理 預(yù)處理包括對原始圖像的去噪、傾斜校正等。若輸入圖像不是二值圖像,首先要對其進(jìn)行二值化。 2. 版面分析 對文本圖像進(jìn)行總體分析,標(biāo)識出文本段落、圖像、表格區(qū)域;對文本區(qū)域進(jìn)行識別處理,對表格區(qū)域進(jìn)行專用的表格分析及識別處理,對圖像區(qū)域進(jìn)行壓縮或簡單存儲。 3. 字符切割 先將文本圖像切割為行(或列),再從圖像行(或列)中分離出單個字符。當(dāng)圖像的質(zhì)量較差時,不易進(jìn)行簡單的分割,常與識別過程相結(jié)合。隨著單字識別率的提高,切割錯誤在所有錯誤中所占的比重不斷上升,怎樣實現(xiàn)字符的正確分割成了一個需要認(rèn)真解決的問題。 4. 特征提取 從單個字符圖像上提取統(tǒng)計特征或結(jié)構(gòu)特征,是整個環(huán)節(jié)中最重要的,所提取特征的穩(wěn)定性及有效性直接決定了識別的性能。在提取特征前常常先進(jìn)行歸一化、細(xì)化等處理。 5. 單字識別 從學(xué)習(xí)得到的特征庫中找到與待識字符相似度最高的字符。為了提高識別速度,常采用樹分類器。 6. 后處理 對單字識別的結(jié)果,利用詞義、詞頻、語義等先驗知識進(jìn)行識別結(jié)果的確認(rèn)或糾錯。 9.1.2 文字識別技術(shù) 光學(xué)文字識別(OCR)技術(shù)可分為印刷體文字識別和手寫體文字識別兩大類,后者又可分為聯(lián)機(jī)(on-line)手寫體識別和脫機(jī)(off-line)手寫體識別。從識別的難度來看,多體印刷體識別難于單體印刷體識別,手寫體識別難于印刷體識別,而脫機(jī)手寫體識別又遠(yuǎn)遠(yuǎn)難于聯(lián)機(jī)手寫體識別。 識別器是整個系統(tǒng)的核心,識別器的結(jié)構(gòu)通常如圖 9-2 所示。 字符的模式表達(dá)形式和相應(yīng)的字典形成方法有多種,每種形式又可以選擇不同的特征,每種特征又有不同的抽取方法,這就使得判別方法和準(zhǔn)則以及所用的數(shù)學(xué)工具不同,形成了種類繁多、形式特別的文字識別方法。用于文字識別的模式識別方法可以大致分為統(tǒng)計模式識別、結(jié)構(gòu)模式識別和人工神經(jīng)網(wǎng)絡(luò)識別。1. 統(tǒng)計模式識別方法 統(tǒng)計模式識別方法是先提取待識別模式的的一組統(tǒng)計特征,然后按照一定準(zhǔn)則所確定的決策函數(shù)進(jìn)行分類判別。將字符點陣看作一個整體,其所用的特征是從這個整體上經(jīng)過大量的統(tǒng)計而得到的。統(tǒng)計特征抗干擾能力強(qiáng),匹配與分類的算法簡單,易于實現(xiàn),但不足之處在于細(xì)分能力較弱,區(qū)分相似字的能力差。 在統(tǒng)計模式識別中,通常用特征矢量間的距離和相似度進(jìn)行判別,其計算公式如下: 均方誤差距離: 其他的判別方法有復(fù)合相似度、混合相似度等。為了提高單字匹配的準(zhǔn)確度,還有一種類似于K-L 變換的特征提取方法,以及由此給出的多重相似度,它考慮了輸入模式的畸變,抗干擾能力強(qiáng),但計算量很大。 2. 結(jié)構(gòu)模式識別方法 結(jié)構(gòu)模式識別方法一般需要先抽取筆段或基本筆畫作為基元,由這些基元構(gòu)成部件(子模式),再由部件的組合來描述字符(模式),最后利用形式語言及自動機(jī)理論進(jìn)行文法推斷,即識別。然而,從字符圖像中抽取筆畫等基元比較困難,為了抽取筆畫,通常需要對原始點陣圖像進(jìn)行細(xì)化處理,而且容易產(chǎn)生偽筆畫段,給準(zhǔn)確抽取基元造成了困難。有些研究人員采用字符輪廓結(jié)構(gòu)信息作為特征,這一方案的識別結(jié)果優(yōu)于抽取基元的方法,但識別方法需要進(jìn)行松弛迭代匹配,耗時嚴(yán)重,而且對于筆畫較模糊的字符圖像,抽取內(nèi)輪廓會遇到極大困難,外輪廓的抽取也不太穩(wěn)定。也有些學(xué)者采用抽取字符圖像中的關(guān)鍵特征點來描述字符,但是特征點的抽取易受噪聲點、筆畫的粘連與斷裂等影響。 統(tǒng)計方法具有良好的魯棒性和較好的抗干擾能力,它采用多維特征值累加的辦法,把局部噪聲和微小畸變淹沒在最后的累加和里,但是,可以用來區(qū)分“敏感部位”的差異也隨之消失,因此區(qū)分相似字的能力較差;而結(jié)構(gòu)方法對結(jié)構(gòu)特征較敏感,區(qū)分相似字的能力較強(qiáng),因此,可以將兩種方法結(jié)合起來使用,取長補短,網(wǎng)格化特征就是其中一種方法。將字符圖像劃分為若干區(qū)域,稱之為“網(wǎng)格”,在每一個網(wǎng)格內(nèi)提取各種特征,特征的統(tǒng)計以網(wǎng)格為單位,即使個別點的統(tǒng)計有誤差也不會造成大的影響,增強(qiáng)了特征的抗干擾性。 3. 人工神經(jīng)網(wǎng)絡(luò) 人工神經(jīng)網(wǎng)絡(luò)(ANN,Artificial Neural Network)是一種模擬人腦神經(jīng)元細(xì)胞的網(wǎng)絡(luò)結(jié)構(gòu),它是由大量簡單的基本元件神經(jīng)元相互連接成的自適應(yīng)非線性動態(tài)系統(tǒng)。ANN 具有一定的自適應(yīng)的學(xué)習(xí)與組織能力,組成網(wǎng)絡(luò)的各個“細(xì)胞”可以并行工作,并通過調(diào)整“細(xì)胞”間的連接系數(shù)完成分類、識別等復(fù)雜的功能。不同于傳統(tǒng)的模式識別方法,在這種情況下,神經(jīng)網(wǎng)絡(luò)所“提取”的特征并無明顯的物理含義,而是存儲在神經(jīng)物理中各個神經(jīng)元的連接之中,省去了由人來決定特征提取的方法與實現(xiàn)過程。從這個意義上來說,ANN 提供了一種“字符自動識別”的可能性。此外,ANN 分類器是一種非線性的分類器,它可以提供復(fù)雜的類間分界面,這也為解決復(fù)雜分類問題提供了一種可能的解決方式。 9.1.3 印刷體漢字識別 漢字識別是模式識別的一個重要分支,也是文字識別領(lǐng)域最為困難的問題之一。自 20 世紀(jì) 70 年代以來,日本學(xué)者在漢字識別方面做了大量工作,提出了多種識別方法,先后研制了能識別 2000/4000個印刷體漢字和限制性手寫體漢字的裝置。1984 年日本研制成多體印刷漢字識別裝置,經(jīng)后處理后識別率可達(dá) 99.98%,識別速度大于 100 字/秒,代表了當(dāng)時印刷體漢字識別的最好水平,但需要采用專用的硬件設(shè)備,價格昂貴,難以推廣。我國從 70 年代末開始就進(jìn)行印刷體和手寫印刷體漢字識別的原理性研究,10 余年來,取得了很大進(jìn)展,探索出許多新方法。自 1986 年以來,各種漢字識別軟件與系統(tǒng)大量涌現(xiàn),已進(jìn)入實用階段。系統(tǒng)支持簡 /繁體漢字識別,解決了多字號、多字體以及中英文混排的識別問題,可以進(jìn)行簡單的版面分析,同時漢字識別率在樣本質(zhì)量較好的情況下可達(dá) 98%以上。 在漢字識別中,目前常見的識別方法有以下兩種。 1. 統(tǒng)計識別方法 (1)模板匹配法 1966 年,IBM 公司的 Casey 和 Nagy 發(fā)表了第一篇關(guān)于漢字識別的論文,采用模板匹配法識別了一千個印刷體漢字,只能識別單一字體。模板匹配直接以像素為特征,不需要另外提取特征,其優(yōu)點是識別算法與文字種類無關(guān),且抗隨機(jī)噪聲,但其缺點是對伸縮、平移、旋轉(zhuǎn)等變形敏感,對切分等前處理要求過高,且識別運算量大,目前使用的不多。 (2)筆畫復(fù)雜性指數(shù)(Complexity Index) 筆畫復(fù)雜性指數(shù)是指文字筆畫的線段密度,其定義如下:cx、cy 分別反應(yīng)了橫向和縱向的筆畫復(fù)雜性,橫多的 cx 大,豎多的 cy 大。筆畫復(fù)雜性指數(shù)與漢字的位移無關(guān),受字體和字號的影響較小,但易受筆畫斷裂和粘連的影響,且其分類能力較差,常與另一種粗分類方法“四邊碼”聯(lián)用。 (3)四邊碼(Four-side Code) 四邊碼是在漢字點陣圖的四周各取一條帶,計算其中的文字像素點數(shù),并將它分成四級,構(gòu)成一個四元組。 由于漢字邊框不但含有豐富的結(jié)構(gòu)信息,而且邊框部分筆畫一般較少,不易粘連,抗干擾能力強(qiáng),但對漢字的位移和旋轉(zhuǎn)比較敏感,與筆畫復(fù)雜性指數(shù)正好形成互補。 (4)特征點法 特征點法的主要思想是利用字符點陣中一些有代表性的黑點(筆畫)、白點(背景)作為特征來區(qū)分不同的字符。特征點包括筆畫骨架線的端點、折點、歧點和交點,漢字的背景也含有一定的區(qū)別于其他漢字的信息,選擇若干背景點作為特征點,有利于提高系統(tǒng)的抗干擾能力。其特點是能夠大大壓縮特征庫的容量,對于內(nèi)部筆畫粘連字符,其識別的適應(yīng)性較強(qiáng)、直觀性好,但不易表示為矢量形式,匹配難度大,不適合作為粗分類的特征。 (5)變換特征法 對字符圖像進(jìn)行變換后,大大降低了圖像特征的維數(shù)。由于直接求二維圖像的變換系數(shù)的計算量很大,通常先采用投影法將其變?yōu)橐痪S數(shù)據(jù),常用的變換是二進(jìn)制變換(如 Walsh、Hardama 變換、R變換),其計算雖然簡單,但變換后的特征沒有明顯的物理意義。而更復(fù)雜的變換如 K-L 變換、Fourier變換等運算復(fù)雜度較高,K-L 變換雖然從最小均方誤差角度來說是最佳的,但是運算量太大,不實用。由于這些變換不是旋轉(zhuǎn)不變的,因此對于傾斜變形的字符的識別會有較大的偏差,而且變換特征與字體的關(guān)系十分密切,只能用于單體漢字識別。 (6)筆段特征法 漢字是由筆畫組成的,而筆畫又由筆段組成,筆段可近似為一定方向、長度和寬度的矩形段。利用筆段及筆段之間的關(guān)系組成的特征對漢字進(jìn)行識別,受字體和字號的影響小,對于多體漢字的識別,獲得了良好的效果。其缺點是筆段的提取會較為困難,匹配的難度大,抗內(nèi)部筆畫斷裂或粘連能力差。 (7)包含配選法 許多漢字都有相同的偏旁、部首,由此可將漢字進(jìn)行粗分類。包含選配法就是用偏旁、部首的骨架做成標(biāo)準(zhǔn)模板,分類時將輸入漢字與各標(biāo)準(zhǔn)模板相與,如結(jié)果與標(biāo)準(zhǔn)模板相同,則表明輸入的漢字含有該偏旁、部首,即可判別出它所屬的類別。包含配選法的分類速度快,存儲量小,缺點是容易受到文字筆畫絕對位置移動的影響。 還有許多種不同的統(tǒng)計特征,如粗網(wǎng)格特征(Gross Meshed Feature)、筆畫序列(Stroke)、脫殼透視法、差筆畫法(Differential Stroke)、平均線密度(Average line density)、圖描述法、幾何矩特征(Geometric Moment)等,這里不一一介紹。 2. 漢字識別中的結(jié)構(gòu)識別方法 主要包括抽取筆畫法、松弛匹配法和非線性匹配法等。 (1)抽取筆畫法 抽取筆畫法是利用漢字由筆畫所構(gòu)成的特點進(jìn)行識別,它利用漢字的結(jié)構(gòu)信息來進(jìn)行漢字的聯(lián)機(jī)識別,在印刷體和脫機(jī)手寫識別中,由于筆畫提取的困難,結(jié)果不是很理想。 (2)松弛匹配法 松弛匹配法是一種基于全局特征的匹配方法,它對輸入漢字作多邊形近似,抽取邊界線段,將這些邊界線段組成臨近線段表,然后用松弛匹配操作,完成邊與邊的匹配。這種方法利用彈性吸收漢字的變形,一個字只用一個樣本。其缺點是操作速度較慢,計算量大。 (3)非線性匹配法 非線性匹配法是由 Tsukumo 等提出的,用以解決字形的位移、筆畫的變形等現(xiàn)象。此方法試圖克服從圖形中正確抽取筆畫的困難,以提高正確判別的能力。 目前,對有關(guān)人工神經(jīng)網(wǎng)絡(luò)漢字識別方法也進(jìn)行了一系列的研究,如漢字嵌套層次特征和嵌套分層識別方法。但是,對于像漢字識別這樣超多類的分類問題,ANN 的規(guī)模過大,結(jié)構(gòu)也很復(fù)雜,運算復(fù)雜度太大,還遠(yuǎn)未達(dá)到實用的程度。 在分類器的設(shè)計上,由于漢字集合數(shù)量大,為了提高識別速度常采用多級分類方法,其中最為廣泛采用的是兩級分類器,待識漢字輸入識別器時,先根據(jù)某一準(zhǔn)則判定它屬于整個漢字集合的某一子集,然后再將它與該子集中的漢字進(jìn)行匹配和識別。前一級叫預(yù)分類或粗分類,后一級叫單字識別。由于每個子集的字?jǐn)?shù)較少,因而可以減少逐字比較、匹配的時間。為進(jìn)一步提高速度,可采用多級分類器??梢宰C明在假設(shè)漢字集中所有的漢字出現(xiàn)的概率相同,且分類過程的每一級相互獨立的情況下,能縮短漢字集均勻分類的特征對應(yīng)的平均分類時間;且分類的最佳子類數(shù)為對應(yīng)平均識別時間為9.1.4 存在的問題 雖然文字識別(OCR)軟件已經(jīng)得到廣泛的應(yīng)用,但現(xiàn)有的 OCR 軟件仍有很多不盡人意之處。 首先,抗干擾能力不強(qiáng),對于噪聲、缺損、變形及切分錯誤比較敏感,對識別結(jié)果不能正確給出置信度??垢蓴_能力(魯棒性)是 OCR 系統(tǒng)的重要性能,提高抗干擾能力可以使 OCR 系統(tǒng)能夠識別質(zhì)量較差的印刷文字,提高系統(tǒng)的可靠性。當(dāng)然,提高抗干擾能力是有限度的,由于人具有根據(jù)語意推測文字的能力,單靠字型信息使 OCR 系統(tǒng)達(dá)到與人相同水平的識別能力是不可能的,重要的是讓OCR 系統(tǒng)能夠正確判斷自身識別結(jié)果的置信度,如果能做到這一點,即使識別失敗,系統(tǒng)也可以將不能識別的文字提交給用戶,由用戶進(jìn)行修改,或移交其他功能模塊進(jìn)行處理。雖然在現(xiàn)有的 OCR 系統(tǒng)中,都具備“拒識”和可疑字標(biāo)記的能力,但由于給出的置信度并不正確,因此利用價值不大。 其次,在用戶界面和自動化程度方面還有待提高,如實現(xiàn)版面的自動分析與自動恢復(fù),將印刷文本材料上面的各種插圖、表格、橫豎文字等自動加以區(qū)分,對于識別結(jié)果能夠保持原來的排版形式、字體信息、表格和插入的圖形圖像,使用戶能夠在 Word、北大方正等排版軟件中直接修改。實現(xiàn)印刷表格的自動錄入,自動進(jìn)行框線檢測、欄目切分,直至將各欄目中的內(nèi)容識別出來后再自動恢復(fù)成表格形式。 9.2 預(yù)處理技術(shù) 在進(jìn)行印刷體漢字識別時,首先將印在紙上的漢字,經(jīng)光電掃描產(chǎn)生模擬電信號,再通過模數(shù)轉(zhuǎn)換將其轉(zhuǎn)換為帶灰度值的數(shù)字信號并輸入計算機(jī)。紙張的薄厚度、潔白度、光潔度、油墨深淺、印刷或書寫質(zhì)量都要造成字型畸變,產(chǎn)生污點、飛白、斷筆、交連等干擾。輸入設(shè)備的分辨率、線性度、光學(xué)畸變、量化過程也要產(chǎn)生噪聲。所以,在單個漢字識別之前,要對這幅帶有隨機(jī)干擾、噪聲的整版漢字灰度值數(shù)字信號進(jìn)行預(yù)處理。 漢字圖像預(yù)處理一般包括二值化、行、字切分、平滑化、去噪聲、規(guī)范化和細(xì)化(或抽取輪廓)等。這里使用的預(yù)處理方法有二值化、行、字切分、平滑化、抽取輪廓等。因為預(yù)處理部分在文字識別的整個過程中較靠前,而模式識別部分是在文字圖像經(jīng)過預(yù)處理的基礎(chǔ)上進(jìn)行的,所以對原始圖形進(jìn)行預(yù)處理后得到的文字圖形的質(zhì)量直接影響著模式識別的效果。 4719.2.1 二值化 把漢字圖形帶灰度電平的數(shù)字信號處理成二值(0、1)的,稱為漢字圖形數(shù)字信號二值化。最先得到的原始文字圖形一般為 256 色灰度圖?,F(xiàn)在雖然在某些情況下可以直接得到二值圖,但這通常是掃描儀器用一個固定的閾值(下面將給出說明)進(jìn)行二值化的結(jié)果,效果并不滿意,所以選用由系統(tǒng)進(jìn)行二值化的方法。 如圖 9-3 所示的文字圖像就是一幅 256 色的灰度圖??梢钥吹轿淖值墓羌懿糠州^黑,但邊緣部分顏色較淺,與背景顏色相近,關(guān)鍵是怎樣分離出邊緣與背景。而且有的部分背景噪聲很大,這是因為所掃的資料的反正面都有字,而這在一般的書刊、報紙都是很正常的事。所選擇的二值化應(yīng)充分注意到這些情況。 下面就介紹二值化方法和理論依據(jù)。在這里用 ( , )g i j 表示像素點 ( , )i j 的灰度值,按照文字識別的習(xí)慣定義方式,首先將 256 色灰度圖進(jìn)行規(guī)范化,即 255g = 為最黑, 0g = 為最白(通常的 256 色圖形 0g = 為最黑, 255g = 為最白)。二值化后用 ( , )c i j 表示像素點值, ( , ) 0c i j = 表示背景,即白點;( , ) 1c i j = 表示文字上,即黑點。 漢字二值化的基本要求是,二值化后的圖像能如實地再現(xiàn)原漢字。具體為: (1)筆畫中不出現(xiàn)空白; (2)二值化后的筆畫基本保持原來文字的特征。 二值化的關(guān)鍵在于閾值 T 的選取,常用一個形式為三元函數(shù)的閾值算子來表示閾值 T。 T = T g ( i , j) , N( i , j ) , ( i , j ) 式中 ( , )N i j 是 ( , )i j 周圍局部灰度特性。 二值化有很多種算法,本章只介紹整體閾值二值化的方法。整體閾值二值化是指對一幅圖像的各個部分都用同一閾值進(jìn)行二值化,而不考慮圖像局部的情況,即 T=Tg(i,j)。常用的整體閾值的設(shè)定方法有以下幾種。 1. 人工設(shè)定整體閾值 根據(jù)實驗或人的先驗知識,預(yù)先給定一個固定的閾值,當(dāng) ( , )g i j T 時為文字筆畫,否則為背景。這種方法簡單、易實現(xiàn)、速度快。但是,這種方法既不能根據(jù)每幅圖的具體情況修改閾值,又不能將一幅圖中不同位置的不同情況區(qū)別對待。2. 由灰度級直方圖確定整體閾值通常漢字圖形的直方圖如圖 9-4 所示,從圖中可以看出,漢字圖形的直方圖一般有兩個峰值,一個峰值對應(yīng)漢字筆畫部分,另一個峰值對應(yīng)漢字的背景部分。閾值應(yīng)取在兩個峰值的波谷處,波谷越陡,二值化效果越好。但是這種方法實施起來較麻煩,容易出現(xiàn)問題,計算量較大。 3. 二次定值法 先根據(jù)經(jīng)驗取 T1 作為閾值,對文字圖形進(jìn)行整體閾值二值化,區(qū)分出是背景還是圖像。再分別求出對應(yīng) T1 的圖像和背景的灰度平均值 Fa 和 Ba,定出二次選用的閾值為: 最后再用 T2 對原圖進(jìn)行整體閾值二值化。 用這種方法進(jìn)行二值化比較好。因為這種二值化的方法,速度較快,而且對掃描前紙面、光源等不同的外界情況,閾值可以隨之進(jìn)行適應(yīng)。T1 取 7090 比較合適。圖 9-5 就是用二次定值法對圖 9-3進(jìn)行了二值化后的結(jié)果,其中 T1=70。9.2.2 版面分析 印刷體文字識別常遇到的識別主體不是一個文字段,而是整個版面,所以版面分析是印刷體文字識別系統(tǒng)的重要組成部分。它是指對印刷文檔圖像進(jìn)行分析,提取出文本、圖像、圖形、表格等區(qū)域,并確定其邏輯關(guān)系,并將相應(yīng)的文本塊連接在一起。這一過程的自動完成算法還不是很完善,有些部分常由手工輔助完成,最終的系統(tǒng)能夠自動完成所有的版面分析任務(wù)。 通常印刷體版面的成分和結(jié)構(gòu)非常復(fù)雜、靈活。圖文混排、中英文混排、不同字體、字號在不同方向上的混排大量存在;字間距、行間距、塊間距變化無常。而且漢字的印刷體還有橫排、豎排之分,同時,漢字、阿拉伯?dāng)?shù)字、英文字母和單詞的幾何特征不同(如寬高比、間距等),所以不能直接套用西方的版面分析方法。上述特點決定了如何適應(yīng)漢字由部件組字與英文由字母組詞之間的差異;如何針對版面規(guī)范性差、印刷質(zhì)量差的情況,使用具有較強(qiáng)適應(yīng)能力的版面分析特征;如何在版面分析算法中的各個部分都注意處理橫 /豎排,成為了版面分析過程中需要解決的問題。 目前,版面分析的算法主要分為兩類,一種是自頂向下的方法,另一種是自底向上的方法。 1. 自頂向下 這種版面分析方法是從整個圖像入手,重視全局圖像信息,根據(jù)對文檔版面的形式語言描述,將圖像遞歸分解成足夠小的區(qū)域。它是一個分解的過程。優(yōu)點是速度快、簡單明了。但是,這種方法在分析過程中忽略了圖像的細(xì)節(jié),不適合復(fù)雜版面文檔。 2. 自底向上 這種方法從圖像細(xì)節(jié)入手,重視局部圖像信息,將圖像小區(qū)域逐步合并成較大區(qū)域,是一個合并的過程。由于重視圖像細(xì)節(jié),使得這類方法適合復(fù)雜版面。但是自底向上的方法合并過程非常復(fù)雜,速度較慢。 采取以自底向上分析為主,同時融入自頂向下的某些思想與方法,是目前公認(rèn)的版面分析的發(fā)展方向。 9.2.3 傾斜度校正 通常掃描得到的文件可能由于掃描時文本擺放不正,光源位置不佳等各種原因,造成圖像文件中文本有不同程度的傾斜。這種傾斜可能是整個版面都存在的問題,也可能是局部文本塊存在的問題。當(dāng)傾斜角度不大時,不影響識別過程,可以忽略不計。若傾斜角度較大,就影響到了垂直積分投影和水平積分投影的正確性和有效性,使版面分析行 /字切分受到干擾,不能正常進(jìn)行。因此有人提出不依賴于垂直、水平積分投影的圖像預(yù)處理,行 /字切分等識別處理工作,但是這些算法普遍較復(fù)雜,運算時間比較長,運算速度較慢。還有一種處理方式是先根據(jù)版面的不同傾斜方式,進(jìn)行不同算法的傾斜校正,然后再進(jìn)行其他處理。 1. 整體傾斜度校正 掃描得到的圖像其整個版面有可能都是歪的,如圖 9-6 所示,一般是由于掃描時文檔沒有放正造成的。當(dāng)然可以人工放正,然后再掃描一次;也可以讓計算機(jī)自行校正,其方法就是對整個版面進(jìn)行校正,也就是對圖像進(jìn)行旋轉(zhuǎn)。對整體圖像進(jìn)行旋轉(zhuǎn)有兩種方法: (1)只將圖像進(jìn)行旋轉(zhuǎn),并不擴(kuò)大圖像區(qū)域的面積。用這種方法處理的一個例子,如圖 9-7 所示,可以看出,旋轉(zhuǎn)后的圖像丟失了一部分文字。這是因為旋轉(zhuǎn)后圖像的寬度應(yīng)該比原圖大一些,但是卻沒有擴(kuò)大圖像區(qū)域造成的。(2)將圖像旋轉(zhuǎn),并按照旋轉(zhuǎn)后新圖像的寬高擴(kuò)大區(qū)域。 對于文字識別系統(tǒng),文字的丟失當(dāng)然是不能接受的,所以選用第二種方法。 算法采用的是坐標(biāo)變換的方法,先將圖像以原點為中心進(jìn)行旋轉(zhuǎn),分別計算旋轉(zhuǎn)后圖像的最高點、最低點的縱坐標(biāo) top、bottom,最左點、最右點的橫坐標(biāo) left、right,然后推算出新圖的寬和高,按照新的寬和高擴(kuò)展圖像。最后,將坐標(biāo)軸的原點移到( left,bottom)。旋轉(zhuǎn)的效果如圖 9-8 所示。 2. 局部版面的傾斜校正 有的時候版面的傾斜只是發(fā)生在局部區(qū)域上,如圖 9-9 所示,它可能是紙的褶皺現(xiàn)象造成的,可能是掃描時光源的影響,也可能是排版時故意這么做的。但是不論什么原因造成的局部版面傾斜,都會影響到版面分析及預(yù)處理的效果,所以也必須進(jìn)行校正。 通常局部的版面傾斜角度都很小,或傾斜區(qū)域周圍有很寬的空白部分,傾斜部分旋轉(zhuǎn)回原來的位置時,不會造成文字丟失或覆蓋其他文字的現(xiàn)象(否則發(fā)生傾斜的局部區(qū)域就已經(jīng)覆蓋了其他文字區(qū)域了)。所以就不考慮旋轉(zhuǎn)后圖像擴(kuò)大的問題,而使用旋轉(zhuǎn)算法中的第一種方法,但旋轉(zhuǎn)的中心不再是左下點,而是發(fā)生傾斜區(qū)域的中心。校正后的效果如圖 9-10 所示。 3. 傾斜度自動測量 版面的傾斜校正屬于版面的預(yù)處理部分。它的難點是對版面圖像的傾斜進(jìn)行自動測量。雖然已經(jīng)提出許多自動測斜的算法,但是效果不好,目前基本采用自動測量與人工輔助相結(jié)合的測量方法。 由于各行文字所構(gòu)成的底部基線能夠準(zhǔn)確地反映出圖像的傾斜角度,如圖 9-11 所示,故將每個文字的底部基線的中點作為采樣點,得到一系列坐標(biāo)值(xi,yi)(i=0,1,2。)。然后使用直線擬合算法算出該直線的傾斜角度 a,最后再進(jìn)行校正。直線擬和算法可以由最小二乘法推導(dǎo)得到,具體算法如下:476設(shè)擬合后得到的直線為: y =a +bx ,則:但是從圖 9 -11 中可以看出這種算法只能測出小角度的傾斜。若傾斜角度較大,各個文字不能用連通域搜索算法分開,就無法知道傾斜角度了。所以對傾斜角度較大的版面圖像,還是需要進(jìn)行人工輔助測量。9.2.4 版面切分 印刷版面由文本域和附屬域構(gòu)成。文本域包括標(biāo)題域和正文域,附屬域包括圖像、圖形、表格等。版面分析和切分的任務(wù)就是利用各個域本身的知識,對它們進(jìn)行自動切分和標(biāo)識。目前的版面切分算法沒有很完善的,這里不多加介紹。 9.2.5 行、字分割 文字圖像經(jīng)過二值化后得到的是一個整體,其中包含了字與字之間、行與行之間的空白。所以要想識別單個漢字,首先要把單個的漢字從整個圖像中分離出來,這就是行切分和字切分要完成的任務(wù)。 這里介紹的是積分投影的方法,這種方法的算法簡單,但適應(yīng)性差。它要求文字圖像不能有傾斜,且噪聲較小,因此在切分行、字之前,要對文字圖像進(jìn)行傾斜校正,在文字識別時,要注意噪聲的影響。 1. 行切分 行與行之間通常都有一定的空白間隙,下面就利用這個空白間隙進(jìn)行切分。 假設(shè)經(jīng)過版面分析后得到的是文本塊。設(shè)文字圖像中的第 i 行、第 j 列的像素值為 g(i,j)。 在行與行的空白間隙處的水平積分投影理論值為 0(由于噪聲的存在,實際上可能不為 0),而文字行的水平積分投影不為 0?,F(xiàn)在就利用這一性質(zhì)進(jìn)行行切分。由于圖像存儲的要求,將最下面一行設(shè)為第一行,行切分自下而上順序進(jìn)行,由于切分的是已經(jīng)進(jìn)行過版面分析的文本塊,所以文字圖像的第一行像素必然是某個文字行的行下界。其中 N 為文字圖像的行數(shù)。 規(guī)則 1:對尚未切分的文本按照從下往上的順序進(jìn)行搜索,當(dāng)搜索到第一個滿足下列兩個條件的像素行 i 時,第 i 行為文本行的下界。 有連續(xù) n 行滿足: 規(guī)則 2:對尚未切分的文本按照從下往上的順序進(jìn)行搜索,當(dāng)搜索到第一個滿足下列兩個條件的像素行 i 時,第 i 行為文本行的上界。477其中 N 為文字圖像的行數(shù)。 規(guī)則 1:對尚未切分的文本按照從下往上的順序進(jìn)行搜索,當(dāng)搜索到第一個滿足下列兩個條件的像素行 i 時,第 i 行為文本行的下界。 有連續(xù) n 行滿足: 規(guī)則 2:對尚未切分的文本按照從下往上的順序進(jìn)行搜索,當(dāng)搜索到第一個滿足下列兩個條件的像素行 i 時,第 i 行為文本行的上界。在以上兩個規(guī)則中 n 、 p 、 q 、 m 、 r 、 t 均為根據(jù)實驗經(jīng)驗得到的常數(shù),其中 n m , p q ,r t 。所有這些參數(shù)都是為了消除噪聲的影響。在實際中可以取: n =5 , p =3 , q =1 , m =3 , r =6 ,t =2 ,得到的切分結(jié)果如圖 9-12 所示。2. 字切分 從左往右搜索一行文字單字的左右界,切分出單字或標(biāo)點符號。對漢字文本行來說,由于存在左右分離字、寬窄字、字間交連等,加上行中混有英文、數(shù)字、符號和字間污點干擾,使得字切分比行切分困難得多。所以字切分大致分為兩個過程,首先是求出文字、符號或部件的左右界線;其次是合并部件成為完整的漢字。 這里介紹的字切分算法是最大寬度回溯字切分算法。 首先,根據(jù)漢字是方塊字的特點以平均行寬作為字寬 w 的參考值: 設(shè)文字的最大寬度為 Wm,回溯范圍為 d,第 j 個字的起始位置為 ja,結(jié)束位置為 jb,如圖 9-13所示。對應(yīng)的算法如下:不存在(有交連現(xiàn)象),則轉(zhuǎn)。若不存在(有交連現(xiàn)象),則轉(zhuǎn)。 用字典對上述切割出的圖像進(jìn)行匹配,若匹配成功(證明切割正確),記下jb ,轉(zhuǎn);否則轉(zhuǎn)。邊界,重復(fù)以上步驟。 這種字切分算法比較簡單,有一定的適應(yīng)性,但運算時間長。其中 Wm、d、d 都要根據(jù)經(jīng)驗確定。 以上的行、字切分都是以橫排版為基礎(chǔ)的,如果處理的是豎排版的版面,就要將行和列以對偶原則處理。9.2.6 細(xì)化和規(guī)范化 細(xì)化就是將二值化文字點陣逐層剝?nèi)ポ喞吘壣系狞c,變成筆畫寬度只有一個比特的文字骨架圖形?;诩?xì)化的識別方法以筆畫骨架線為基礎(chǔ),將待識字符的筆段細(xì)化為骨架后再作進(jìn)一步的分析和處理。通常在得到字符的骨架圖形后,用鏈碼跟蹤的方法得到一系列鏈碼形式的點列,然后再從點列中擬合出筆段。 細(xì)化算法的優(yōu)劣對這類方法的影響很大。對細(xì)化的一般要求是保持原有筆畫的連續(xù)性,不能由于細(xì)化造成筆畫斷開;細(xì)化為單線(一個比特);保持文字原有特征,既不要增加,也不要丟失,保持筆畫特征,最好細(xì)化掉筆鋒;細(xì)化結(jié)果是原曲線的中心線,保留曲線的端點,交叉部分中心線不畸變。針對各種不同的應(yīng)用,國內(nèi)外已發(fā)表了許多線細(xì)化算法,如 Hilditch 經(jīng)典細(xì)化算法、Deutsch 算法、Pavlidis 異步細(xì)化算法、Zhang 快速并行細(xì)化算法等。然而,細(xì)化過程本身固有的弱點總是造成筆畫骨架線的畸變,增加對識別的干擾,主要的畸變包括:交叉筆畫畸變、轉(zhuǎn)折處出現(xiàn)分叉筆畫、失去短筆道、筆畫合并??梢哉f,這些問題依賴細(xì)化算法本身是無法克服的,需要在后續(xù)的處理中盡量消除這些畸變的干擾,如孫星明的基于正方形的漢字細(xì)化后處理方法。 通常在特征提取之前,需要對字符圖像進(jìn)行規(guī)范化。所謂規(guī)范化,就是把文字尺寸變換成統(tǒng)一大小,糾正文字位置(平移),文字筆畫粗細(xì)變換等文字圖形的規(guī)格化處理。這樣做有兩個問題,一是字符圖像的縮放可能會引入一些干擾;二是圖像縮放本身的運算量較大。 可以采用一種新的處理方法來消除尺度變化對特征值的影響,首先根據(jù)原始字符圖像提取特征,然后根據(jù)字符的大小對提取的特征進(jìn)行變換,使之與字符的尺度無關(guān)。具體的計算方法如下: (1)估計字符的大小,如字符的高度或?qū)挾龋@個值可以在文本切分時獲得。將它與標(biāo)準(zhǔn)樣本的大小相比較,得到字符圖像的放大倍數(shù)。 (2)在提取字符的特征之后,對所有的坐標(biāo)、長度、寬度等特征除以這個放大倍數(shù)。方向特征本身與尺度無關(guān),對于曲率的變換和寬度的變化,在特征提取時只分析它的變化趨勢,即逐漸變大、變小或基本不變等,而對其具體數(shù)值并不關(guān)心,因此不必在此進(jìn)行修正。 (3)為了提高對字符大小估計的準(zhǔn)確性,還要利用識別結(jié)果進(jìn)行修正,最終得到不是規(guī)范化字符的特征,而是字符“規(guī)范化”的特征。 9.2.7 預(yù)處理算法源代碼示例 這里給出一些預(yù)處理相關(guān)的源代碼的主要部分,完整的代碼參見本書附帶的光盤。 1. 版面分析 包括行的檢測,以及旋轉(zhuǎn)角度的檢測。 /* * 光學(xué)字符識別程序 * 文件名:detect.c * 功能 :版面分析相關(guān)源代碼 * modified by PRT */ #include #include #include pgm2asc.h #include gocr.h / * 檢測文字行 * /* 傅立葉變換檢測行 m1 - 大寫字母的最上界 m2 - 小寫字母的上界 m3 - 基線 m4 res.lines; if (lines-num = 0) lines-m40 = 0; lines-m30 = 0; lines-m20 = 0; lines-m10 = 0; lines-x00 = p-x; lines-x10 = 0; lines-num+; i = lines-num; if (dy res.boxlist) box2 = (struct box *)list_get_current(&(JOB-res.boxlist); if (box2-c != PICTURE) if (box2-y1 - box2-y0 4) if (box2-y0 = y0 & box2-y1 x0 = x0 & box2-x1 y1 - box2-y0 + 1; end_for_each(&(JOB-res.boxlist); if (jj = 0) return 0; /* 沒有檢測到字符 */ my /= jj; if (my 3) return 0; /* 高度均值太小錯誤 */ m4pre=m3pre=y0; for (j2 = y = y0; y 存到 m1-min (m1=y) for_each_data(&(JOB-res.boxlist) box2 = (struct box *)list_get_current(&(JOB-res.boxlist); yy = lines-dy * box2-x0 / (p-x); if ( box2-y0 = y + yy & box2-y1 x0 = x0 & box2-x1 c != PICTURE / 沒有圖像 & 3 * (box2-y1 - box2-y0) 2 * my & (box2-y1 - box2-y0) y1 - box2-y0) 4) if (box2-y0 y0 - yy; end_for_each(&(JOB-res.boxlist); if (m1 = y0+dy) break; /* 沒有發(fā)現(xiàn)別的 line */ lines-x0i = x0 + dx - 1; lines-x1i = x0; m4=m2=m1; mi=m1+my; m3=m1+2*my; jj=0; for_each_data(&(JOB-res.boxlist) box2 = (struct box *)list_get_current(&(JOB-res.boxlist); yy = lines-dy * box2-x0 / (p-x); /* 檢查 ij-dots, 如果字符等高,則使用 */ if (box2-y0 = y + yy & box2-y1 x0 = x0 & box2-x1 c != PICTURE / 沒有圖像 & (box2-y1 - box2-y0) y0 = y & box2-y1 y0 y0 - yy; /* 求取 m2-max m3-min m4-max */ if ( box2-y0 = y + yy & box2-y1 x0 = x0 & box2-x1 x0 = x0 & box2-x1 c != PICTURE / 沒有圖像 & 3 * (box2-y1 - box2-y0) 2 * my & (box2-y1 - box2-y0) y1 - box2-y0) 4) if (box2-y0 = m1 & box2-y0 y1 y1 = m1 + yy + my / 2) jj+; if (box2-y0 m2 + yy) m2 = box2-y0 - yy; if (box2-y1 m4 + yy) m4 = box2-y1 - yy; if (box2-y1 y1 m2+m4+yy ) if( get_bw(box2-x0,box2-x1,box2-y1+1 ,box2-y1+my/2,box2-p,JOB-cfg.cs,1) = 0 | get_bw(box2-x0,box2-x1,box2-y1+my/2,box2-y1+my/2,box2-p,JOB-cfg.cs,1) = 1 | num_cross(box2-x0,box2-x1,(box2-y0+box2-y1)/2,(box2-y0+box2-y1)/2,box2-p,JOB-cfg.cs)2 ) m3 = box2-y1 - yy; if (box2-y0 + box2-y1 2*(m3 + yy) & box2-y1 y1 = (m2 + m4)/2 ) m3 = box2-y1 - yy; if (box2-x1lines-x1i) lines-x1i = box2-x1; if (box2-x0x0i) lines-x0i = box2-x0; end_for_each(&(JOB-res.boxlist); #if 0 /* 測試使用 */ if (JOB-cfg.verbose) fprintf(stderr, step 1 y=%4d m1=%4d m2=%4d m3=%4d m4=%4d my=%2d chars=%3dn, y,m1,m2,m3,m4,my,jj); #endif if (m3 = m1) break; #if 1 mc = (3 * m3 + m1) / 4; ma1 = ma2 = ma3 = ma4 = i1 = i2 = i3 = i4 = jj = 0; for_each_data(&(JOB-res.boxlist) box2 = (struct box *)list_get_current(&(JOB-res.boxlist); yy = lines-dy * box2-x0 / (p-x); if (box2-y0 = y + yy & box2-y1 x0 = x0 & box2-x1 c != PICTURE & 2 * (box2-y1 - box2-y0) my & (box2-y1 - box2-y0) y0 - yy = m1-my/4 & box2-y0 - yy y1 - yy = m3-my/4 & box2-y1 - yy y0 - yy - m1) y0 - yy - m2) i1+; m

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論