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