蔣熹煜 馮俊錕
基于Android的視障人士友好智能閱讀系統
蔣熹煜 馮俊錕
(桂林電子科技大學計算機與信息安全學院,廣西 桂林 541004)
市面現有閱讀軟件存在界面復雜、功能繁瑣的問題,視障人士無法便捷獲取紙質文字信息。為幫助視障用戶閱讀,文章基于Android(安卓系統)移動端、云服務端設計了一套視障人士閱讀輔助系統,幫助視障人士獲取紙質和電子文本信息。系統允許用戶通過手動拍照或手機相冊導入圖片并上傳至云服務器,利用圖片增強技術提高圖片清晰度,提取其中的文字信息后,將信息發送回移動端進行自動播報,此系統提升了視障人士的生活質量與知識水平。
視障閱讀輔助系統;神經網絡;安卓系統
視覺障礙人群又稱視障人群,即視覺功能受到一定程度的損傷,并很難或無法恢復到正常視力的群體[1]。據報道[2],截至2022年,我國的視障人數已經達到830萬,我國成為世界上視障人士數目最多的國家。目前,視障人群的教育和幫扶工作得到了眾人的關注和重視。隨著視障人群的文化水平不斷提高,其閱讀需求也在增長,因此設計一套幫助視障用戶閱讀的系統,不僅是一個具有廣闊市場前景的項目,而且對社會也有重要的意義。希望通過此系統,視障用戶可以更加方便地閱讀各種文獻,提升知識水平和生活質量。
針對上述背景,本文設計了一套基于Android(安卓系統)的視障人士友好智能閱讀系統。相比于傳統的閱讀軟件,該系統將深度學習視覺圖像處理算法與移動端開發技術相結合,幫助視障用戶獲取紙質或者電子文本信息。
視障人士友好智能閱讀系統的執行步驟如下:圖片數據獲取-圖片數據上傳-圖片數據增強-圖片文字數據提取-圖片數據返回-圖片數據展示。系統總體流程如圖1所示。

圖1 系統總體流程圖
圖片數據獲取是智能閱讀系統的入口,本地圖片數據獲取主要有拍照和從相冊導入兩種方式。
第一種方式是通過Camera2進行拍照。Camera2是Google內置在安卓系統中方便開發者調用攝像頭設備的一個類庫,使用Camera2需要在Android5.0以上版本,并且需要在Android6.0以上版本進行動態權限的管理。相比于之前的Camera API,Camera2采用了一種全新的架構,引入了管道的概念,經過多步驟將設備和攝像頭聯通,開發者可以更加靈活地控制攝像頭參數和進行操作。在使用Camera2進行拍照時,系統向攝像頭發送Capture請求,攝像頭返回CameraMetadata,這個過程借助Camera2類庫來實現,以此獲得更高的處理性能和更好的圖像質量。
第二種方式是通過registerForActivityResult(Android的一個方法)從相冊中導入圖片。registerForActivityResult是Google團隊實現的方法,可以啟動一個活動,并接收返回的結果。該方法通過多態的方式傳入不同的參數,實現運行時的權限請求、拍照獲取URI(統一資源標識符)、選取聯系人等常見功能,使用更加方便、靈活,可以有效簡化圖片選擇等操作。使用registerForActivityResult可以減少代碼量,簡化開發流程,提高開發效率,同時,使用時更加安全和可靠,可以更好地保護用戶的隱私和數據安全。
圖片數據需要上傳至云服務器,才能在云端利用算法進行圖片增強。上傳圖片數據主要有三種方法,第一種是利用HttpUrlConnection(一種多用途、輕量級的HTTP客戶端),第二種是利用Okhttp(?個默認高效的HTTP客戶端),第三種是利用Retrofit(一個類型安全的客戶端)。
HttpUrlConnection:優點是內置于Java Software Development Kit中,無需額外依賴;適合簡單的HTTP請求,易于學習和使用;可以在低版本的安卓系統中使用。缺點是API(應用程序編程接口)作用比較局限,需要構建請求和解析響應;需要手動處理多線程問題;需要手動發送請求,以及將對象序列化和反序列化。
Okhttp:優點是在HttpUrlConnection基礎上進行了封裝,易于使用;內置連接池、緩存、Gzip等功能,有利于提高請求效率;提供了異步請求和響應處理的API,支持多線程并發;支持攔截器機制,可以方便地進行自定義攔截處理。缺點是需要添加額外的依賴,與簡單的請求操作相比稍顯復雜。
Retrofit:優點是對OkHttp進行了封裝,更加易于使用;使用注解定義API請求和響應數據類型,減少代碼量;支持多種數據格式的解析和序列化,如JSON(對象簡譜)、XML(可擴展標記語言)等;支持多線程異步請求和響應處理;支持攔截器機制,方便進行自定義攔截處理。
由于Retrofit是在Okhttp和HttpUrlConnection基礎上的進一步升級和優化,因此系統可利用Retrofit減少代碼量,提高開發效率,增強代碼可維護性。
為了提高圖片的清晰度,本文利用自適應圖像增強去噪算法[3],通過中值濾波去除噪聲,利用對數變換增強圖像背景色彩,并構建暗通道先驗(Dark channel prior,DCP)去霧算法進行圖片背景增強處理[4]。
非線性平滑技術的其中一種是中值濾波算法,這一算法通過設置滑動窗口,計算該窗口內像素點灰度值的中值,并用這一中值替換窗口中心的灰度值。
HE K等[5]提取了大量無霧圖像的特征并對它們進行分析,發現無霧圖像和大氣散射模型中某些參數存在先驗關系,最終提出暗通道先驗去霧算法。將這一算法運用到圖片處理中,可以顯著去除圖片背景噪聲。
1.3.1 中值濾波算法
為了消除孤立的噪聲點,可以使用中值濾波算法。該算法利用二維滑動窗口,用窗口中心周圍各個值的中值,替代窗口中心的像素值,從而使中間的點的像素值接近真實值,達到消除孤立的噪聲點的目的。二維中值濾波公式為:

