0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

关于Halcon OCR识别

新机器视觉 来源:新机器视觉 作者:新机器视觉 2021-05-11 09:55 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 光学
    +关注

    关注

    4

    文章

    885

    浏览量

    38251
  • OCR
    OCR
    +关注

    关注

    0

    文章

    176

    浏览量

    17279
  • 识别技术
    +关注

    关注

    0

    文章

    211

    浏览量

    20450

原文标题:Halcon OCR识别

文章出处:【微信号:vision263com,微信公众号:新机器视觉】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    云知声Unisound U1-OCR系列模型架构升级

    2026年2月26日,我们正式发布首个工业级文档智能基础大模型 Unisound U1-OCR,以“性能SOTA、可信可验、开箱即用、高效部署、强适配”五大核心优势,重塑传统文档处理边界,开启了 OCR 3.0 时代,为后续 U1-OC
    的头像 发表于 04-23 10:40 227次阅读
    云知声Unisound U1-<b class='flag-5'>OCR</b>系列模型架构升级

    工业级OCR手持终端怎么选?国产OCR智能识别pda实测

    工业环境专用OCR智能PDA怎么选?鸟鸟科技N70Socr具备IP67防尘防水+1.5米抗跌落,5000mAh可拆卸电池支持24小时轮班作业。专业OCR扫描头+斑马/霍尼二维码引擎双模组,285g人体工学设计,让高强度数据采集更轻松。点击查看详细防护测试与续航实测数据!
    的头像 发表于 02-07 17:45 498次阅读
    工业级<b class='flag-5'>OCR</b>手持终端怎么选?国产<b class='flag-5'>OCR</b>智能<b class='flag-5'>识别</b>pda实测

    友思特案例 | 金属行业视觉检测案例四:挖掘机钢板表面光学字符识别OCR)检测

    在挖掘机钢板表面光学字符识别OCR)检测中,通过实施友思特深度学习视觉检测解决方案,解决了挖掘机零部件生产所用钢板上标记识别的问题。这有助于防止材料分配错误,显著提高了生产效率。
    的头像 发表于 02-05 11:40 357次阅读
    友思特案例 | 金属行业视觉检测案例四:挖掘机钢板表面光学字符<b class='flag-5'>识别</b>(<b class='flag-5'>OCR</b>)检测

    DeepX OCR:以 DeepX NPU 加速 PaddleOCR 推理,在 ARM 与 x86 平台交付可规模化的高性能 OCR 能力

    一、行业背景与核心挑战:OCR 规模化应用的关键瓶颈 **随着文档识别技术的不断成熟,OCR 技术已从实验性阶段逐步走向实际业务场景,在政务、金融、制造、物流等多个行业中得到广泛应用。然而,在规模化
    的头像 发表于 01-22 21:02 335次阅读
    DeepX <b class='flag-5'>OCR</b>:以 DeepX NPU 加速 PaddleOCR 推理,在 ARM 与 x86 平台交付可规模化的高性能 <b class='flag-5'>OCR</b> 能力

    瑞芯微(EASY EAI)RV1126B OCR文字识别

    1.OCR文字识别简介文字识别也是图像领域一个常见问题。然而,对于自然场景图像,首先要定位图像中的文字位置,然后才能进行文字的识别。所以一般包含两个步骤:文字检测:解决的问题是哪里有文
    的头像 发表于 01-12 10:19 7058次阅读
    瑞芯微(EASY EAI)RV1126B <b class='flag-5'>OCR</b>文字<b class='flag-5'>识别</b>

    识别身份证和护照OCR识别的手持终端设备

    鸟鸟科技N70S身份证护照识别手持终端设备,集成身份证、护照OCR识别及生物核验功能,工业级IP67三防设计+高性能配置,支持多场景移动办公,续航持久、扫码精准,是执法、海关、医疗等行业提升身份核验效率的优选神器。
    的头像 发表于 01-06 11:57 418次阅读
    能<b class='flag-5'>识别</b>身份证和护照<b class='flag-5'>OCR</b><b class='flag-5'>识别</b>的手持终端设备

    【嘉楠堪智K230开发板试用体验】+OCR实现

    OCR OCR(Optical Character Recognition,光学字符识别)是一种将图像中的文字内容转换为可编辑、可搜索文本的技术。其核心在于通过图像预处理、字符分割、特征提取与模式
    发表于 08-23 18:53

    【EASY EAI Orin Nano开发板试用体验】PP-OCRV5文字识别实例搭建与移植

    【EASY EAI Orin Nano开发板试用体验】PP-OCRV5文字识别实例搭建与移植 PP-OCRV5是PP-OCR新一代文字识别解决方案, 该方案聚焦于多场景、多文字类型的文字识别
    发表于 08-18 16:57

    如何利用OCR技术实现高效集装箱箱号识别

    在现代物流和海关监管领域,快速准确地识别集装箱箱号是提升通关效率、降低运营成本的关键。OCR(光学字符识别)技术的应用,为这一需求提供了智能化解决方案。通过结合高清成像设备和先进的算法,OCR
    的头像 发表于 08-12 10:48 986次阅读
    如何利用<b class='flag-5'>OCR</b>技术实现高效集装箱箱号<b class='flag-5'>识别</b>?

    ocr识别时数据集上传压缩包,上传成功,但不显示图片,图片数量仍显示0,为什么?

    ocr识别时数据集上传压缩包,上传成功,但不显示图片,图片数量仍显示0
    发表于 07-23 08:11

    端侧OCR文字识别实现 -- Core Vision Kit ##HarmonyOS SDK AI##

    获取图片url,把这个url和token再发给百度的ocr接口获取识别数据……或者图片转base64以后把这个base64发给接口,然而鸿蒙这里,目前我也不知道啥原因(可能是发送请求的数据长度有限
    发表于 06-30 18:07

    OCR技术如何实现铁路集装箱号的自动识别

    在铁路物流运输中,集装箱号的快速准确识别是提升效率的关键环节。通过先进的OCR(光学字符识别)技术,结合计算机视觉与深度学习方法,可以实现铁路集装箱号的高效、可靠识别。 一、
    的头像 发表于 06-13 10:32 768次阅读

    OCR技术vs传统识别:哪种更适合火车集装箱识别

    在铁路物流领域,集装箱箱号识别是提升运输效率的关键环节。随着计算机视觉技术的发展,OCR识别与传统识别技术在火车集装箱场景中的应用差异日益明显。 传统
    的头像 发表于 06-11 10:54 751次阅读

    明治案例 | 150个/分钟!电阻【OCR识别】+【尺寸测量】一步到位

    真实案例——看明治传感如何用一个视觉传感器,同时搞定电阻的尺寸测量和OCR识别,让质检效率翻倍,成本直降!场景需求希望在同一工位完成尺寸测量与OCR识别,减少设备占
    的头像 发表于 06-10 07:33 906次阅读
    明治案例 | 150个/分钟!电阻【<b class='flag-5'>OCR</b><b class='flag-5'>识别</b>】+【尺寸测量】一步到位

    OCR识别训练完成后给的是空压缩包,为什么?

    OCR识别 一共弄了26张图片,都标注好了,点击开始训练,显示训练成功了,也将压缩包发到邮箱了,下载下来后,压缩包里面是空的 OCR图片20几张图太少了。麻烦您多添加点,参考我们的ocr
    发表于 05-28 06:46