主頁 >  其他 > OCR -- 文本識別 -- 理論篇

OCR -- 文本識別 -- 理論篇

2023-06-05 09:31:37 其他

文本識別的應用場景很多,有檔案識別、路標識別、車牌識別、工業編號識別等等,根據實際場景可以把文本識別任務分為兩個大類:規則文本識別不規則文本識別

  • 規則文本識別:主要指印刷字體、掃描文本等,認為文本大致處在水平線位置

  • 不規則文本識別: 往往出現在自然場景中,且由于文本曲率、方向、變形等方面差異巨大,文字往往不在水平位置,存在彎曲、遮擋、模糊等問題,

下圖展示的是 IC15 和 IC13 的資料樣式,它們分別代表了不規則文本和規則文本,可以看出不規則文本往往存在扭曲、模糊、字體差異大等問題,更貼近真實場景,也存在更大的挑戰性,

因此目前各大演算法都試圖在不規則資料集上獲得更高的指標,


IC15 圖片樣例(不規則文本)

IC13 圖片樣例(規則文本)

不同的識別演算法在對比能力時,往往也在這兩大類公開資料集上比較,對比多個維度上的效果,目前較為通用的英文評估集合分類如下:

2 文本識別演算法分類

在傳統的文本識別方法中,任務分為3個步驟,即影像預處理、字符分割和字符識別,需要對特定場景進行建模,一旦場景變化就會失效,面對復雜的文字背景和場景變動,基于深度學習的方法具有更優的表現,

多數現有的識別演算法可用如下統一框架表示,演算法流程被劃分為4個階段:
image

我們整理了主流的演算法類別和主要論文,參考下表:

演算法類別 主要思路 主要論文
傳統演算法 滑動視窗、字符提取、動態規劃 -
ctc 基于ctc的方法,序列不對齊,更快速識別 CRNN, Rosetta
Attention 基于attention的方法,應用于非常規文本 RARE, DAN, PREN
Transformer 基于transformer的方法 SRN, NRTR, Master, ABINet
校正 校正模塊學習文本邊界并校正成水平方向 RARE, ASTER, SAR
分割 基于分割的方法,提取字符位置再做分類 Text Scanner, Mask TextSpotter

2.1 規則文本識別

文本識別的主流演算法有兩種,分別是基于 CTC (Conectionist Temporal Classification) 的演算法和 Sequence2Sequence 演算法,區別主要在解碼階段,

基于 CTC 的演算法是將編碼產生的序列接入 CTC 進行解碼;基于 Sequence2Sequence 的方法則是把序列接入回圈神經網路(Recurrent Neural Network, RNN)模塊進行回圈解碼,兩種方式都驗證有效也是主流的兩大做法,


左:基于CTC的方法,右:基于Sequece2Sequence的方法

進入CNN,視覺特征提取
進入RNN,序列特征提取

2.1.1 基于CTC的演算法

基于 CTC 最典型的演算法是CRNN (Convolutional Recurrent Neural Network)[1],它的特征提取部分使用主流的卷積結構,常用的有ResNet、MobileNet、VGG等,由于文本識別任務的特殊性,輸入資料中存在大量的背景關系資訊,卷積神經網路的卷積核特性使其更關注于區域資訊,缺乏長依賴的建模能力,因此僅使用卷積網路很難挖掘到文本之間的背景關系聯系,為了解決這一問題,CRNN文本識別演算法引入了雙向 LSTM(Long Short-Term Memory) 用來增強背景關系建模,通過實驗證明雙向LSTM模塊可以有效的提取出圖片中的背景關系資訊,最終將輸出的特征序列輸入到CTC模塊,直接解碼序列結果,該結構被驗證有效,并廣泛應用在文本識別任務中,Rosetta[2]是FaceBook提出的識別網路,由全卷積模型和CTC組成,Gao Y[3]等人使用CNN卷積替代LSTM,引數更少,性能提升精度持平,

CRNN 結構圖

