張煜楠 呂學(xué)強(qiáng) 黃慶浩 游新冬 何 健 董志安 黃 躍
1(北京信息科技大學(xué)網(wǎng)絡(luò)文化與數(shù)字傳播北京市重點(diǎn)實(shí)驗(yàn)室 北京 100101)
2(北京洛奇智慧醫(yī)療科技有限公司 北京 100015)
3(清華大學(xué)互聯(lián)網(wǎng)產(chǎn)業(yè)研究院 北京 100084)
4(首都醫(yī)科大學(xué)宣武醫(yī)院 北京 100053)
2019年,據(jù)中國(guó)國(guó)家統(tǒng)計(jì)局抽樣調(diào)查推算,中國(guó)總?cè)丝谝殉?4億。龐大的人口基數(shù)為國(guó)家的不斷發(fā)展提供了豐富的人力資源。與此同時(shí),人民群眾對(duì)醫(yī)療資源的需求也在逐步提升,其中看病難問(wèn)題已經(jīng)成為一個(gè)普遍的社會(huì)現(xiàn)象,并引起了政府的高度重視。2019年1至11月期間,全國(guó)醫(yī)療衛(wèi)生機(jī)構(gòu)總診療人次達(dá)77.5億人次,同比提高2.8%?;?yàn)檢測(cè)對(duì)于就醫(yī)患者必不可少,同時(shí)會(huì)產(chǎn)生大量的醫(yī)療化驗(yàn)單,極大地增加了醫(yī)生的工作量[1]。由于患者數(shù)量大而醫(yī)生數(shù)量有限,患者在進(jìn)行化驗(yàn)檢測(cè)、得到化驗(yàn)結(jié)果后,不能及時(shí)對(duì)化驗(yàn)單進(jìn)行解讀而導(dǎo)致病情延誤,這也是醫(yī)患糾紛問(wèn)題時(shí)常發(fā)生的主要原因之一。
隨著深度學(xué)習(xí)和人工智能的不斷發(fā)展與進(jìn)步,計(jì)算機(jī)視覺(jué)領(lǐng)域成為熱點(diǎn)研究方向,吸引了來(lái)自學(xué)術(shù)界與工業(yè)界的廣泛關(guān)注[2]。計(jì)算機(jī)視覺(jué)通過(guò)其對(duì)圖像的強(qiáng)大的解讀能力,為各行各業(yè)提供了技術(shù)支持。其中,醫(yī)療領(lǐng)域提出了智慧醫(yī)療的建設(shè),并在近些年取得了突破性進(jìn)展。自2005年起,由Google不斷維護(hù)的開(kāi)源Tesseract-OCR在文字識(shí)別領(lǐng)域取得優(yōu)異的成績(jī)[3],使整個(gè)學(xué)術(shù)界以及工業(yè)界掀起了一股人工智能的浪潮,各類(lèi)文字識(shí)別算法應(yīng)運(yùn)而生。在醫(yī)療領(lǐng)域,OCR技術(shù)可以通過(guò)識(shí)別化驗(yàn)單文字,結(jié)合醫(yī)療信息系統(tǒng),利用人工智能與大數(shù)據(jù)對(duì)化驗(yàn)單進(jìn)行初步的解讀,不僅能夠使患者得到及時(shí)的就診,同時(shí)也可以減輕工作人員的工作量,大大提升診斷效率。在我國(guó),“互聯(lián)網(wǎng)+醫(yī)療”是醫(yī)療領(lǐng)域發(fā)展的新契機(jī),智慧醫(yī)療的出現(xiàn)能夠很好地緩解看病難問(wèn)題[4]。
基于人工智能的醫(yī)療化驗(yàn)單智能解讀工作分三步,首先對(duì)醫(yī)療化驗(yàn)單進(jìn)行文本檢測(cè),然后通過(guò)OCR系統(tǒng)對(duì)文字進(jìn)行識(shí)別,基于NLP對(duì)識(shí)別結(jié)果進(jìn)行后處理,將圖像數(shù)據(jù)轉(zhuǎn)化為文本數(shù)據(jù),最后通過(guò)醫(yī)療數(shù)據(jù)庫(kù)、醫(yī)療知識(shí)圖譜、醫(yī)療大數(shù)據(jù)等方式,將相關(guān)信息全面直接地呈現(xiàn)給患者[5]。通過(guò)這種方式,患者不僅能夠充分了解自身的病情,緩和自身情緒,而且可以幫助患者與醫(yī)生更好地交流溝通,提高就醫(yī)效率,緩解就醫(yī)壓力。
本文源于醫(yī)療化驗(yàn)單文字識(shí)別系統(tǒng),針對(duì)自然場(chǎng)景下化驗(yàn)單識(shí)別效果欠佳的情況,提出了一種融合語(yǔ)言模型的文字識(shí)別矯正方法。使用語(yǔ)言模型矯正形近字錯(cuò)誤,通過(guò)融合編輯距離和最長(zhǎng)公共子序列的方法匹配最貼切的識(shí)別結(jié)果,最后使用對(duì)應(yīng)關(guān)系匹配,進(jìn)行前后矯正,進(jìn)一步提高識(shí)別精確度。
自然場(chǎng)景下的醫(yī)療化驗(yàn)單識(shí)別形近字矯正在OCR矯正中被廣泛使用。單個(gè)錯(cuò)字的矯正可以通過(guò)建立醫(yī)學(xué)詞典,對(duì)單字進(jìn)行模糊字處理的方法矯正。張淙悅等[6]通過(guò)建立醫(yī)學(xué)詞典并通過(guò)模糊字文件進(jìn)行內(nèi)容糾錯(cuò),其方法針對(duì)特定的模糊字有較好的處理效果,但需要針對(duì)模糊字逐字添加,泛化性較差。李琴等[7]在建立醫(yī)學(xué)詞庫(kù)的基礎(chǔ)上,對(duì)詞條進(jìn)行單字符模糊匹配,然后計(jì)算字符間的相似度進(jìn)行矯正。其方法可以有效地矯正單個(gè)錯(cuò)字,但方法使用條件受模糊匹配參數(shù)影響較大。單字的矯正往往不能滿足矯正需求,統(tǒng)計(jì)語(yǔ)言模型是對(duì)語(yǔ)言?xún)?nèi)在描述的數(shù)學(xué)模型[8]。這種方法可以通過(guò)建立語(yǔ)料庫(kù),使用統(tǒng)計(jì)方法來(lái)發(fā)現(xiàn)語(yǔ)言中的普遍規(guī)律,以此對(duì)形近字進(jìn)行矯正。王霈珺[9]將統(tǒng)計(jì)語(yǔ)言模型應(yīng)用到OCR識(shí)別結(jié)果矯正工作中,有效降低了OCR系統(tǒng)的識(shí)別錯(cuò)誤率。但該方法只考慮字符間的統(tǒng)計(jì)信息,對(duì)統(tǒng)計(jì)數(shù)據(jù)有較高的要求,在單個(gè)形近字的矯正中表現(xiàn)很好,但卻難以應(yīng)對(duì)OCR識(shí)別結(jié)果中的字符串缺失、合并等現(xiàn)象。
OCR字符串矯正主要采用字符串相似度算法,廣泛應(yīng)用的相似度算法主要有編輯距離算法、最長(zhǎng)公共子序列算法及其變種。編輯距離(Levenshtein Distance,LD)算法常被用來(lái)衡量?jī)蓚€(gè)文本之間的相似度。該算法通過(guò)插入、刪除、替換等操作使一個(gè)序列變成另外一個(gè)序列花費(fèi)最小操作次數(shù)[10]。利用編輯距離進(jìn)行OCR后處理,通過(guò)查閱構(gòu)建的醫(yī)學(xué)詞表,選擇與識(shí)別結(jié)果最小編輯距離的詞語(yǔ)來(lái)矯正識(shí)別結(jié)果中的檢驗(yàn)項(xiàng)名稱(chēng)。該算法在處理速度和效果上都取得不錯(cuò)的效果,但對(duì)于較短序列或識(shí)別結(jié)果出現(xiàn)缺失等情況,該算法不能進(jìn)行有效的矯正。
王宸敏[11]提出的化驗(yàn)單OCR識(shí)別結(jié)果矯錯(cuò)方案首先建立了醫(yī)學(xué)詞庫(kù),通過(guò)計(jì)算編輯距離進(jìn)行初步的匹配,然后采用常用文字相似度比較來(lái)解決編輯距離計(jì)算中存在的多個(gè)候選項(xiàng)的問(wèn)題。該方法取得了不錯(cuò)的效果,但通過(guò)計(jì)算文字相似度來(lái)解決多個(gè)候選項(xiàng)相似度相同的問(wèn)題,在識(shí)別結(jié)果存在缺失、合并時(shí),難以精確地選擇合適的候選項(xiàng),從而導(dǎo)致識(shí)別結(jié)果錯(cuò)誤。
最長(zhǎng)公共子序列(Longest Common Subsequence,LCS)算法常被用于查找兩個(gè)序列的最長(zhǎng)公共子序列的問(wèn)題[12],可以用于計(jì)算字符串間的相似度。李明[13]指出最長(zhǎng)公共子序列算法可以很好地進(jìn)行文本相似度比較。文中使用了動(dòng)態(tài)規(guī)劃算法,計(jì)算兩個(gè)序列最長(zhǎng)公共子序列,這樣便可以有效地解決文字識(shí)別中的缺失或增加問(wèn)題,動(dòng)態(tài)規(guī)劃算法能夠?qū)⒒A(chǔ)問(wèn)題化為子問(wèn)題,通過(guò)構(gòu)建動(dòng)態(tài)轉(zhuǎn)移方程,迭代求出問(wèn)題的解。該算法能夠有效地計(jì)算文本相似度,但是對(duì)于長(zhǎng)度不同且有相同公共子序列的兩個(gè)序列的矯正將出現(xiàn)問(wèn)題,如醫(yī)學(xué)詞庫(kù)中存在核糖核苷酸,脫氧核糖核苷酸兩個(gè)詞條,當(dāng)識(shí)別結(jié)果為核糖核苷酸時(shí),在矯正時(shí)會(huì)出現(xiàn)爭(zhēng)議。
綜上所述,對(duì)于自然場(chǎng)景下化驗(yàn)單文字識(shí)別后處理,目前存在的后處理方法都存在一定的缺陷。對(duì)此,本文提出了一種融合語(yǔ)言模型和傳統(tǒng)方法的OCR識(shí)別后處理方法。首先利用語(yǔ)言模型得到更加符合實(shí)際情況的預(yù)測(cè)序列,然后根據(jù)構(gòu)建的醫(yī)療詞庫(kù)進(jìn)行完全匹配。若匹配成功可以根據(jù)化驗(yàn)單檢測(cè)項(xiàng)的對(duì)應(yīng)關(guān)系進(jìn)行前后矯正;若匹配失敗,可以根據(jù)改進(jìn)的編輯距離和最長(zhǎng)公共子序列的方法選擇最接近的醫(yī)療詞庫(kù)中的詞語(yǔ)矯正,然后再根據(jù)對(duì)應(yīng)關(guān)系進(jìn)一步矯正,從而提高識(shí)別準(zhǔn)確率。
融合語(yǔ)言模型的化驗(yàn)單文字識(shí)別矯正處理方法,可以有效解決形近字識(shí)別錯(cuò)誤和醫(yī)學(xué)名詞識(shí)別錯(cuò)誤的情況,其整體流程如圖1所示。主要分為兩個(gè)部分對(duì)自然場(chǎng)景下化驗(yàn)單的識(shí)別進(jìn)行矯正,第一步是預(yù)處理,構(gòu)建醫(yī)療詞庫(kù)和識(shí)別矩陣。第二步是OCR后處理矯正,主要包括基于語(yǔ)言模型的矯正、基于對(duì)應(yīng)關(guān)系的矯正、基于編輯距離、最長(zhǎng)公共子序列的矯正。
圖1 矯正流程
首先根據(jù)某實(shí)驗(yàn)室提供的真實(shí)數(shù)據(jù),構(gòu)建醫(yī)學(xué)詞庫(kù),然后根據(jù)識(shí)別結(jié)果的每個(gè)區(qū)域取前三名,構(gòu)建識(shí)別結(jié)果區(qū)域矩陣。傳統(tǒng)文字識(shí)別只取每個(gè)區(qū)域的最高預(yù)測(cè)結(jié)果,通過(guò)區(qū)域組合得到最終結(jié)果,其最大問(wèn)題在于在某一區(qū)域一旦出現(xiàn)識(shí)別錯(cuò)誤,就會(huì)導(dǎo)致整體出錯(cuò)。這里構(gòu)建每個(gè)區(qū)域概率預(yù)測(cè)前三的結(jié)果組成區(qū)域矩陣,為后期引入語(yǔ)言模型奠定基礎(chǔ)。
語(yǔ)言模型是對(duì)語(yǔ)句概率分布的建模,它通過(guò)收集真實(shí)的語(yǔ)言文字,并對(duì)收集到的語(yǔ)言文字進(jìn)行統(tǒng)計(jì)分析,從而得到語(yǔ)言文字所存在的規(guī)律[14]。語(yǔ)言模型可以通過(guò)概率分布來(lái)統(tǒng)計(jì)字符出現(xiàn)的概率,從而有效地對(duì)識(shí)別結(jié)果進(jìn)行初步的矯正。具體來(lái)說(shuō),是通過(guò)統(tǒng)計(jì)結(jié)果,計(jì)算可以得到最大的條件概率的組合。
以詞條“醛固酮”為例,其計(jì)算公式如式(1)所示。第一個(gè)檢測(cè)區(qū)域識(shí)別的結(jié)果S1,選取CRNN[15]網(wǎng)絡(luò)中間層給出的前三個(gè)候選字“醛”“酚”“醚”;第二個(gè)候選區(qū)域識(shí)別結(jié)果S2,選取前三個(gè)候選字“回”“固”“田”;第三個(gè)候選區(qū)域識(shí)別結(jié)果S3,選取前三個(gè)候選字“桐”“銅”“酮”。每個(gè)候選區(qū)域的概率W(Si)需要根據(jù)網(wǎng)絡(luò)預(yù)測(cè)的概率分別歸一化,識(shí)別結(jié)果區(qū)域矩陣一共有33種組合。根據(jù)概率統(tǒng)計(jì)分析,條件概率P(Si+1|Si),即Si出現(xiàn)的情況下后面出現(xiàn)Si+1的概率,由此可以計(jì)算得出所有組合的出現(xiàn)概率,f值最大的組合即為最優(yōu)的組合,這樣便可利用統(tǒng)計(jì)的方式進(jìn)一步提高識(shí)別準(zhǔn)確率。同理,對(duì)于長(zhǎng)度為n的預(yù)測(cè)序列S1,S2,…,Sn,需要根據(jù)式(2)計(jì)算各種組合下的概率。這里的W(Si)根據(jù)CRNN中間層輸出的預(yù)測(cè)概率進(jìn)行重新歸一化,條件概率P(Si+1|Si)需要根據(jù)預(yù)處理部分建立的醫(yī)學(xué)詞庫(kù),統(tǒng)計(jì)Si出現(xiàn)的次數(shù)N(Si),統(tǒng)計(jì)Si和Si+1前后共同出現(xiàn)的次數(shù)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)
上述方法可以計(jì)算條件概率和預(yù)測(cè)概率,但是組合情況的復(fù)雜度呈指數(shù)級(jí)增長(zhǎng),在有效的時(shí)間內(nèi)很難得到最終結(jié)果,故引用Viterbi算法[16]求解最優(yōu)組合路徑問(wèn)題,最優(yōu)路徑組合可以抽象為一個(gè)動(dòng)態(tài)規(guī)劃的問(wèn)題,首先構(gòu)造動(dòng)態(tài)轉(zhuǎn)移方程。如果最優(yōu)路徑經(jīng)過(guò)某個(gè)節(jié)點(diǎn)Si,那么從初始節(jié)點(diǎn)也一定會(huì)經(jīng)過(guò)Si,且這條路徑是到達(dá)Si的最優(yōu)路徑,每個(gè)節(jié)點(diǎn)只會(huì)影響前后兩個(gè)節(jié)點(diǎn)的條件概率。根據(jù)這個(gè)思想,可以將這個(gè)問(wèn)題劃分為若干個(gè)子問(wèn)題,在求經(jīng)過(guò)Si的最優(yōu)路徑時(shí)候只需要求經(jīng)過(guò)Si-1的所有候選點(diǎn)的最優(yōu)路徑即可,動(dòng)態(tài)轉(zhuǎn)移方程如下:
dp[i,j]=max(dp[i-1,k]+value(k,j))
(4)
動(dòng)態(tài)轉(zhuǎn)移方程中的k表示選取的預(yù)測(cè)值個(gè)數(shù),value(k,j)表示第i個(gè)區(qū)域的第k個(gè)點(diǎn)到第i個(gè)區(qū)域的第j個(gè)點(diǎn)的條件概率,如圖2所示,虛線為動(dòng)態(tài)規(guī)劃求解過(guò)程,每個(gè)節(jié)點(diǎn),只需要選擇一條最優(yōu)到達(dá)路徑即可。這樣每步只需計(jì)算要n次即可,依次遞推求解每個(gè)子問(wèn)題的解,逐步求出問(wèn)題的最優(yōu)解。
圖2 動(dòng)態(tài)轉(zhuǎn)移過(guò)程
基于語(yǔ)言模型的識(shí)別結(jié)果矯正作為識(shí)別結(jié)果矯正的第一步,能夠較好地解決OCR識(shí)別結(jié)果中的形近字識(shí)別錯(cuò)誤的問(wèn)題,為后續(xù)的矯正方法提供基礎(chǔ)。接下來(lái),使用融合最長(zhǎng)公共子序列和編輯距離的方法匹配最貼切的識(shí)別結(jié)果,對(duì)結(jié)果進(jìn)一步矯正。
最長(zhǎng)公共子序列主要用于求兩個(gè)序列之間的相似度,也可以用來(lái)矯正文字識(shí)別。對(duì)于輸入序列x和y分別表識(shí)別結(jié)果和醫(yī)學(xué)詞庫(kù)中的醫(yī)學(xué)名詞,LCS[i,j]表示序列x的前i個(gè)元素和序列y的前j個(gè)元素的最長(zhǎng)公共子序列,動(dòng)態(tài)轉(zhuǎn)移方程如式(5)所示。若序列x的第i個(gè)元素和序列y的第j個(gè)元素相等,那么最長(zhǎng)公共子序列長(zhǎng)度加1,C[i,j]=C[i-1,j-1]+1;若序列x的第i個(gè)元素和序列y的第j個(gè)元素不相等,C[i,j]取C[i,j-1]和C[i-1,j]的最大值,等價(jià)于刪除第i個(gè)元素或第j個(gè)元素后序列的最長(zhǎng)公共子序列。此時(shí),C[i,j]表示當(dāng)前公共子序列的長(zhǎng)度,依據(jù)該數(shù)組回溯,便可找到最長(zhǎng)公共子序列。
(5)
最長(zhǎng)公共子序列算法可以很好地體現(xiàn)兩個(gè)字符串的相似程度,但化驗(yàn)單檢驗(yàn)項(xiàng)如“白細(xì)胞”“白細(xì)胞酯酶”“鏡檢白細(xì)胞”存在包含關(guān)系,如果識(shí)別結(jié)果為“白細(xì)胞”則與三者的最長(zhǎng)公共子序列均為3,從而產(chǎn)生歧義,無(wú)法正確矯正。
Levenshtein距離又稱(chēng)編輯距離(Edit Distance)是度量?jī)蓚€(gè)序列相似程序的常用算法。該算法通過(guò)插入、刪除和替換等操作,將一個(gè)序列轉(zhuǎn)化為另一個(gè)序列,并統(tǒng)計(jì)所需的最小步數(shù)[17]。設(shè)輸入序列s和e分別表識(shí)別結(jié)果和醫(yī)學(xué)詞庫(kù)中的醫(yī)學(xué)名詞,LD[i,j]表示序列s的前i個(gè)元素和序列e的前j個(gè)元素的編輯距離,動(dòng)態(tài)轉(zhuǎn)移方程如式(6)所示。若序列s的第i個(gè)元素和序列e的第j個(gè)元素相等,那么編輯操作為0,LD[i,j]=LD[i-1,j-1];若序列s的第i個(gè)元素和序列e的第j個(gè)元素不相等,那么LD[i,j]可以進(jìn)行三種操作,第一種操作方式是刪除序列s的第i個(gè)元素,第二種方式刪除序列e的第j個(gè)元素,第三種方式替換操作使得第i個(gè)元素和第j個(gè)元素相等,三種方式取最小值。
(6)
編輯距離算法體現(xiàn)了字符串間的差異程度,可以避免公共子串帶來(lái)的歧義。但使用神經(jīng)網(wǎng)絡(luò)識(shí)別化驗(yàn)單文字需要先切分文字再識(shí)別,因文字密集、光影變化等原因,切分文字過(guò)程中會(huì)出現(xiàn)多字、漏字、合并字符串等現(xiàn)象[18]。如檢驗(yàn)項(xiàng)X=“網(wǎng)織紅細(xì)胞計(jì)數(shù)”因切分問(wèn)題被識(shí)別為Y=“只紅細(xì)胞計(jì)數(shù)”,后者與前者及Z=“紅細(xì)胞數(shù)”的編輯距離均為2,造成歧義?;诰庉嬀嚯x的相似度公式如式(7)、式(8)所示,計(jì)算X與Y、Z相似度均相等,不符合X與Y更相似的直觀認(rèn)知[19],存在一定的局限性。
(7)
(8)
綜上所述,單獨(dú)使用編輯距離算法或是最長(zhǎng)公共子序列算法矯正都會(huì)出現(xiàn)歧義。本文融合了編輯距離方法和最長(zhǎng)公共子序列方法。識(shí)別序列長(zhǎng)度為i,醫(yī)學(xué)詞庫(kù)中醫(yī)學(xué)名詞序列長(zhǎng)度為j,Q[i,j]表示兩序列相似度,相似度共識(shí)如式(9)所示。其中,參數(shù)α與β為比例系數(shù)且α+β=1。通過(guò)已有數(shù)據(jù)統(tǒng)計(jì)α與β的最優(yōu)比例,可以使算法更好地應(yīng)用于不同的數(shù)據(jù)集。通過(guò)對(duì)標(biāo)注數(shù)據(jù)的統(tǒng)計(jì),在本文后續(xù)實(shí)驗(yàn)中,α為0.3,β為0.7。
Q[i,j]=α·dp[i,j]+β·(min(i,j)-C[i,j])
(9)
化驗(yàn)單OCR與自然場(chǎng)景下的OCR相比存在一定的特殊性,根據(jù)某實(shí)驗(yàn)室提供的真實(shí)化驗(yàn)單數(shù)據(jù),每張化驗(yàn)單最多包含七項(xiàng),分別為序號(hào)、項(xiàng)目名稱(chēng)、縮寫(xiě)、檢測(cè)結(jié)果、單位、參考值范圍、提示。其中,項(xiàng)目名稱(chēng)、縮寫(xiě)與單位、參考值范圍存在固定的對(duì)應(yīng)關(guān)系,如果一個(gè)檢驗(yàn)項(xiàng)的項(xiàng)目名稱(chēng)或縮寫(xiě)確定,那么這個(gè)檢驗(yàn)項(xiàng)的單位和參考范圍也可以確定。在醫(yī)療機(jī)構(gòu)提供的檢驗(yàn)項(xiàng)表單的基礎(chǔ)上,根據(jù)標(biāo)注數(shù)據(jù)進(jìn)行增補(bǔ),建立了化驗(yàn)單OCR識(shí)別矯正的檢驗(yàn)項(xiàng)詞表,示例如表1所示。如果一個(gè)檢驗(yàn)項(xiàng)的項(xiàng)目名稱(chēng)和縮寫(xiě)識(shí)別正確,便可以通過(guò)這種基于對(duì)應(yīng)關(guān)系的矯正方法,對(duì)其他列的識(shí)別結(jié)果進(jìn)行矯正。部分化驗(yàn)單還存在一行多個(gè)檢驗(yàn)項(xiàng)的情況,需要根據(jù)對(duì)列名的識(shí)別結(jié)果配合檢驗(yàn)項(xiàng)文字,核對(duì)并拆分一行中的兩個(gè)檢驗(yàn)項(xiàng),并對(duì)兩個(gè)檢驗(yàn)項(xiàng)分別進(jìn)行如上矯正處理。
表1 檢驗(yàn)項(xiàng)詞表示例
本實(shí)驗(yàn)由某智慧醫(yī)療科技有限公司提供真實(shí)化驗(yàn)單數(shù)據(jù)5 000余張,分某實(shí)驗(yàn)室、某醫(yī)院兩大類(lèi)。通過(guò)檢驗(yàn)指標(biāo)數(shù)據(jù)合成和數(shù)據(jù)增強(qiáng),數(shù)據(jù)擴(kuò)充至10 000余張,化驗(yàn)單數(shù)據(jù)如圖3、圖4所示。通過(guò)使用自然場(chǎng)景下化驗(yàn)單文字檢測(cè)方法(BHS-CTPN)進(jìn)行文字檢測(cè),將檢測(cè)的文本框進(jìn)行切割,然后利用一種改進(jìn)CRNN的識(shí)別方法進(jìn)行文字識(shí)別,最后對(duì)識(shí)別結(jié)果進(jìn)行后處理矯正。
圖3 實(shí)驗(yàn)原始數(shù)據(jù)
圖4 實(shí)驗(yàn)原始數(shù)據(jù)
本文使用準(zhǔn)確率(Precision)、召回率(Recall)和F-Measure(F1值)對(duì)模型做性能評(píng)估。TP表示正類(lèi)判斷成正類(lèi)的數(shù)目;TN表示負(fù)類(lèi)判斷成負(fù)類(lèi)的數(shù)目;FP表示負(fù)類(lèi)判斷成正類(lèi)的數(shù)目;FN表示正類(lèi)判斷成負(fù)類(lèi)的數(shù)目。在矯正任務(wù)中,一般使用準(zhǔn)確率表示識(shí)別出的字符中正確識(shí)別的字符數(shù)量,而用召回率表示化驗(yàn)單字符中正確識(shí)別的字符數(shù)量,準(zhǔn)確率、召回率、F1值計(jì)算公式如式(10)-式(12)。
(10)
(11)
(12)
本實(shí)驗(yàn)的輸入為化驗(yàn)單識(shí)別結(jié)果和構(gòu)建的醫(yī)學(xué)詞庫(kù),輸出為矯正的識(shí)別結(jié)果。實(shí)驗(yàn)構(gòu)建的醫(yī)學(xué)詞庫(kù)2 000余項(xiàng),實(shí)驗(yàn)的硬件為Intel Xeon E5-2603 v4處理器,64 GB內(nèi)存,Nvidia Tesla k 80顯卡,操作系統(tǒng)為Ubuntu 16.04.10,實(shí)驗(yàn)的軟件配置為Python 3.6.8,實(shí)驗(yàn)的區(qū)域預(yù)測(cè)選擇概率最大的前三個(gè)。首先利用語(yǔ)言模型進(jìn)行識(shí)別結(jié)果矯正,然后根據(jù)構(gòu)建的詞表,利用對(duì)應(yīng)關(guān)系進(jìn)行矯正,最后利用融合的編輯距離和最長(zhǎng)公共子序列的方法進(jìn)行識(shí)別結(jié)果矯正。
3.3.1定量分析
如表2、表3所示,在實(shí)驗(yàn)室化驗(yàn)單數(shù)據(jù)和醫(yī)療化驗(yàn)單數(shù)據(jù)上,對(duì)本論文提出的后處理矯正方法各模塊分別進(jìn)行消融實(shí)驗(yàn)。使用Imp-CRNN作為基線模型,分別加入語(yǔ)言模型、對(duì)應(yīng)關(guān)系、編輯距離和最長(zhǎng)公共子序列以驗(yàn)證各模塊的有效性,然后將各模塊結(jié)合得到本文的矯正方法。與基線模型相比,本文的方法在實(shí)驗(yàn)室化驗(yàn)單數(shù)據(jù)上的識(shí)別準(zhǔn)確率、召回率、F1值分別提升了2百分點(diǎn)、3百分點(diǎn)、2百分點(diǎn),在醫(yī)院化驗(yàn)的數(shù)據(jù)上的識(shí)別準(zhǔn)確率、召回率、F1值分別提升了2百分點(diǎn)、3百分點(diǎn)、3百分點(diǎn)。實(shí)驗(yàn)結(jié)果表明加入后處理的文本識(shí)別更加精確,且方法適用于不同的數(shù)據(jù)集,具有一定的泛化性。本組實(shí)驗(yàn)的對(duì)比和相關(guān)指數(shù)的提升可以有效地說(shuō)明本文模型的性能。
表2 某實(shí)驗(yàn)室化驗(yàn)單識(shí)別結(jié)果對(duì)比
表3 某醫(yī)院化驗(yàn)單識(shí)別結(jié)果對(duì)比
3.3.2定性分析
為了能夠客觀地進(jìn)行分析比較,選取兩張典型的化驗(yàn)單案例,對(duì)比其識(shí)別結(jié)果與校正后結(jié)果,如圖5、圖6所示。在沒(méi)有引入后處理時(shí),會(huì)出現(xiàn)形近字識(shí)別錯(cuò)誤和多字少字現(xiàn)象。通過(guò)使用本文提出的后處理方法可以矯正大部分錯(cuò)誤,同時(shí)還能通過(guò)后處理將識(shí)別結(jié)果進(jìn)一步規(guī)范化,方便后期處理。定性分析體現(xiàn)了引入后處理可以有效地解決常見(jiàn)識(shí)別錯(cuò)誤,提升準(zhǔn)確率。
圖5 識(shí)別矯正對(duì)比圖一
圖6 識(shí)別矯正對(duì)比圖二
本文針對(duì)自然場(chǎng)景下化驗(yàn)單識(shí)別效果欠佳的情況,提出了一種融合語(yǔ)言模型的文字識(shí)別矯正方法。在傳統(tǒng)語(yǔ)言模型矯正方法的基礎(chǔ)上,引入神經(jīng)網(wǎng)絡(luò)的輸出建立識(shí)別結(jié)果矩陣,使用統(tǒng)計(jì)條件概率預(yù)測(cè)最佳符合醫(yī)學(xué)詞庫(kù)的識(shí)別結(jié)果。本文提出了一種融合編輯距離和最長(zhǎng)公共子序列的字符串匹配算法來(lái)匹配最貼切的識(shí)別結(jié)果,最后通過(guò)對(duì)應(yīng)關(guān)系匹配,進(jìn)行前后矯正,進(jìn)一步提高識(shí)別精確度。對(duì)比實(shí)驗(yàn)表明,在引入本文提出的矯正方法后,化驗(yàn)單的識(shí)別準(zhǔn)確率得到了提高,證明了該方法的有效性。但該方法還有一些不足之處,如需要更新詞庫(kù)、相似度算法計(jì)算量有待優(yōu)化、訓(xùn)練數(shù)據(jù)分布不均勻會(huì)導(dǎo)致魯棒性不足等問(wèn)題。在接下來(lái)的工作中,一方面將對(duì)所提出的方法進(jìn)行改進(jìn),優(yōu)化方法,減少計(jì)算量,進(jìn)一步提高本方法的效率;另一方面將提升詞庫(kù)的規(guī)模,使數(shù)據(jù)均勻分布,擴(kuò)大數(shù)據(jù)的覆蓋范圍,進(jìn)一步提高方法的魯棒性。