黃春營,李 超,彭 琿,張 翔
(63892部隊,河南 洛陽 471000)
新型冠狀病毒感染暴發(fā)后,國家和政府出臺了一系列措施進行防控,在防控過程中,最常見的防控要求通常是查看來訪人員的行程卡和健康碼,采用人工方式判斷來訪人員是否有中高風險地區(qū)旅居史。但是,這種人工查看行程卡的方式信息化程度不高、效率低,并且在中高風險地區(qū)較多的情況下,人工查看的方法就要求防控人員首先需要牢記每個中高風險地區(qū),然后對行程卡信息進行一一比對,這對防疫人員來說具有一定的難度。此外,采用人工查看比對結(jié)果的準確度也難以達到要求,并且無法留存相應的行程卡信息,給后續(xù)追蹤、倒查帶來一定的困難,也給疫情防控帶來極大的安全隱患[1-2]。
為了提高人員管控的效率,減輕人工查驗的壓力,便捷地留存相應人員的行程卡上對應的電話、時間及近期行程信息,在確保信息安全和符合保密要求的前提下,本文設計了一套疫情防控輔助分析與預警系統(tǒng),該系統(tǒng)具有以下特點:一是方便快捷,只需要用戶手機截圖行程卡然后上傳至系統(tǒng),系統(tǒng)就能夠自動識別行程卡上的數(shù)據(jù),然后與系統(tǒng)中保存的當前中高風險地區(qū)數(shù)據(jù)一一比對,即可得到相應的風險判定信息,并能準確地給出預警;二是操作靈活準確,針對不同地方的防疫要求,管理員可以對中高風險地區(qū)進行靈活管理,使系統(tǒng)比對結(jié)果更加準確;三是方便追蹤信息,由于對中高風險地區(qū)的判定存在一定的滯后性,可能造成某些人員在查驗行程卡信息時屬于無風險,但后續(xù)追蹤可能出現(xiàn)風險的情況。針對此問題,系統(tǒng)能夠快速查找追蹤指定時間范圍內(nèi)管控人員的行程信息,判斷該類人員是否有防疫安全風險;四是符合保密和信息安全要求,網(wǎng)絡系統(tǒng)中留存的信息只有行程卡圖片上顯示的相關(guān)的信息,不含其他任何個人數(shù)據(jù)信息,符合規(guī)范的保密要求[3]。
PaddlePaddle[4]是百度公司自主研發(fā)的深度學習平臺,該平臺集成了深度學習核心訓練、推理框架、基礎模型庫、端到端開發(fā)套件及豐富的工具組件,具有模塊化設計、高效率訓練,高性能、工業(yè)級部署等特性,并且有豐富的官方支持的用于產(chǎn)業(yè)、學術(shù)和科研的模型庫,內(nèi)容涵蓋計算機視覺、自然語言處理、推薦算法等領域[5]。
PaddlePaddle中的開源文字識別模型套件PaddleOCR是一個先進實用的文本識別模型和工具庫。PaddleOCR在實現(xiàn)前沿算法的基礎上,在充分考慮計算精度與速度的平衡后,對模型進行瘦身和深度優(yōu)化。用戶既可以通過PaddleHub工具方便快捷地使用PaddleOCR實現(xiàn)各種應用,也可以使用PaddleOCR套件根據(jù)自己的需求訓練出自己的超輕量模型。
為了簡化用戶操作流程、保證用戶上傳信息的準確性,系統(tǒng)基于PaddlePaddle深度學習框架快速開發(fā)和部署獨立的圖片信息識別服務[6],該服務能夠快速識別用戶上傳的行程卡信息,經(jīng)過數(shù)據(jù)處理獲取系統(tǒng)需要的數(shù)據(jù)信息,然后進行比對、追蹤等操作。
Spring Boot是由Pivot團隊設計并研發(fā)的一種新穎的Web框架[7],其設計宗旨是簡化Spring應用的搭建和開發(fā)過程,通過“習慣優(yōu)于配置”的思想實現(xiàn)Web項目的快速搭建。該框架擁有獨特的配置方式,網(wǎng)站開發(fā)人員不需要進行大量重復的樣板式配置工作。Spring Boot能夠創(chuàng)建并運行獨立的Spring項目,其內(nèi)嵌的Tomcat服務器能方便地進行項目的調(diào)試,并且項目支持以jar/war包的方式進行線上部署,項目配置不會生成額外的代碼量,不需要進行XML文件的配置,具有開箱即用的特點,提供了更快的基于Spring的開發(fā)體驗。所以,本系統(tǒng)采用Spring Boot框架快速實現(xiàn)項目中Web部分的開發(fā)和部署[8]。
MyBatis是Apache的一個開源項目和ORM(Object Relation Mapping)框架,它通過XML文件和注解實現(xiàn)對象關(guān)系到數(shù)據(jù)庫的映射,從而簡化了Java代碼對數(shù)據(jù)庫的直接操作[9]。MyBatis框架的一個特性在于語句的映射。相比JDBC等其他連接數(shù)據(jù)庫的方式,使用SQL(Structured Query Language)映射的XML配置文件比較簡便,并且會減少較多的代碼。MyBatis的另一個重要特性是支持動態(tài)SQL。在動態(tài)SQL語法的幫助下,開發(fā)人員可以將很多的參數(shù)邏輯放入XML中使用動態(tài)SQL進行判斷,而不是放在業(yè)務邏輯層進行冗余邏輯的處理,這也極大地提高了SQL語句的復用性。系統(tǒng)中使用MyBatis可以將業(yè)務邏輯和數(shù)據(jù)訪問邏輯分離,讓開發(fā)人員更專注于系統(tǒng)的上層應用設計和架構(gòu)部分,使系統(tǒng)的設計更清晰,更便于維護。
新型冠狀病毒感染的防控過程中,針對來訪人員采取人工查驗行程碼判斷是否存在風險的工作方式效率低,而且容易出現(xiàn)漏報誤報的情況,以及對通過現(xiàn)場查驗的人員也無法實現(xiàn)有效追蹤的問題,急需一套能夠方便快捷地進行行程卡信息檢測并且能夠?qū)崟r查看、實時更新的系統(tǒng),該系統(tǒng)的主要需求包括以下幾個方面。
(1)用戶上傳行程卡圖片:要求系統(tǒng)能便捷地上傳個人行程卡信息,并得到準確的判斷結(jié)果。
(2)實時預警:當用戶上傳行程卡信息后,系統(tǒng)會自動判斷該用戶是否有防控安全風險,當判斷結(jié)果為有風險存在時,系統(tǒng)能夠及時地給出預警信息。
(3)預警信息查詢:系統(tǒng)管理員能夠?qū)崟r查看系統(tǒng)的預警信息,并且能根據(jù)預警信息準確追蹤有安全風險的人員信息,及時進行人員管控。
(4)中高風險地區(qū)管理:系統(tǒng)能夠?qū)崟r更新中高風險地區(qū),運維人員能夠?qū)ο到y(tǒng)中的中高風險地區(qū)信息進行管理。
(5)歷史數(shù)據(jù)管理:系統(tǒng)管理員能夠快速查詢和追蹤歷史數(shù)據(jù)。
(1)安全性:系統(tǒng)中需要用戶上傳的數(shù)據(jù)不包含任何隱私信息,均為可公開的數(shù)據(jù),并且系統(tǒng)中不存儲其他任何個人信息,確保信息安全。
(2)便捷性:考慮到用戶群體可能對手機操作不熟練,所以要求用戶端的操作應盡量簡單易懂;管理員端的操作應適配PC端和移動端。
(3)并發(fā)性:經(jīng)過對應用場景的統(tǒng)計分析,系統(tǒng)建設初期應能保證50 人同時流暢地上傳個人行程卡信息,若后續(xù)有更高的并發(fā)需求時,系統(tǒng)架構(gòu)應支持通過選擇增添服務器、做負載均衡等方式實現(xiàn)擴容。
(4)兼容性:系統(tǒng)界面需適應市場主流移動設備及PC端,能夠兼容IOS、Android等不同的手機系統(tǒng)。
本節(jié)根據(jù)系統(tǒng)的需求分析進行設計,主要介紹系統(tǒng)體系結(jié)構(gòu)設計、功能結(jié)構(gòu)設計兩個部分。
疫情防控輔助分析與預警系統(tǒng)采用B/S結(jié)構(gòu)進行設計,該結(jié)構(gòu)的體系框架是一種基于Web的三層系統(tǒng)結(jié)構(gòu)[10-11],如圖1所示。
圖1 Web系統(tǒng)結(jié)構(gòu)Fig.1 Web system architecture
圖1中,最上層是表示層,該層主要是展現(xiàn)給用戶的界面,是直接與用戶交互的部分,在本系統(tǒng)中,用戶可以掃描二維碼通過瀏覽器與系統(tǒng)進行交互;中間層是業(yè)務邏輯層,該層包括兩個部分:一部分是基礎的防疫相關(guān)業(yè)務服務,負責處理圖片上傳、風險識別、實時預警等功能,另一部分是基于PaddlePaddle搭建的圖片自動識別服務,主要通過接口與基礎業(yè)務處理部分進行交互;最底層是數(shù)據(jù)存儲層,負責管理整個系統(tǒng)的數(shù)據(jù)資源的存儲。
系統(tǒng)的功能結(jié)構(gòu)如圖2所示,主要包括用戶監(jiān)測模塊、中高風險地區(qū)管理模塊、信息查詢模塊。
圖2 系統(tǒng)功能結(jié)構(gòu)圖Fig.2 The structure of system functions
4.2.1 用戶監(jiān)測模塊
(1)上傳圖片:這是系統(tǒng)用戶使用的主要功能,用戶上傳行程卡截圖后,系統(tǒng)給出判斷結(jié)果。
(2)圖片識別:系統(tǒng)基于PaddlePaddle框架建立獨立的服務接口,識別用戶上傳的圖片信息。
(3)風險識別:系統(tǒng)通過逐一比對用戶行程卡中的行程和中高風險地區(qū)信息,識別判斷該用戶是否存在風險。
(4)實時預警:系統(tǒng)可以實現(xiàn)實時預警,并能通過郵件的方式給管理人員發(fā)送預警信息。
4.2.2 中高風險地區(qū)管理模塊
(1)自動更新:系統(tǒng)通過定時任務,每天自動從網(wǎng)站抓取中高風險地區(qū)信息,并實時與系統(tǒng)中信息進行比對、更新。
(2)人工維護:可以采取人工方式對中高風險地區(qū)進行新增、修改、刪除、查詢等操作。
4.2.3 信息查詢模塊
(1)預警信息查詢:查詢系統(tǒng)的預警信息。
(2)歷史信息查詢:查詢系統(tǒng)中用戶上傳的歷史信息,方便追蹤。
在說明系統(tǒng)設計的基礎上,本部分主要對系統(tǒng)對接的主要防疫業(yè)務,以及圖片識別服務和前端頁面部分的實現(xiàn)進行簡要介紹。
該系統(tǒng)的實現(xiàn)主要采用開源Spring Boot框架,該框架繼承了Spring框架的優(yōu)秀特征,還通過簡化配置的方式進一步簡化了Spring應用的搭建和開發(fā)過程,在使用過程中,首先從Spring Boot官方網(wǎng)站選擇相關(guān)的配置,比如SpringBoot版本、JDK版本信息及開發(fā)所需要的依賴文件等信息,其次生成項目并下載到本地,導入開發(fā)環(huán)境中即可。項目中src目錄包含Java代碼和配置文件,test目錄用來做測試,pom.xml是項目所需的依賴文件。系統(tǒng)的開發(fā)一般進行分層處理,Controller層負責響應前端的請求,Dao層負責數(shù)據(jù)的持久化操作,Service層主要負責業(yè)務模塊的業(yè)務處理。其中,Dao層和Service層通常是先設計接口,然后設計其實現(xiàn)類,在Spring的配置文件中配置其實現(xiàn)的關(guān)聯(lián),最后可以在Controller中調(diào)用Service接口進行業(yè)務處理。
圖片識別服務通過搭建PaddlePaddle深度學習框架中的PaddleOCR套件實現(xiàn)。該套件主要包含文本檢測和文本識別兩個階段,其中文本檢測階段采用DB(Differentiable Binarization)算法,文本識別階段選用CRNN(Convolutional Recurrent Neural Network)算法。此外,PaddleOCR在檢測和識別階段之間還添加文本方向分類器,用以應對不同方向的文本識別。
系統(tǒng)的前端采用Bootstrap開源框架,該框架是一個能夠自適應的前端響應式框架,用于開發(fā)響應式布局、移動設備優(yōu)先的Web項目,能夠幫助開發(fā)者快速設計出扁平化的前端界面。系統(tǒng)只需要引入Bootstrap的相關(guān)項目文件即可進行前端頁面的開發(fā)。
系統(tǒng)的主要功能界面如圖3至圖5所示,其中圖3是用戶圖片上傳界面,用戶只需上傳圖片即可得到是否存在風險的判斷結(jié)果,圖中的其他信息是通過自動識別圖片上的信息自動填充的,進一步簡化了用戶操作。圖4是中高風險地區(qū)信息管理的界面,管理員能夠便捷地對中高風險地區(qū)的信息進行相應的操作。圖5是用戶上傳的行程信息及產(chǎn)生預警信息的界面,用戶能夠快速查看上傳的行程信息及產(chǎn)生預警的行程信息。此外,由于這兩個功能在前端顯示的界面上類似,因此對界面進行了重用,通過點擊不同的按鈕對信息進行切換查詢。
圖3 圖片上傳Fig.3 Image upload
圖4 中高風險地區(qū)信息管理Fig.4 Management of the middle-risk and high-risk areas
圖5 信息查詢Fig.5 Information query
本文以新型冠狀病毒感染防控過程中如何快速有效地判斷來訪人員的風險為目標,實現(xiàn)了基于行程卡信息自動識別的疫情防控輔助分析與預警系統(tǒng)。系統(tǒng)后端采用“Spring Boot+MyBatis”等開源框架,具有良好的可擴展性且自主可控;前端采用Bootstrap自適應框架,方便用戶在各種移動設備和PC端使用。該系統(tǒng)的設計和實現(xiàn)既滿足了信息保密要求,也為疫情防控提供了精準便捷的分析工具,大大提高了疫情防控工作的質(zhì)效,對疫情防控及具有保密和數(shù)據(jù)安全要求的應用系統(tǒng)的研發(fā)建設提供了經(jīng)驗和參考。