2.1.2 Sequence2Sequence 演算法

Sequence2Sequence 演算法是由編碼器 Encoder 把所有的輸入序列都編碼成一個統一的語意向量,然后再由解碼器Decoder解碼,在解碼器Decoder解碼的程序中,不斷地將前一個時刻的輸出作為后一個時刻的輸入,回圈解碼,直到輸出停止符為止,一般編碼器是一個RNN,對于每個輸入的詞,編碼器輸出向量和隱藏狀態,并將隱藏狀態用于下一個輸入的單詞,回圈得到語意向量;解碼器是另一個RNN,它接收編碼器輸出向量并輸出一系列字以創建轉換,受到 Sequence2Sequence 在翻譯領域的啟發, Shi[4]提出了一種基于注意的編解碼框架來識別文本,通過這種方式,rnn能夠從訓練資料中學習隱藏在字串中的字符級語言模型,

Sequence2Sequence 結構圖

以上兩個演算法在規則文本上都有很不錯的效果,但由于網路設計的局限性,這類方法很難解決彎曲和旋轉的不規則文本識別任務,為了解決這類問題,部分演算法研究人員在以上兩類演算法的基礎上提出了一系列改進演算法,

2.2 不規則文本識別

  • 不規則文本識別演算法可以被分為4大類:基于校正的方法;基于 Attention 的方法;基于分割的方法;基于 Transformer 的方法,

2.2.1 基于校正的方法

基于校正的方法利用一些視覺變換模塊,將非規則的文本盡量轉換為規則文本,然后使用常規方法進行識別,

RARE[4]模型首先提出了對不規則文本的校正方案,整個網路分為兩個主要部分:一個空間變換網路STN(Spatial Transformer Network) 和一個基于Sequence2Squence的識別網路,其中STN就是校正模塊,不規則文本影像進入STN,通過TPS(Thin-Plate-Spline)變換成一個水平方向的影像,該變換可以一定程度上校正彎曲、透射變換的文本,校正后送入序列識別網路進行解碼,

RARE 結構圖

RARE論文指出,該方法在不規則文本資料集上有較大的優勢,特別比較了CUTE80和SVTP這兩個資料集,相較CRNN高出5個百分點以上,證明了校正模塊的有效性,基于此[6]同樣結合了空間變換網路(STN)和基于注意的序列識別網路的文本識別系統,

基于校正的方法有較好的遷移性,除了RARE這類基于Attention的方法外,STAR-Net[5]將校正模塊應用到基于CTC的演算法上,相比傳統CRNN也有很好的提升,

2.2.2 基于Attention的方法

基于 Attention 的方法主要關注的是序列之間各部分的相關性,該方法最早在機器翻譯領域提出,認為在文本翻譯的程序中當前詞的結果主要由某幾個單詞影響的,因此需要給有決定性的單詞更大的權重,在文本識別領域也是如此,將編碼后的序列解碼時,每一步都選擇恰當的context來生成下一個狀態,這樣有利于得到更準確的結果,

R^2AM [7] 首次將 Attention 引入文本識別領域,該模型首先將輸入影像通過遞回卷積層提取編碼后的影像特征,然后利用隱式學習到的字符級語言統計資訊通過遞回神經網路解碼輸出字符,在解碼程序中引入了Attention 機制實作了軟特征選擇,以更好地利用影像特征,這一有選擇性的處理方式更符合人類的直覺,

R^2AM 結構圖

后續有大量演算法在Attention領域進行探索和更新,例如SAR[8]將1D attention拓展到2D attention上,校正模塊提到的RARE也是基于Attention的方法,實驗證明基于Attention的方法相比CTC的方法有很好的精度提升,

2.2.3 基于分割的方法

