發展簡史
OCR的概念是在1929年由德國科學家Tausheck最先提出來的,後來美國科學家Handel也提出了利用技術對文字進行識別的想法。而最早對印刷體漢字識別進行研究的是IBM公司的Casey和Nagy,1966年他們發表了第一篇關於漢字識別的文章,採用了模板匹配法識別了1000個印刷體漢字。早在60、70年代,世界各國就開始有OCR的研究,而研究的初期,多以文字的識別方法研究為主,且識別的文字僅為0至9的數字。以同樣擁有方塊文字的日本為例,1960年左右開始研究OCR的基本識別理論,初期以數字為對象,直至1965至1970年之間開始有一些簡單的產品,如印刷文字的郵政編碼識別系統,識別郵件上的郵政編碼,幫助郵局作區域分信的作業;也因此至今郵政編碼一直是各國所倡導的地址書寫方式。
20世紀70年代初,日本的學者開始研究漢字識別,並做了大量的工作。中國在OCR技術方面的研究工作起步較晚,在70年代才開始對數字、英文字母及符號的識別進行研究,70年代末開始進行漢字識別的研究,到1986年,我國提出“863”高新科技研究計畫,漢字識別的研究進入一個實質性的階段,清華大學的丁曉青教授和中科院分別開發研究,相繼推出了中文OCR產品,現為中國最領先漢字OCR技術。早期的OCR軟體,由於識別率及產品化等多方面的因素,未能達到實際要求。同時,由於硬體設備成本高,運行速度慢,也沒有達到實用的程度。只有個別部門,如信息部門、新聞出版單位等使用OCR軟體。進入20世紀90年代以後,隨著平台式掃瞄器的廣泛套用,以及我國信息自動化和辦公自動化的普及,大大推動了OCR技術的進一步發展,使OCR的識別正確率、識別速度滿足了廣大用戶的要求。
軟體結構
由於掃瞄器的普及與廣泛套用,OCR軟體只需提供與掃瞄器的接口,利用掃瞄器驅動軟體即可。因此,OCR軟體主要是由下面幾個部分組成。圖像輸入、預處理:
圖像輸入:對於不同的圖像格式,有著不同的存儲格式,不同的壓縮方式,目前有OpenCV,CxImage等開源項目。預處理:主要包括二值化,噪聲去除,傾斜較正等
二值化:
對攝像頭拍攝的圖片,大多數是彩色圖像,彩色圖像所含信息量巨大,對於圖片的內容,我們可以簡單的分為前景與背景,為了讓計算機更快的,更好的識別文字,我們需要先對彩色圖進行處理,使圖片只前景信息與背景信息,可以簡單的定義前景信息為黑色,背景信息為白色,這就是二值化圖了。
噪聲去除:
對於不同的文檔,我們對噪聲的定義可以不同,根據噪聲的特徵進行去噪,就叫做噪聲去除
傾斜較正:
由於一般用戶,在拍照文檔時,都比較隨意,因此拍照出來的圖片不可避免的產生傾斜,這就需要文字識別軟體進行較正。
版面分析:
將文檔圖片分段落,分行的過程就叫做版面分析,由於實際文檔的多樣性,複雜性,因此,目前還沒有一個固定的,最優的切割模型。
字元切割:
由於拍照條件的限制,經常造成字元粘連,斷筆,因此極大限制了識別系統的性能,這就需要文字識別軟體有字元切割功能。
字元識別:
這一研究,已經是很早的事情了,比較早有模板匹配,後來以特徵提取為主,由於文字的位移,筆畫的粗細,斷筆,粘連,鏇轉等因素的影響,極大影響特徵的提取的難度。
版面恢復:
人們希望識別後的文字,仍然像原文檔圖片那樣排列著,段落不變,位置不變,順序不變,的輸出到word文檔,pdf文檔等,這一過程就叫做版面恢復。
後處理、校對:
根據特定的語言上下文的關係,對識別結果進行較正,就是後處理。
工作流程
一個OCR識別系統,其目的很簡單,只是要把影像作一個轉換,使影像內的圖形繼續保存、有表格則表格內資料及影像內的文字,一律變成計算機文字,使能達到影像資料的儲存量減少、識別出的文字可再使用及分析,當然也可節省因鍵盤輸入的人力與時間。從影像到結果輸出,須經過影像輸入、影像前處理、文字特徵抽取、比對識別、最後經人工校正將認錯的文字更正,將結果輸出。
影像輸入
欲經過OCR處理的標的物須透過光學儀器,如影像掃瞄器、傳真機或任何攝影器材,將影像轉入計算機。科技的進步,掃瞄器等的輸入裝置已製作的愈來愈精緻,輕薄短小、品質也高,對OCR有相當大的幫助,掃瞄器的解析度使影像更清晰、掃除速度更增進OCR處理的效率。
影像預處理:影像預處理是OCR系統中,須解決問題最多的一個模組。影像須先將圖片、表格及文字區域分離出來,甚至可將文章的編排方向、文章的提綱及內容主體區分開,而文字的大小及文字的字型亦可如原始檔案一樣的判斷出來。
對待識別圖像進行如下預處理,可以降低特徵提取算法的難度,並能提高識別的精度。
二值化:由於彩色圖像所含信息量過於巨大,在對圖像中印刷體字元進行識別處理前,需要對圖像進行二值化處理,使圖像只包含黑色的前景信息和白色的背景信息,提升識別處理的效率和精確度。
圖像降噪:由於待識別圖像的品質受限於輸入設備、環境、以及文檔的印刷質量,在對圖像中印刷體字元進行識別處理前,需要根據噪聲的特徵對待識別圖像進行去噪處理,提升識別處理的精確度。
傾斜校正:由於掃描和拍攝過程涉及人工操作,輸入計算機的待識別圖像或多或少都會存在一些傾斜,在對圖像中印刷體字元進行識別處理前,就需要進行圖像方向檢測,並校正圖像方向。
文字特徵抽取:單以識別率而言,特徵抽取可說是OCR的核心,用什麼特徵、怎么抽取,直接影響識別的好壞,也所以在OCR研究初期,特徵抽取的研究報告特別的多。而特徵可說是識別的籌碼,簡易的區分可分為兩類:一為統計的特徵,如文字區域內的黑/白點數比,當文字區分成好幾個區域時,這一個個區域黑/白點數比之聯合,就成了空間的一個數值向量,在比對時,基本的數學理論就足以應付了。而另一類特徵為結構的特徵,如文字影像細線化後,取得字的筆劃端點、交叉點之數量及位置,或以筆劃段為特徵,配合特殊的比對方法,進行比對,市面上的線上手寫輸入軟體的識別方法多以此種結構的方法為主。
對比資料庫:當輸入文字算完特徵後,不管是用統計或結構的特徵,都須有一比對資料庫或特徵資料庫來進行比對,資料庫的內容應包含所有欲識別的字集文字,根據與輸入文字一樣的特徵抽取方法所得的特徵群組。
對比識別
這是可充分發揮數學運算理論的一個模組,根據不同的特徵特性,選用不同的數學距離函式,較有名的比對方法有,歐式空間的比對方法、鬆弛比對法(Relaxation)、動態程式比對法(DynamicProgramming,DP),以及類神經網路的資料庫建立及比對、HMM(HiddenMarkovModel)…等著名的方法,為了使識別的結果更穩定,也有所謂的專家系統(ExpertsSystem)被提出,利用各種特徵比對方法的相異互補性,使識別出的結果,其信心度特別的高。
字詞後處理:由於OCR的識別率並無法達到百分之百,或想加強比對的正確性及信心值,一些除錯或甚至幫忙更正的功能,也成為OCR系統中必要的一個模組。字詞後處理就是一例,利用比對後的識別文字與其可能的相似候選字群中,根據前後的識別文字找出最合乎邏輯的詞,做更正的功能。
字詞資料庫:為字詞後處理所建立的詞庫。
人工校正
OCR最後的關卡,在此之前,使用者可能只是拿支滑鼠,跟著軟體設計的節奏操作或僅是觀看,而在此有可能須特別花使用者的精神及時間,去更正甚至找尋可能是OCR出錯的地方。一個好的OCR軟體,除了有一個穩定的影像處理及識別核心,以降低錯誤率外,人工校正的操作流程及其功能,亦影響OCR的處理效率,因此,文字影像與識別文字的對照,及其螢幕信息擺放的位置、還有每一識別文字的候選字功能、拒認字的功能、及字詞後處理後特意標示出可能有問題的字詞,都是為使用者設計儘量少使用鍵盤的一種功能,當然,不是說系統沒顯示出的文字就一定正確,就像完全由鍵盤輸入的工作人員也會有出錯的時候,這時要重新校正一次或能允許些許的錯,就完全看使用單位的需求了。
結果輸出
有人只要文本檔案作部份文字的再使用之用,所以只要一般的文字檔案、有人要漂漂亮亮的和輸入檔案一模一樣,所以有原文重現的功能、有人注重表格內的文字,所以要和Excel等軟體結合。無論怎么變化,都只是輸出檔案格式的變化而已。如果需要還原成原文一樣格式,則在識別後,需要人工排版,耗時耗力。
中文識別
資料錄入文獻資料的數位化錄入,一般分為:
1.純圖像方式。
2.目錄文本、正文圖像方式。
3.全文本方式。
4.全文索引方式。文本方式和圖像方式的混合體。
識別過程
書本級:中文,英文;簡體,繁體;
版式級:豎排,橫排;有無分欄;
行切分字切分
識別:真正的OCR識別過程,圖像信息還原成文本信息
後處理:人工干預,主要集中在前四個階段。
決定因素
1.圖片的質量,一般建議150dpi以上
2.顏色,一般對彩色識別很差,黑白的圖片較高,因此建議ocr的為黑白tif格式
3.最重要的就是字型,如果是手寫識別率很低。
國內OCR識別簡體差錯率為萬分之三,如果要求更高的精度需要投入更大的人工干預。繁體識別由於繁體字型檔的不統一性(民國時期的字型檔和現在繁體字型檔不統一),導致識別困難,在人工干預下,精度能達到90%以上(圖文清晰情況下)。
識別技巧
1.解析度的設定是文字識別的重要前提。一般來講,掃瞄器提供較多的圖像信息,識別軟體比較容易得出識別結果。但也不是掃描解析度設得越高識別正確率就越高。選擇300dpi或400dpi解析度,適合大部分文檔掃描。注意文字原稿的掃描識別,設定掃描解析度時千萬不要超過掃瞄器的光學解析度,不然會得不償失。下面是部分典型設定,僅供參考。(1)1、2、3號字的文章段,推薦使用200dpi。
(2)4、小4、5號字的文章段,推薦使用300dpl
(3)小5、6號字的文章段,推薦使用400dpl
(4)7、8號字的文章段,推薦使用600dpi。
2.掃描時適當地調整好亮度和對比度值,使掃描檔案黑白分明。這對識別率的影響最為關鍵,掃描亮度和對比度值的設定以觀察掃描後的圖像中漢字的筆畫較細但又不斷開為原則。進行識別前,先看看掃描得到的圖像中文字質量如何,如果圖像存在黑點或黑斑時或文字線條很粗很黑,分不清筆畫時,說明亮度值太小了,應該增加亮度值在試試;如果文字線條凹凸不平,有斷線甚至圖像中漢字輪廓嚴重殘缺時,說明亮度值太大了,應減小亮度後再試試。
3.選好掃描軟體。選一款好的適合自己的OCR軟體是作好文字識別工作的基礎,一般不要使用掃瞄器自帶的OEM軟體,OEM的OCR軟體的功能少、效果差,有的甚至沒有中文識別。
再選一個圖像軟體,第一,OCR軟體不能識別所有的掃瞄器;第二,也是最關鍵的,利用圖像軟體的掃描接口掃描出來的圖像便於處理。
4.如果要進行的文本是帶有格式的,如粗體、斜體、首行縮進等,部分OCR軟體識別不出來,會丟失格式或出現亂碼。如果必須掃描帶有格式的文本,事先要確保使用的識別軟體是否支持文字格式的掃描。也可以關閉樣式識別系統,使軟體集中注意力查找正確的字元,不再顧及字型和字型格式。
5.在掃描識別報紙或其他半透明文稿時,背面的文字透過紙張混淆文字字形,對識別會造成很大的障礙。遇到該類掃描,只要在掃描原稿的背面附。蓋一張黑紙,掃描時,增加掃描對比度,即可減少背面模糊字型的影響,提高識別正確率。
6.一般文本掃描原稿都為黑、白兩色原稿,但是在掃描設定時卻常將掃描模式設為灰度模式。特別是在原稿質量較差時,使用灰度模式掃描,並在掃描軟體處理完後再繼續識別,這樣會得到較好的識別正確率。值得注意的是OCR識別軟體可以自己確定閥值,幾個百分點的閥值差異,可能就會影響識別的正常進行。當然,得到的圖像檔案的大小會比黑白檔案大很多。在進行大批量文稿掃描時,必須對原稿進行測試,找到最佳的閥值百分比。
7.遇到圖文混排的掃描原稿,首先明確使用的識別軟體是否支持自動分析圖文這一功能。如果支持的話,在進行這類掃描識別時,OCR軟體會自動計算出文本的內容、位置和先後順序。文字部分可以按照標示順序正常識別。
8.手動選取掃描區域會有更好識別效果。設定好參數後,先預覽一下,然後開始選取掃描區域。不要將要用的文章一股腦兒選在一個區域內,因為現在的文章排版為了追求更好的視覺效果,使用圖文混排的較多,掃成一幅圖像會影響OCR識別。因此,要根據實際情況將版面分成N個區域,怎么劃分區域呢?每一區域內的文字字型、字號最好一致,沒有圖形、圖像,每一行的寬度一致,遇到長短不一,再細分,一般一次最多可掃描10個選區。根據不同情況,合理地設定識別區域的順序。不要嫌這個過程太煩,那可是提高識別率的有效手段。注意各識別區域不能有交叉,做到一切覺得完好以後再進行識別。這樣一般的識別率會在95%以上,對於識別不正確的文字進行校對後,就可以進入相應的文字處理軟體進行所需的處理了。
9.在放置掃描原稿時,把掃描的文字材料一定要擺放在掃描起始線正中,以最大限度地減小由於光學透鏡導致的失真。同時應保護掃瞄器玻璃的乾淨和不受損害。文字有一定角度的傾斜,或者是原稿文字部分為不正規排版,必須在掃描後使用鏇轉工具,進行糾正;否則OCR識別軟體會將水平筆劃當做斜筆劃處理,識別正確率會下降很多。建議用戶儘量將掃描原稿放正,用工具鏇轉糾正會降低圖像質量,使字元識別更加困難。
10.先"預覽"整體版面,選定要掃描的區域,再用"放大預覽"工具,選擇一小塊進行放大顯示到全螢幕幕,觀察其文字的對比度,文字的深淺濃度,據情況調整"閥值"的大小,最終要求文字清晰,不濃(文字成團),不淡(文字斷筆伐),一般在"閥值"80左右為宜,最後再掃描。
11.用工具擦掉圖像污點,包括原來版面中的不需要識別的插圖、分隔線等,使文字圖像中除了文字沒有一點多餘的東西;這可以大提高識別率並減少識別後的修改工作。
12.如果要掃描印刷質量稍微差一些的文章,比如說報紙,掃描的結果將不會黑白分明,會出現大量的黑點,而且在字型的筆畫上也會出現粘連現象,這兩項可是漢字識別的大忌,將嚴重影響漢字識別的正確率。為獲得較好的識別結果,必須仔細進行色調調節,反覆掃描多次才能獲得比較理想的結果。另外由於報紙很薄且大部分紙質不高,導致掃瞄器上蓋板不能完全壓住報紙(有縫隙),所以一般情況下報紙的掃描識別效果沒有雜誌的效果好。解決辦法是在報紙上壓一至兩本16K的雜誌,效果還是不錯的。