文本是人類(lèi)最重要的信息來(lái)源之一,自然場(chǎng)景中充滿了形形色色的文字符號(hào)。光學(xué)字符識(shí)別(OCR)相信大家都不陌生,就是指電子設(shè)備(例如掃描儀或數(shù)碼相機(jī))檢查紙上打印的字符,通過(guò)檢測(cè)暗、亮的模式確定其形狀,然后用字符識(shí)別方法將形狀翻譯成計(jì)算機(jī)文字的過(guò)程。
工業(yè)場(chǎng)景的圖像文字識(shí)別更加復(fù)雜,出現(xiàn)在很多不同的場(chǎng)合。例如醫(yī)藥品包裝上的文字、各種鋼制部件上的文字、容器表面的噴涂文字、商店標(biāo)志上的個(gè)性文字等。在這樣的圖像中,字符部分可能出現(xiàn)在彎曲陣列、曲面異形、斜率分布、皺紋變形、不完整等各種形式中,并且與標(biāo)準(zhǔn)字符的特征大不相同,因此難以檢測(cè)和識(shí)別圖像字符。
對(duì)于文字識(shí)別,實(shí)際中一般首先需要通過(guò)文字檢測(cè)定位文字在圖像中的區(qū)域,然后提取區(qū)域的序列特征,在此基礎(chǔ)上進(jìn)行專(zhuān)門(mén)的字符識(shí)別。但是隨著CV發(fā)展,也出現(xiàn)很多端到端的End2End OCR。
01 基于傳統(tǒng)算法的OCR技術(shù)
傳統(tǒng)的OCR技術(shù)通常使用opencv算法庫(kù),通過(guò)圖像處理和統(tǒng)計(jì)機(jī)器學(xué)習(xí)方法從圖像中提取文本信息,包括二值化、噪聲濾波、相關(guān)域分析、AdaBoost等。傳統(tǒng)的OCR技術(shù)根據(jù)處理方法可分為三個(gè)階段:圖像準(zhǔn)備、文本識(shí)別和后處理。
一、圖像準(zhǔn)備預(yù)處理:
文字區(qū)域定位:連通區(qū)域分析、MSER
文字矯正:旋轉(zhuǎn)、仿射變換
文字分割:二值化、過(guò)濾噪聲
二、文字識(shí)別:
分類(lèi)器識(shí)別:邏輯回歸、SVM、Adaboost
三、后處理:規(guī)則、語(yǔ)言模型(HMM等)
針對(duì)簡(jiǎn)單場(chǎng)景下的圖片,傳統(tǒng)OCR已經(jīng)取得了很好的識(shí)別效果。傳統(tǒng)方法是針對(duì)特定場(chǎng)景的圖像進(jìn)行建模的,一旦跳出當(dāng)前場(chǎng)景,模型就會(huì)失效。隨著近些年深度學(xué)習(xí)技術(shù)的迅速發(fā)展,基于深度學(xué)習(xí)的OCR技術(shù)也已逐漸成熟,能夠靈活應(yīng)對(duì)不同場(chǎng)景。
02 基于深度學(xué)習(xí)的OCR技術(shù)
目前,基于深度學(xué)習(xí)的場(chǎng)景文字識(shí)別主要包括兩種方法,第一種是分為文字檢測(cè)和文字識(shí)別兩個(gè)階段;第二種則是通過(guò)端對(duì)端的模型一次性完成文字的檢測(cè)和識(shí)別。
2.1 階段一:文字檢測(cè)
文字檢測(cè)定位圖片中的文本區(qū)域,而Detection定位精度直接影響后續(xù)Recognition結(jié)果。
圖1.1
如圖1.1中,紅框代表“LAN”字符ground truth(GT),綠色框代表detection box。在GT與detection box有相同IoU的情況下,識(shí)別結(jié)果差異巨大。所以Detection對(duì)后續(xù)Recognition影響非常大!
目前已經(jīng)有很多文字檢測(cè)方法,包括:EAST/CTPN/SegLink/PixelLink/TextBoxes/TextBoxes++/TextSnake/MSR/...,具體來(lái)說(shuō):
2.1.1 CTPN [1]
CTPN是ECCV 2016提出的一種文字檢測(cè)算法,由Faster RCNN改進(jìn)而來(lái),結(jié)合了CNN與LSTM深度網(wǎng)絡(luò),其支持任意尺寸的圖像輸入,并能夠直接在卷積層中定位文本行。
CTPN由檢測(cè)小尺度文本框、循環(huán)連接文本框、文本行邊細(xì)化三個(gè)部分組成,具體實(shí)現(xiàn)流程為:
1、使用VGG16網(wǎng)絡(luò)提取特征,得到conv5_3的特征圖;
2、在所得特征圖上使用3*3滑動(dòng)窗口進(jìn)行滑動(dòng),得到相應(yīng)的特征向量;
3、將所得特征向量輸入BLSTM,學(xué)習(xí)序列特征,然后連接一個(gè)全連接FC層;
最后輸出層輸出結(jié)果。
CTPN是基于Anchor的算法,在檢測(cè)橫向分布的文字時(shí)能得到較好的效果。此外,BLSTM的加入也進(jìn)一步提高了其檢測(cè)能力。
2.1.2 TextBoxes/TextBoxes++ [2,3]
TextBoxes和TextBoxes++模型都來(lái)自華中科技大學(xué)的白翔老師團(tuán)隊(duì),其中TextBoxes是改進(jìn)版的SSD,而TextBoxes++則是在前者的基礎(chǔ)上繼續(xù)擴(kuò)展。
TextBoxes共有28層卷積,前13層來(lái)自于VGG-16(conv_1到conv4_3),后接9個(gè)額外的卷積層,最后是包含6個(gè)卷積層的多重輸出層,被稱(chēng)為text-box layers,分別和前面的9個(gè)卷積層相連。由于這些default box都是細(xì)長(zhǎng)型的,使得box在水平方向密集在垂直方向上稀疏,從而導(dǎo)致該模型對(duì)水平方向上的文字檢測(cè)結(jié)果較好。
TextBoxes++保留了TextBoxes的基本框架,只是對(duì)卷積層的組成進(jìn)行了略微調(diào)整,同時(shí)調(diào)整了default box的縱橫比和輸出階段的卷積核大小,使得模型能夠檢測(cè)任意方向的文字。
2.1.3 EAST [4]
EAST算法是一個(gè)高效且準(zhǔn)確的文字檢測(cè)算法,僅包括全卷積網(wǎng)絡(luò)檢測(cè)文本行候選框和NMS算法過(guò)濾冗余候選框兩個(gè)步驟。
其網(wǎng)絡(luò)結(jié)構(gòu)結(jié)合了HyperNet和U-shape思想,由三部分組成:
特征提?。菏褂肞VANet/VGG16提取四個(gè)級(jí)別的特征圖;
特征合并:使用上采樣、串聯(lián)、卷積等操作得到合并的特征圖;
輸出層:輸出單通道的分?jǐn)?shù)特征圖和多通道的幾何特征圖。
EAST算法借助其獨(dú)特的結(jié)構(gòu)和簡(jiǎn)練的pipline,可以檢測(cè)不同方向、不同尺寸的文字且運(yùn)行速度快,效率高。
2.2 階段二:文字識(shí)別
通過(guò)文字檢測(cè)對(duì)圖片中的文字區(qū)域進(jìn)行定位后,還需要對(duì)區(qū)域內(nèi)的文字進(jìn)行識(shí)別。針對(duì)文字識(shí)別部分目前存在幾種架構(gòu),下面將分別展開(kāi)介紹。
3.2.1 CNN + softmax [5]
此方法主要用于街牌號(hào)識(shí)別,對(duì)每個(gè)字符識(shí)別的架構(gòu)為:先使用卷積網(wǎng)絡(luò)提取特征,然后使用N+1個(gè)softmax分類(lèi)器對(duì)每個(gè)字符進(jìn)行分類(lèi)。具體流程如下圖所示:
使用此方法可以處理不定長(zhǎng)的簡(jiǎn)單文字序列(如字符和字母),但是對(duì)較長(zhǎng)的字符序列識(shí)別效果不佳。
3.2.2 CNN + RNN + attention [6]
本方法是基于視覺(jué)注意力的文字識(shí)別算法。主要分為以下三步:
模型首先在輸入圖片上運(yùn)行滑動(dòng)CNN以提取特征;
將所得特征序列輸入到推疊在CNN頂部的LSTM進(jìn)行特征序列的編碼;
使用注意力模型進(jìn)行解碼,并輸出標(biāo)簽序列。
本方法采用的attention模型允許解碼器在每一步的解碼過(guò)程中,將編碼器的隱藏狀態(tài)通過(guò)加權(quán)平均,計(jì)算可變的上下文向量,因此可以時(shí)刻讀取最相關(guān)的信息,而不必完全依賴(lài)于上一時(shí)刻的隱藏狀態(tài)。
3.2.3 CNN + stacked CNN + CTC [7]
上一節(jié)中提到的CNN + RNN + attention方法不可避免的使用到RNN架構(gòu),RNN可以有效的學(xué)習(xí)上下文信息并捕獲長(zhǎng)期依賴(lài)關(guān)系,但其龐大的遞歸網(wǎng)絡(luò)計(jì)算量和梯度消失/爆炸的問(wèn)題導(dǎo)致RNN很難訓(xùn)練?;诖?,有研究人員提出使用CNN與CTC結(jié)合的卷積網(wǎng)絡(luò)生成標(biāo)簽序列,沒(méi)有任何重復(fù)連接。
這種方法的整個(gè)網(wǎng)絡(luò)架構(gòu)如下圖所示,分為三個(gè)部分:
注意特征編碼器:提取圖片中文字區(qū)域的特征向量,并生成特征序列;
卷積序列建模:將特征序列轉(zhuǎn)換為二維特征圖輸入CNN,獲取序列中的上下文關(guān)系;
CTC:獲得最后的標(biāo)簽序列。
本方法基于CNN算法,相比RNN節(jié)省了內(nèi)存空間,且通過(guò)卷積的并行運(yùn)算提高了運(yùn)算速度。
3.2.4 特定的彎曲文本行識(shí)別
對(duì)于特定的彎曲文本行識(shí)別,早在CVPR2016就已經(jīng)有了相關(guān)paper:
Robust Scene Text Recognition with Automatic Rectification. CVPR2016.
論文地址:arxiv.org/abs/1603.03915
對(duì)于彎曲不規(guī)則文本,如果按照之前的識(shí)別方法,直接將整個(gè)文本區(qū)域圖像強(qiáng)行送入CNN+RNN,由于有大量的無(wú)效區(qū)域會(huì)導(dǎo)致識(shí)別效果很差。所以這篇文章提出一種通過(guò)STN網(wǎng)絡(luò)學(xué)習(xí)變換參數(shù),將Rectified Image對(duì)應(yīng)的特征送入后續(xù)RNN中識(shí)別。
其中Spatial Transformer Network(STN)核心就是將傳統(tǒng)二維圖像變換(如旋轉(zhuǎn)/縮放/仿射等)End2End融入到網(wǎng)絡(luò)中。具體二維圖像變換知識(shí)請(qǐng)翻閱:Homograph單應(yīng)性從傳統(tǒng)算法到深度學(xué)習(xí):https://zhuanlan.zhihu.com/p/74597564
Scene Text Recognition from Two-Dimensional Perspective. AAAI2018.
該篇文章于MEGVII 2019年提出。首先在文字識(shí)別網(wǎng)絡(luò)中加入語(yǔ)義分割分支,獲取每個(gè)字符的相對(duì)位置。
其次,在獲取每個(gè)字符位置后對(duì)字符進(jìn)行分類(lèi),獲得文字識(shí)別信息。該方法采用分類(lèi)解決識(shí)別問(wèn)題,并沒(méi)有像傳統(tǒng)方法那樣使用RNN。
除此之外,在文章中還是使用了Deformable Convolution可變形卷積。相比傳統(tǒng)3x3卷積,可變形卷積可以提取文字區(qū)域不同形狀的特征。
3.3 端對(duì)端文字識(shí)別
使用文字檢測(cè)加文字識(shí)別兩步法雖然可以實(shí)現(xiàn)場(chǎng)景文字的識(shí)別,但融合兩個(gè)步驟的結(jié)果時(shí)仍需使用大量的手工知識(shí),且會(huì)增加時(shí)間的消耗,而端對(duì)端文字識(shí)別能夠同時(shí)完成檢測(cè)和識(shí)別任務(wù),極大的提高了文字識(shí)別的實(shí)時(shí)性。
3.3.1 STN-ORC [8]
STN-OCR使用單個(gè)深度神經(jīng)網(wǎng)絡(luò),以半監(jiān)督學(xué)習(xí)方式從自然圖像中檢測(cè)和識(shí)別文本。網(wǎng)絡(luò)實(shí)現(xiàn)流程如下圖所示,總體分為兩個(gè)部分:
定位網(wǎng)絡(luò):針對(duì)輸入圖像預(yù)測(cè)N個(gè)變換矩陣,相應(yīng)的輸出N個(gè)文本區(qū)域,最后借助雙線性差值提取相應(yīng)區(qū)域;
識(shí)別網(wǎng)絡(luò):使用N個(gè)提取的文本圖像進(jìn)行文本識(shí)別。
本方法的訓(xùn)練集不需要bbox標(biāo)注,使用友好性較高;但目前此模型還不能完全檢測(cè)出圖像中任意位置的文本,需要在后期繼續(xù)調(diào)整。
3.3.2 FOTS [9]
FOTS是一個(gè)快速的端對(duì)端的文字檢測(cè)與識(shí)別框架,通過(guò)共享訓(xùn)練特征、互補(bǔ)監(jiān)督的方法減少了特征提取所需的時(shí)間,從而加快了整體的速度。其整體結(jié)構(gòu)如圖所示:
卷積共享:從輸入圖象中提取特征,并將底層和高層的特征進(jìn)行融合;
文本檢測(cè):通過(guò)轉(zhuǎn)化共享特征,輸出每像素的文本預(yù)測(cè);
ROIRotate:將有角度的文本塊,通過(guò)仿射變換轉(zhuǎn)化為正常的軸對(duì)齊的本文塊;
文本識(shí)別:使用ROIRotate轉(zhuǎn)換的區(qū)域特征來(lái)得到文本標(biāo)簽。
FOTS是一個(gè)將檢測(cè)和識(shí)別集成化的框架,具有速度快、精度高、支持多角度等優(yōu)點(diǎn),減少了其他模型帶來(lái)的文本遺漏、誤識(shí)別等問(wèn)題。
03 中文OCR開(kāi)源項(xiàng)目推薦 目前比較常用的中文OCR開(kāi)源項(xiàng)目是 chineseocr,最近又有一個(gè)新開(kāi)源的中文OCR項(xiàng)目,登上Github Trending榜單第二——chineseocr_lite
這是一個(gè)超輕量級(jí)中文 ocr,支持豎排文字識(shí)別,支持 ncnn 推理,psenet (8.5M) + crnn (6.3M) + anglenet (1.5M) 總模型僅17M。目前已經(jīng)在Github上標(biāo)星2.6K,累積343個(gè)Fork(Github地址:https://github.com/ouyanghuiyu/chineseocr_lite) chineseocr_lite實(shí)現(xiàn)的功能如下:
提供輕量的backone檢測(cè)模型psenet(8.5M),crnn_lstm_lite(9.5M) 和行文本方向分類(lèi)網(wǎng)絡(luò)(1.5M)
任意方向文字檢測(cè),識(shí)別時(shí)判斷行文本方向
crnncrnn_lite lstmdense識(shí)別(ocr-dense和ocr-lstm是搬運(yùn)chineseocr的)
支持豎排文本識(shí)別
ncnn 實(shí)現(xiàn) (支持lstm)
mnn 實(shí)現(xiàn)
接下來(lái),我們?cè)僬f(shuō)一下chineseocr_lite的運(yùn)行環(huán)境:
Ubuntu 18.04
Python 3.6.9
Pytorch 1.5.0.dev20200227+cpu
此外,最近項(xiàng)目作者對(duì)更新了可實(shí)現(xiàn)的功能。
nihui 大佬實(shí)現(xiàn)的 crnn_lstm 推理
升級(jí) crnn_lite_lstm_dw.pth 模型 crnn_lite_lstm_dw_v2.pth , 精度更高
提供豎排文字樣例以及字體庫(kù)(旋轉(zhuǎn) 90 度的字體)
如果你也對(duì)這個(gè)項(xiàng)目感興趣就趕緊嘗試下吧。
審核編輯 :李倩
-
算法
+關(guān)注
關(guān)注
23文章
4711瀏覽量
95436 -
OpenCV
+關(guān)注
關(guān)注
32文章
642瀏覽量
42935 -
OCR
+關(guān)注
關(guān)注
0文章
161瀏覽量
16810
原文標(biāo)題:OCR光學(xué)字符識(shí)別方法匯總(附開(kāi)源代碼)
文章出處:【微信號(hào):vision263com,微信公眾號(hào):新機(jī)器視覺(jué)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
端側(cè)OCR文字識(shí)別實(shí)現(xiàn) -- Core Vision Kit ##HarmonyOS SDK AI##
OCR技術(shù)如何實(shí)現(xiàn)鐵路集裝箱號(hào)的自動(dòng)識(shí)別?
OCR技術(shù)vs傳統(tǒng)識(shí)別:哪種更適合火車(chē)集裝箱識(shí)別?
明治案例 | 150個(gè)/分鐘!電阻【OCR識(shí)別】+【尺寸測(cè)量】一步到位

集裝箱箱號(hào)識(shí)別手持終端的核心技術(shù)解析
OCR識(shí)別訓(xùn)練完成后給的是空壓縮包,為什么?

孚為智能采用多角度高清攝像與智能OCR技術(shù),實(shí)現(xiàn)集裝箱號(hào)碼全自動(dòng)識(shí)別。#集裝箱號(hào)ocr識(shí)別
大模型預(yù)標(biāo)注和自動(dòng)化標(biāo)注在OCR標(biāo)注場(chǎng)景的應(yīng)用
阿普奇視覺(jué)控制器AK7在OCR識(shí)別場(chǎng)景中的應(yīng)用

SVPWM的原理及法則推導(dǎo)和控制算法詳解
ipc與傳統(tǒng)監(jiān)控技術(shù)的比較
光學(xué)字符識(shí)別是什么的一種技術(shù)
光學(xué)識(shí)別技術(shù)的工作原理是什么?
光學(xué)識(shí)別字符是自動(dòng)識(shí)別技術(shù)嗎
明治案例 | PE編織袋【大視野】【OCR識(shí)別】

評(píng)論