OCR之四:預處理工具與crnn文字識別

2021-03-06 與葫蘆哥一起用deepLearning做AI

今天來說說文字識別

說到文字識別先給大家介紹一個工具吧。圖像預處理,或者生成訓練數據集的工具。

傳送門:https://github.com/tmbdev/ocropy

但是!圖片處理比較慢。本人根據需求用opencv重新了寫了下,速度提升10倍不止。要是用了umat可能會更快!要代碼的留言 最近會發到github上

說到工具,在給大家介紹一個做OCR必須要知道wiki:

傳送門:https://github.com/wanghaisheng/awesome-ocr/wiki

37個pages希望可以幫到你!

前言書講過,OCR主要分兩個步驟,1文字檢測2文字識別

那麼文字檢測通過以上幾片文章,然後根據自己的需求稍微制定化一下,應該可以解決95%的問題。

那麼現在說說OCR 第二部 那就是文字識別。

文字識別呢 在下大概試過兩種形式。

一種呢,先參考OCR系列第一篇的檢測。文字分割後 形成每個單一的文字框,這樣利用一個相對淺層的cnn,來做分類。經驗告訴我,對於這樣的文字框來說,網絡層並不是越深越好。

另一種呢,是接著第二遍第三篇的檢測來說的。就是文本行作為輸入進行檢測。文本行。文字個數 不固定。今天就主要講講這類的算法的框架:CRNN!

CRNN整體來看其實很容易理解。顧名思義:cnn+rnn

最好的學習其實就是看paper 我所做的也是跟大家更快的讀一篇paper 然後突出重點,在說一說自己遇到的坑,與解決的過程

好吧 先來給大家「科普」:crnn!

呦呦切克鬧,網絡結構來一套,卷積循環我都要,CTC層最重要!

那些介紹cnn是vgg16啊 去除全連接層啊,我就不多說了。重點是Before being fed into the network, all the images need to be scaled to the same height.所有的圖像都需要縮放到相同高度!

更細緻看一看cnn rnn的參數。。你會發現不同

後面兩個MaxPooling的kennel是1*2的 ,這樣會有比較寬的特徵圖,更長的特徵序列,另外加了bn層訓練會快很多  更好train。

然後接下來看Transcription

這一層解決什麼問題呢?

大家都知道lstm出來之後是很多個序列的。但是這麼多個序列我怎麼和原始圖片的字符對應呢?這就用到了ctc的思想了。整如下面一句話

We adopt the conditional probability defined in the Connectionist Temporal Classification (CTC) layer proposed by Graves et al. [15]

那好吧!我們來看看ctc

首先推薦大家看看我們的老朋友 HMM隱馬爾可夫。前向計算什麼的都是一樣。

舉個例子 比如做驗證碼識別:原始圖片的驗證碼是:1234 四個數字  

在數字中加blank 

那麼有兩個trick可以用 

一:_1_2_3_4_

二:11223444 

反過來想:其實就是找到所有輸出的序列中,找到那些可以通過某些規則可以轉換成原先數字的序列!

看這圖是不是眼熟?是的跟第一篇傳統ocr文章中的思路差不多的。都是找路徑問題。

然後用了前向計算反向計算

現在看看loss

L(S)=−ln∏(x,z)∈Sp(z|x)=−∑(x,z)∈Slnp(z|x)

其中 p(z|x) 代表給定輸入x,輸出序列 z 的概率,S為訓練集。損失函數可以解釋為:給定樣本後輸出正確label的概率的乘積。

在看這句話 在看這個loss 是不是有些思路了呢?

遇到的問題:

1,文本訓練的時候,由於大部分數據生成的,造成與真實分割的圖片 前後空白不一樣。造成左右(前後)空白比較大的地方會識別出莫名其妙的東西。可以通過檢測後處理 或者擴充數據集。

2,當批量預測的時候,需要統一圖片的寬度。以最長的為基準,短的都用空白填充。這樣又出現了上面的問題,而且會浪費大量算力和顯存!

效果: 對於轉移領域比如掃描件 可以達到98%以上  但是對於相對通用的環境只有94%左右

