?

融合語言模型的化驗單文字識別矯正研究

2023-11-02 12:35張煜楠呂學強黃慶浩游新冬董志安
計算機應用與軟件 2023年10期
關鍵詞:化驗單詞庫矯正

張煜楠 呂學強 黃慶浩 游新冬 何 健 董志安 黃 躍

1(北京信息科技大學網絡文化與數字傳播北京市重點實驗室 北京 100101)

2(北京洛奇智慧醫療科技有限公司 北京 100015)

3(清華大學互聯網產業研究院 北京 100084)

4(首都醫科大學宣武醫院 北京 100053)

0 引 言

2019年,據中國國家統計局抽樣調查推算,中國總人口已超14億。龐大的人口基數為國家的不斷發展提供了豐富的人力資源。與此同時,人民群眾對醫療資源的需求也在逐步提升,其中看病難問題已經成為一個普遍的社會現象,并引起了政府的高度重視。2019年1至11月期間,全國醫療衛生機構總診療人次達77.5億人次,同比提高2.8%?;灆z測對于就醫患者必不可少,同時會產生大量的醫療化驗單,極大地增加了醫生的工作量[1]。由于患者數量大而醫生數量有限,患者在進行化驗檢測、得到化驗結果后,不能及時對化驗單進行解讀而導致病情延誤,這也是醫患糾紛問題時常發生的主要原因之一。

隨著深度學習和人工智能的不斷發展與進步,計算機視覺領域成為熱點研究方向,吸引了來自學術界與工業界的廣泛關注[2]。計算機視覺通過其對圖像的強大的解讀能力,為各行各業提供了技術支持。其中,醫療領域提出了智慧醫療的建設,并在近些年取得了突破性進展。自2005年起,由Google不斷維護的開源Tesseract-OCR在文字識別領域取得優異的成績[3],使整個學術界以及工業界掀起了一股人工智能的浪潮,各類文字識別算法應運而生。在醫療領域,OCR技術可以通過識別化驗單文字,結合醫療信息系統,利用人工智能與大數據對化驗單進行初步的解讀,不僅能夠使患者得到及時的就診,同時也可以減輕工作人員的工作量,大大提升診斷效率。在我國,“互聯網+醫療”是醫療領域發展的新契機,智慧醫療的出現能夠很好地緩解看病難問題[4]。

基于人工智能的醫療化驗單智能解讀工作分三步,首先對醫療化驗單進行文本檢測,然后通過OCR系統對文字進行識別,基于NLP對識別結果進行后處理,將圖像數據轉化為文本數據,最后通過醫療數據庫、醫療知識圖譜、醫療大數據等方式,將相關信息全面直接地呈現給患者[5]。通過這種方式,患者不僅能夠充分了解自身的病情,緩和自身情緒,而且可以幫助患者與醫生更好地交流溝通,提高就醫效率,緩解就醫壓力。

本文源于醫療化驗單文字識別系統,針對自然場景下化驗單識別效果欠佳的情況,提出了一種融合語言模型的文字識別矯正方法。使用語言模型矯正形近字錯誤,通過融合編輯距離和最長公共子序列的方法匹配最貼切的識別結果,最后使用對應關系匹配,進行前后矯正,進一步提高識別精確度。

1 相關研究

自然場景下的醫療化驗單識別形近字矯正在OCR矯正中被廣泛使用。單個錯字的矯正可以通過建立醫學詞典,對單字進行模糊字處理的方法矯正。張淙悅等[6]通過建立醫學詞典并通過模糊字文件進行內容糾錯,其方法針對特定的模糊字有較好的處理效果,但需要針對模糊字逐字添加,泛化性較差。李琴等[7]在建立醫學詞庫的基礎上,對詞條進行單字符模糊匹配,然后計算字符間的相似度進行矯正。其方法可以有效地矯正單個錯字,但方法使用條件受模糊匹配參數影響較大。單字的矯正往往不能滿足矯正需求,統計語言模型是對語言內在描述的數學模型[8]。這種方法可以通過建立語料庫,使用統計方法來發現語言中的普遍規律,以此對形近字進行矯正。王霈珺[9]將統計語言模型應用到OCR識別結果矯正工作中,有效降低了OCR系統的識別錯誤率。但該方法只考慮字符間的統計信息,對統計數據有較高的要求,在單個形近字的矯正中表現很好,但卻難以應對OCR識別結果中的字符串缺失、合并等現象。

