楊玉婷,呂 菠,李 順,史宗岳,李夢瑤
(蘇州市職業(yè)大學計算機工程學院,江蘇 蘇州 215000)
隨著互聯(lián)網(wǎng)的高速發(fā)展,人們的時間碎片化趨勢越來越明顯。在繁忙的工作中,對于一些簡單、需要快速處理的文件,人們往往希望能在做其他事情的同時也能順便處理,而文字識別與語音播報系統(tǒng)(Character Recognition and Language Broadcasting System, CR&LB)可以為人們的工作和學習提供更加便捷的方式。通過CR&LB系統(tǒng)的文字識別模塊可以快速識別文件中的內(nèi)容,而語音播報系統(tǒng)則可以快速將識別的內(nèi)容播報出來,使用戶在不需要閱讀或者不方便閱讀的情況下也可以快速了解文件內(nèi)容,提高文件處理效率。
實際上,語音播報系統(tǒng)早已存在于我們的日常生活中。例如,人們經(jīng)常通過“喜馬拉雅”、“蜻蜓FM”等在線音頻軟件收聽有聲書[1-2],通過“百度地圖”、“高德地圖”等語音導航軟件辨別方向、更加快捷的到達目的地[3],通過“微信”、“QQ”等即時通訊工具的語音功能進行語音通話等。但是,這些語音播報系統(tǒng)只能針對特定內(nèi)容或指定內(nèi)容的語音播報,無法修改,也無法指定個性化的播報內(nèi)容,而通用的CR&LB系統(tǒng)除了可以完成常見文字的語音播報功能之外,還可以播報用戶指定的個性化文字或圖片文字的內(nèi)容,同時也可用于視力具有殘障疾病的弱勢群體用戶[4],使他們也可以通過CR&LB系統(tǒng)輕松實現(xiàn)個性化閱讀及對外界事物的認識。
CR&LB系統(tǒng)能夠完成文檔圖像中漢字、數(shù)字和英文等不同類型文字的自動識別及語音播報。整個系統(tǒng)由圖像的預處理、文檔圖像的分割、文字識別和文字閱讀等4個模塊組成,具體結(jié)構(gòu)如圖1所示。其中,圖像預處理模塊完成輸入圖像的預處理工作,實現(xiàn)圖像的灰度和二值化、圖像的傾斜校正等;文檔圖像分割模塊實現(xiàn)了對文檔整體結(jié)構(gòu)的分析與處理,完成了文檔中單個文本行和單個文字的分割;文字識別模塊完成了對單個文字的識別及數(shù)字化轉(zhuǎn)換;文字閱讀模塊能夠根據(jù)文字識別模塊得到的內(nèi)容進行語音播報。
圖1 系統(tǒng)結(jié)構(gòu)
由于圖像采集設備的質(zhì)量參差不齊,文字在采集過程中容易造成形態(tài)畸變、斷筆、粘連和污點等問題。因此,在進行文檔分割和文字識別之前,需要使用圖像預處理模塊對帶有噪聲的文檔圖像進行預處理。預處理的內(nèi)容包括文檔圖像的灰度化、二值化,傾斜檢測與校正等。對文檔圖像的處理效果如圖2所示。經(jīng)過圖像的預處理,原始文檔圖像中的色彩和背景得到了較好的去除,文字本身的特征更加顯著,從而降低了文檔圖像分割和識別的復雜度。
圖2 文檔圖像的預處理
計算機中的圖像都是由像素構(gòu)成的,若假設圖像的背景像素是白點,文字、圖形、圖像等所對應的像素是黑點,那么一個像素行(列)的黑點數(shù)的總和,就是這一像素行(列)的投影值,而所有像素行(列)的投影值就是整個圖像的水平(垂直)投影[5]。因此,為了更好地保留字符中有利于分割的信息,減少其他噪聲因素對分割過程產(chǎn)生的影響,首先判斷文檔圖像的排列方向,然后采用投影算法對二值化圖像重復執(zhí)行水平或垂直投影分割,直到分割結(jié)果為單個文字塊為止。文檔圖像分割算法的處理流程如圖3所示。
圖3 文字圖像分割流程
由于文檔圖像的排版方向具有一定的規(guī)律性,當以錯誤的方向?qū)υ紙D像進行投影分割時,得到的文字塊一般較少,且大小不規(guī)則;而以正確的方向?qū)υ紙D像進行投影分割時,得到的文字塊一般都較多且大小均勻。因此,為了能夠快速判斷文字的排版方向,直接使用水平投影和垂直投影兩種分割算法對文檔圖像進行分割,并得到對應的字塊數(shù)量n1和n2。若n1>n2,說明文檔是按照水平方向排版的,則首先進行水平投影,然后再進行垂直投影;若n1 圖4 文檔圖像的文本行分割和字符分割 為了提高開發(fā)效率,充分利用已有資源,基于Tesseract實現(xiàn)了CR&LB系統(tǒng)的文字識別模塊。Tesseract是惠普布里斯托實驗室在1985到1995年間開發(fā)的一個開源的OCR引擎,曾經(jīng)在1995 UNLV精確度測試中名列前茅。2005年,惠普將其對外開源,2006由Google對Tesseract進行改進、消除Bug、優(yōu)化工作。2006年時,Tesseract就被認為是最精準的開源光學字符識別引擎之一。 Tesseract與Leptonica圖片處理庫結(jié)合,可以讀取各種格式的圖像并將它們轉(zhuǎn)化成超過60種語言的文本。同時,它也支持使用用戶自定義的文字庫來強化訓練,使圖像轉(zhuǎn)換為文本的能力不斷增強。 文字閱讀模塊實現(xiàn)了將一段文字轉(zhuǎn)換為語音的功能。為了讓聲音聽起來更加自然,使機器能夠像人一樣開口說話,需要合成不同音色、語速和語調(diào)的聲音。因此,選擇Kaldi來實現(xiàn)文字閱讀模塊。Kaldi是當前非常流行的開源語音識別工具(Toolkit),提供了基于有限狀態(tài)變換器(finite-state transducers)的語音識別系統(tǒng)、詳細的文件和腳本來輔助我們構(gòu)建完整的文字閱讀模塊。Kaldi使用C++編寫,其核心庫支持所有語音上下文的建模、子空間的高斯混合模型(SGMM)和標準高斯混合模型的聲學模型建模,以及線性變換和仿射變換等,具有便于理解和擴展的特點?;贙aldi的文字閱讀模塊的實現(xiàn)流程如圖5所示。 圖5 文字閱讀模塊的實現(xiàn)流程 用戶界面是連接用戶與軟件的窗口,是軟件與用戶交互的主要方式。好的用戶界面能夠幫助用戶快速了解軟件功能并能較快理解、學會軟件的使用。因此,在CR&LB系統(tǒng)的界面設計過程中,采用VisualC#窗體應用程序設計并實現(xiàn)了面向用戶的界面。VisualC#提供了多種不同功能的插件以方便開發(fā)人員使用,在突出“所見即所得”、界面簡潔、風格一致、顯示直觀形象等特點的同時,也與用戶所使用的操作系統(tǒng)UI風格保持一致。同時,用戶也可以根據(jù)自身需要對用戶界面的風格進行修改,如圖6所示。 圖6 CR&LB系統(tǒng)的用戶界面 CR&LB系統(tǒng)具有良好的用戶交互界面,能夠?qū)崿F(xiàn)隨機文檔圖像的輸入、識別和語音播報。首先,用戶通過點擊“導入圖片”按鈕加入指定的單一文檔圖像,也可以批量選擇需要語音播報的多個文檔圖像,如圖7(a)所示。其次,圖像導入后,點擊“讀取”按鈕,系統(tǒng)將自動調(diào)用文字識別模塊對圖像中的文字進行識別,并將識別結(jié)果顯示在文本框中,以滿足用戶閱讀的需求,如圖7(b)所示;再次,點擊“文字轉(zhuǎn)語音”按鈕,則系統(tǒng)會調(diào)用“文字閱讀”模塊讀出圖像中的文字內(nèi)容。 整個系統(tǒng)界面簡單,指向明確,用戶非常容易上手使用。同時,通過測試也可以看出,系統(tǒng)對文檔圖像的處理、識別和語音播報的準確性較高、效果較好。 圖7 CR&LB系統(tǒng)測試效果 具有通用性的CR&LB系統(tǒng)可以滿足用戶更多個性化的需要,但是對系統(tǒng)的準確性、效率和可擴展性也提出了更高的要求。相信隨著技術(shù)的不斷進步,CR&LB可以在更多的領域發(fā)揮它的優(yōu)勢。1.3 文字識別模塊
1.4 文字閱讀模塊
2 用戶界面設計
3 實驗
4 小結(jié)