1.3.2 暗通道去霧算法
將中值濾波后的圖像,輸入暗通道去霧公式中,亮度將會得到提升。處理步驟如下:
首先提取圖中亮度大小為0.1%的像素,在這些像素中尋找具有最高亮度的值,作為值,為全局大氣光值。將的值輸入如下公式,即可得到透射率的預估值(,):



對圖片進行增強后,利用百度AI(人工智能)開放平臺提供的通用文字識別接口[6],將圖片中的文字信息提取出來。
服務端主要基于Java(一種面向對象的編程語言)來編寫,使用SpringBoot,并用RestFul風格進行接口的編程。服務端處理客戶端傳來的數據后,將數據存儲在云服務器,并且將數據傳回客戶端,存儲在客戶端的本地數據庫。為提高數據加載速度,應合理選擇本地數據庫。
SQLite是一種嵌入式關系型數據庫,也是Android系統內置的數據庫。它提供了一個輕量級的解決方案,可以被嵌入到任何應用程序中,并且不需要任何獨立的服務器進程來運行。
LitePal是一個基于Android SQLite ORM的框架。ORM(對象關系映射)是一種將關系型數據庫的表結構映射到對象模型中的技術。LitePal可以簡化SQLite數據庫的操作,它提供了一些對象模型的概念,如表、字段和模型類,還支持數據遷移和事務處理。
Room是Android官方推薦的SQLite ORM框架,它使用了SQLite的底層基礎結構。同時,也使用注解處理器來生成與SQLite數據庫交互的代碼,避免了反射機制的性能損耗,這一特點也方便了開發者編寫數據庫相關的代碼。
綜上所述,Room的性能優化比LitePal更好,所以系統使用Room數據庫作為本地數據庫。
系統啟動后,通過查詢本地數據庫的方式獲取數據,然后用列表進行展示,列表可以選擇使用ListView或者RecyclerView,以下為兩者的對比。
性能方面,RecyclerView比ListView更加高效。RecyclerView使用了ViewHolder模式和回收機制,更利于重復使用Item View,減少內存消耗和View的創建次數,從而提高列表的滑動性能和響應速度。
靈活性方面,RecyclerView比ListView更加靈活。RecyclerView支持多種不同的布局方式,包括線性布局、網格布局和瀑布流布局等,還可以自定義Item Decoration來實現各種效果。而ListView只支持線性布局,并不能實現復雜的效果。
可擴展性方面,RecyclerView比ListView更強。RecyclerView能方便地擴展各種Item View類型,以適應不同的數據展示需求,還可以通過自定義LayoutManager來實現各種布局方式。而ListView則比較受限制,只能通過Adapter中的getItemViewType方法來實現多種Item View類型。
因為RecyclerView相對而言性能更優,靈活性更高,可拓展性更強,所以系統選擇RecyclerView列表展示數據。
系統基于Kotlin編寫移動端代碼,與Java相比,其語法更加簡潔,擁有極好的空指針處理機制,并且能無縫銜接Java代碼。系統選擇使用MVVM[7]架構,使程序具備更好的可讀性、可維護性、可測試性、可重用性,這些優點可以提高應用程序的質量和開發效率。
系統包含點播閱讀模塊、圖片文字提取模塊、圖片導入模塊、文章搜索模塊,目的是為視障用戶提供更好的閱讀幫助。系統各模塊如圖2所示。