OCR字符串矯正主要采用字符串相似度算法,廣泛應用的相似度算法主要有編輯距離算法、最長公共子序列算法及其變種。編輯距離(Levenshtein Distance,LD)算法常被用來衡量兩個文本之間的相似度。該算法通過插入、刪除、替換等操作使一個序列變成另外一個序列花費最小操作次數[10]。利用編輯距離進行OCR后處理,通過查閱構建的醫學詞表,選擇與識別結果最小編輯距離的詞語來矯正識別結果中的檢驗項名稱。該算法在處理速度和效果上都取得不錯的效果,但對于較短序列或識別結果出現缺失等情況,該算法不能進行有效的矯正。

王宸敏[11]提出的化驗單OCR識別結果矯錯方案首先建立了醫學詞庫,通過計算編輯距離進行初步的匹配,然后采用常用文字相似度比較來解決編輯距離計算中存在的多個候選項的問題。該方法取得了不錯的效果,但通過計算文字相似度來解決多個候選項相似度相同的問題,在識別結果存在缺失、合并時,難以精確地選擇合適的候選項,從而導致識別結果錯誤。

最長公共子序列(Longest Common Subsequence,LCS)算法常被用于查找兩個序列的最長公共子序列的問題[12],可以用于計算字符串間的相似度。李明[13]指出最長公共子序列算法可以很好地進行文本相似度比較。文中使用了動態規劃算法,計算兩個序列最長公共子序列,這樣便可以有效地解決文字識別中的缺失或增加問題,動態規劃算法能夠將基礎問題化為子問題,通過構建動態轉移方程,迭代求出問題的解。該算法能夠有效地計算文本相似度,但是對于長度不同且有相同公共子序列的兩個序列的矯正將出現問題,如醫學詞庫中存在核糖核苷酸,脫氧核糖核苷酸兩個詞條,當識別結果為核糖核苷酸時,在矯正時會出現爭議。

綜上所述,對于自然場景下化驗單文字識別后處理,目前存在的后處理方法都存在一定的缺陷。對此,本文提出了一種融合語言模型和傳統方法的OCR識別后處理方法。首先利用語言模型得到更加符合實際情況的預測序列,然后根據構建的醫療詞庫進行完全匹配。若匹配成功可以根據化驗單檢測項的對應關系進行前后矯正;若匹配失敗,可以根據改進的編輯距離和最長公共子序列的方法選擇最接近的醫療詞庫中的詞語矯正,然后再根據對應關系進一步矯正,從而提高識別準確率。

2 一種融合語言模型和傳統方法的化驗單識別矯正方法

融合語言模型的化驗單文字識別矯正處理方法,可以有效解決形近字識別錯誤和醫學名詞識別錯誤的情況,其整體流程如圖1所示。主要分為兩個部分對自然場景下化驗單的識別進行矯正,第一步是預處理,構建醫療詞庫和識別矩陣。第二步是OCR后處理矯正,主要包括基于語言模型的矯正、基于對應關系的矯正、基于編輯距離、最長公共子序列的矯正。

圖1 矯正流程

2.1 識別結果矯正預處理

首先根據某實驗室提供的真實數據,構建醫學詞庫,然后根據識別結果的每個區域取前三名,構建識別結果區域矩陣。傳統文字識別只取每個區域的最高預測結果,通過區域組合得到最終結果,其最大問題在于在某一區域一旦出現識別錯誤,就會導致整體出錯。這里構建每個區域概率預測前三的結果組成區域矩陣,為后期引入語言模型奠定基礎。

2.2 基于語言模型的識別結果矯正

