2.1识别 OCR 的流程和方法

处理图像使得数字或是字母为白底黑字->创建字符识别句柄->识别->清除句柄

算子:read_ocr_class_mlp( : :FileName:OCRHandle)

示例:read_ocr_class_mlp (‘Document_0-9A-Z_NoRej.omc’, OCRHandle)

‘Document_0-9A-Z_NoRej.omc’(输入控制参数):输入识别类型

OCRHandle(输出控制参数): 输出识别句柄

算子:do_ocr_multi_class_mlp(Character,Image: :OCRHandle:Class,Confidence)

示例:do_ocr_multi_class_mlp (ObjectSelected, ImageInvert, OCRHandle, Class, Confidence)

ObjectSelected(输入对象):输入识别区域

ImageInvert(输入对象):输入识别图像

OCRHandle(输入参数):输入句柄

Class(输入对象):输出识别的字符

Confidence(输出参数):输出识别的相似度

算子:comment( : :Comment: )

示例:clear_ocr_class_mlp (OCRHandle)

OCRHandle(输入控制参数):输入识别句柄

2.2训练字符识别库文件流程和方法

1.提取图像中的字符->

2.将每个字符加到训练文件中(append_ocr_trainf)->

3.除重(uniq)->

4.创建一个使用 多层感知器(create_ocr_class_mlp)->

5.利用多层感知器创建一个新的OCR分级器(trainf_ocr_class_mlp)->

6.将OCR分级器的OCRHandle写入文件的FileName(文件名)(write_ocr_class_mlp)->

7.训练字符文件->

8.读取训练后的文件 生成识别的分类器句柄read_ocr_class_mlp ->

9.识别字符:识别单个字符(do_ocr_single_class_mlp),识别多个字符(do_ocr_multi_class_mlp)->

10.关闭分类器句柄(clear_ocr_class_mlp)

**************************详细步骤**********************

2.将每个字符加到训练文件中(append_ocr_trainf)

算子:append_ocr_trainf(Character,Image: :Class,TrainingFile: )

示例:append_ocr_trainf (ObjectSelected, ImageReduced, tuple[Index], ‘train_ocr’+’.trf’)

ObjectSelected(输入对象1):字符Regio

ImageReduced(输入对象2):字符Image

Tuple(输入控制参数1):字符文本

‘train_ocr’+’.trf’(输入控制参数2):OCR训练的.trf文件路径

示例:chans:=uniq(sort(tuple))

Tuple(输入控制参数):字符集数组

3.除重(uniq)

示例:chans:=uniq(sort(tuple))

Tuple(输入控制参数):字符集数组

4.创建一个使用 多层感知器(create_ocr_class_mlp)

算子:create_ocr_class_mlp( : :WidthCharacter,HeightCharacter,Interpolation,Features,Characters,NumHidden,Preprocessing,NumComponents,RandSeed:OCRHandle)

示例:create_ocr_class_mlp (8, 10, ‘constant’, ‘default’, chans, 80, ‘none’, 10, 42, OCRHandle)

8(输入控制参数1):字符的宽度(默认)

10(输入控制参数2):字符的宽度(默认)

‘constant’(输入控制参数3):字符缩放样式(默认)

‘default’(输入控制参数4):用于分类的特征(默认)

Chans(输入控制参数5):要读取的字符集的所有字符

80(输入控制参数6):对MLP隐藏单元数(默认)

‘none’(输入控制参数7):用于转换特征向量的预处理类型(默认)

10(输入控制参数8):预处理参数:变换特征的个数(默认)

42(输入控制参数9):随机数生成器的种子值,用于初始化具有随机值的MLP。(默认)

OCRHandle(输出控制参数):输出OCR分类器的句柄

5.利用多层感知器创建一个新的OCR分级器(trainf_ocr_class_mlp)

算子:trainf_ocr_class_mlp( : :OCRHandle,TrainingFile,MaxIterations,WeightTolerance,ErrorTolerance:Error,ErrorLog)

示例:trainf_ocr_class_mlp (OCRHandle, ‘train_ocr.trf’, 200, 1, 0.01, Error, ErrorLog)

OCRHandle(输入控制参数1):OCR分类器的句柄

‘train_ocr.trf’(输入控制参数2),:训练文件名称

200(输入控制参数3):优化算法的最大迭代次数(默认)

1(输入控制参数4):优化算法两次迭代中MLP权重差的阈值(默认)

0.01(输入控制参数5):优化算法两次迭代训练数据上MLP平均误差的阈值。(默认)

Error(输入控制参数6):训练数据中MLP的平均误差(默认)

ErrorLog(输入控制参数7):训练数据上的MLP的平均误差作为优化算法迭代次数的函数。(默认)

6.将OCR分级器的OCRHandle写入文件的FileName(文件名)

算子:write_ocr_class_mlp( : :OCRHandle,FileName: )

示例:write_ocr_class_mlp (OCRHandle, ‘train_ocr’)

OCRHandle(输入控制参数1):OCR分类器的句柄

‘train_ocr’(输入控制参数2):保存OCR的的.omc分类器到文件

7.训练字符文件

8.读取训练后的文件 生成识别的分类器句柄read_ocr_class_mlp

算子:read_ocr_class_mlp( : :FileName:OCRHandle)

示例:read_ocr_class_mlp (‘C:/Users/Administrator/Desktop/学习文件夹/练习/练习11/train_ocr.omc’, OCRHandle1)

‘C:/Users/Administrator/Desktop/学习文件夹/练习/练习11/train_ocr.omc’(输入控制参数):输入训练好的文件地址

OCRHandle1(输出控制参数):输出OCR分类器的句柄

9.识别字符:识别单个字符(do_ocr_single_class_mlp),识别多个字符(do_ocr_multi_class_mlp)

识别单个

算子:do_ocr_single_class_mlp(Character,Image: :OCRHandle,Num:Class,Confidence)

示例:do_ocr_single_class_mlp (SortedRegions1, ImageScaled2, OCRHandle1, 1, Class1, Confidence1)

SortedRegions1(输入对象1):输入要识别的字符区域

ImageScaled2(输入对象2):输入需要识别的图像

OCRHandle1(输入控制参数1):输入OCR 分类器的句柄

1(输入控制参数2):输入要确定的最佳类别的数量(默认)

Class1(输入控制参数3):输出使用MLP对字符进行分类的结果(默认)

Confidence1(输入控制参数4):输出字符识别得分(默认)

识别多个:

算子:do_ocr_multi_class_mlp(Character,Image: :OCRHandle:Class,Confidence)

示例:do_ocr_multi_class_mlp (ObjectSelected1, ImageScaled2, OCRHandle1, Class, Confidence)

ObjectSelected1(输入对象1):输入要识别的字符区域

ImageScaled2(输入对象2):输入需要识别的图像

OCRHandle1(输入控制参数1):输入OCR 分类器的句柄

Class(输入控制参数2):输出MLP 对字符进行分类的结果(默认)

Confidence(输入控制参数3):输出字符识别得分(默认)

10.关闭分类器句柄(clear_ocr_class_mlp)

算子:clear_ocr_class_mlp( : :OCRHandle: )

示例:clear_ocr_class_mlp (OCRHandle1)

OCRHandle1(输入控制参数):分类器句柄