圖2 視障閱讀輔助系統總體框架
圖片導入模塊的主要功能:視障用戶通過手機拍攝相片,或相冊導入圖片的方式,將包含文字信息的圖片數據導入應用中。
點播閱讀模塊的主要功能:視障用戶點擊要獲取的文字信息后,系統語音播報出界面的文字信息。
文章搜索模塊的主要功能:視障用戶通過盲人鍵盤輸入或語音輸入等方式,輸入自己感興趣的內容關鍵詞,然后系統搜索相應的文章并返回相關文本數據進行展示和播報。
圖片文字提取模塊是閱讀輔助系統的核心部分,主要功能是讀取系統中的圖像并提取圖像中的文字,最后將結果存入本地數據庫和位于云端的數據庫。
系統界面利用Google提供的Jetpack Compose庫來編寫,Jetpack Compose是一個Android UI工具包,主要優勢在于使用簡單,具有聲明性編程和響應式編程風格,可以幫助開發人員更快速地構建高質量的用戶界面。使用此工具包構建的界面,與Material Design3中的ViewPager2和BottomNavigationView等控件結合后,可以使Android應用程序更加現代化和易于使用。
圖片導入模塊的實現方式如下:首先引入網絡請求模塊Retrofit、相機處理模塊Camara2、圖片處理模塊Glide的依賴庫。然后通過Camera2模塊實現相機拍攝圖片功能,利用registerForActivityResult方法實現相冊獲取圖片功能。隨后用Glide進行圖片處理,將圖片轉換為Bitmap對象。最后通過Retrofit進行網絡請求,將數據上傳至云端服務器數據庫。
TalkBack是安卓系統內置的一種用戶輔助功能,可協助視障用戶使用安卓設備,包括協助使用文章閱讀功能,協助使用搜索功能。打開TalkBack后,用戶通過規定操作打開系統應用,點擊文章列表上的一篇文章后,系統便會語音播報被點擊文章的全部內容。另外用戶也可以通過搜索的方式,獲取數據庫中的指定文章內容并進行播報。
客戶端獲取服務端傳回的文字信息后,將文字信息封裝成實體類對象,調用Room API將實體類保存到數據庫。
文章搜索模塊的實現方式有兩種,一種是對圖片文字信息提取的結果進行查詢,另一種是調用API獲取網上開放文章數據。第二種方式的步驟如下:首先,創建Retrofit API接口,定義獲取文章信息的方法,使用Retrofit實現網絡請求;其次,獲取文章信息并將其保存到Room數據庫中,使用Room實現數據庫操作,以及根據關鍵詞查詢文章的目的;再次,在ViewModel中編寫獲取文章信息的邏輯,即從數據庫中查詢數據,若無數據則通過API接口獲取數據并保存到數據庫中;最后,在UI界面中利用LiveData和ViewModel進行數據的綁定和更新。文章查詢流程圖如圖3所示。

