基于OpenCV的生產(chǎn)日期字符識(shí)別研究*
商品的標(biāo)識(shí)技術(shù)是對(duì)標(biāo)簽進(jìn)行編碼和標(biāo)記的技術(shù)手段,也是產(chǎn)品可追溯性的基礎(chǔ)。標(biāo)識(shí)技術(shù)關(guān)系到物流、食品和電子商務(wù)等多個(gè)行業(yè),影響深遠(yuǎn)。伴隨人們生活水平的提高,對(duì)于健康和安全的關(guān)注越來(lái)越多,每個(gè)行業(yè)對(duì)產(chǎn)品的品質(zhì)和安全性的要求也越來(lái)越高[1]。編碼標(biāo)識(shí)的不統(tǒng)一阻礙了各個(gè)行業(yè)的發(fā)展,包括對(duì)產(chǎn)品的溯源、電子商務(wù)及對(duì)產(chǎn)品標(biāo)簽標(biāo)準(zhǔn)化的要求,因此,國(guó)家商品生產(chǎn)日期標(biāo)識(shí)規(guī)范體系的建立顯得尤為必要。
本文引用地址:http://butianyuan.cn/article/202107/427161.htmOCR 技術(shù)通過(guò)照相機(jī)拍攝圖片,利用檢測(cè)模式掃描圖像,從中排除干擾信息并提取文本信息,然后對(duì)文本信息進(jìn)行字符識(shí)別,用一系列算法翻譯成計(jì)算機(jī)處理文本 [2]?,F(xiàn)在,還可直接連接攝像頭或照相機(jī)直接進(jìn)行視頻識(shí)別。典型的OCR 技術(shù)首先是對(duì)輸入圖像進(jìn)行預(yù)處理,再對(duì)處理過(guò)的圖像進(jìn)行文字檢測(cè)識(shí)別,在不同項(xiàng)目背景下,根據(jù)光照、背景顏色、產(chǎn)品材質(zhì)和產(chǎn)品要求的不同,預(yù)處理和識(shí)別方法也會(huì)有所差異。
識(shí)別過(guò)程將由計(jì)算機(jī)端的Python 程序完成。本文采用的商品標(biāo)簽識(shí)別過(guò)程如圖1 所示。
作者簡(jiǎn)介:李佳琪(1995~),女,安徽舒城,回族,碩士生,研究方向:神經(jīng)網(wǎng)絡(luò)字符識(shí)別,E-mail:568950838@qq.com。
*國(guó)家自然科學(xué)基金,61873004,多源傳感器環(huán)境下基于異構(gòu)特征信息融合的行為識(shí)別
國(guó)家自然科學(xué)基金,51474007,基于領(lǐng)域本體的煤礦安全數(shù)據(jù)融合方法及應(yīng)用
圖1 商標(biāo)標(biāo)簽識(shí)別過(guò)程
1 預(yù)處理與識(shí)別
1.1 OpenCV
OpenCV 是一個(gè)跨平臺(tái)的輕量級(jí)開(kāi)源計(jì)算機(jī)視覺(jué)庫(kù),支持多種機(jī)器語(yǔ)言。OpenCV 模塊覆蓋全面,其中囊括了字符識(shí)別、圖像處理、人臉識(shí)別等。OpenCV 涵蓋300 多個(gè)C 語(yǔ)言函數(shù)的中、高層API,對(duì)于輸入圖像的格式也非常包容,用它進(jìn)行應(yīng)用開(kāi)發(fā)非常高效和簡(jiǎn)潔,而且包含了豐富的工業(yè)檢測(cè)類函數(shù),能夠用于實(shí)時(shí)圖像處理,使用便捷,功能完善,適用于本文實(shí)驗(yàn)環(huán)境。
1.2 Tesseract-OCR
Tesseract-OCR 是19 世紀(jì)80 年代由惠普實(shí)驗(yàn)室開(kāi)發(fā)的,谷歌改進(jìn)了其中的算法,通過(guò)排除引擎缺陷進(jìn)行了優(yōu)化。Tesseract-OCR 的功能強(qiáng)大,應(yīng)用廣泛,是開(kāi)源的OCR 識(shí)別系統(tǒng)[3]。Tesseract-OCR 識(shí)別引擎在開(kāi)源別引擎中占有重要地位,完整識(shí)別過(guò)程由一種頁(yè)面結(jié)構(gòu)闡發(fā)方法對(duì)圖片做布局剖析,旨在辨別圖像上的表格、文本、圖片等內(nèi)容,為后續(xù)識(shí)別工作做鋪墊。
將背景信息和文本信息分開(kāi),消除圖像無(wú)關(guān)信息、加強(qiáng)有效信息,從而簡(jiǎn)化后續(xù)辨認(rèn)字符步調(diào),減輕辨認(rèn)難度和錯(cuò)誤率。
2.1 圖像傾斜校正
產(chǎn)品在流水線輸送帶上運(yùn)動(dòng)時(shí),經(jīng)過(guò)高速攝像機(jī)拍攝照片,可能會(huì)遇到產(chǎn)品放置不規(guī)范的問(wèn)題,導(dǎo)致拍攝的照片歪斜,不平行于水平線。預(yù)處理第一步是將扭曲的原始圖片進(jìn)行校正。在此環(huán)境中,使用傅里葉變換做圖像的傾斜校正。
二維圖像的傅里葉變換公式:
式中,f 和F 分別為空間域值和頻域值,示出了傅立葉變換后的結(jié)果需要使用的真實(shí)圖像加虛擬圖像,或振幅圖像(magitude 圖像)加相位圖像[4](如圖2)。
(a)傾斜校正前
(b)傾斜校正后
圖2 校正前后對(duì)比
2.2 圖像噪聲處理
在收集、傳輸和處理圖像的過(guò)程中,圖像會(huì)產(chǎn)生一些不可避免的噪聲,包含與圖像無(wú)關(guān)和冗余滋擾信息。降低圖像噪聲不僅可以使圖像更加清晰,而且可以突出圖像的感興趣區(qū)域,易于識(shí)別(如圖3)。
(a)原圖
(b)中值濾波對(duì)噪聲的處理
圖3 噪聲處理前后的對(duì)比
2.3 圖像二值化
遍歷像素點(diǎn),通過(guò)選取合適的值,灰度值二分為255 或0,白色為255,黑色為0,如式(3)所示。分類后圖像變?yōu)楹诎?,分辨圖像中的圖形和文本,便于后續(xù)將文本信息提取出來(lái)[5]。
1)Otsu 算法
此算法是把背景和目標(biāo)閾值的差距拉大,分裂性較強(qiáng),所求的是類內(nèi)方差min,和類間方差的max,首先遍歷所有像素點(diǎn),統(tǒng)計(jì)灰度級(jí)像素的個(gè)數(shù),將圖像灰度化,再次遍歷計(jì)算出最大類間方差,程序略顯復(fù)雜[6],效果圖如圖4 所示。
圖4 Otsu對(duì)光照不均的處理
2)Sauvola 算法
該算法通過(guò)引入以像素點(diǎn)為中心領(lǐng)域的wide 為參數(shù)windowsize 和自定義系數(shù)比例因子k 來(lái)降低對(duì)噪聲的敏感性,也就是對(duì)niblack 算法進(jìn)行改進(jìn)。它集中于當(dāng)前像素,閾值是根據(jù)該像素的當(dāng)前像素的附近灰度平均值和標(biāo)準(zhǔn)偏差動(dòng)態(tài)計(jì)算[7]。
灰度均值m 與標(biāo)準(zhǔn)方差s:
然后是該點(diǎn)的閾值T(x, y),其中T的大小可以根據(jù)k 來(lái)調(diào)節(jié):
圖5 Sauvola對(duì)光照不均的處理
2.4 邊緣檢測(cè)
邊緣檢測(cè)是通過(guò)卷積或微分計(jì)算后得到的二值化
圖像。
1)Laplacian 算子邊緣檢測(cè)
拉普拉斯算子被分成4 個(gè)和8 個(gè)鄰域,域是像素梯度需求鄰域的4 個(gè)相鄰方向上的中央附近的方向和梯度[8](如圖6)。
圖6 Laplacian的邊緣處理
2)Canny 邊緣檢測(cè)算法
Canny 從信噪比、單邊緣和定位性能方面來(lái)判定邊緣的優(yōu)劣,Canny 邊緣檢測(cè)算法可以分為以下5 個(gè)步驟:
①圖像灰度化
通過(guò)RGB 三個(gè)通道,為了降維,將圖片圖像進(jìn)行灰度化。
②高斯模糊處理
此步驟是對(duì)圖像進(jìn)行smooth 處理,通過(guò)濾波器將高斯函數(shù)離散化[9],高斯函數(shù)與濾波器的計(jì)算:
③圖像梯度、梯度幅值、梯度方向計(jì)算
該點(diǎn)通過(guò)計(jì)算當(dāng)前像素與其附近的像素差值來(lái)進(jìn)行位置判斷,接近這個(gè)差值稱為圖像梯度。首先計(jì)算一階導(dǎo)數(shù):
計(jì)算梯度幅值M:
計(jì)算梯度值的方向:
④ NMS(非極大值抑制)
留存邊緣方向上具有極大值的像素,通過(guò)NMS 找出其中的局部最大值,將其他位置的值取0。
⑤雙閾值的邊界選取
梯度大于任何邊緣的最大閾值是真正的邊緣,而低于最小閾值的邊緣為非邊緣,非邊緣即舍去(如圖7)。
圖7 Canny的邊緣處理
2.5本文算法的選取
中值濾波是對(duì)光滑脈沖噪聲表現(xiàn)良好,效果圖像的邊界順滑清晰。與平均灰度法比較,Sauvola 使用二值化的圖像,能解決產(chǎn)生照度不均的影響。拉普拉斯對(duì)噪聲敏感,分辨邊緣像素的位置表現(xiàn)優(yōu)異,但易出現(xiàn)雙像素邊界,導(dǎo)致日期顯示模糊不清晰;Canny 對(duì)比Laplacian 克制了噪聲引起的非邊緣,對(duì)于光照不均的圖像也能有如圖所示的效果,線條更流暢光滑,同時(shí)細(xì)化過(guò)的邊緣比較清晰,易于后續(xù)的識(shí)別工作。
綜上,根據(jù)實(shí)際檢測(cè)考慮,本項(xiàng)目的噪聲處理、二值化及邊緣檢測(cè)的算法分別借用的是中值濾波、Sauvola算法和Canny 邊緣檢測(cè)法。
3 商品生產(chǎn)日期字符識(shí)別
3.1 識(shí)別目的
在車間生產(chǎn)中,生產(chǎn)日期是由操作工人設(shè)置噴印裝置并對(duì)生產(chǎn)日期進(jìn)行噴印。生產(chǎn)日期的錯(cuò)誤為后續(xù)的溯源、倉(cāng)儲(chǔ)造成困難。為避免生產(chǎn)資料的浪費(fèi)和后續(xù)工作的開(kāi)展,制作日期字符識(shí)別數(shù)據(jù)集并校驗(yàn)成果。
本文通過(guò)jTessBoxEditor 進(jìn)行字符識(shí)別訓(xùn)練工作,Tesseract 深度學(xué)習(xí)樣本訓(xùn)練工具基于Java 開(kāi)發(fā),當(dāng)Tesseract 的自帶字符庫(kù)不足以滿足需要時(shí), 通過(guò)jTessBoxEditor 訓(xùn)練得到專屬字符庫(kù),提高生產(chǎn)日期識(shí)別率和準(zhǔn)確率。
3.2 字符集的創(chuàng)建和測(cè)試
在jTessBoxEditor 編輯器中點(diǎn)擊merge tiff,打開(kāi)拍攝到的商品生產(chǎn)日期圖片,并為文件命名,以生成訓(xùn)練集的tif 文件(如圖8)。
圖8 訓(xùn)練集部分樣本圖
通過(guò)輸入命令行生成box 文件,再導(dǎo)入tif 文件,然后它會(huì)主動(dòng)識(shí)別box 文件并主動(dòng)導(dǎo)入(如圖9)。
圖9 字符識(shí)別界面
利用窗口上方的模塊,對(duì)文件內(nèi)字符進(jìn)行框選,調(diào)整字體坐標(biāo),標(biāo)準(zhǔn)為一字一框,并對(duì)識(shí)別的字符進(jìn)行修正,最后點(diǎn)擊save。
在輸入命令后創(chuàng)建字體特征文件,之后開(kāi)始對(duì)字符文件進(jìn)行訓(xùn)練,并把生成的文件合并,即得到訓(xùn)練文件(如圖10)。
圖10 字符集訓(xùn)練界面
字符識(shí)別的正確率受前期圖片處理的程度和字符庫(kù)的影響,訓(xùn)練集中包含英文、中文和數(shù)字三種字符,為了驗(yàn)明三種字符的單獨(dú)測(cè)試效果,從以下四個(gè)方向進(jìn)行
觀察測(cè)試:
1)中文字符正確率
2)英文字符正確率
3)數(shù)字字符正確率
4)全部字符正確率
通過(guò)測(cè)試顯示,錯(cuò)誤率最高為5.00% 的中文字符,Tesseract 對(duì)于英文和數(shù)字字符還是比較精準(zhǔn)的,錯(cuò)誤主要在于字符“期”容易識(shí)別為分開(kāi)的兩個(gè)字“其”和“月”,接下來(lái)對(duì)字符偏旁部首誤分割的判定準(zhǔn)確率進(jìn)行研究?jī)?yōu)化。
4 結(jié)束語(yǔ)
本文基于OpenCV 和開(kāi)源庫(kù)Tesseract,在Python平臺(tái)根據(jù)現(xiàn)有的完善字符識(shí)別算法,利用訓(xùn)練出的專屬字符庫(kù)初步實(shí)現(xiàn)了在簡(jiǎn)單環(huán)境下對(duì)商品生產(chǎn)日期的識(shí)別功能。
本實(shí)驗(yàn)項(xiàng)目?jī)H針對(duì)普通場(chǎng)景下的圖像進(jìn)行商品標(biāo)簽日期字符的識(shí)別,對(duì)于復(fù)雜場(chǎng)景下或復(fù)雜字體、混合字體或彎曲識(shí)別界面的圖像文字識(shí)別還有待研究。后續(xù)將在圖像預(yù)處理和字符識(shí)別方面進(jìn)行優(yōu)化,即將著手的工作如下:
1)研究生產(chǎn)日期標(biāo)簽污損情況下的字符識(shí)別。
2)識(shí)別結(jié)果僅顯示于界面,未能聯(lián)系產(chǎn)品進(jìn)行操控。
3)進(jìn)一步提高字符識(shí)別的速度和正確率。
參考文獻(xiàn):
[1] 于穎.追溯無(wú)國(guó)界——追溯實(shí)施中的軟件,自動(dòng)化與數(shù)據(jù)標(biāo)準(zhǔn)化[J].中國(guó)自動(dòng)識(shí)別技術(shù),2015(4):60-64.
[2] 王德青,吾守爾·斯拉木,許苗苗.場(chǎng)景文字識(shí)別技術(shù)研究綜述[J].計(jì)算機(jī)工程與應(yīng)用,2020,56(18):1-15.
[3] 李志昂,李少波,白強(qiáng),等.基于視覺(jué)的機(jī)器人目標(biāo)抓取研究[J].組合機(jī)床與自動(dòng)化加工技術(shù),2020(9):108-111.
[4] 馬鎖冬,曾春梅,許峰.基于4f系統(tǒng)的光學(xué)圖像加密與解密仿真教學(xué)[J].大學(xué)物理實(shí)驗(yàn),2018,31(6):39-45.
[5] 石鵬飛,劉慧.基于OpenCV的偏光片檢測(cè)方法[J].機(jī)械管理開(kāi)發(fā),2020,35(10):162-164+202.
[6] 陳飛.改進(jìn)的交互式Otsu紅外圖像分割算法[J].計(jì)算機(jī)測(cè)量與控制,2020,28(9):248-251.
[7] 李藝杰,鄒坤霖,孫煒,等.基于Sauvola算法和神經(jīng)網(wǎng)絡(luò)的圖像自適應(yīng)二值化方法[J].測(cè)控技術(shù),2020,39(8):62-69+75.
[8] 趙慧娟,姜盼松,黃文聰.基于圖像識(shí)別算法的圖像傳感器質(zhì)量檢測(cè)方法改善研究[J].工業(yè)工程,2020,23(3):115-122.
[9] 白松讓,段敏,曹景勝,等.基于OpenCV的車道線智能檢測(cè)和識(shí)別[J].遼寧工業(yè)大學(xué)學(xué)報(bào)(自然科學(xué)版),2020,40(2):92-95.
(本文來(lái)源于《電子產(chǎn)品世界》雜志2021年7月期)
評(píng)論