OCR在NLP場景中的應用

2 評論 13131 瀏覽 53 收藏 10 分鐘

在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 協議。

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 默默的問一下,你這里的NLP指的是啥?

    來自江蘇 回復
    1. 自然語言處理

      來自四川 回復