王杰 黃才林 康珠卓瑪
摘 要:隨著移動互聯(lián)網(wǎng)技術(shù)的飛速發(fā)展以及網(wǎng)絡(luò)覆蓋面積的不斷擴(kuò)大,人們對于智能手機(jī)的依賴日益加深,生活的各個方面都變得更加方便快捷。定位及導(dǎo)航,是當(dāng)今世界人們的普遍需求,基于GPS系統(tǒng)的室外定位已經(jīng)非常成熟,但是在室內(nèi)環(huán)境下,由于導(dǎo)航信號衰減太快,衛(wèi)星定位就無法使用,導(dǎo)致如何定位成為一個難點(diǎn)問題。文章研究了基于OCR技術(shù)的室內(nèi)定位系統(tǒng),可以在GPS信息弱、環(huán)境復(fù)雜的大型室內(nèi)場所提供較為精準(zhǔn)的定位服務(wù)。
關(guān)鍵詞:Android;室內(nèi)定位;OCR技術(shù);APP
隨著我國經(jīng)濟(jì)的不斷發(fā)展、人民生活水平的日益提高,各種室內(nèi)場所也趨向于大型化、復(fù)雜化,例如圖書館、醫(yī)院、大型超市、高鐵站、地下車庫等,在大型室內(nèi)環(huán)境下的定位需求也隨之產(chǎn)生。不同于GPS、北斗衛(wèi)星定位系統(tǒng)等室外定位系統(tǒng),室內(nèi)定位系統(tǒng)是移動應(yīng)用領(lǐng)域的一大挑戰(zhàn)。
基于OCR技術(shù)的室內(nèi)定位系統(tǒng),是通過建立室內(nèi)的標(biāo)志物上的文字信息與其對應(yīng)坐標(biāo)的數(shù)據(jù)庫,使得用戶在GPS信號弱的室內(nèi),也可以享受較為精確的定位服務(wù)。通過手機(jī)上的APP對室內(nèi)標(biāo)志物的文字信息進(jìn)行拍照,如店鋪名、路牌、展品介紹等,APP中接入的OCR識別引擎會識別圖中的文字信息,然后傳輸?shù)椒?wù)器,在數(shù)據(jù)庫中對文字信息進(jìn)行檢索和匹配,匹配成功后返回坐標(biāo),并在APP上以地圖和坐標(biāo)點(diǎn)的形式顯示位置。
1 室內(nèi)定位APP的系統(tǒng)分析
1.1 系統(tǒng)架構(gòu)
軟件的架構(gòu)需要UI組件、UI處理組件、百度OCR引擎、高德地圖SDK、數(shù)據(jù)訪問組件等。UI組件用來顯示用戶界面,百度OCR引擎提供文字識別服務(wù),高德地圖提供地圖源,軟件通過數(shù)據(jù)訪問組件和數(shù)據(jù)庫交換信息。此外,還需考慮到通信、運(yùn)行管理以及系統(tǒng)安全性等方面的問題[1]。軟件架構(gòu)如圖1所示。
1.2 主要功能模塊
室內(nèi)定位APP主要包括6大功能模塊。
(1)注冊模塊:注冊方式為手機(jī)號或者郵箱注冊,點(diǎn)擊獲取驗(yàn)證碼來驗(yàn)證手機(jī)號或者郵箱的正確性,防止惡意注冊或錯誤注冊。驗(yàn)證成功后需要設(shè)置登錄密碼,填寫兩次且兩次密碼相同才算注冊成功,然后自動登錄系統(tǒng),無需再次輸入賬號和密碼,同時(shí)系統(tǒng)將注冊信息傳輸?shù)椒?wù)器端,插入用戶表中。
(2)登錄模塊:用戶需要輸入賬號和密碼,如果不記得密碼的話可以點(diǎn)擊“忘記密碼”,驗(yàn)證手機(jī)號或者郵箱后可以重置密碼。點(diǎn)擊登錄后,登錄信息會傳輸?shù)綌?shù)據(jù)庫中進(jìn)行比對,完全正確才能進(jìn)入主界面。
(3)設(shè)置模塊:在主界面中點(diǎn)擊齒輪圖標(biāo)后會進(jìn)入設(shè)置界面,可以在設(shè)置中選擇修改密碼、地圖管理、是否允許管理員進(jìn)行消息推送、是否允許WiFi下自動下載最新版本軟件、清除緩存以及退出登錄等功能。其中,地圖管理是指可以下載指定城市的地圖,這樣可以節(jié)省流量,不必每次打開軟件后都要聯(lián)網(wǎng)接收地圖資源。
(4)OCR識別模塊:點(diǎn)擊頂部搜索欄右側(cè)的相機(jī)圖標(biāo)后,軟件會打開系統(tǒng)相機(jī)進(jìn)行拍照,然后自動調(diào)用百度OCR引擎進(jìn)行識別,識別出的文字顯示出來后,用戶可以選擇手動修改文字,修改好后上傳至服務(wù)器,或者直接上傳。
(5)地圖模塊:使用高德提供的地圖,根據(jù)服務(wù)器返回的坐標(biāo)信息,在地圖上顯示當(dāng)前位置。
(6)歷史記錄模塊:在主界面點(diǎn)擊時(shí)鐘圖標(biāo)后會進(jìn)入歷史記錄界面,可以看到用戶定位的記錄,包括時(shí)間、地點(diǎn)和OCR識別的文字信息[2]。
1.3 系統(tǒng)流程
打開軟件后點(diǎn)擊搜索框右側(cè)的相機(jī)圖標(biāo),打開手機(jī)相機(jī),拍攝照片后,系統(tǒng)會調(diào)用百度OCR引擎識別照片中的文字,識別失敗會提示用戶重新拍攝清晰的照片,識別成功后系統(tǒng)會將識別出的文字顯示出來,讓用戶檢查是否正確,若有錯誤可以選擇手動修改文字,無錯誤則直接上傳至服務(wù)器,然后在數(shù)據(jù)庫中進(jìn)行查詢和匹配,匹配失敗就會返回到拍照界面,提示用戶重新選擇標(biāo)志物,匹配成功則會返回坐標(biāo)值,然后系統(tǒng)調(diào)用高德地圖源,顯示室內(nèi)地圖和坐標(biāo)點(diǎn),一次室內(nèi)定位完成。
2 主要技術(shù)實(shí)現(xiàn)
2.1 數(shù)據(jù)庫設(shè)計(jì)
本系統(tǒng)在服務(wù)器端的MySQL數(shù)據(jù)庫中創(chuàng)建數(shù)據(jù)庫表,根據(jù)不同的數(shù)據(jù)格式,將數(shù)據(jù)分為用戶登錄數(shù)據(jù)、用戶行為數(shù)據(jù)以及位置坐標(biāo)數(shù)據(jù)3大類進(jìn)行存儲。
用戶登錄數(shù)據(jù)包括用戶的登錄賬號和密碼等信息,由于這類數(shù)據(jù)相當(dāng)重要,不應(yīng)以明文的方式存儲在數(shù)據(jù)庫中,通過使用MySQL的AES_ENCRYPT函數(shù)加密數(shù)據(jù),因?yàn)榧用芎蟮臄?shù)據(jù)比較難看,所以再使用to_base64函數(shù)轉(zhuǎn)碼數(shù)據(jù),將加密后的用戶信息存儲在數(shù)據(jù)庫中。
用戶行為數(shù)據(jù)包括用戶使用該軟件進(jìn)行室內(nèi)定位的時(shí)間、OCR識別出的文本、用戶修改后的文本以及定位后的位置坐標(biāo)。該數(shù)據(jù)內(nèi)容供用戶在歷史記錄中查看,用戶可自行刪除。
位置坐標(biāo)數(shù)據(jù)包括室內(nèi)環(huán)境下特征物上的文字信息以及對應(yīng)的坐標(biāo)值。通過匹配用戶上傳的字符串,返回坐標(biāo),用于在手機(jī)客戶端顯示當(dāng)前所在位置并在地圖上進(jìn)行標(biāo)注[3]。
2.2 調(diào)用OCR接口
該軟件使用百度的OCR進(jìn)行文字識別,百度的OCR服務(wù)免費(fèi),不過每天有次數(shù)的限制,但對于學(xué)生項(xiàng)目來說夠用。
首先,在百度AI開放平臺中進(jìn)入控制臺,找到文字識別的產(chǎn)品服務(wù),創(chuàng)建應(yīng)用后填寫相關(guān)信息,獲得AK、SK。然后,下載license文件,在項(xiàng)目中如果直接用AK、SK明文調(diào)用百度的OCR,很不安全,可能會被別人反編譯之后獲得用戶的AK、SK,而license文件集成了AK、SK,放在項(xiàng)目中可以防止別人破解。之后,再下載百度OCR的Android SDK,添加進(jìn)項(xiàng)目中。準(zhǔn)備工作完成后就可以開始調(diào)用百度的OCR接口了。在需要進(jìn)行識別的頁面所在的文件中創(chuàng)建根據(jù)License文件初始化OCR實(shí)例的函數(shù),并在onCreate()方法中調(diào)用。接下來新建一個可以存放OCR的識別方法的類RecognizeService,在onActivityResult方法中,調(diào)用剛剛新建的類的recAccurateBasic方法,此方法接收3個參數(shù),分別是context、拍照獲取的圖片路徑和在RecognizeService類中定義的監(jiān)聽接口,在onResult方法中,返回的result字符串即為識別結(jié)果的json字符串,只需要對JSON進(jìn)行解析就能得到識別結(jié)果[4]。
2.3 獲取室內(nèi)地圖服務(wù)
該軟件使用高德提供的地圖服務(wù)。在高德開放平臺中進(jìn)入控制臺,創(chuàng)建應(yīng)用,獲取API KEY,下載Android平臺下的地圖SDK文件,將解壓后的jar包導(dǎo)入工程中。開發(fā)環(huán)境配置好后,在工程的“AndroidManifest.xml”文件中添加用戶KEY和所需要的權(quán)限,在布局xml文件中添加地圖控件,創(chuàng)建地圖Activity,管理地圖生命周期。
3 結(jié)語
本文基于Android平臺設(shè)計(jì)并開發(fā)了基于OCR技術(shù)的室內(nèi)定位APP,為室內(nèi)定位提供了一個新的解決方案。現(xiàn)階段比較成熟的室內(nèi)定位方案,是需要基礎(chǔ)設(shè)施的,比如室內(nèi)部署密集的接入點(diǎn)或者基站,例如各種傳感器,信號接收裝置,信號發(fā)射器等,成本較高,且需要維護(hù)設(shè)備。而基于OCR技術(shù)的室內(nèi)定位方案的成本是很低的,并不需要各種用來定位的設(shè)備,較為麻煩的只是第一步,建立坐標(biāo)庫。將室內(nèi)標(biāo)志物上的文字信息提取出來,并建立坐標(biāo)庫。這的確是不小的工作量,但是隨著OCR技術(shù)和人工智能技術(shù)的發(fā)展,未來可能只需用無人機(jī)將室內(nèi)所有場景拍攝下來,然后系統(tǒng)便可以自動整理出圖片并匹配其對應(yīng)的坐標(biāo),導(dǎo)入數(shù)據(jù)庫中,這樣就可以大大降低工作量,甚至可以打開攝像頭,通過錄像的方式來實(shí)現(xiàn)室內(nèi)的實(shí)時(shí)定位。作為一種無需傳感器的室內(nèi)定位方案,它可以給我們提供更多的創(chuàng)新想法和研究方向。
[參考文獻(xiàn)]
[1]朱懷中.基于Android的手機(jī)OCR識別技術(shù)設(shè)計(jì)與實(shí)現(xiàn)[J].電子科技,2012(5):45-48.
[2]王楊,趙紅東.室內(nèi)定位技術(shù)綜述及發(fā)展前景展望[J].測控技術(shù),2016(7):1-3.
[3]紀(jì)孝楨.基于Android平臺的自習(xí)室信息服務(wù)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].武漢:華中科技大學(xué),2013.
[4]曹曉燕,王辰,郭朝霞.基于Android的旅游助手APP的設(shè)計(jì)與實(shí)現(xiàn)[J].科技創(chuàng)新與應(yīng)用,2018(28):66-68.