Halcon图像的 OCR 识别&训练字符
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(输入控制参数):分类器句柄