語言模型是對語句概率分布的建模,它通過收集真實的語言文字,并對收集到的語言文字進行統計分析,從而得到語言文字所存在的規律[14]。語言模型可以通過概率分布來統計字符出現的概率,從而有效地對識別結果進行初步的矯正。具體來說,是通過統計結果,計算可以得到最大的條件概率的組合。

以詞條“醛固酮”為例,其計算公式如式(1)所示。第一個檢測區域識別的結果S1,選取CRNN[15]網絡中間層給出的前三個候選字“醛”“酚”“醚”;第二個候選區域識別結果S2,選取前三個候選字“回”“固”“田”;第三個候選區域識別結果S3,選取前三個候選字“桐”“銅”“酮”。每個候選區域的概率W(Si)需要根據網絡預測的概率分別歸一化,識別結果區域矩陣一共有33種組合。根據概率統計分析,條件概率P(Si+1|Si),即Si出現的情況下后面出現Si+1的概率,由此可以計算得出所有組合的出現概率,f值最大的組合即為最優的組合,這樣便可利用統計的方式進一步提高識別準確率。同理,對于長度為n的預測序列S1,S2,…,Sn,需要根據式(2)計算各種組合下的概率。這里的W(Si)根據CRNN中間層輸出的預測概率進行重新歸一化,條件概率P(Si+1|Si)需要根據預處理部分建立的醫學詞庫,統計Si出現的次數N(Si),統計Si和Si+1前后共同出現的次數N(Si,Si+1),條件概率公式如式(3)所示。

f=W(S1)P(S2|S1)W(S2)P(S3|S2)W(S3)

(1)

f=W(S1)P(S2|S1)W(S2)P(S3|S2)…

W(Sn-1)P(Sn|Sn-1)W(Sn)

(2)

(3)

上述方法可以計算條件概率和預測概率,但是組合情況的復雜度呈指數級增長,在有效的時間內很難得到最終結果,故引用Viterbi算法[16]求解最優組合路徑問題,最優路徑組合可以抽象為一個動態規劃的問題,首先構造動態轉移方程。如果最優路徑經過某個節點Si,那么從初始節點也一定會經過Si,且這條路徑是到達Si的最優路徑,每個節點只會影響前后兩個節點的條件概率。根據這個思想,可以將這個問題劃分為若干個子問題,在求經過Si的最優路徑時候只需要求經過Si-1的所有候選點的最優路徑即可,動態轉移方程如下:

dp[i,j]=max(dp[i-1,k]+value(k,j))

(4)

動態轉移方程中的k表示選取的預測值個數,value(k,j)表示第i個區域的第k個點到第i個區域的第j個點的條件概率,如圖2所示,虛線為動態規劃求解過程,每個節點,只需要選擇一條最優到達路徑即可。這樣每步只需計算要n次即可,依次遞推求解每個子問題的解,逐步求出問題的最優解。

圖2 動態轉移過程

基于語言模型的識別結果矯正作為識別結果矯正的第一步,能夠較好地解決OCR識別結果中的形近字識別錯誤的問題,為后續的矯正方法提供基礎。接下來,使用融合最長公共子序列和編輯距離的方法匹配最貼切的識別結果,對結果進一步矯正。

最長公共子序列主要用于求兩個序列之間的相似度,也可以用來矯正文字識別。對于輸入序列x和y分別表識別結果和醫學詞庫中的醫學名詞,LCS[i,j]表示序列x的前i個元素和序列y的前j個元素的最長公共子序列,動態轉移方程如式(5)所示。若序列x的第i個元素和序列y的第j個元素相等,那么最長公共子序列長度加1,C[i,j]=C[i-1,j-1]+1;若序列x的第i個元素和序列y的第j個元素不相等,C[i,j]取C[i,j-1]和C[i-1,j]的最大值,等價于刪除第i個元素或第j個元素后序列的最長公共子序列。此時,C[i,j]表示當前公共子序列的長度,依據該數組回溯,便可找到最長公共子序列。

(5)