相關焦點

  • GitHub 熱榜:文字識別神器,超輕量級中文 OCR!一個超級厲害的開源庫
    近期,這個叫做 chineseocr_lite 的 OCR 項目開源了,這是一個超輕量級中文 ocr,支持豎排文字識別,支持 ncnn 推理,psenet (8.5M) + crnn (6.3M) + anglenet (1.5M) 總模型僅 17M。目前,這個開源項目已在 GitHub 上標星 2400+。
  • 超輕量級中文OCR,支持豎排文字識別、ncnn推理,總模型僅17M
    近期,這個叫做chineseocr_lite的OCR項目開源了,這是一個超輕量級中文ocr,支持豎排文字識別,支持 ncnn 推理,psenet (8.5M) + crnn (6.3M) + anglenet (1.5M) 總模型僅17M。目前,這個開源項目已在GitHub上標星2400+。
  • 手把手教你用PaddleOCR與PyQT實現多語言文字識別的程序
    小張想著這個工具還有點作用啊,自己要好好研究一下。他了解到這屬於OCR文字識別技術,OCR實現了對圖片中的文字進行提取、識別。這個軟體是在飛槳開源的PaddleOCR文字識別套件基礎上開發的,同時還發現這個工具還有這些功能:支持漢語, 日語, 英語, 韓語, 德語, 法語的文字識別支持截圖, 加載本地圖片進行識別。
  • CRNN:端到端不定長文字識別算法
    https://github.com/meijieru/crnn.pytorch  https://github.com/bai-shang/crnn_ctc_ocr_tf❞這是2015年就發表的一篇基於深度學習的OCR文章,且不用文字切割、可以處理任意長度的端到端文字識別方法。
  • OCR光學字符識別方法匯總(含原理與開源項目)
    一、圖像準備預處理:文字區域定位:連通區域分析、MSER文字矯正:旋轉、仿射變換文字分割:二值化、過濾噪聲二、文字識別:三、後處理:規則、語言模型(HMM等)針對簡單場景下的圖片,傳統,且會增加時間的消耗,而端對端文字識別能夠同時完成檢測和識別任務,極大的提高了文字識別的實時性。
  • OCR識別服務,盤它
    在這個過程中由於場景的不確定性,比如:圖片背景極其豐富、亮度不均衡、光照不均衡、殘缺遮擋、文字扭曲、字體多樣等等問題,會帶來極大的挑戰。而目前PaddleHub為大家提供的是超輕量級中文OCR模型,聚焦特定的場景,支持中英文數字組合式識別、豎排文字識別、長文本識別場景。
  • 這個超輕量中文OCR開源項目在Github火了
    光學字符識別(OCR)相信大家都不陌生,就是指電子設備(例如掃描儀或數位相機)檢查紙上列印的字符,通過檢測暗、亮的模式確定其形狀,然後用字符識別方法將形狀翻譯成計算機文字的過程
  • Halcon OCR識別
    圖像預處理對原始圖像進行灰度化,二值化,模板匹配,降噪,增強等!2.目標區域分割(ROI)對預處理後的圖像進行ROI提取,分割出單個字符組成的區域3.字符識別,即模式識別技術4.結果處理將識別完的文字按特定的次序和規則組合輸出!
  • 在線ocr圖片文字識別工具,將圖片識別成文字的方法
    如果不是今天真遇上一個朋友這麼操作,北北還真不敢相信,原來時到今日,還有人會用最原始最簡單粗暴的方式來提取圖片中的文字信息,沒錯,這裡所說的原始粗暴方式,就是手動碼字!實際上,想要提取圖片中的文字信息,最好的方法便是使用在線ocr圖片文字識別,至於怎麼用,具體要怎麼操作,下面,北北就來詳細的為大家分享一下操作的流程吧!
  • 三個永久免費的OCR文字識別工具
    今天小編三個永久免費的OCR文字識別工具我們先來看看OCR到底是什麼?
  • App|超實用OCR文字識別工具—白描
    對於這些情況我也深有體會,而且已經有了好的解決辦法,就是這時候你需要一款OCR文字識別工具來提高做事效率。目前市面上有許多款OCR文字識別工具可供你選擇,今天要給你推薦的是其中一款超實用的OCR文字識別App,它的名字叫白描,支持Android、IOS。
  • ocr識別文字的方法,有什麼文字識別軟體推薦?
    ocr識別文字的方法有什麼?朋友小葵可以說是一枚文藝女青年了,平時就愛看看書、旅旅遊,還有彈彈吉他。對了,有時候她還會做下兼職投稿,給雜誌社寫寫文章。此外,小葵還有個興趣愛好是摘抄、記錄入心字句,做寫作素材。
  • 截屏、文字提取一氣呵成,超實用OCR開源小工具
    機器之心報導機器之心編輯部這個文本 OCR 小工具,能讓你「所截即所得」。在我們辦公時,是不是經常遇到圖片內容轉文字的需求?你是用什麼工具解決的呢?是手機自帶拍照轉文字功能?還是使用 QQ 裡面的工具?
  • ocr在線識別軟體推薦,什麼軟體可以在線識別文字?
    要使用圖片中的文字、要使用PDF文檔中的文字,雖然不能直接複製,卻也不必要去手打,沒錯,關於圖片文字識別,其實我們依靠專業的軟體就可以搞定。今天,北北要做的,便是為大家推薦推薦好用的ocr在線識別軟體,那麼什麼軟體可以在線識別文字呢?下面這兩款,便是北北最愛的!
  • 字符識別(OCR)相關工具/庫/教材/論文等資源整理
    學術方面OCR-相關的著作或連結··· IMPACT: Tools for text digitisation - 與OCR相關的一些軟體、工具··· OCR-D - 與OCR相關的一些學術文章.  10 Tips for making your OCR project succeed (2013) @cneud       -關於OCR projects一些需要考慮的東西··· Overview of LEADTOOLS Image Cleanup and Pre-processing SDK Technology -        -用於商業圖像預處理的列表
  • 2020年好用的OCR文字識別軟體推薦
    說到QQ截圖,可能很多人的印象還是一個簡單的截圖軟體,但是其在去年的更新中增加了非常多的實用功能,其中一項就是OCR文字和圖像識別使用QQ截圖後,你會在工具欄下方看到一個」文」字的工具按鈕,點擊它便可以進入
  • 離線版圖片文字識別ocr
    離線版圖片文字識別ocr,精準識別超過十萬種物體和場景,包含多項高精度的識圖能力並提供相應的API服務,充分滿足各類個人開發者和企業用戶的業務需求。圖片文字識別可應用到的場景有哪些?1、 內容及廣告推薦 對客戶瀏覽頁面中圖片進行分析,通過識別圖片中的信息,給客戶推薦相關內容,或是在頁面中展示相關廣告,提升廣告點擊量。
  • OCR文字識別——手寫漢字識別(一)
    一、引言  OCR識別目前來說已經很成熟了,像百度、騰訊、訊飛等大佬都有自己的OCR識別技術,比如騰訊,可以登入騰訊AI開放平臺:https://ai.qq.com/product/ocr.shtml#handwrite上傳一張圖片,它可以識別出圖片中的文字及其位置,其準確率還是不錯的。
  • 文字識別工具——OCR軟體
    解決這些情況下,就需要藉助文字識別工具這些軟體都是平時在各種場景中經常用到的文字識別工具,可以快速、準確、穩定地識別提取文字,有的還可在提取文字後實現自動複製、排版、搜索、翻譯等快捷操作。文字提取後會自動複製到剪貼板,可以直接粘貼,另外在識別文字後還可通過窗口上方的工具欄快捷操作編輯文字。
  • 文字識別(OCR)
    二 ,印刷體文字識別OCR技術的興起便是從印刷體識別開始的,印刷體識別的成功為後來手寫體的發展奠定了堅實的基礎。印刷體識別的主要流程大致分為以下幾個部分:圖像預處理;版面處理;圖像切分;特徵提取、匹配及模型訓練、匹配;識別後處理。