1. 程式人生 > >TesseractOCR(光學字元識別)引擎概述(一)

TesseractOCR(光學字元識別)引擎概述(一)

目錄

一、TesseractOCR引擎簡介

二、TesseractOCR架構

三、文字行和單詞的查詢(Text-line and Word Finding)

 


原文參見《Adapting the Tesseract Open Source OCR Engine for Multilingual OCR》

下載連結:https://download.csdn.net/download/kangshuaibing/10799843

一、TesseractOCR引擎簡介

 

Tesseract是惠普布里斯托實驗室在1985到1995年間開發的一一個開源的OCR引擎,曾經在1995 UNLV精確度測試中名列前茅。但1996年後基本停止了開發。2005年,惠普將其對外開源,2006 由Google對Tesseract進行改進、消除Bug、優化工作。目前專案地址為: 

https://github.com/tesseract-ocr/tesseract

二、TesseractOCR架構

Tesseract的識別步驟大致如下:

 

Figure1. Top-level block diagram of Tesseract

1.連通區域分析,檢測出字元區域區域(輪廓外形),以及子輪廓。在此階段輪廓線整合為塊區域。

2.由字元輪廓和塊區域得出文字行,以及通過空格識別出單詞。固定字寬文字通過字元單元分割出單個字元,而對百分號的文字(Proportional text)通過一定的間隔和模糊間隔(fuzzy spaces)來分割:

3.依次對每個單詞進行分析,採用自適應分類器,分類器有學習能力,先分析且滿足條件的單詞也作為訓練樣本,所以後面的字元( 比如頁尾)識別更準確:此時,頁首的字元識別比較不準確,所以tesseract會再次對識別不太好的字元識別是其精度得到提高。

4.最後,識別含糊不清的空格,及用其他方法,如由筆畫高度(x-height),識別小寫字母(small-cap)的文字。

 

 

三、文字行和單詞的查詢(Text-line and Word Finding)

 

a. 假設頁面佈局分析(page layout analysis) 大致確定了文字區域和文字尺寸,一個簡單百分位高度過濾器(percentile height fiter)可以將跨行大寫字母及縱向粘連一起的字元過濾掉,利用字元的高度資訊,選取所有字元的中值高度,通過高度的比例調節去掉一些無關的塊,比如標點符號,變音符和噪聲等;

b.對塊區域的x座標排序,利用座標擬合直線(baseline) ,擬合方法:中位數最小方差擬合(least median of squares fit)

c.進一步,擬合文字行的形狀,利用四次多項式,將文字行看成螺線形,採用最小二乘法擬合

d.檢測出等距文字(fixed pitch text),對粘連的文字進行分割(chopping)


e.對非等距字型如百分號,斜體等問題,利用中線、基準線之間的空白大小,來分割字元