最長公共子序列算法可以很好地體現兩個字符串的相似程度,但化驗單檢驗項如“白細胞”“白細胞酯酶”“鏡檢白細胞”存在包含關系,如果識別結果為“白細胞”則與三者的最長公共子序列均為3,從而產生歧義,無法正確矯正。

Levenshtein距離又稱編輯距離(Edit Distance)是度量兩個序列相似程序的常用算法。該算法通過插入、刪除和替換等操作,將一個序列轉化為另一個序列,并統計所需的最小步數[17]。設輸入序列s和e分別表識別結果和醫學詞庫中的醫學名詞,LD[i,j]表示序列s的前i個元素和序列e的前j個元素的編輯距離,動態轉移方程如式(6)所示。若序列s的第i個元素和序列e的第j個元素相等,那么編輯操作為0,LD[i,j]=LD[i-1,j-1];若序列s的第i個元素和序列e的第j個元素不相等,那么LD[i,j]可以進行三種操作,第一種操作方式是刪除序列s的第i個元素,第二種方式刪除序列e的第j個元素,第三種方式替換操作使得第i個元素和第j個元素相等,三種方式取最小值。

(6)

編輯距離算法體現了字符串間的差異程度,可以避免公共子串帶來的歧義。但使用神經網絡識別化驗單文字需要先切分文字再識別,因文字密集、光影變化等原因,切分文字過程中會出現多字、漏字、合并字符串等現象[18]。如檢驗項X=“網織紅細胞計數”因切分問題被識別為Y=“只紅細胞計數”,后者與前者及Z=“紅細胞數”的編輯距離均為2,造成歧義?;诰庉嬀嚯x的相似度公式如式(7)、式(8)所示,計算X與Y、Z相似度均相等,不符合X與Y更相似的直觀認知[19],存在一定的局限性。

(7)

(8)

綜上所述,單獨使用編輯距離算法或是最長公共子序列算法矯正都會出現歧義。本文融合了編輯距離方法和最長公共子序列方法。識別序列長度為i,醫學詞庫中醫學名詞序列長度為j,Q[i,j]表示兩序列相似度,相似度共識如式(9)所示。其中,參數α與β為比例系數且α+β=1。通過已有數據統計α與β的最優比例,可以使算法更好地應用于不同的數據集。通過對標注數據的統計,在本文后續實驗中,α為0.3,β為0.7。

Q[i,j]=α·dp[i,j]+β·(min(i,j)-C[i,j])

(9)

2.3 對應關系的識別結果矯正

化驗單OCR與自然場景下的OCR相比存在一定的特殊性,根據某實驗室提供的真實化驗單數據,每張化驗單最多包含七項,分別為序號、項目名稱、縮寫、檢測結果、單位、參考值范圍、提示。其中,項目名稱、縮寫與單位、參考值范圍存在固定的對應關系,如果一個檢驗項的項目名稱或縮寫確定,那么這個檢驗項的單位和參考范圍也可以確定。在醫療機構提供的檢驗項表單的基礎上,根據標注數據進行增補,建立了化驗單OCR識別矯正的檢驗項詞表,示例如表1所示。如果一個檢驗項的項目名稱和縮寫識別正確,便可以通過這種基于對應關系的矯正方法,對其他列的識別結果進行矯正。部分化驗單還存在一行多個檢驗項的情況,需要根據對列名的識別結果配合檢驗項文字,核對并拆分一行中的兩個檢驗項,并對兩個檢驗項分別進行如上矯正處理。

表1 檢驗項詞表示例

3 實 驗

3.1 實驗數據及評價指標

本實驗由某智慧醫療科技有限公司提供真實化驗單數據5 000余張,分某實驗室、某醫院兩大類。通過檢驗指標數據合成和數據增強,數據擴充至10 000余張,化驗單數據如圖3、圖4所示。通過使用自然場景下化驗單文字檢測方法(BHS-CTPN)進行文字檢測,將檢測的文本框進行切割,然后利用一種改進CRNN的識別方法進行文字識別,最后對識別結果進行后處理矯正。

圖3 實驗原始數據

圖4 實驗原始數據