基于分割的方法是將文本行的各字符作為獨立個體,相比與對整個文本行做矯正后識別,識別分割出的單個字符更加容易,它試圖從輸入的文本影像中定位每個字符的位置,并應用字符分類器來獲得這些識別結果,將復雜的全域問題簡化成了區域問題解決,在不規則文本場景下有比較不錯的效果,然而這種方法需要字符級別的標注,資料獲取上存在一定的難度,Lyu[9]等人提出了一種用于單詞識別的實體分詞模型,該模型在其識別部分使用了基于 FCN(Fully Convolutional Network) 的方法,[10]從二維角度考慮文本識別問題,設計了一個字符注意FCN來解決文本識別問題,當文本彎曲或嚴重扭曲時,該方法對規則文本和非規則文本都具有較優的定位結果,

Mask TextSpotter 結構圖

2.2.4 基于Transformer的方法

隨著 Transformer 的快速發展,分類和檢測領域都驗證了 Transformer 在視覺任務中的有效性,如規則文本識別部分所說,CNN在長依賴建模上存在局限性,Transformer 結構恰好解決了這一問題,它可以在特征提取器中關注全域資訊,并且可以替換額外的背景關系建模模塊(LSTM),

一部分文本識別演算法使用 Transformer 的 Encoder 結構和卷積共同提取序列特征,Encoder 由多個 MultiHeadAttentionLayer 和 Positionwise Feedforward Layer 堆疊而成的block組成,MulitHeadAttention 中的 self-attention 利用矩陣乘法模擬了RNN的時序計算,打破了RNN中時序長時依賴的障礙,也有一部分演算法使用 Transformer 的 Decoder 模塊解碼,相比傳統RNN可獲得更強的語意資訊,同時并行計算具有更高的效率,

SRN[11] 演算法將Transformer的Encoder模塊接在ResNet50后,增強了2D視覺特征,并提出了一個并行注意力模塊,將讀取順序用作查詢,使得計算與時間無關,最終并行輸出所有時間步長的對齊視覺特征,此外SRN還利用Transformer的Eecoder作為語意模塊,將圖片的視覺資訊和語意資訊做融合,在遮擋、模糊等不規則文本上有較大的收益,

NRTR[12] 使用了完整的Transformer結構對輸入圖片進行編碼和解碼,只使用了簡單的幾個卷積層做高層特征提取,在文本識別上驗證了Transformer結構的有效性,

NRTR 結構圖

SRACN[13]使用Transformer的解碼器替換LSTM,再一次驗證了并行訓練的高效性和精度優勢,

原文:https://aistudio.baidu.com/aistudio/projectdetail/6276554

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/554307.html

標籤:其他

上一篇:OCR -- 文本識別 -- 理論篇

下一篇:返回列表

