ocr軟體主要是由下面幾個部分組成。
1. 影象輸入、預處理:
2. 影象輸入:對於不同的影象格式,有著不同的儲存格式,不同的壓縮方式。預處理:主要包括二值化,雜訊去除,傾斜較正等
3. 二值化:
對攝像頭拍攝的,大多數是彩色影象,彩色影象所含資訊量巨大,對於的內容,我們可以簡單的分為前景與背景,為了讓計算機更快的,更好的識別文字,我們需要先對彩色圖進行處理,使只前景資訊與背景資訊,可以簡單的定義前景資訊為黑色,背景資訊為白色,這就是二值化圖了。
4. 雜訊去除:
對於不同的文件,我們對燥聲的定義可以不同,根據燥聲的特徵進行去燥,就叫做雜訊去除
5. 傾斜較正:
由於一般使用者,在拍照文件時,都比較隨意,因此拍照出來的不可避免的產生傾斜,這就需要文字識別軟體進行較正。
6. 版面分析:
將文件分段落,分行的過程就叫做版面分析,由於實際文件的多樣性,複雜性,因此,目前還沒有乙個固定的,最優的切割模型。
7. 字元切割:
由於拍照條件的限制,經常造成字元粘連,斷筆,因此極大限制了識別系統的效能,這就需要文字識別軟體有字元切割功能。
8. 字元識別:
這一研究,已經是很早的事情了,比較早有模板匹配,後來以特徵提取為主,由於文字的位移,筆畫的粗細,斷筆,粘連,旋轉等因素的影響,極大影響特徵的提取的難度。
9. 版面恢復:
人們希望識別後的文字,仍然像原文件那樣排列著,段落不變,位置不變,順序不變,的輸出到word文件,pdf文件等,這一過程就叫做版面恢復。
10. 後處理、校對:
根據特定的語言上下文的關係,對識別結果進行較正,就是後處理。
開源引擎
預處理**
opencv —— 影象處理老大哥。opencv3中有scene text detection值得一用。
libccv —— 現代影象處理庫,被很多人推薦。實現了精選的若干個影象處理演算法,乾淨容易移植。其中stroke width transfor尤其有用。
lswms —— 分行檢測。
ocropus —— 基於神經學習網路演算法的布局分析庫。教程。
tirg —— 文字區域檢測庫,效果演示。
un***** —— 檢測文字和旋轉,用的是hough transform演算法。
scene text detection(opencv)
api,
例子1,
例子2,
*****,
高層包裝應用。
高層專案
node-dv —— in node.js,整合了opencv、tesseract和一些其他專案。
node-fv —— node-dv的更高層,用於證件識別。
openocr —— 包裝了swt、tesseract、docker、rabbitmq,提供佇列和http訪問服務。in golang。
openalpr —— 包裝了tesseract和opencv,支援多系統build,支援docker,有python和node.js繫結。
android移動端
tess-two,tesseract的安卓移植,教程。
microblink,免費的移動ocr-sdk。
新方法:機器學習
如果有夠多的樣本和驗證能力,機器學習可以很好的處理ocr的問題。
乙個快速深度學習的框架,和基於它構建的ocr專案。
js構建的神經學習網路
參考:
[1]
Google開源OCR識別Tesseract介紹
ocr是什麼 ocr,即 optical character recognition,光學字元識別,是指通過掃瞄字元,然後通過其形狀將其翻譯成電子文字的過程。通常技術中廣泛流傳的 ocr 指的就是 將轉成文字 的智慧型技術。tesseract介紹 tesseract是谷歌開發並開源的影象文字識別引擎...
開源OCR光學字元識別
優秀的開源ocr軟體包括 tesseract 原本由惠普開發的影象識別類庫tesseract ocr已經更新到2.04,就是最近google支援的那個ocr。原先是惠普寫的,現在open source了。ocropus ocropus的 tm 是乙個先進的檔案分析和ocr系統,採用可插入的布局分析,...
開源OCR光學字元識別
優秀的開源ocr軟體包括 tesseract 原本由惠普開發的影象識別類庫tesseract ocr已經更新到2.04,就是最近google支援的那個ocr。原先是惠普寫的,現在open source了。ocropus ocropus的 tm 是乙個先進的檔案分析和ocr系統,採用可插入的布局分析,...