OCR(Optical Character Recognition),光学字符识别的英文缩写。
OCR主要步骤
图像预处理
目标区域分割(ROI)
字符识别
结果处理
1. 图像预处理
对原始图像进行灰度化,二值化,模板匹配,降噪,增强等!
2.目标区域分割(ROI)
对预处理后的图像进行ROI提取,分割出单个字符组成的区域
3.字符识别,即模式识别技术
训练OCR,利用大量的模板图片训练出一个字符分类器
使用OCR,将训练好的分类器用于字符分类,类似于手写数字识别!
4.结果处理
将识别完的文字按特定的次序和规则组合输出!
上述4个步骤中,OCR的核心部分自然是第3步,即模式识别技术
模式识别技术
训练分类器
第一步:将分割好的字符区域加入训练集,使用函数
append_ocr_trainf(Character,Image::Class,TrainingFile:)
参数解析:
Character:字符区域
Image:灰度图像
Class:分类标签
TrainingFile:训练集文件名,一般后缀为.trf
功能说明:用于制作训练集,使用与TrainingFile文件相同的训练文件格式,将字符附加到现有文件。如果该文件不存在,则生成新文件。TrainingFile如果未指定扩展名,则默认添加扩展名.trf
第二步:创建分类器,使用函数
create_ocr_class_mlp(::WidthCharacter, HeightCharacter,Interpolation,Features,Characters,NumHidden,Preprocessing,NumComponents,RandSeed:OCRHandle)
参数解析:
WidthCharacter:输入被分割的字符缩放到指定的宽度
HeightCharacter:输入被分割的字符缩放到指定的高度
Interpolation:缩放的插值方式
Features:特征类型,一般选’default’
Characters:分类的特征向量
NumHidden: MLP(多层感知器-人工神经网络)中隐藏层神经元的个数
Preprocessing:矢量特征转换的预处理类型
NumComponents:匹配字符的数量
RandSeed:随机种子
OCRHandle:OCR分类器的句柄
功能说明:创建一个MLP模型并初始化
第三步:训练、保存、清除分类器,使用函数
trainf_ocr_class_mlp(::OCRHandle,TrainingFile,MaxIterations,WeightTolerance,ErrorTolerance:Error,ErrorLog) write_ocr_class_mlp(::OCRHandle,FileName:) clear_ocr_class_mlp(:)
训练MLP分类器参数解析:
OCRHandle:OCR分类器的句柄
TrainingFile:训练集
MaxIterations:最大迭代次数
WeightTolerance:初始权重公差
ErrorTolerance:初始损失学习率
Error:整个训练集上的均差
ErrorLog:每一次训练的均差记录
功能说明:使用训练集训练模型,
保存分类器模型参数解析:
FileName:输出的模型文件名,不指定扩展名,则扩展名默认为.omc
功能说明:将训练好的模型保存为文件
清除分类器模型功能说明:清除模型,释放缓存
使用分类器
读取、使用训练好的模型分类的函数如下:
read_ocr_class_mlp(:OCRHandle) do_ocr_single_class_mlp(Character,Image::OCRHandle,Num:Class,Confidence) do_ocr_multi_class_mlp(Character,Image:Class,Confidence)
读取模型函数参数解析:
FileName:模型文件名,如果未指定扩展名,则默认使用扩展名.omc
OCRHandle:成功读取模型后生成的模型句柄
功能说明:从模型文件中读出模型
模型单个字符识别参数解析:
Character:字符区域
Image:字符图片
Num:输出概率最大的前Num个分类类别
Class:输出类别
Confidence:输出分类的置信度
功能说明:对单个区域进行的字符识别
模型多个字符识别参数解析:
Class:输出的分类数组
功能说明:输出多个字符区域的类别
其它函数
获取训练集信息:
read_ocr_trainf_names (: CharacterNames, CharacterCount)
参数解析:
TrainingFile:训练集
CharacterNames:输出分类数组
CharacterCount:训练集字符区域总数
完整示例代码如下(仅作为代码示例,无法运行):
WindowHandle:=3600 dev_open_window (0, 0, 512, 512, ‘black’, WindowHandle) gen_empty_obj (EmptyObject) read_image (Image, ‘test1.jpg’) rgb1_to_gray (Image, GrayImage) for Index := 1 to 4 by 1 disp_message (WindowHandle, ‘手动ROI’,‘window’, 12, 12, ‘yellow’, ‘false’) draw_rectangle1 (WindowHandle, Row1, Column1, Row2, Column2) gen_rectangle1 (Rectangle, Row1, Column1, Row2, Column2) reduce_domain (GrayImage, Rectangle, ImageReduced1) threshold (ImageReduced1, Region1, 128, 255) concat_obj (EmptyObject, Region1, EmptyObject) endfor words:=[‘1’,‘2’,‘3’,‘4’] *按列位置排序 sort_region (EmptyObject, SortedRegions1, ‘character’, ‘true’, ‘column’) FontName := ‘F:DataSetNum’ TrainingFileName := FontName+‘.trf’ for Index1:=1 to 4 by 1 select_obj (SortedRegions1, ObjectSelected1, Index1) append_ocr_trainf (ObjectSelected1, Image, words[Index1-1], TrainingFileName) endfor read_ocr_trainf_names (TrainingFileName, CharacterNames, CharacterCount) create_ocr_class_mlp (8, 10, ‘constant’, ‘default’, CharacterNames, 80, ‘none’, 10, 42, OCRHandle) trainf_ocr_class_mlp (OCRHandle, TrainingFileName, 200, 1, 0.01, Error, ErrorLog) write_ocr_class_mlp (OCRHandle, FontName) *导入另一张做测试的图 read_image (Image1, ‘test2.jpg’) threshold (Image1, testwordregion, 125, 255) connection (testwordregion, ConnectedwordRegions) select_shape (ConnectedwordRegions, SelectedwordRegions, ‘height’, ‘and’, 50, 250) sort_region (SelectedwordRegions, SortedRegions2, ‘upper_left’, ‘true’, ‘column’) count_obj(SortedRegions2, Number) *开始识别 read_ocr_class_mlp (FontName, OCRHandle1) do_ocr_multi_class_mlp (SortedRegions2, Image1, OCRHandle1, Class, Confidence) *显示结果 disp_message(WindowHandle, ‘识别结果:’, ‘image’, 30, 50, ‘white’, ‘false’) for i:=1 to Number by 1 disp_message(WindowHandle, Class[i-1], ‘image’, 30, 120+40*i, ‘yellow’, ‘false’) endfor
Halcon的OCR模型主要有多层神经网络MLP、支持向量机SVM、K最近邻KNN、卷积神经网络CNN四种,以上关于MLP的各类函数,其它模型也有对应的函数,这里就不作详细介绍了。在OCR领域,CNN和MLP应用比较广泛,而SVM在打印体的识别上也可以使用,KNN的计算量和模型原理并不适合用于多属性(点)的算法训练!
责任编辑:lq
-
光学
+关注
关注
3文章
751浏览量
36263 -
OCR
+关注
关注
0文章
144浏览量
16360 -
识别技术
+关注
关注
0文章
203浏览量
19701
原文标题:Halcon OCR识别
文章出处:【微信号:vision263com,微信公众号:新机器视觉】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论