圖3 文章查詢流程圖
圖片文字提取模塊能提取導入客戶端中的圖片的文字信息,并進行展示。其信息處理過程如下:首先通過手機拍照,或者相冊導入圖片數據,客戶端通過網絡請求將圖片數據上傳至服務端,服務端對圖像進行預處理,利用中值濾波去除噪聲,利用對數變換增強圖像背景色彩,構建暗通道先驗去霧算法將圖片背景增強;其次利用ResNet[8]神經網絡進行圖片特征提取,再經過特征轉化,將圖片特征轉換為適合文本分類的向量形式;最后將轉換后的結果輸入卷積神經網絡Faster-RCNN[9]中進行分類。客戶端通過網絡請求,獲得數據后進行輸出。同時,服務端將識別記錄保存在云服務器中。圖片文字提取流程如圖4所示。

圖4 圖片文字提取流程
系統測試采用黑盒測試的方法,首先用戶隨機拍攝一張照片,或從相冊隨機導入一張圖片后,系統通過相關的算法進行圖像增強,然后提取圖片中的文字信息,最后存儲到數據庫中,并進行展示。結果顯示,系統能準確地將圖像進行增強并得到預期結果。
系統將服務端、移動端和神經網絡視覺圖像處理算法相結合來開發視障人群閱讀輔助系統。服務端對圖片數據進行增強和文字信息提取,并對提取出來的信息進行儲存,以此來為客戶端提供數據。客戶端利用MVVM框架、Kotlin語言、Retrofit開源框架,提高代碼可維護性,解決傳統安卓移動端代碼耦合度高、可維護性差的問題,提高了系統運行速度。系統最主要的特點是利用深度學習視覺圖像處理技術為視障用戶閱讀提供智能化幫助。
[1] 邱秀鑫,安玉婷. 我國圖書館視障讀者服務研究綜述[J].圖書館理論與實踐,2017(7): 12-18.
[2] 洪恒飛,周立超,江耘. 實時生成海量數字盲文,AI幫視障人士無障礙閱讀[J]. 東西南北,2022(15): 42.
[3] 楊秀璋,武帥,宋籍文,等. 一種自適應圖像增強和AlexNet的水書古文字識別算法[J]. 信息技術與信息化,2023(1): 212-216.
[4] 周昊,趙靜波,宣美艷,等. 基于暗通道先驗的全局去霧算法[J]. 黑河學院學報,2023,14(3): 186-188.
[5] HE K, SUN J, TANG X. Single image haze removal using dark channel prior[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2010, 33(12): 2341-2353.
[6] 通用文字識別(高精度版)[EB/OL]. (2022-11-17)[2023-05-07]. https://cloud.baidu.com/doc/OCR/s/1k3h7y3db.
[7] 徐玉祥,李愛蓮. 基于MVVM架構的基礎組件的研究與設計[J]. 電腦編程技巧與維護,2023(1): 18-21.
[8] 黃海新,陶文博. 一種基于ResNet模型及重排序策略的行人重識別算法[J]. 通信與信息技術,2023(2): 25-27.
[9] 謝恩澤,吳政,倪劼. 基于Faster-RCNN的古籍圖像文字檢測研究[J]. 新世紀圖書館,2022(11): 61-66.
Friendly Intelligent Reading System for Visually Impaired People Based on Android
The existing reading software on the market has problems with complex interface and cumbersome functions, making it difficult for visually impaired people to easily access paper text information. To assist visually impaired users in reading, this article designs a set of reading assistance systems for visually impaired individuals based on Android mobile and cloud servers, helping them access paper and electronic text information. The system allows users to import pictures through manual photography or mobile phone album and upload them to the cloud server. The image enhancement technology is used to improve the clarity of the pictures. The text information is extracted and then sent back to the mobile terminal for automatic broadcasting. This system improves the quality of life and knowledge level of visually impaired individuals.
visual impairment readingassistance system; neural network; Android
TP27
A
1008-1151(2023)11-0013-05
2023-07-18
桂林電子科技大學2021年校級教育教學改革一般項目(JGB202107);桂林電子科技大學2022年課程思政示范課(面向對象程序設計);大學生創新創業計劃項目(S202210595167)。
蔣熹煜(2003-),男,桂林電子科技大學計算機與信息安全學院學生,研究方向為移動互聯網技術、人工智能。