張芮 陳萱瑋 李桐



摘要:丟隨著硬件性能的提升和Android平臺的不斷普及,“計算設備移動化”的時代已經到來,同時出現了一些在Android平臺上的圖像處理應用。本文主要介紹了OCR文字處理和識別的工作原理以及TTS技術,開發了一款基于Android的應用軟件。該軟件采用了開源識別引擎Tesseract-OCR,主要分為兩大模塊:文字識別模塊和文字應用模塊。文字識別模塊完成了通過手機攝像頭拍攝文字圖片,Tesseract-OCR識別文字,將圖片文字識別為文本文字;文字應用模塊完成TTS文本朗讀以及社會化分享功能。結果表明,軟件對文字圖片有很好的識別率并且能夠完成文本朗讀及社會化分享功能。
關鍵詞:Android;OCR;TTS;社會化分享
1 系統相關技術分析
1.1 Android系統
Android是運行于Linux kernel之上,但并不是GNU/Linux,廣泛應用于移動設備上。Android的系統架構是采用五層架構,自頂向下分別為:應用程序、應用程序框架、庫、AndroidRuntime以及Linux內核。
1.2 OCR技術與Tesseract
1.2.1 OCR技術原理
OCR(Optical Character Recognition。光學字符識別)是指電子設備(例如掃描儀或數碼相機)檢查紙上打印的字符,通過檢測暗、亮的模式確定其形狀,然后用字符識別方法將形狀翻譯成計算機文字的過程。OCR的目的是利用計算機識別文本圖片。讓人從中解放出來,提高生產力。OCR核心過程分為四步:
(1)圖像預處理:對文本圖片進行預處理,濾去干擾、噪聲。主要目的是消除圖像中無關信息,恢復有用的真實信息,增強有關信息的可檢測性和最大程度地簡化數據,從而改進特征抽取、圖像分割、匹配和識別的可靠性。而預處理過程一般有數字化、幾何變化、歸一化、增強和平滑等步驟。
(2)文字分割:對文本圖像進行分割,以定位和分離出帶識別的文字。
(3)特征抽取:在文字分割的基礎上,提取需要的特征,并對某些參數進行計算,輸出特征信息。
(4)文字識別:根據特征信息,加上模式識別的方法確定其文字內容。
1.2.2 Tesse ract
Tesse ract-OCR是開源的識別引擎,最先有HP實驗室于1985年開始研發,但不久就放棄了OCR業務。幾年后,HP將其貢獻給開源軟件業。讓其重新發揮作用。Tesseract算法分為下列幾個步驟:
(1)輪廓分析:文本圖像中含有許多字符,在OCR識別前,首先需要給每個字符標記有效邊界,即:輪廓。它采用了一種嵌套的輪廓搜索算法,不僅搜索輪廓本身,還搜索嵌套輪廓的輪廓。最后將分析所得的輪廓組合成文本塊。
(2)文本塊被行劃分:顧名思義將圖像劃分成若干行,將文本行分割成字符。
(3)特征提取,進行第一次識別,再次識別上次認錯的字符,當識別率達到設定的閾值時進入下一步。
(4)語言分析:利用詞義、詞頻、語法規則或語料庫等語言先驗知識識別結果進行校正,提高識別率。
2 系統實現
2.1 圖片采集
圖片采集有兩種方式:一種是使用移動設備攝像頭進行拍照,另一種是直接從相冊中選取圖片。
2.1.1 拍攝功能實現
首先我們介紹第一種方式,在Android系統可以在拍照按鈕設置監聽器調用攝像頭如下:21 2相冊中選取
接下來是第二種方式,同樣在相應按鈕設置監聽器,方法如下:
2.2 圖片處理
系統使用的是開源識別引擎Tesseract-OCR,所以在建立工程的時候,需要將其配置進去。這樣我們就可以直接調用Tesseract-OCR提供給我們的類TessBaseAPI,對我們選取的圖片區域進行識別,返回識別文本信息。
Android平臺具體演示流程如下:
2.3 TTS文本朗讀功能實現
TTS(TextToSpeech)是將指定的文本轉換成不同語言音頻輸出的技術,TTS引擎依托于當前的Android平臺所支持的幾種語言。由于不是所有的設備都加載了資源。為此,開發時引入了檢測模塊,讓利用這項技術的開發人員可以檢測資源是否存在,下邊給出一個標準的檢測方法:
Intent checkIntent=new Intent():
checkIntent.setAction(TextToSpeech.Engine.ACTlON_CHECK_TTs_DATA):
startActivityForResult(chekIntent,REQ_TTS_STATUS_CHECK);
如果當前系統允許創建一個“And roid speech TTSTextToSpeech”的對象,說明已經提供TTS功能的支持。將檢測返回結果中給出“CHECK VOICE DATA PASS”的標記。根據上邊的介紹,基本實現了TextToSpeech的初始化和參數配置。下面是TTS利用Speak()方法可以直接在應用程序中發揮強大的語音功能。
2.4 社會化分享功能實現
系統在Android移動設備上進行分享是將文本圖片識別的文本進行發布到各個社交平臺(比如:微信,新浪微博等),該功能主要依托于百度社會化服務。百度社會化服務為開發者提供了接入新浪微博、QQ登錄、騰訊微博、開心網等第三方社會化平臺的服務。為開發者提供了社會化登錄組件及社會化分享組件管理控制臺,與此同時還開放了社會化服務REST API及多平臺的SDK供開發者開發使用。系統中使用的是Frontia Android版,采用的是2.0.3版本。
Android平臺具體演示流程如下:
3 結語
本文主要闡述了基于Android平臺的OCR相機的實現,并且淺析了涉及到的相關技術原理。軟件基本滿足了用戶的日常使用。并且還可以進一步擴展,比如可以添加在線翻譯、日程提醒等功能,有一定的市場價值。軟件圖像處理方法仍存在部分缺陷,如處理速度不夠快、識別率有待提高等。因此,繼續完善系統功能、提高文字的識別率及機器自學習是下一步的研究工作重點。