標籤雲
其他(160355) Python(38201) JavaScript(25475) Java(18186) C(15236) 區塊鏈(8269) C#(7972) AI(7469) 爪哇(7425) MySQL(7233) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5873) 数组(5741) R(5409) Linux(5346) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4582) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2434) ASP.NET(2403) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) .NET技术(1981) 功能(1967) HtmlCss(1952) Web開發(1951) C++(1928) python-3.x(1918) 弹簧靴(1913) xml(1889) PostgreSQL(1879) .NETCore(1863) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • OCR -- 文本識別 -- 理論篇

    文本識別的應用場景很多,有檔案識別、路標識別、車牌識別、工業編號識別等等,根據實際場景可以把文本識別任務分為兩個大類:**規則文本識別**和**不規則文本識別**。 * 規則文本識別:主要指印刷字體、掃描文本等,認為文本大致處在水平線位置 * 不規則文本識別: 往往出現在自然場景中,且由于文本曲率、 ......

    uj5u.com 2023-06-05 09:31:37 more
  • OCR -- 文本識別 -- 理論篇

    文本識別的應用場景很多,有檔案識別、路標識別、車牌識別、工業編號識別等等,根據實際場景可以把文本識別任務分為兩個大類:**規則文本識別**和**不規則文本識別**。 * 規則文本識別:主要指印刷字體、掃描文本等,認為文本大致處在水平線位置 * 不規則文本識別: 往往出現在自然場景中,且由于文本曲率、 ......

    uj5u.com 2023-06-05 09:25:59 more
  • 移動安全課程

    在制定一個完善的移動安全培訓視頻課程計劃時,我們需要考慮以下幾個方面: 1. 課程目標和受眾:明確課程的目標,以及面向的受眾群體。例如,本課程旨在幫助開發者、安全工程師、企業和個人了解移動安全的基本原理及實踐方法,提高移動應用的安全性。 2. 課程內容和結構:設計詳細的課程大綱,涵蓋移動安全的各個方 ......

    uj5u.com 2023-06-05 09:23:43 more
  • 讀改變未來的九大演算法筆記04_公鑰加密

    ![](https://img2023.cnblogs.com/blog/3076680/202306/3076680-20230604225234607-144281655.png) # 1. 加密的目的就是傳輸秘密 # 2. 分塊密碼(Block Cipher)的現代加密技術使用了相加把戲的變體 ......

    uj5u.com 2023-06-05 08:14:20 more
  • 槍決通知短信:網路欺詐的新變種與社會責任

    ## 一、引言 在當今數字化世界,資訊傳播的速度和范圍已經達到了前所未有的高度,然而,這種便捷的通訊方式也為不法分子提供了便利。近期,有很多人收到了所謂的“槍決通知短信”,引起了社會的廣泛關注。本文將對這一現象進行剖析,并討論如何防范和應對這種網路欺詐行為,以及社會各界在其中應承擔的責任。 ## 二 ......

    uj5u.com 2023-06-05 08:14:12 more
  • k8s實戰案例之部署Nginx+Tomcat+NFS實作動靜分離

    根據業務的不同,我們可以匯入官方基礎鏡像,在官方基礎鏡像的基礎上自定義需要用的工具和環境,然后構建成自定義出自定義基礎鏡像,后續再基于自定義基礎鏡像,來構建不同服務的基礎鏡像,最后基于服務的自定義基礎鏡像構建出對應業務鏡像;最后將這些鏡像上傳至本地harbor倉庫,然后通過k8s配置清單,將對應業務... ......

    uj5u.com 2023-06-05 08:13:28 more
  • Web安全-滲透測驗-基礎知識02

    # 資料包 ## 通信程序 - 無代理服務器 ![image](https://img2023.cnblogs.com/blog/2906024/202306/2906024-20230604214617995-418277397.png) Request 請求資料包 Reponse 相應資料包 - ......

    uj5u.com 2023-06-05 08:12:52 more
  • (ex)BSGS/(擴展)大步小步演算法 學習筆記

    # (ex)BSGS/(擴展)大步小步演算法 學習筆記 在即將暫時退役之際殺掉了[P4195](https://www.luogu.com.cn/problem/P4195)的毒瘤模板題,于是來寫篇學習筆記。 謹此為我初中三年擺爛的OI生涯畫上一個句號。(距離中考還有20天!) ## BSGS [li ......

    uj5u.com 2023-06-05 08:12:44 more
  • 自我的創建

    分享下今天看到的一些知識,也不算是知識吧.更多的是對自己的一種認識.我從自身的經歷來劃分的幾個階段,來展示自我的發展方式,這個只是針對在幼年時的狀態 之所以稱為完美的,是因為各種方向基本可以確定,很容易找到邊界,成長起來相對穩定 這種缺失,影響并不是很大,缺失一條邊界后,可以利用自我探索的方式進行補 ......

    uj5u.com 2023-06-05 08:07:26 more
  • 域用戶列舉和密碼噴灑攻擊橫向移動

    # 域用戶列舉和密碼噴灑攻擊橫向移動 [TOC] ## 一、域內用戶列舉攻擊原理 正常域用戶登錄主機,我們可以通過 "net user /domain"來列舉出域內的用戶。但是當我們用非域用戶進行登錄時,是不能使用 "net user /domain"這條命令的。或者當主機不在域內但是能與域控通信時 ......

    uj5u.com 2023-06-05 08:02:18 more