OCR在NLP場景中的應用

2021-01-08 人人都是產品經理

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

相關焦點

  • 推薦幾款OCR識別App(提取圖像中的文字,適用安卓與ios)
    市面有很多軟體都有這樣的功能, 這邊就推薦幾款手機上的ocr識別應用.安卓系統應用-全能分詞(錘子BigBang)各大安卓手機的應用市場都能搜索下載到,小米應用商店名字是"全能分詞",酷安裡面是"錘子BigBang"(因為作者開發這個App是基於錘子公開的BigBang開源項目的)安裝好之後,登陸時候就有相應的功能介紹
  • 夏日專刊AI產品上新升級集錦,50餘項軟硬能力加速場景落地
    醫美視覺方案 黑眼圈/眼袋檢測能力開放邀測提供精準的黑眼圈/眼袋檢測能力,毫秒級識別響應,並分類別返回對應位置信息,實現黑眼圈/眼袋的像素級語義分割,對醫美、互動娛樂及美顏等場景有較高的應用價值。>ai.baidu.com/tech/ocr//intelligent_ocr 文檔版面分析與識別全面公測對文檔版面進行自動分析,檢測圖、表、標題、文本的位置,輸出分版塊內容的文字識別結果;支持中/英兩種語言、手寫/印刷體混排多種場景 。
  • 知識分享 | OCR文字識別
    import cv2np_images =[cv2.imread(image_path) for image_path in test_img_path] results = ocr.recognize_text(   images=np_images,           use_gpu=False,
  • 深度學習在NLP中的運用?從分詞、詞性到機器翻譯、對話系統
    其中,對話交互系統已經成為一個重要的應用研究領域,2017 年的自然語言對話系統,將開創一個新的人機互動時代。通過深度學習和其他機器學習技術的模型組合,竹間智能也已初步實現了自然語言對話中的意圖識別、上下文理解和多輪對話。
  • Python圖像處理之圖片文字識別(OCR)
    Tesseract的安裝與使用   Tesseract的Windows安裝包下載地址為: http://digi.bib.uni-mannheim.de/tesseract/tesseract-ocr-setup-4.00.00dev.exe ,下載後雙擊直接安裝即可。安裝完後,需要將Tesseract添加到系統變量中。
  • 基於Bert和通用句子編碼的Spark-NLP文本分類
    自然語言處理(NLP)是許多數據科學系統中必須理解或推理文本的關鍵組成部分。常見的用例包括文本分類、問答、釋義或總結、情感分析、自然語言BI、語言建模和消歧。NLP在越來越多的人工智慧應用中是越來越重要。如果你正在構建聊天機器人、搜索專利資料庫、將患者與臨床試驗相匹配、對客戶服務或銷售電話進行分級、從財務報告中提取摘要,你必須從文本中提取準確的信息。
  • 國內自然語言處理(NLP)研究組
    中國大陸地區:微軟亞研自然語言計算組 Natural Language Computing (NLC) Grouphttps://www.microsoft.com/en-us/research/group/natural-language-computing/www.microsoft.com百度自然語言處理百度自然語言處理 - 理解語言,擁有智能,改變世界nlp.baidu.com
  • 斯坦福發布重磅NLP工具包StanfordNLP,支持中文等53種語言
    獲取地址:https://stanfordnlp.github.io/stanfordnlp/index.html安裝與測試我們強烈建議使用pip安裝StanfordNLP,這非常簡單要查看StanfordNLP的neural pipeline的運行情況
  • 資源| 史丹福大學NLP組開放神經機器翻譯代碼庫(附論文)
    這揭示了 NMT 架構中的冗餘的分布。我們的主要結果是:通過再訓練(retraining),我們可以使用 80% 剪枝的模型來恢復甚至超越原有的表現。:http://nlp.stanford.edu/projects/nmt/data/wmt15.en-cs/vocab.50K.cs詞典(從對齊的數據中提取出來的,dict.en-cs):http://nlp.stanford.edu/projects/nmt/data/wmt15.en-cs/dict.en-cs字符庫:vocab.char.200.en
  • NLP 新手必看!這是一份覆蓋全面的基於 PyTorch 和 keras 的 NLP...
    項目的 GitHub 地址為:https://github.com/lyeoni/nlp-tutorial。這是一個教你逐步實現和適應簡單的實詞 NLP 任務的教程:項目裡面有 4 個資源:神經機器翻譯、問答匹配、新聞分類和電影分級。這些資源都提供了源碼,對初學者來說,極為友好。初學者可以學會建立自己的模型。
  • 一文解讀NLP中的注意力機制
    新智元推薦 來源:AI小白入門作者:yuquanle 整理編輯:三石【新智元導讀】注意力機制越發頻繁的出現在文獻中,因此對注意力機制的學習、掌握與應用顯得十分重要。本文便對注意力機製做了較為全面的綜述。
  • NLP中的預處理:使用python進行文本歸一化
    我們在有關詞幹的文章中討論了文本歸一化。 但是,詞幹並不是文本歸一化中最重要(甚至使用)的任務。 我們還進行了其他一些歸一化技術的研究,例如Tokenization,Sentencizing和Lemmatization。 但是,還有其他一些用於執行此重要預處理步驟的小方法,將在本文中進行討論。
  • 康耐視利用自動調諧專利技術增進OCR 讀碼軟體性能
    這項新自動調諧功能使複雜的 OCR 應用變得簡單,哪怕是初學用戶也能輕鬆使用,最新版本的 In-Sight® Explorer 4.8 和 VisionPro® 8.1 軟體已加入該功能。先進的 OCRMax 算法可防止誤讀,並可提供方便的光學字符識別和驗證(OCR 和 OCV)應用字體管理(例如,解碼人工可讀日期、批次代碼或序列號)。OCRMax 是一款一體化工具,可以處理字符變化、文本歪斜、比例字體和可變字符串長度,同時實現高讀取率、更短的設置時間以及更快的部署速度。
  • 【超全資源】自然語言處理(NLP)入門學習資源清單(部分資料下載)
    •  Coursera:自然語言處理簡介[由密西根大學提供的NLP課程]https://www.coursera.org/learn/natural-language-processing •  spaCy(網站,博客)[Python; 新興的開放源碼庫並自帶炫酷的用法示例、API文檔和演示應用程式
  • nlp領域發生了新的技術突破,用attention機制研究nlp領域
    近期,nlp領域發生了一系列的技術突破。包括:attention機制,cnn,adaptive attention network(an),兩層cnn相比較,an表現優於一層的cn。今天我們將從這兩種attention機制開始研究nlp領域突破性技術!
  • 如何構建識別圖像中字符的自動程序?一文解讀OCR與HTR
    本文將幫助計算機視覺愛好者大致了解如何對文檔圖像中的文本進行識別。光學字符識別和手寫文本識別是人工智慧領域裡非常經典的問題。OCR 很簡單,就是將文檔照片或場景照片轉換為機器編碼的文本;而 HTR 就是對手寫文本進行同樣的操作。作者在文章中將這個問題分解成了一組更小型的問題,並製作了如下的流程圖。
  • PTMs|2020最新NLP預訓練模型綜述
    背景「nlp、cv領域的傳統方法極度依賴於手動特徵工程」。例如nlp中的log-linear、CRF模型等,cv中各種抽取特徵的模型,如sift特徵等。深度學習中本質上是一種表示學習,能夠一定程度上避免手動的特徵工程。
  • Cython 助力 Python NLP 實現百倍加速
    在去年我們發布了用 Python 實現的基於神經網絡的相互引用解析包(Neural coreference resolution package)之後,在社區中獲得了驚人數量的反饋,許多人開始將該解析包用到各種各樣的應用中,有一些應用場景甚至已經超出了我們原本設計的對話框用例(Dialog use-case)。
  • 如何 提取圖片中的文字?這款Python 庫 4行代碼搞定!
    這算是生活裡最常見、最有用的AI應用技術之一。先將圖像中的特徵的提取並檢測目標區域,之後對目標區域的的字符進行分割和分類。關於EasyOCRPython中有一個不錯的OCR庫-EasyOCR,在GitHub已有9700star。它可以在python中調用,用來識別圖像中的文字,並輸出為文本。
  • 深度學習概述:NLP vs CNN
    現在,每家公司都希望在其系統中實現這一尖端技術,以降低成本、節省時間,並通過自動化使整個工作流程更加高效。最初的人工智慧和深度學習算法比較簡單,就像我們所知的簡單感知器模型和單層神經網絡一樣。隨著時間的推移和更加專注的研究,我們已經擁有了具有多層結構的複雜神經網絡。一些公司在他們的軟體和服務中使用了LSTMs、GANs、變分自編碼器等算法。