福建省廈門雙十中學(xué) 連 龍
一種基于手機(jī)攝像頭的英文菜單掃描識(shí)別翻譯應(yīng)用程序
福建省廈門雙十中學(xué) 連 龍
本研究的目的在于設(shè)計(jì)出一款基于手機(jī)攝像頭的英文菜單掃描識(shí)別翻譯應(yīng)用程序,解決語(yǔ)言不通無(wú)法看懂菜單的問(wèn)題。通過(guò)掃描菜單條目來(lái)快速知道菜品的內(nèi)容,節(jié)約時(shí)間又能讓旅行者點(diǎn)到自己想要的食物,防止點(diǎn)錯(cuò)菜等尷尬場(chǎng)面的發(fā)生。本研究使用了Swift和Objective-C平臺(tái),使用了如OpenCV、Tesseract等開(kāi)源類庫(kù),通過(guò)和指導(dǎo)老師在一起的調(diào)試工作,最終達(dá)到掃描條目,識(shí)別菜名,顯示菜品信息的目的,有效方便使用者外出旅行。
菜單;掃描;識(shí)別;翻譯;手機(jī);攝像頭;應(yīng)用程序;光學(xué)字符識(shí)別
本研究的目的在于設(shè)計(jì)出一款基于手機(jī)攝像頭的英文菜單掃描識(shí)別翻譯應(yīng)用程序,通過(guò)這項(xiàng)應(yīng)用程序,國(guó)人在英語(yǔ)國(guó)家點(diǎn)餐時(shí)就可以解決語(yǔ)言不通無(wú)法看懂菜單的問(wèn)題。通過(guò)掃描來(lái)快速知道菜品的內(nèi)容(如菜品中文名、圖片及評(píng)價(jià)),節(jié)約時(shí)間又能讓旅行者點(diǎn)到自己想要的食物,防止點(diǎn)錯(cuò)菜等尷尬場(chǎng)面的發(fā)生。
應(yīng)用程序主要使用的光學(xué)字符識(shí)別(OCR)算法是通過(guò)對(duì)圖片掃描從而獲取圖片中文字的算法。本文使用的OCR算法的實(shí)現(xiàn)方式在于首先將圖片進(jìn)行預(yù)處理,成為可識(shí)別圖像,再采用極端區(qū)域過(guò)濾算法,采集文字區(qū)域。之后分割圖片,進(jìn)行掃描識(shí)別,最終將識(shí)別結(jié)果拼接起來(lái)成為文字。這款應(yīng)用先用光學(xué)字符識(shí)別算法對(duì)攝像頭采集的菜譜圖片進(jìn)行掃描識(shí)別,從中采集出字符組成單詞,再將對(duì)應(yīng)菜品名稱進(jìn)行模糊搜索,獲得名稱所對(duì)應(yīng)的條目并顯示其信息。
1.基礎(chǔ)平臺(tái)
本次應(yīng)用程序開(kāi)發(fā)過(guò)程使用了蘋果的Xcode開(kāi)發(fā)軟件和Swift 3編程語(yǔ)言以及對(duì)應(yīng)的iOS SDK 10.3,程序代碼采用開(kāi)發(fā)者簽名以保證通過(guò)蘋果程序安裝驗(yàn)證。
2.所用框架
為了加快項(xiàng)目過(guò)程,此項(xiàng)目選用了OpenCV和Tesseract來(lái)實(shí)現(xiàn)算法。 OpenCV是一個(gè)開(kāi)源計(jì)算機(jī)視覺(jué)與機(jī)器學(xué)習(xí)識(shí)別類庫(kù)(OpenCV About Page,2017),在本應(yīng)用程序中,OpenCV識(shí)別字符區(qū)域位置和文字大小,識(shí)別結(jié)果將傳遞給Tesseract進(jìn)行光學(xué)字符識(shí)別。Tesseract是一種開(kāi)源的光學(xué)識(shí)別引擎,它可被直接使用或者API來(lái)提取圖片中的打字機(jī)打出的字符、手寫字符和打印字符并且支持多種語(yǔ)言(Tesseract Wiki,2017)。此應(yīng)用使用了Tesseract的iOS版來(lái)提取字符。此項(xiàng)目參考了SwiftOpenCV項(xiàng)目,采取Swift+Objective-C混編的方式調(diào)用OpenCV和Tesseract函數(shù)。
3.算法實(shí)現(xiàn)
在引入了頭文件至Swift的情況下,本應(yīng)用程序先使用AVCaptureSession類創(chuàng)建了一個(gè)captureSession用于捕獲攝像頭的視頻流,再添加一個(gè)預(yù)覽層previewLayer到主顯示界面上用于實(shí)時(shí)顯示視頻流,在之后采集視頻流和識(shí)別搜索。掃描后的信息將被發(fā)送到服務(wù)器上對(duì)菜名進(jìn)行模糊搜索,以網(wǎng)頁(yè)的形式將所需顯示信息返回手機(jī)應(yīng)用,手機(jī)使用WKWebView控件來(lái)顯示網(wǎng)頁(yè)。網(wǎng)頁(yè)偵聽(tīng)特定動(dòng)作并給予反饋,如點(diǎn)擊“查看完整描述”就能查看特定菜品的詳細(xì)描述。
本應(yīng)用程序的圖形界面使用了storyboard,ViewController中心放置了UIImageView用于在視頻預(yù)覽層上顯示掃描框和文字區(qū)域框,預(yù)覽層由Swift生成,添加在主顯示控制器中。
掃描之后會(huì)顯示詳細(xì)內(nèi)容顯示頁(yè)面,主要的內(nèi)容是一個(gè)WKWeb-View用于顯示所需要的詳細(xì)信息所在的網(wǎng)頁(yè),網(wǎng)頁(yè)使用HTML編寫。
本研究的同類產(chǎn)品為翻譯類軟件,如有道詞典,支持掃描單詞獲取釋義,這類軟件與本研究的產(chǎn)品差別在于本研究能顯示菜品的具體信息,幫助旅行者獲得菜品圖片和評(píng)價(jià)而詞典不具備這些功能,只能提供中文翻譯,因此本產(chǎn)品能給使用者帶來(lái)很多便利。
用戶只需將攝像頭對(duì)準(zhǔn)文字,點(diǎn)擊屏幕進(jìn)行掃描,程序會(huì)將圖像中的名稱轉(zhuǎn)為可處理的文字,并搜索出相近菜品名稱并顯示。無(wú)論是對(duì)印刷字體還是手寫字體,甚至是對(duì)具有背景紋路干擾的菜單進(jìn)行掃描,該應(yīng)用程序都能獲得較好的識(shí)別結(jié)果,顯示出信息頁(yè)面。
此研究可以讓外出旅游的中國(guó)人在英語(yǔ)國(guó)家點(diǎn)餐時(shí)快速知道菜品內(nèi)容,節(jié)約時(shí)間又能點(diǎn)到想要的食物,防止點(diǎn)錯(cuò)菜等場(chǎng)面發(fā)生。此應(yīng)用程序目前還在發(fā)展階段,支持的菜品種類還不夠多,在后期可能打算與國(guó)內(nèi)外菜品或點(diǎn)評(píng)網(wǎng)站合作,增加菜品數(shù)量和評(píng)價(jià)等對(duì)使用者有重要意義的信息。
本研究的成果應(yīng)用程序在大多數(shù)情況下都能正常識(shí)別出菜品名稱,證明了光學(xué)字符識(shí)別用于菜單掃描的可行性。在光學(xué)字符識(shí)別下不能識(shí)別的字符基本會(huì)在模糊搜索中被忽略,達(dá)到搜索最近結(jié)果的目的。因此光學(xué)字符識(shí)別作為菜單翻譯的基礎(chǔ)算法是具有可行性的。
[1]Optical character recognition Wikipedia[EB/OL].https:// en.wikipedia.org/wiki/Optical_character_recognition,2017.
[2]OpenCV About Page[EB/OL].http://www.opencv.org/,2017.
[3]Tesseract Wiki[EB/OL].https://github.com/tesseract-ocr/ tesseract/wiki,2017.