李慧敏,張宏杰,劉復昌
(1.浙江省立同德醫(yī)院 檢驗科,浙江 杭州 310012;2.杭州圖檢智能科技有限公司,浙江 杭州 311100;3.杭州師范大學 信息科學與技術(shù)學院,浙江 杭州 311121)
隨著生活水平的不斷提高和人們健康意識的不斷增強,越來越多的人開始進行健康體檢。健康體檢是了解身體狀況、預防疾病的一種有效方法。但體檢報告中包含大量醫(yī)學詞匯和指標數(shù)據(jù),非醫(yī)學人員無法全面直觀地了解報告中包含的信息,也無法快速得知體檢結(jié)果與歷年體檢結(jié)果的差異和快速獲取專業(yè)的醫(yī)療建議,導致不能全面發(fā)揮健康體檢的價值。據(jù)統(tǒng)計,2018年以來我國大城市工薪階層中大概超過70%的人身體處于亞健康狀態(tài)[1]。同時,我國也面臨著醫(yī)療資源分配不均等現(xiàn)狀[2]。
人工智能(artificial intelligence,AI)技術(shù)提供數(shù)據(jù)分析技術(shù)指標,具有彌補醫(yī)療資源短缺、協(xié)助醫(yī)生診斷等優(yōu)勢[3],AI技術(shù)輔助醫(yī)療已是大勢所趨。為更好地發(fā)揮健康體檢的作用和更好地改善人們的健康,將健康體檢與人工智能相結(jié)合,設計一款基于深度學習方法的體檢報告智能交互系統(tǒng),幫助體檢者更便捷直觀地了解體檢結(jié)果、快速獲取專業(yè)的健康指導建議,即通過對人們的亞健康進行干預從而達到改善人們健康目的的體檢報告數(shù)字化智能分析系統(tǒng),是當前比較有價值的一項研究和應用。
1.1 體檢報告文本分割 U-Net(U型網(wǎng)絡)以其優(yōu)秀的分割效果常用于醫(yī)療影像圖像分割[4-6]。本系統(tǒng)借助U-Net網(wǎng)絡進行體檢報告文字分割。本研究的數(shù)據(jù)集是從醫(yī)院獲取的1 000份體檢報告,通過從掃描的圖片中選擇1 500張包含要識別重要文字的圖片作為訓練數(shù)據(jù)集,使用Labelme軟件標記mask的形式對每行文字進行標記用于后續(xù)模型訓練。由于圖像分割是像素級操作,特別是文本區(qū)域分割,在文本間距較近的情況下容易出現(xiàn)錯誤。Yu等[7]提出一種新的卷積方式——空洞卷積[8],空洞卷積主要作用是減小模型計算量提高網(wǎng)絡的性能。本文改進的U-Net 網(wǎng)絡將第一層中最后一個卷積操作替換成空洞值為1的空洞卷積。
1.2 體檢報告文本識別
1.2.1 生成訓練數(shù)據(jù)集(train datasets,TD) (1)語料庫獲取。體檢報告文本具有豐富的語義信息,且含有大量專業(yè)的醫(yī)學詞匯,無法通過隨機組合漢字的方式生成。所以通過目前合作者提供的1 500份體檢報告數(shù)據(jù),對數(shù)據(jù)進行清洗整理,剔除無用重復信息,組成需要的語料庫共計119萬字符。(2)選取特定長度字符。語料庫中句子長度不一,生成訓練集時需要對每句進行分割合并,得到固定長度文本,每張圖像固定為10個字符。(3)選擇字體和字號。由于受到用戶手機鏡頭到報告的距離的影響,字號一般在18~24間變化。針對漢字和英文字符字體選擇等線字體。(4)添加噪聲與模糊處理。在用手機拍照生成圖像的時候,通過隨機添加噪聲和模糊濾波,來模擬用戶真實的拍照效果。生成得到30萬張體檢報告訓練數(shù)據(jù)集。
1.2.2 制作測試數(shù)據(jù)集(test datasets,TS) 首先將體檢報告用A4紙打印,然后使用手機拍攝30張體檢報告圖像,通過手工裁剪出含有體檢報告文本的區(qū)域300 張圖片,總計3 752個字符,作為測試例,稱為TS。本研究采用動態(tài)時間調(diào)整(dynamic time warping,DTW)的方法計算字符提取準確率。假設識別一張包含體檢報告文字的圖片,它的標簽為Q=“請注意口腔衛(wèi)生”,而識別結(jié)果為C=“請注意口空衛(wèi)”,虛線表示經(jīng)過的路徑,矩陣中的數(shù)字則為到達該點累計的距離。圖片準確率為(7-3)/7=57.1%。對比百度光學字符識別(optical character recognition,OCR)、Tesseract以及兩層、三層、四層LSTM的CRNN網(wǎng)絡結(jié)果,如表1所示。體檢報告文本比較簡單,故而各個模型得到的準確率都較高。通過實驗得知,我們的方法(三層LSTM的CRNN)文字識別網(wǎng)絡具有較高的準確率和效率。
表1 模型識別指標對比
1.3 體檢報告智能交互系統(tǒng) 基于前面方法構(gòu)建基于深度學習體檢報告智能交互系統(tǒng),結(jié)合Jieba技術(shù)[9]對識別到的文本進行分詞和關(guān)鍵詞匹配,再在APP界面上進行展示與交互。點擊APP終端詞云可以獲取專業(yè)的健康建議。系統(tǒng)記錄體檢報告圖片,形成一個長期基于用戶體檢報告的健康建議報告,讓體檢者能夠?qū)ψ陨淼慕】涤幸粋€長期的監(jiān)控。該APP的系統(tǒng)流程如圖1所示。
圖1 APP系統(tǒng)流程圖
系統(tǒng)實現(xiàn)。APP采用聯(lián)合應用(unite-application,Uni-app)框架,Vue是一個跨平臺的前端應用框架,開發(fā)者只需一次開發(fā),便能得到發(fā)布到蘋果手機操作系統(tǒng)(input output system, IOS)、Android等平臺的軟件。所以前端采用Vue+Uni-app+Echarts實現(xiàn),Echarts主要用來顯示體檢報告關(guān)鍵詞提取結(jié)果以及完成交互效果。服務器端采用Springboot框架,數(shù)據(jù)庫使用結(jié)構(gòu)化數(shù)據(jù)庫語言(structure quest language,MySQL)。體檢者上傳圖片到服務器,服務器完成關(guān)鍵詞提取并存入數(shù)據(jù)庫中供歷史查詢,同時傳給前端進行詞云展示。
體檢報告關(guān)鍵詞提取分兩步驟:文本分詞與詞匹配。文本分詞,指將字符串按照特定的規(guī)則分割成詞的集合。中文分詞詞語之間沒有英文那樣的分隔符,且非常復雜,需要消除歧義,識別未登錄詞。本文使用開源Jieba分詞工具進行分詞。醫(yī)學名詞專業(yè)性強,往往是由多個簡單詞組成的組合詞,比如左側(cè)腦供血不足,此類詞語歸類于未登錄詞。Jieba對于未登錄詞采用了隱馬爾可夫模型[10](hidden Markov models,HMM),模型使用了Viterbi[11]算法。Jieba分詞模式分為全模式、精確模式和搜索引擎模式三種。全模式盡可能地把所有詞都切分出來;精確模式試圖進行準確地切分詞;搜索引擎模式在精確模式基礎上對較長的詞語進一步切割。Jieba分詞還支持自定義詞典,需要新建基于前綴詞典dict.txt,在切分句子時把不能切分的詞語進行保留,該詞典中的詞語便是未登錄詞。在本系統(tǒng)中,由專業(yè)的醫(yī)生總結(jié)歸納了163個醫(yī)學詞匯記錄在前綴詞典 dict.txt 中,在分詞的時候保證不被切分。
1.4 關(guān)鍵詞健康數(shù)據(jù)庫建立 針對體檢報告上關(guān)鍵詞的專業(yè)性建議以及對應的癥狀和描述,主要來自于對第九版內(nèi)科學、外科學、診斷學等人衛(wèi)版醫(yī)學教材與網(wǎng)絡公開醫(yī)療資源的整理,已獲得100個關(guān)鍵詞的醫(yī)療建議,大致涵蓋了體檢常見疾病。
2.1 登錄界面 登錄界面包括用戶名、密碼兩個輸入框。登錄界面如圖2所示。
圖2 登錄界面
2.2 交互界面
2.2.1 關(guān)鍵詞展示 體檢者將體檢報告圖片上傳到服務器,經(jīng)一系列算法處理后可得到關(guān)鍵詞。前端可視化將關(guān)鍵詞展示到交互界面上。交互界面如圖3所示,點擊“心律失?!标P(guān)鍵詞,APP會使用灰底白字將針對的專業(yè)建議顯示出來。
圖3 交互界面
2.2.2 歷史體檢報告查詢 歷史查詢界面可以查詢體檢者過往的所有體檢報告關(guān)鍵詞提取記錄。圖4展示了從數(shù)據(jù)庫中檢索某一體檢者多年提交報告提取關(guān)鍵詞的結(jié)果,并用折線圖的形式展示多次體檢之間的差異,給予體檢者近年來身體狀態(tài)最直觀的動態(tài)變化。同時,點擊相應的點可以獲取對于上一次體檢報告新增的關(guān)鍵詞,圖4中可見,該體檢者在2019年12月體檢新增“肥胖”關(guān)鍵詞,系統(tǒng)會提示該體檢者需要注意合理飲食、減少攝入高糖高脂類食物、加強體育鍛煉等。
圖4 個人體檢報告關(guān)鍵詞歷史變化趨勢
2.2.3 醫(yī)療建議 系統(tǒng)測試了200份體檢報告,包含1 268個關(guān)鍵詞,系統(tǒng)提取到了1 192個,關(guān)鍵詞提取準確率為94%,準確度高,交互系統(tǒng)結(jié)果可靠。體檢報告的關(guān)鍵詞詞云效果如圖5所示,常見關(guān)鍵詞有“肥胖、結(jié)節(jié)、血脂高”等,點擊每個關(guān)鍵詞,智能交互系統(tǒng)會給出相應的專業(yè)醫(yī)療建議。下面是系統(tǒng)對體檢常見的三個疾病給出的醫(yī)療建議的文字描述細節(jié)。
圖5 界面識別關(guān)鍵詞顯示效果
“血糖升高”:在排除應激、藥物影響等短暫血糖波動的情況下,當血糖大于7.0 mmol/L時,請及時到醫(yī)院內(nèi)分泌科就醫(yī);當空腹血糖為6.1~7.0 mmol/L時,建議使用粗糧和蔬菜替代高糖、高脂類食物,加強體育鍛煉,肥胖者必須減重、戒煙戒酒、定期隨訪復查血糖,若血糖沒有改善請及時到醫(yī)院內(nèi)分泌科就診。
“咽炎”:若有咽部干灼、疼痛或者聲音嘶啞的急性咽炎癥狀時,請及時到醫(yī)院耳鼻喉科就診;若僅表現(xiàn)為長期的咽部不適,干嘔等慢性咽炎癥狀時,建議多喝水、注意口腔衛(wèi)生、避免辛辣食物、避免飲食過多和飯后就躺的習慣,必要時可使用咽喉含片。
“腎結(jié)石”:若有持續(xù)的腰背部等腎區(qū)疼痛或者血尿,請及時到醫(yī)院泌尿外科就醫(yī);若體檢者無其他不適癥狀,建議多飲水、減少碳酸飲料的攝入、避免久坐等。
隨著我國人口老齡化進展以及亞健康和慢性病的增多,人們對健康的需求日益增加。自從2017年國家提出將人工智能應用到醫(yī)療行業(yè)以來,智能化醫(yī)療軟件和設備的研發(fā)成為醫(yī)療行業(yè)的一大熱點。
目前,人工智能在醫(yī)學影像的識別[12]、疾病的輔助診斷[13]、藥物的研發(fā)[14]等方面有了越來越多的研究與應用,但是人工智能在健康體檢方面的應用較少。目前大多數(shù)體檢者是根據(jù)體檢報告單的結(jié)果主動去醫(yī)療APP上查找某一指標的意義或者某一疾病的病因及醫(yī)療建議,且要主動去查找歷年體檢報告,自行比較后,才會發(fā)現(xiàn)每年體檢結(jié)果的變化,比較耗時耗力。顧東興等[15]設計的一款微信小程序,雖然將人工智能應用到體檢,簡化了體檢流程,開展了健康評估、疾病動態(tài)監(jiān)測等服務,但該程序目前只適用于上海市體檢者,其他地區(qū)尚未開展。
本研究設計的一款體檢報告智能交互系統(tǒng),可以幫助體檢者更直觀地解讀體檢報告,自動展示個人歷年體檢結(jié)果新出現(xiàn)的不同關(guān)鍵詞,并根據(jù)體檢所反映的健康問題直接快速提供專業(yè)合理的建議,不用體檢者自行發(fā)現(xiàn)與查找,非常高效且簡便。與顧東興等設計的微信小程序相比,無論體檢者在哪個城市,是否是在同一家醫(yī)院體檢,只要體檢者輸入體檢報告照片進入該交互系統(tǒng),該系統(tǒng)就可以保存記錄,并自行比較歷年體檢變化和給出相應醫(yī)療建議及需要就診時給出就診科室建議等。
對于高血壓、糖尿病等慢性病,要長期監(jiān)測血壓、血糖等指標的動態(tài)變化。目前該系統(tǒng)尚不能對同一指標數(shù)據(jù)進行跟蹤分析其歷年變化趨勢。同時,醫(yī)療大數(shù)據(jù)具有一定隱私性、安全性等。我們接下來將從以下方面對該系統(tǒng)進行完善:①通過對體檢者體檢報告各項指標的歷年數(shù)據(jù)進行大數(shù)據(jù)分析,挖掘出各項指標變化與疾病之間更多的潛在聯(lián)系,給體檢者提供更多更全面的醫(yī)療建議;②進一步完善健康數(shù)據(jù)庫,擴充更多類型的疾病關(guān)鍵詞的專業(yè)建議;③對該系統(tǒng)進行加密,保護體檢者隱私,確保數(shù)據(jù)安全。
綜上,該交互系統(tǒng)使體檢者不僅可以了解自身健康狀況、了解某一疾病的動態(tài)變化,還可以獲得科學的健康改進建議,做到疾病早發(fā)現(xiàn)、早干預、早治療,努力改善體檢者的身體健康,使體檢更有實際意義。