
摘 ?要:OCR全稱為Optical Character Recognition,是一種用于識別圖像和圖形中字符的識別技術。其實現原理是通過如掃描儀或數碼相機等電子設備輸入圖形圖像信息,將圖像信息中的印刷體文字通過相應的轉換形成一定的字符,并與字符數據庫進行比對,最終將標準的文本信息輸出。本文從OCR識別技術的發展和原理入手,結合EasyPR提供的識別功能,在移動端完成車輛識別的案例,將圖片中的車牌信息轉換成對應的文字以供編輯。
關鍵詞:OCR文字識別系統;移動端;Android
中圖分類號:TP391.4 ? ? 文獻標識碼:A 文章編號:2096-4706(2019)18-0066-03
Abstract:The full name of OCR is Optical Character Recognition,and it is a character recognition technology used to recognize characters in image graphics. Its realization principle is to input graphic and image information through electronic devices such as scanners or digital cameras,convert words in image information into certain characters through corresponding conversion,and compare with character database,and finally output standard text information. This paper starts with the development and principle of OCR recognition technology,combines with the recognition function provided by EasyPR,completes the case of vehicle recognition at the mobile end,and converts the license plate information in the picture into corresponding text for editing.
Keywords:OCR text recognition system;mobile;Android
0 ?引 ?言
隨著計算機技術的迅速發展,OCR技術應用越來越廣泛,有效地節省了人力、物力,提高了數據的有效性和準確性,為我們的生活提供了便利,例如高速公路ETC自助通道的車牌自動識別等等。本文從OCR識別技術的發展和原理入手,通過結合EasyPR提供的識別功能,在移動端完成OCR車輛識別,將圖片中的車牌信息轉換成對應的文字以供編輯的案例,解析了移動端文字識別的過程及原理。
1 ?OCR技術在我國的發展
OCR是1929年由德國的科學家首先提出的概念,研究的初期,多以文字的識別方法研究為主,且可識別的文字僅為0至9的數字。我國在70年代開始進行OCR技術的研究,最終實現了由數字、英文字母及符號的識別研究到漢字識別技術的研究,并通過計算機實現了識別的功能要求。
20世紀70年代我國開始對數字、英文字母及符號的識別進行研究,70年代末開始進行漢字識別的研究,到1986年,我國提出了863國家高技術研究發展計劃,使得漢字識別的研究進入一個實質性的階段,相繼推出了中文OCR產品。由于識別率及產品化等多方面的因素,早期的OCR軟件未能達到實際要求,同時因硬件設備成本高,運行速度慢,大部分的OCR技術沒有得到廣泛的應用。進入20世紀90年代以后,平臺式掃描儀的廣泛應用,以及我國信息自動化和辦公自動化的普及,大大推動了OCR技術的進一步發展,使OCR的識別正確率、識別速度滿足了廣大用戶的要求。隨著OCR技術的發展,各種應用系統也相繼出現,比如名片識別系統、身份證銀行卡識別系統、車牌識別系統、銀行票據識別系統、增值稅發票識別認證系統等等。而衡量一個OCR系統性能好壞的主要指標包含拒識率、誤識率、識別速度、用戶界面的友好性以及產品的穩定性、易用性及可行性等幾個方面,目前識別速度也是一個OCR性能的一個重要評判標準,同時利用移動客戶端進行識別的要求也越來越高。
2 ?OCR技術的實現原理
OCR識別技術的實現過程非常復雜,主要分為圖像輸入、圖像處理、字符切割、特征提取、字符識別等幾個流程完成。通過對OCR技術的研究分析,將其基本的識別實現步驟總結如下。
2.1 ?獲取圖像
通過電子設備獲取要識別的圖像信息,可以是包含印刷體文字的任何圖像,如身份證、銀行卡、駕照、文檔等相關的內容,并將圖像傳輸給要識別的主體。這里是利用CCD(電荷耦合器件)將文稿的光信號轉換為電信號,經過模擬數字轉換器轉化為數字信號傳輸給計算機。
2.2 ?圖像預處理
該過程指進行文字識別之前的準備工作,包括二值化處理、去噪處理以及字符的分割校正等操作。因為在計算機中RGB彩色圖像的每個像素、每種顏色占一個字節,占用的內存較大,會影響處理速度,所以首先將圖像進行灰度化處理,即將圖像設置為只有黑色和白色的二值化圖,其中一個顏色表示圖像背景,一個顏色表示要識別的文字。完成了二值化,就可以對圖像進行去噪處理了。在對圖像進行存儲和傳輸的過程中會因為各種噪聲的干擾和影響而降低圖像的品質,為了獲取高質量的數字圖像,需要對圖像進行降噪處理,即去除數字圖像中的無用信息,但要保留原始信息的完整性。圖像去噪處理是數字圖像處理中的重要環節和步驟,去噪算法的好壞直接關系到后續圖像分割和邊緣檢測處理的效果,一直是圖像處理和計算機視覺研究的熱點。在預處理階段同時要完成文字的校正工作和文本分割,如對因拍照產生的文檔圖片傾斜而進行的校正,同時將文檔中的所有文字塊分撿出來,區分出文本段落及排版順序,以及圖像和表格的區域,確定各文字塊的區域,用于識別。
2.3 ?特征提取與數據庫比對
在完成了圖像的預處理后,要想計算機能夠識別文字,首先需要將文字的特征信息存儲到計算機。特征提取是識別文字關鍵的一步,每個文字通過特征提取來進行區分。對于數字和字母類型的字符來說,特征的提取相對容易,因為數字和字母個數有限,屬于小字符集。而漢字的提取相對比較復雜,不僅個數多,而且漢字的結構復雜、形近字多。關于特征提取的研究體現在兩個方面,一為統計的特征,如文本區域內的黑色和白色點數比對聯合,形成空間的數值向量和數學模型,用于識別算法的實現。二為結構的特征,根據文字的筆畫特征點及投影信息點的區域分布進行分析,利用相應的比對方法進行比對。目前,大部分的識別軟件以第二種方法為主。在完成了文本的特征提取后,需要將其與字符的特征數據庫中的標準字符進行匹配,找出最相近的字符,確定比對后的文本信息。
3 ?移動端OCR系統的設計思路
移動端OCR識別技術簡單來說是通過手機APP利用計算機視覺、圖像處理與模式識別等方法從圖像中提取相應的字符信息。Android平臺車牌識別實現的過程可以簡單為以下幾個部分:
圖像采集:通過智能手機攝像頭拍攝車牌圖像。
預處理:對圖像進行灰度化、二值化、邊緣增強、噪聲過濾、自動白平衡、自動曝光以及伽馬校正、對比度調整等處理。
車牌定位:在經過圖像預處理之后的灰度圖像上進行行列掃描,確定車牌區域,車牌切斜校正。
字符分割:將定位在車牌區域中的圖像文字分割成單個字符,精確定位字符的邊界,確定文本區域。
字符識別:字符分割完畢后,對字符進行特征提取,將存儲的文字特征信息與特征數據庫中的標準字符進行比對,找出最相近的字符。
結果輸出:將車牌識別的結果以文本格式輸出。
本文介紹了以Android Studio為開發平臺,基于開源的EasyPR_Android識別源碼,完成車輛信息識別的文字識別系統。其中,EasyPR是基于OpenCV這個開源庫產生的車輛識別系統,能夠識別中文,識別率較高,目前情況下,字符識別已經可以達到90%以上的精度。
4 ?移動端車輛識別系統的實現
4.1 ?系統界面設計
在車輛識別系統的界面中,首先包含3個組件,分別為:EasyPRPreView(位于com.fosung.libeasypr.view包)、Button和TextView。其中一個TextView組件用于顯示輸入車牌的信息提示,另一個TextView組件用于提取顯示車牌的文字信息。APP在運行時,有車牌限定框,在框的范圍內進行圖像裁剪,人為縮小了識別范圍,提高了識別度。其界面效果如圖1所示。
其中部分代碼如下:
<com.fosung.libeasypr.view.EasyPRPreView
android:id="@+id/preView"
android:layout_width="fill_parent"
android:layout_height="match_parent"/>
<Button
android:id="@+id/btnShutter"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:text="車輛識別"
android:textSize="16sp"
android:textColor="#FFFFFF"
android:background="@color/colorAccent"/>
<TextView
android:id="@+id/title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:gravity="center"
android:textColor="#FFFFFF"
android:textSize="16dp"
android:text="請將車牌放入框內"/>
<TextView
android:id="@+id/infotext"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:gravity="center"
android:textColor="#FFFFFF"
android:textSize="18dp"
android:layout_below="@+id/title"/>
設置完界面后在manifest加入攝像機權限
<uses-permission android:name="android.permission.CAMERA" /> 。
4.2 ?車牌識別功能實現
在進入了識別的界面后,首先在Activity的onStart()方法中添加EasyPRPreView的判定并進入其onStart(),同時在Activity的onStop()方法中添加EasyPRPreView的onStop(),在Activity進行銷毀時,實現EasyPRPreView的onDestroy()。部分代碼如:
publicvoidonStart() {
if(easyPRPreView != null) {
easyPRPreView.onStart();
}
}
@Override
publicvoidonDestroy() {
if(easyPRPreView != null) {
easyPRPreView.onDestroy();
}
}
當單擊“車輛識別”按鈕時,開始識別,在按鈕的監聽事件中添加EasyPRPreView的recognize()的方法。如:
recBtn.setOnClickListener(new View.OnClickListener () {
@Override
publicvoidonClick(View view) {
easyPRPreView.recognize();//開始識別
}
});
可以根據識別過程中的問題及時進行提示,如當識別成功后,可以顯示“識別成功!”。
5 ?結 ?論
本文從OCR的發展、實現原理出發,簡單介紹了OCR技術在實際中的應用,同時以移動端車輛識別系統為例,講解了關于EasyPR開源系統在Android中的實現方式,解析了移動端文字識別的過程及原理。
參考文獻:
[1] 郝輝,哈力木拉提·買買提,喬薩礎拉,等.字符識別研究現狀和發展趨勢計量分析 [J].現代電子技術,2018,41(22):154-158.
[2] Bradski G,Kaehler A.學習OpenCV(中文版) [M].于仕琪,劉瑞禎,譯.北京:清華大學出版社,2009.
[3] 楊明,李晶.一種新的椒鹽噪聲去除方法 [J].科技視界,2014(25):111.
[4] 劉明英.檔案數字化過程中OCR技術的應用分析 [J].中國高新技術企業,2017(5):55-56.
[5] 梁連高.淺析紙質文書檔案數字副本OCR識別方法 [J].科技與創新,2018(4):129-130.
[6] OCR識別移動端的實現與應用 [EB/OL].(2018-06-15).https://blog.csdn.net/zl18231137982/article/details/80701738.
作者簡介:王學梅(1979.08-),女,漢族,山東德州人,教師,講師,碩士,研究方向:數據庫應用、軟件開發。