在NLP的産品體系中,OCR是關于文檔、文件處理的基礎步驟,是無法回避和繞開的。
關于OCR的基礎知識,也就成了NLP産品經理必不可少的知識儲備了——隻有産品詳細地了解了關于OCR的處理原理和步驟,才能充分發揮現有技術的優勢,規避其弱點,創造出更大的價值。
什麼是OCR?
OCR (Optical Character Recognition,光學字符識别)是指電子設備(例如掃描儀或數碼相機)檢查紙上打印的字符,通過檢測暗、亮的模式确定其形狀,然後用字符識别方法将形狀翻譯成計算機文字的過程。
即,針對印刷體字符,采用光學的方式将紙質文檔中的文字轉換成為黑白點陣的圖像文件,并通過識别軟件将圖像中的文字轉換成文本格式,供文字處理軟件進一步編輯加工的技術。
那麼既然是通過掃描,或者攝像的方式獲取,就會遇到很多諸如背景複雜、分辨率低等情況,在沒有針對OCR技術實質性的了解下,有的朋友都會認為OCR識别,是一件非常easy的事情,不值得進行讨論。
事實上,自然環境下的OCR要面臨、要解決的問題還是相當多的,例如:
- 背景複雜;
- 存在如底紋、水印、底線、框線;
- 加蓋印章幹擾疊加 ;
- 圖像對比度低;
- 文字傾斜、模糊;
- 污迹、磨損;
- 防僞标識;
- 字體種類繁多;
- 字的筆畫深淺,印刷受墨多寡等等情況。
通常情況下,衡量一個OCR系統性能好壞的主要指标有:拒識率、誤識率、識别速度、用戶界面的友好性,産品的穩定性,易用性及可行性等。
傳統OCR的處理過程下面,我們通過一張圖來簡要了解一下傳統OCR的處理過程:
圖像預處理
預處理一般包括諸如傾斜校正、灰度化、圖像降噪、二值化處理等等。
二值化:
二值化就是讓圖像的像素點矩陣中的每個像素點的灰度值為0(黑色)或者255(白色),也就是讓整個圖像呈現隻有黑和白的效果。在灰度化的圖像中灰度值的範圍為0~255,在二值化後的圖像中的灰度值範圍是0或者255。
二值化的做法一般分為以下幾種:
- 版面分析:是将掃描得到的圖像,将文本按照不同的屬性劃分出區域塊。對于各個不同的區域塊,如:橫排正文、豎排正文、表格、圖片等。
- 字符切割:對圖像中的文本進行字符級的切割,需要注意的是字符粘連等問題。
- 特征提取:對字符圖像提取關鍵特征并降維,用于後續的字符識别算法。
- 字符識别:依據特征向量,基于模版匹配分類法或深度神經網絡分類法,識别出字符。版面恢複:識别原文檔的排版,按照原排版的格式将識别結果輸出。
- 後處理:引入一些糾錯機制或者語言模型,針對一些形近字進行修正。
當然,上述傳統的OCR識别方法已經有點兒過時了,現在更流行的做法是基于深度學習的端到端的文字識别,即我們不需要顯式加入文字切割這個環節,而是将文字識别轉化為序列學習問題。
雖然輸入的圖像尺度不同,文本長度不同,但是經過DCNN和RNN後,在輸出階段經過一定的翻譯後,就可以對整個文本圖像進行識别,也就是說,文字的切割也被融入到深度學習中去了。
OCR處理的技術框架
根據上面的技術框架圖,簡要介紹一下其中幾個關鍵步驟的模型:
第一,傾斜校正,采用深度學習模型AdvancedEast,進行像素級别的分割。
它是一種用于場景圖像文本檢測的算法,主要基于EAST:一種高效且準确的場景文本檢測器,并且還提供了顯着的改進,這使得長文本預測更準确。它的網絡結構圖如下:
第二,采用PixelLink識别文字條的位置。
該模型是浙大聯合阿裡提出,其核心思想是基于圖像分割來實現場景文字檢測,比起之前的很多基于檢測的場景文字檢測模型來說在性能與準确率方面都有比較明顯的提升。PixelLink網絡模型架構如下:
其中CNN部分采用了VGG16做為特征提取網絡,對輸出分為兩個部分:
- 像素分割,判斷每個像素是否為text/non-text
- 鍊接預測,對每個像素點八領域進行鍊接預測,如果是positive則合并為text像素,如果不是則放棄。
通過上述兩步之後得到疊加的TEXT圖像mask,對mask圖像進行連通組件發現即可得到最終檢測框輸出。
第三,采用CRNN模型進行文字識别,它的網絡結構是這樣的:
網絡結構包含三部分,從下到上依次為:
- 卷積層,使用CNN,作用是從輸入圖像中提取特征序列;
- 循環層,使用RNN,作用是預測從卷積層獲取的特征序列的标簽(真實值)分布;
- 轉錄層,使用CTC,作用是把從循環層獲取的标簽分布通過去重整合等操作轉換成最終的識别結果;
CRNN借鑒了語音識别中的LSTM CTC的建模方法,不同點是輸入進LSTM的特征,從語音領域的聲學特征(MFCC等),替換為CNN網絡提取的圖像特征向量。
CRNN算法最大的貢獻,是把CNN做圖像特征工程的潛力與LSTM做序列化識别的潛力,進行結合。它既提取了魯棒特征,又通過序列識别避免了傳統算法中難度極高的單字符切分與單字符識别,同時序列化識别也嵌入時序依賴。
目前市面上都能提供哪些類型的文本識别呢?通用文字識别
一般是指不規則文檔類的識别,例如PDF之類的。
卡證識别
身份證、銀行卡、營業執照、名片、護照、港澳通行證、戶口本、駕駛證、行駛證等等
票據識别
增值稅發票、定額發票、火車票、出租車票、行程單、保單、銀行單據等等。
其他
車牌、車輛合格證、印章檢測等等。
應用場景
最後我們來聊一下關于OCR的應用場景,在開頭的時候,我們提到,在NLP的相關産品中,OCR扮演着不可或缺的角色,主要是在關于文檔處理的一些場景中,例如,pdf等格式的文檔抽取、文檔審核、文檔比對等等。
遠程身份認證
結合OCR和人臉識别技術,實現用戶證件信息的自動錄入,并完成用戶身份驗證。應用于金融保險、社保、O2O等行業,有效控制業務風險。
内容審核與監管
自動識别圖片、視頻中的文字内容,及時發現涉黃、涉暴、政治敏感、惡意廣告等不合規内容,規避業務風險,大幅節約人工審核成本。
紙質文檔票據電子化
通過OCR實現紙質文檔資料、票據、表格的自動識别和錄入,減少人工錄入成本,提高輸入效率。
本文由 @燕然未勒 原創發布于人人都是産品經理。未經許可,禁止轉載。
題圖來自 Unsplash ,基于 CC0 協議。
,