本文使用準確率(Precision)、召回率(Recall)和F-Measure(F1值)對模型做性能評估。TP表示正類判斷成正類的數目;TN表示負類判斷成負類的數目;FP表示負類判斷成正類的數目;FN表示正類判斷成負類的數目。在矯正任務中,一般使用準確率表示識別出的字符中正確識別的字符數量,而用召回率表示化驗單字符中正確識別的字符數量,準確率、召回率、F1值計算公式如式(10)-式(12)。

(10)

(11)

(12)

3.2 實驗細節

本實驗的輸入為化驗單識別結果和構建的醫學詞庫,輸出為矯正的識別結果。實驗構建的醫學詞庫2 000余項,實驗的硬件為Intel Xeon E5-2603 v4處理器,64 GB內存,Nvidia Tesla k 80顯卡,操作系統為Ubuntu 16.04.10,實驗的軟件配置為Python 3.6.8,實驗的區域預測選擇概率最大的前三個。首先利用語言模型進行識別結果矯正,然后根據構建的詞表,利用對應關系進行矯正,最后利用融合的編輯距離和最長公共子序列的方法進行識別結果矯正。

3.3 實驗結果

3.3.1定量分析

如表2、表3所示,在實驗室化驗單數據和醫療化驗單數據上,對本論文提出的后處理矯正方法各模塊分別進行消融實驗。使用Imp-CRNN作為基線模型,分別加入語言模型、對應關系、編輯距離和最長公共子序列以驗證各模塊的有效性,然后將各模塊結合得到本文的矯正方法。與基線模型相比,本文的方法在實驗室化驗單數據上的識別準確率、召回率、F1值分別提升了2百分點、3百分點、2百分點,在醫院化驗的數據上的識別準確率、召回率、F1值分別提升了2百分點、3百分點、3百分點。實驗結果表明加入后處理的文本識別更加精確,且方法適用于不同的數據集,具有一定的泛化性。本組實驗的對比和相關指數的提升可以有效地說明本文模型的性能。

表2 某實驗室化驗單識別結果對比

表3 某醫院化驗單識別結果對比

3.3.2定性分析

為了能夠客觀地進行分析比較,選取兩張典型的化驗單案例,對比其識別結果與校正后結果,如圖5、圖6所示。在沒有引入后處理時,會出現形近字識別錯誤和多字少字現象。通過使用本文提出的后處理方法可以矯正大部分錯誤,同時還能通過后處理將識別結果進一步規范化,方便后期處理。定性分析體現了引入后處理可以有效地解決常見識別錯誤,提升準確率。

圖5 識別矯正對比圖一

圖6 識別矯正對比圖二

4 結 語

本文針對自然場景下化驗單識別效果欠佳的情況,提出了一種融合語言模型的文字識別矯正方法。在傳統語言模型矯正方法的基礎上,引入神經網絡的輸出建立識別結果矩陣,使用統計條件概率預測最佳符合醫學詞庫的識別結果。本文提出了一種融合編輯距離和最長公共子序列的字符串匹配算法來匹配最貼切的識別結果,最后通過對應關系匹配,進行前后矯正,進一步提高識別精確度。對比實驗表明,在引入本文提出的矯正方法后,化驗單的識別準確率得到了提高,證明了該方法的有效性。但該方法還有一些不足之處,如需要更新詞庫、相似度算法計算量有待優化、訓練數據分布不均勻會導致魯棒性不足等問題。在接下來的工作中,一方面將對所提出的方法進行改進,優化方法,減少計算量,進一步提高本方法的效率;另一方面將提升詞庫的規模,使數據均勻分布,擴大數據的覆蓋范圍,進一步提高方法的魯棒性。

猜你喜歡
化驗單詞庫矯正
一“吃”多用
“體態矯正”到底是什么?
輸入法詞庫乾坤大挪移
醫生幫不了這些“小忙”
命若游絲
詞庫音系學的幾個理論問題芻議
矯正牙齒,不只是為了美
矯正牙齒,現在開始也不遲
改良橫切法內眥贅皮矯正聯合重瞼術
門診化驗單的管理措施及方法
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合