1. 程式人生 > >0008_OCR識別(1)

0008_OCR識別(1)

OCR識別,一般是對灰度影象進行處理。

OCR識別的一般步驟如下:

1. 先進行定位校正

2. 分割,將各個字元斷開成不同的聯通域

3. 求交集(二值化後的影象區域 和 斷完之後的區域)

4. 排序,識別的時候按照順序來

5. 讀ocr分列器

6. 識別

7. 顯示

OCR識別的運算元:

//建立分列器

//使用多層感知器建立OCR分類器。

create_ocr_class_mlp

WidthCharacter:矩形的寬度,分割字元的灰度值被縮放到該矩形

HeightCharcter:矩形的高度,分割字元的灰度值被縮放到該矩形

Interpolation:用於縮放字元的插值模式

Features:用於分列的特徵

Charaters:要讀取的字符集的所有字元

NumHidden:MLP的隱藏單位數

Preprocessing:用於變換特徵向量的預處理型別

NumComponents:預處理引數:已轉換要素的數量

RandSeed:隨機數生成器的種子值,用於使用隨機值初始化MLP

OCRHandle:OCR分列器控制代碼

//訓練一個分列器

trainf_ocr_class_mlp

OCRHandle:OCR分列器控制代碼

TrainingFile:訓練檔案件名

MaxIterations:優化演算法的最大迭代次數

WeightTolerance:優化演算法的兩次迭代之間MLP的權重差異的閾值

ErrorTolerance:在優化演算法的兩次迭代之間MLP對訓練資料的平均誤差的差異的閾值

Error:MLP對訓練資料的平均誤差

ErrorLog:作為優化演算法的迭代次數的函式,MLP對訓練資料的平均誤差

識別

//使用OCR分類器對多個字元進行分類

do_ocr_multi_class_mlp

Character:要識別的字元

Image:字元的灰度值影象

OCRHandle:OCR分列器控制代碼

Class:使用MLP對字元進行分類的結果

Confidence:輸出字元分類的信心值

OCR識別流程會使用到的重要運算元:

//快速二值化

//前景和背景只有黑白,可以使用這個函式快速將黑白分開

binary_threshold

Image:輸入影象

Region:分段輸出區域

Method:分段方法

LightDark:提取前景還是背景

UsedThreshold:使用的閾值

//文字行角度的獲取

//確定文字行或段落的方向

text_line_orientation

Region:文字行區域

Image:輸入影象

CharHeight:文字行的高

OrientationFrom:文字行最小旋轉角度

OrientationTo:文字行最大旋轉角度

OrientationAngle:計算出來的文字行旋轉角度

使用指定寬度,切矩形

//將區域劃分為大小相等的矩形

partition_rectangle

Region:被劃分的區域

Partitioned:被劃分後的矩形

Width:單個矩形的寬

Height:單個矩形的高

//求交集

intersection

Region1:被求交集的區域1

Region2:被求交集的區域2

RegionIntersection:求交集的結果

//對區域排序

//根據區域的相對位置對區域進行排序。

sort_region

Regions:需要被排序的區域

SortedRegions:排序之後的區域

SortMode:排序的方法

order:遞增或者是遞減排序

RowOrCol:首先對行進行排序,然後對列進行排序。