目錄綜述
推薦**
python 現有模組
【更新時間】2023年9月26日
【很好的參考資料】這個github收集了文字檢測、文字識別、端到端的**以及部分開源**,很好的學習資料!
1 ocr的應用場景
目前ocr的應用場景主要分為以下三個方面:
1、自然場景下多形態文字檢測與識別
2、手寫體文字檢測與識別
3、文件的文字檢測與識別(版面分析等)
2 ocr目前的技術綜述以及文獻
2.1 文字檢測
1、ctpn(基於faster rcnn):目前比較成熟的文字檢測框架,精確度較好。但是檢測時間較長,有很大的優化空間。
【文獻】detecting text in natural image with connectionist text proposal network
2、textboxes、textboxes++(基於ssd):調整anchor長寬比,適用於文字細長的特點,但針對小文字會有漏檢。
【文獻】textboxes: a fast text detector with a single deep neural network
textboxes++: a single-shot oriented scene text detector
3、seglink(ctpn+ssd):通常用於自然場景下,檢測多角度文字。
【文獻】detecting oriented text in natural images by linking segments
4、dmpnet:採用非矩形四邊形選定anchor進行檢測,通過monte-carlo方法計算標註區域於矩形候選框和旋轉候選框的重合度後重新計算頂點座標,得到非矩形四邊形的頂點座標。適用於自然場景下文字檢測。
【文獻】deep matching prior network: toward tighter multi-oriented text detection
5、yolo:文字檢測時間短,精確度較好。但針對小目標效果一般,容易造成大範圍漏檢。
【文獻】yolov3: an incremental improvement
6、east:採取fcn思路,做特徵提取和特徵融合,區域性感知nms階段完成檢測。網路的簡潔使得檢測準確率和速度都有進一步提公升。(針對自然場景下使用較多)
【文獻】east: an efficient and accurate scene text detector
7、pixel-anchor:針對anchor數量多引起文字出現的丟失問題、pixel感受野不足引起長文字丟失情況,結合兩者各自的優點,對於長行的中文檢測場景有較好的適應性。網路結構可以分為兩部分,其中pixel-based的方法為對east的改進,anchor-based的方法為對ssd的改進。前者主要為了檢測中等的文字,後者主要為了檢測長行和較小的文字。
【文獻】pixel-anchor: a fast oriented scene text detector with combined networks
8、inceptext:針對大尺度、長寬比及方向變化問題,借鑑googlenet中的inception模組來解決這些問題。在inception結構中通過不同尺寸的卷積核設計達到檢測不同大小和寬高比的文字,同時引入deformable卷積層操作和deformable psroi pooling層提公升任意方向文字的檢測效果。
【文獻】inceptext: a new inception-text module with deformable psroi pooling for multi-oriented scene text detection
2.2 文字識別
1、cnn+rnn+ctc(如crnn):使用目前最為廣泛的一種文字識別框架。需要自己構建字詞庫(包含常用字、各類字元等)。
【講解及優化】
2、cnn(如densenet)+ctc:資料不多,效果一般,泛化能力較差。沒有加入了rnn的效果好。
【文獻】暫未找到,可參考github
3、tesserocr(tesseract):使用比較廣泛的一種開源識別框架,支援多語言多平台。tesseract在識別清晰的標準中文字型效果還行,稍微複雜的情況就很糟糕(多字型等),而且花費的時間也很多。
【文獻】暫未找到,可參考github
4、rare:主要用於識別變形的文字影象效果好,用於自然場景下文字識別。
【文獻】robust scene text recognition with automatic rectification
5、fots(east+crnn):端到端ocr模型,檢測和識別任務共享卷積特徵層,既節省了計算時間,也比兩階段訓練方式學習到更多影象特徵。引入了旋轉感興趣區域(roirotate), 可以從卷積特徵圖中產生出定向的文字區域,從而支援傾斜文字的識別。
【文獻】fots: fast oriented text spotting with a unified network
【講解】
6、aster:模型主要分為兩個部分,乙個是矯正模型,乙個是識別模型。文字矯正模型,不需要任何矯正標註資訊,對彎曲文字、透視文字有著很好的矯正效果。識別模型中的cnn使用了resnet的結構,最後的解碼部分使用的是sequence2sequence機制來進行解碼,不同於crnn的ctcloss。
【文獻】aster: an attentional scene text recognizer with flexible rectification
3 最新比賽進展
說道ocr的比賽,最著名的當屬icdar了,即文件分析與識別國際會議(international conference on document analysis and recognition,icdar)。目前是每兩年舉辦一次,2023年舉辦了一次比賽(icdar 2019),共分為以下六個賽道:
(1)scene text visual question answering(st-vqa,場景文字識別並回答問題)
(2)multi-lingual scene text detection and recognition(mlt,多語言場景文字檢測和識別)
(3)large-scale street view text with partial labeling(lsvt,部分標籤的大型街景文字識別)
(4)arbitrary-shaped text(art,任意形狀文字識別)
(5)scanned receipts ocr and information extraction(sroie,掃瞄收據ocr和資訊提取)
(6)reading chinese text on signboard(rects,在商家招牌上識別中文)
目前有幾個賽道的比賽結果已出,而每乙個賽道中又會有不同的子任務。例如sroie中,會有文字檢測、文字識別、關鍵資訊提取三個子任務。
從比賽結果中,我們可以得出各個參賽隊伍使用哪一種先進的方法去提公升自己的模型的分數。
比賽**:
orc:?keyword=ocr
專案推薦:ocr專案(車牌識別):news/251.html
pytesseract
深度學習框架 PyTorch(一)
pytorch是基於python的開源深度學習框架,它包括了支援gpus計算的tensor模組以及自動求導等先進的模組,被廣泛應用於科學研究中,是最流行的動態圖框架。pytorch的運算單元叫作張量tensor。我們可以將張量理解為乙個多維陣列,一階張量即為一位陣列,通常叫作向量vector 二階張...
深度學習 Pytorch學習筆記(一)
pytorch中需要自己定義網路模型,該模型需要封裝到乙個自定義的類中,該類只是乙個子類,其繼承的父類為torch.nn.module,可見如下樹形結構圖 module實際又是繼承了object類,關於為什麼要繼承object類有興趣的可以看這篇部落格mro演算法 也就是說,自定義的模型除了要有 i...
pytorch 深度學習
pytorch深度學習實踐 訓練集 開發集 模型評估 測試集。f x wx b f x wx b f x w x bloss 乙個樣本 cost mean square error training set 區域性最優,不一定全域性最優。鞍點 梯度為0,但無法繼續迭代。w w c ost ww w ...