劉丹陽 張鳳生 孟特 丁彥強






摘要:在智能化藥房中,為完成對藥品存/取操作,需要為機器人配備視覺系統(tǒng)來實現(xiàn)對目標藥品的定位與名稱識別。對基于深度學(xué)習(xí)的文本檢測與文字識別方法進行理論分析與實驗,采用CRAFT算法檢測藥品文本區(qū)域,根據(jù)藥名文本的特征檢出并截取藥名區(qū)域;基于LSTM的Tesseract-OCR對藥名進行文字識別。對202個實物藥盒進行的識別實驗表明,對藥名區(qū)域檢測截取的準確率為98.02%;對藥品名稱的識別中,常規(guī)字體的準確率可以達到91.09%,對進一步研究提高識別效果具有參考意義。
關(guān)鍵詞:圖像處理;文本檢測;文字識別;深度學(xué)習(xí);OpenCV
中圖分類號:TP317
文獻標志碼:A
文章編號:1006-1037(2021)01-0029-05
通信作者:張鳳生,男,博士,教授,主要研究方向為測控技術(shù)與智能儀器。E-mail:fszhang1994@163.com
隨著自動化、信息化與智能控制技術(shù)的不斷進步,自動化藥房系統(tǒng)的研究與產(chǎn)品開發(fā)已引起廣泛關(guān)注。自動化藥房系統(tǒng)由藥品存取機器人和藥品信息化管理系統(tǒng)組成,以機器人替代傳統(tǒng)的人工取藥,不僅可減輕藥劑師的工作強度、提高發(fā)藥效率、降低藥品發(fā)錯幾率,而且可充分利用藥房空間[1-4]。機器人取藥的關(guān)鍵是準確判斷目標藥品的存放位置與藥品名稱。當(dāng)然,利用條碼掃描很容易識別藥品,但由于不同藥品包裝的條碼位置不同,有時需要先翻轉(zhuǎn)藥盒和確定條碼位置;而藥品包裝盒平放(自動化藥房的擺放方式)時,其名稱一定位于上表面,位置固定,因此只需采集藥盒上表面圖像即可對藥品名稱進行識別。為了能夠處理任意方向文本、曲線文本、畸變文本,增強文字識別的泛化能力,有效防止誤檢,本文采用CRAFT算法與OCR技術(shù)相結(jié)合,對藥品名稱進行識別,以提高識別的效率和準確率。
1 目標藥盒文字識別思路
對目標藥盒藥名的文字識別包括文本檢測和文字識別兩部分。近年來,隨著神經(jīng)網(wǎng)絡(luò)受到越來越多的關(guān)注與研究,基于深度學(xué)習(xí)的文本檢測算法不斷出現(xiàn)。目前基于深度學(xué)習(xí)的文本檢測主要有基于區(qū)域建議、基于圖像分割和基于形態(tài)等方法[5]。
本文采用韓國Clova AI研究人員提出的基于單字和字間親和度的CRAFT算法[6],基于形態(tài)的方法,比以往的文本檢測算法更具有魯棒性,能處理任意方向文本、曲線文本、畸變文本,具有很強的泛化能力。為精確定位自然圖像的每個字符,該算法訓(xùn)練了一個深度神經(jīng)網(wǎng)絡(luò)來預(yù)測字符區(qū)域和字符間的親和力,并采用弱監(jiān)督方式訓(xùn)練模型。在檢測到所有文本區(qū)域后,按藥品名稱的文本特征確定藥名區(qū)域。
確定了文本區(qū)域后,對區(qū)域內(nèi)的文字進行識別[7],這是視覺感知中的核心技術(shù),目的是從圖像中提取文字信息。文中采用CRAFT算法與OCR(Optical Character Recognition,OCR)技術(shù)相結(jié)合,對藥品名稱進行識別。整個識別過程分為圖像預(yù)處理、文本區(qū)域檢測、文字識別三部分,如圖1所示。
2 圖像預(yù)處理
圖像預(yù)處理包括灰度化、濾波降噪、圖像銳化、邊緣檢測、查找輪廓并裁剪。
(1)灰度化。將原彩色圖像fx,y轉(zhuǎn)化為灰度圖像f1x,y的過程。在圖像處理中,將各種格式的圖像轉(zhuǎn)化為灰度圖像以使后續(xù)的圖像處理計算量少,提高處理速度。本文采用平均值法,將彩色圖像中三個分量亮度求平均得到灰度圖。經(jīng)過灰度化的圖像仍可以反映整幅圖像的整體和局部的色度和高亮等級的分布和特征。
(2)濾波降噪。鑒于藥盒圖像采集環(huán)境條件良好,噪聲以高斯噪聲和椒鹽噪聲為主。中值濾波運算簡單且速度快,在濾除椒鹽噪聲的同時能保護圖像的邊緣、銳角等細節(jié)信息,但其對高斯噪聲的抑制能力較弱。而高斯濾波對于抑制高斯噪聲非常有效,通過合理設(shè)定高斯濾波模板方差,使得平滑效果更柔和,邊緣保留也更好,故文中采用高斯濾波,濾波模板大小為5×5。
(3)圖像銳化。高斯濾波屬于低通濾波,對圖像中的高頻分量(圖像中的邊緣、跳躍部分以及椒鹽噪聲等)衰減較強,使邊緣、局部細節(jié)變的平緩,甚至模糊,其實質(zhì)是圖像受到平均運算或積分運算,因此需對圖像進行逆運算,如微分運算,以便突出圖像細節(jié),使圖像變得更為清晰。拉普拉斯算子是一種微分算子,其應(yīng)用可增強圖像中灰度突變的區(qū)域,減弱灰度的緩慢變化區(qū)域。
對于濾波降噪后的圖像f2x,y,其拉普拉斯算子[8]定義為
最后的銳化公式為
其中,f3x,y為銳化輸出圖像;系數(shù)c代表要加上(或減去)多少細節(jié)。圖像增強處理過程是先提取細節(jié),然后再加(或減去負細節(jié))到原圖中。進行增強時,算子模板中心為正,則“原圖+邊緣圖”;算子模板中心為負,則“原圖—邊緣圖”。
(4)邊緣檢測。邊緣檢測采用Canny算法,其檢測過程分4步:①計算圖像中每個像素的梯度幅值和方向;②應(yīng)用非極大值抑制算法消除邊緣檢測帶來的雜散響應(yīng);③應(yīng)用雙閾值法劃分強邊緣和弱邊緣;④消除孤立的弱邊緣,輸出邊緣檢測結(jié)果。
(5)輪廓查找并提取。找到包含藥盒的最小凸包的四個頂點,同時求出包含四個頂點的最小矩形框,計算外接矩形的橫縱比例、輪廓面積、周長等數(shù)據(jù),然后利用這些數(shù)據(jù)實現(xiàn)特定幾何形狀輪廓的查找與過濾,為后續(xù)的處理與分析,剔除不正確的區(qū)域而保留候選對象。圖2為預(yù)處理過程示意圖。
3 文本區(qū)域檢測
查找到藥盒輪廓并裁剪后,為識別藥品名稱,首先確定文本區(qū)域,找出并截取藥名區(qū)域。
3.1 文本檢測
基于神經(jīng)網(wǎng)絡(luò)的場景文本檢測是目前廣泛應(yīng)用的文本檢測方法[9-11]。本文采用字符級的文本檢測算法CRAFT,這是一種新的場景文本檢測方法,通過挖掘每個字符和字符之間的親和度有效地檢測文本區(qū)域。
CRAFT算法是先檢測單個字符及字符間的連接關(guān)系,然后據(jù)此確定最終的文本行。該算法以基于VGG-16的全卷積神經(jīng)網(wǎng)絡(luò)作為主干網(wǎng)絡(luò),解碼器部分采用了U-net的方法,采用自頂向下的特征聚合方式,最終輸出兩個通道:region score map和affinity score map,分別為單字符中心區(qū)域的概率和相鄰字符區(qū)域中心的概率,得到原圖大小1/2的預(yù)測圖。網(wǎng)絡(luò)結(jié)構(gòu)如圖3所示。
在生成文本邊框的過程中,有常規(guī)矩形和非常規(guī)矩形兩種情況。
(1)常規(guī)矩形。①首先對0~1之間的概率圖,affinity score map(一種高斯熱圖,代表該像素是相連字符之間空間的中心點的概率)和region score map(一種高斯熱圖,代表該像素是字符中心點的概率)分別進行取二值化閾值計算,然后將兩個二值化map求并集得到一張mask圖;②使用連接組件標簽(CCL)進行區(qū)域連接;③最后使用OpenCV的MinAreaRect(最小外接矩形)去框出最小的四邊形區(qū)域。
(2)非常規(guī)四邊形,示意圖見圖4。①先找到掃描方向的局部最大值;②連接所有局部最大值上的中心點叫做中心線;③然后將局部極大值線旋轉(zhuǎn)至于中心線垂直;④局部極大值線上的端點是文本控制點的候選點,為了更好地覆蓋文本,將文本最外端的兩個控制點分別向外移動局部極大值線的半徑長度作為最終的控制點。
3.2 藥品名稱區(qū)域定位
在利用CRAFT算法檢測到所有文本區(qū)域后,還需對藥名區(qū)域進行定位。經(jīng)過對大量藥盒的統(tǒng)計發(fā)現(xiàn),藥盒文本區(qū)域中,藥名區(qū)域字體較大,包含藥名的矩形區(qū)域的寬度明顯大于其他文本區(qū)域。據(jù)此,采取的定位思路:將檢測到的所有文本區(qū)域按寬度排序,找到前三名。為防止有誤檢,或存在極少數(shù)非藥名區(qū)域?qū)挾却笥谒幟麉^(qū)域的特例,加入第二個條件,矩形區(qū)域的長寬比例要大。滿足以上兩個條件的第一位的結(jié)果就作為藥名的區(qū)域。通過對收集的202個藥盒進行檢測實驗,對藥名區(qū)域定位的準確性為98.02%,有四個藥盒出現(xiàn)錯誤,經(jīng)過觀察發(fā)現(xiàn),是由于這四個藥盒的藥名是分兩行書寫的,本算法為行檢測,檢測時將藥名當(dāng)成兩行文本檢測,導(dǎo)致識別出現(xiàn)錯誤。圖5為實際藥盒藥品名稱區(qū)域定位檢測結(jié)果。
4 文字識別方法與結(jié)果分析
文字識別的目標是已定位的藥名區(qū)域內(nèi)的文字,主要問題是如何將一串文字圖片轉(zhuǎn)錄為對應(yīng)字符。本文采用Tesseract-OCR進行文字識別,并與百度OCR作對比。
4.1 Tesseract-OCR與百度OCR
Tesseract[12-15]是一款文字識別引擎,最早由惠普實驗室開發(fā),現(xiàn)在由谷歌負責(zé)維護。與傳統(tǒng)Tesseract3不同,本文使用的Tesseract5.0增加了一個基于OCR引擎的新神經(jīng)網(wǎng)絡(luò)(Long Short Term Memory Network,長短時記憶網(wǎng)絡(luò),縮寫LSTM)。
LSTM是一種改進的循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network, RNN),解決了普通RNN在實際應(yīng)用中很難處理長距離文本的缺陷。LSTM主要由3個門組成,分別為輸入門、遺忘門和輸出門,同時包含隱藏狀態(tài)的細胞,用于記錄額外的一些信息,LSTM的網(wǎng)絡(luò)結(jié)構(gòu)如圖6所示。
百度OCR是目前基于深度學(xué)習(xí)的較為成熟的文字識別技術(shù),能夠適應(yīng)不同業(yè)務(wù)場景對識別速度以及精度的要求。識別部分首先是環(huán)境準備,需要安裝Python的百度接口的庫:pip install baidu-aip。將需要識別的圖片放入picture文件中,并將識別內(nèi)容保存在txt文件中。
4.2 實驗結(jié)果及分析
共采集了202個藥盒進行實驗。通過兩種不同OCR技術(shù)進行識別,結(jié)果如表1。
實際檢測實驗表明,本文的CRAFT文本檢測與Tesseract-OCR相結(jié)合的藥名識別方法,藥名定位準確率達98.02%,藥名文字識別準確率,本文的Tesseract-OCR方法與百度OCR相比,識別準確率較低,主要原因有以下兩點:(1)百度OCR是百度公司較為成熟的人工智能技術(shù),經(jīng)過了大量訓(xùn)練以及語義模型糾錯,能夠適應(yīng)不同的場景,并且針對圖像傾斜、翻轉(zhuǎn)等情況進行優(yōu)化,魯棒性強,可支持2萬多大字庫,其文字識別準確率高。(2)不同藥盒上文字的字體不盡相同,差異比較大;識別錯誤的情況多出現(xiàn)于非常規(guī)字體中,而對于常規(guī)字體,如宋體、黑體等字體則識別準確率高,例如,對于112個常規(guī)字體藥盒,Tesseract-OCR的識別準確率為91.09%。
5 結(jié)論
本文將CRAFT算法與Tesseract技術(shù)相結(jié)合,給出了一種藥品名稱識別方法。該方法首先對藥盒圖像進行灰度化、濾波降噪、銳化、邊緣檢測等常規(guī)化的預(yù)處理,然后分別利用CRAFT算法和Tesseract技術(shù)進行藥盒文本區(qū)域的檢測和文字識別。對202個實物藥盒的檢測實驗表明,該方法對單行書寫藥名的文本區(qū)域檢測準確率為100%,對分兩行書寫的藥名無法識別;對藥品名稱的文字識別準確率與字體形式有關(guān),對于常規(guī)字體,識別準確率為91.09%。進一步的研究一是擴展CRAFT算法的文本區(qū)域檢測可覆蓋到兩行文本;二是加大檢測樣本數(shù)量,擴展訓(xùn)練藥品名稱字體庫,以提高文字識別準確率。
參考文獻
[1]程堂燦.基于雙目視覺的藥房取藥機器人系統(tǒng)設(shè)計與研究[D].青島:青島大學(xué),2019.
[2]王敬,張鳳生,劉丹陽等.基于雙目視覺的目標藥盒邊緣識別與定位方法[J]. 青島大學(xué)學(xué)報(自然科學(xué)版). 2020,33(2): 38-44.
[3]謝家隆,陳敏儀,謝彥媛.醫(yī)院物流機器人在智能化藥房中的應(yīng)用[J].中國衛(wèi)生標準管理.2020, 11(11):20-22.
[4]郝奕清.藥盒圖像識別系統(tǒng)的設(shè)計與實現(xiàn)[D].南京:南京理工大學(xué),2017.
[5]劉樹春,賀盼,馬建奇,王佳軍等.深度實踐OCR基于深度學(xué)習(xí)的文字識別[M].北京:機械工業(yè)出版社,2020.4.
[6]BAEK Y, LEE B, HAN D, et al. Character region awareness for text detection[J]. 2019 IEEE/CVF Conference on Computer Vishon and Pattern Recognition(CVPR),Long Beach,2019:9365-9374.
[7]王炳琪,吳則舉.基于改進的CNN的啤酒瓶蓋字符識別[J]青島大學(xué)學(xué)報(自然科學(xué)版).2020,33(3):34-42.
[8]裴仁靜.基于拉普拉斯金字塔的圖像細節(jié)增強[J]. 計算機光盤軟件與應(yīng)用,2012(3):166+168.
[9]付飛飛.場景文字識別算法的研究[J].福建電腦,2020, 36(4):1-4.
[10] 張博宇.自然場景下的文本檢測與識別方法研究[D].吉林:東北電力大學(xué),2020.
[11] 徐本朋.基于深度學(xué)習(xí)的場景文本檢測方法研究[D].合肥:安徽大學(xué),2020.
[12] 李飛,盛剛,畢佳佳.基于Ctpn及Tesseract的分纖箱噴碼識別技術(shù)[J].電腦知識與技術(shù),2020, 16(13):18-19+27.
[13] 郭室驛.基于OpenCV和Tesseract_OCR的英文字符算法研究[J].電腦編程技巧與維護,2019(6):45-49.
[14] 張偉超,肖中俊,嚴志國.基于Opencv和Tesseract的行駛證識別系統(tǒng)設(shè)計[J].齊魯工業(yè)大學(xué)學(xué)報. 2020, 34(1): 47-52.
[15] 劉麗媛,劉宏展.復(fù)雜背景下儀表信息的圖像識別研究[J].激光雜志.2020, 41(4):66-69.