[轉]OCR識別的開源分析

原文地址:http://blog.csdn.net/luojun2007/article/details/51614133html

OCR識別的開源分析

OCR軟件主要是由下面幾個部分組成。前端

1. 圖像輸入、預處理:   node

2. 圖像輸入:對於不一樣的圖像格式,有着不一樣的存儲格式,不一樣的壓縮方式。預處理:主要包括二值化,噪聲去除,傾斜較正等   python

3. 二值化:   對攝像頭拍攝的圖片,大多數是彩色圖像,彩色圖像所含信息量巨大,對於圖片的內容,咱們能夠簡單的分爲前景與背景,爲了讓計算機更快的,更好的識別文字,咱們須要先對彩色圖進行處理,使圖片只前景信息與背景信息,能夠簡單的定義前景信息爲黑色,背景信息爲白色,這就是二值化圖了。   linux

4. 噪聲去除:   對於不一樣的文檔,咱們對燥聲的定義能夠不一樣,根據燥聲的特徵進行去燥,就叫作噪聲去除   android

5. 傾斜較正:   因爲通常用戶,在拍照文檔時,都比較隨意,所以拍照出來的圖片不可避免的產生傾斜,這就須要文字識別軟件進行較正。   git

6. 版面分析:   將文檔圖片分段落,分行的過程就叫作版面分析,因爲實際文檔的多樣性,複雜性,所以,目前尚未一個固定的,最優的切割模型。   github

7. 字符切割:   因爲拍照條件的限制,常常形成字符粘連,斷筆,所以極大限制了識別系統的性能,這就須要文字識別軟件有字符切割功能。   算法

8. 字符識別:   這一研究,已是很早的事情了,比較早有模板匹配,後來以特徵提取爲主,因爲文字的位移,筆畫的粗細,斷筆,粘連,旋轉等因素的影響,極大影響特徵的提取的難度。   docker

9. 版面恢復:   人們但願識別後的文字,仍然像原文檔圖片那樣排列着,段落不變,位置不變,順序不變,的輸出到word文檔,pdf文檔等,這一過程就叫作版面恢復。   

10. 後處理、校對:   根據特定的語言上下文的關係,對識別結果進行較正,就是後處理。

開源引擎

Cuneiform for Linux —— 原本是個Windows軟件,這是Linux的移植,2011年4月已經中止維護。

GNU Ocrad —— 命令行工具。有JS移植,可用於前端。

GOCR —— 命令行工具。有JS移植,可用於前端。

Tesseract —— 開源OCR引擎,也有命令行工具。HP開發Google接手。3.0以後支持訓練。Golang綁定。入門教程。

OCRopy —— 基於訓練的OCR引擎,訓練後能夠達到比Tesseract更高的準確度,項目比Tesseract更年輕。包含一個叫作OCRopus的佈局分析器。in Python

Microsoft OCR Library —— Windows8.1以後的版本內置OCR引擎,可用於桌面和WindowsPhone。

Abbyy —— 收費軟件,有SDK,有Cloud版本。

預處理代碼

OpenCV —— 圖像處理老大哥。OpenCV3中有Scene Text Detection值得一用。

Libccv —— 現代圖像處理庫,被不少人推薦。實現了精選的若干個圖像處理算法,乾淨容易移植。其中Stroke Width Transfor尤爲有用。

lswms —— 分行檢測。

OCRopus —— 基於神經學習網絡算法的佈局分析庫。教程。

TiRG —— 文字區域檢測庫,效果演示。

unpaper —— 檢測文字和旋轉,用的是Hough transform算法。

Scene Text Detection(OpenCV)

API

例子1,

例子2,

Paper

高層包裝應用。

高層項目

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的問題。

http://www.danvk.org/2015/01/09/extracting-text-from-an-image-using-ocropus.html

http://www.danvk.org/2015/01/11/training-an-ocropus-ocr-model.html

https://en.wikipedia.org/wiki/Long_short_term_memory

https://github.com/nypl/map-vectorizer

一個快速深度學習的框架,和基於它構建的OCR項目。

https://github.com/BVLC/caffe/

https://github.com/pannous/caffe-ocr

JS構建的神經學習網絡

https://github.com/mateogianolio/mlp-character-recognition

參考:  

[1] http://blog.yikuyiku.com/

相關文章
相關標籤/搜索