<div id="content_views" class="markdown_views prism-atom-one-dark">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
<path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path>
</svg>
<p>OCR识别中级篇,<a href="https://so.csdn.net/so/search?q=Halcon&spm=1001.2101.3001.7020" target="_blank" class="hl hl-1" data-report-click="{"spm":"1001.2101.3001.7020","dest":"https://so.csdn.net/so/search?q=Halcon&spm=1001.2101.3001.7020","extra":"{\"searchword\":\"Halcon\"}"}" data-tit="Halcon" data-pretit="halcon">Halcon</a>实战项目讲解二,OCR助手。<br> 个人学习笔记<br> 第一:快速使用OCR助手进行识别:<br> OCR助手打开位置<br> <img src="https://img-blog.csdnimg.cn/1875e667be8b4564ba6b42326d7e5261.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA54ix54K46Jav5p2h55qE5bCP5pyL5Y-L,size_19,color_FFFFFF,t_70,g_se,x_16" alt="在这里插入图片描述"><br> <img src="https://img-blog.csdnimg.cn/c19a458d5b044d979d2f407ad5346a25.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA54ix54K46Jav5p2h55qE5bCP5pyL5Y-L,size_19,color_FFFFFF,t_70,g_se,x_16" alt="在这里插入图片描述"></p>
进入halcon的OCR助手中,首页第一个设置是可以进行快速OCR识别和对需要识别的区域字体进行OCR识别训练。
第一:按照他的要求进行加载图像,直接点击1.后面那个图像即可加载图片
第二:按照他的要求进行对文本图像的选取,当我们的图像为正的时候,或者水平状态的时候可以直接使用第一个画方正的矩形,如果我们的图像为倾斜状态,我们则直接选取第二个可倾斜矩形选框,也可以默认直接选择课旋转的矩形选框。框选的范围不宜过小,应该是包含全部字符且比全部字符框选的位置稍大一些,
第三:输入你希望的读取的文本
我们直接在空格框里面填写,要注意有数字,大小写字母,空格,空行回车,特殊字符,像冒号,分号也需要写入。
第四:检查字符是否有包含下列情况:
- 字符是暗背景上的亮字符。这种情况比较特殊,在halcon的默认识别中,halcon的默认OCR分类器是默认使用亮背景,暗字符的形式,如果你是暗背景,亮字符的形式,使用halcon的默认分类器会出现无法识别的情况。
- 字符是否由很多独立的点组成。在常见的OCR识别中,字体形态主要分为几种,一种是很典型的喷墨打印机,就是平时我们常见的文字,一种是点阵打印机和激光打印的一个小分类。点阵字符就是由单独的点构成的字符,这种字符的特点就是,他们不是属于同一连通域,需要进行比较大的膨胀处理。
- 字体是结构化。如解释的说。就是他是在固定的地方显示出。一般在项目中往往不会出现这种情况,正常情况不勾选处理。
- 背景有纹理,噪声比较混乱。这个一般出现比较少,但是在我们无法处理有纹理和噪声的时候可以先使用OCR助手进行处理,后序我们可以直接复制他的处理代码即可完成识别。
在这幅图片中,属于亮背景,暗字符。是点阵打印机,由大量的点构成。字体非结构化【正常都不会是结构化】。背景无纹理,噪声和无混乱。
第五:我们在应用快速设置的时候需要对图像来源进行勾选。
图像源单位,1.图像窗口,就是我们现在的图像窗口,我们对我们现在的图像窗口进行处理,所以我们应该勾选图像窗口。
2.图像文件,如果我们直接对图像文件进行处理,则勾选图像文件,我们在勾选图像文件一般都是我们对训练好的文件进行识别检测会直接对图像文件进行读取。
3.图像采集助手,如果我们现在已经连接相机,想要对相机的画面进行识别,我们就可以勾选图像采集助手。
现在我们是在窗口上进行了绘制识别区域,所以我们就选择使用图像窗口。
第六:应用设置:完成识别。
对于halcon的快速识别是与我们代码上的识别是同一思路。
如果我们在这样子识别的效果不理想,我们可以进一步设置。
在识别不理想的时候我们可以进入分割窗口进行检查。
- 符号外观:还是前面那个是不是暗背景亮字符,这个在halcon的默认分类器中是不允许的。点打印,上面那张图就是点阵打印机进行的点打印,点打印的特点就是,由大量点构成的字符。是否为雕刻/浮雕。这个在实际中会遇到。例如识别木板和金属片的字符,很多就是使用雕刻或者浮雕完成字符的雕刻的,尤其在金属表面识别尤为常见。
- 符号尺寸,符号尺寸可以自由调节,就是调节单个字符的宽高,笔画宽度,如果你需要过滤大个字符可以在这里化除,但是这里并不能排除字符过小的字符,因为助手采用的是最大值的形式,而不是最大最小值共同存在的形式。
- 符号的形状。是否存在标点符号,这个需要注意。什么是标点符号,其中包括±*/,。、?;’”不等各种符号。分隔符一般指空格,回车,tap键
- 符号分片:就是指2个字符的间隔,
- 文本方向,可以调文本的方向处于倾斜状态和符号的倾斜程度,如果你所具有的文本不定方向,位置差别大的话,可以调大文本方向来实现对多张图片的识别。
- 文本布局:文本行最大行数,这个就是你所识别的行数到底有多少行,一般助手是采取从上往下的形式识别,所以我们乐意通过限制文本行的数量来去除多余文本行。文本行结果,是否㤇消除下划线,有些下划线在识别的时候会出现被认为是噪声和纹理的情况,这个就可以去除下划线。
- 最后一部分检测方向这个很重要。
这个可以使得你的图像进行更多不同的处理。旋转校正和倾斜校正,在你的字符是处于倾斜状态的时候可以使用倾斜校正来方便输出。滤波后的图像,就是在图像有相当多的噪声的时候就可以选择使用滤波,将噪声去除。提取前景,去除背景图像,在图像有纹理的时候不能很好的识别图像就可以可以提取前景进行去除纹理。最佳符号候选,在halcon中识别的字符往往不一定是一定相同的,但是很接近,准确度有0.999,最佳符号候选,会选择准确度最高的,或者准确度为1的字符。文本行几何特性和符号结果比较少出现。
我们可以直接访问字体设置可以看到,一般OCR识别都是会直接调用halcon的OCR分类器,具体调用什么分类器,我们可以在预训练分类器看到他调用的分类器的文件名字,右边有一个访问文件夹符号,和查看分类器的可识别字符和要求。
如果我们需要知道halcon的OCR分类器的具体识别内容,可以直接在OCR助手中的,预分类器进行选取和查看。
我们可以在代码生成对程序的代码进行一些微调,然后插入代码即可。
从32-71行为对这个图像的处理过程,对于一些处理程序我们可以直接复制进行在自己的项目中直接应用。
如何自己训练分类器,使用OCR助手。
在我们进行玩设置部分后,在原有的基础上对字符进行逐一的训练。然后我们可以开始训练。
在选取高级训练参数没有问题后可以开始训练,并得到一个trf 的训练文件,存放在你需要存放的路径处,然后形成omc的分类器文件,读入文件是读omc文件不是trf文件。
我们可以直接访问OCR训练文件浏览器进行查看,并对一些特殊符号进行添加。
和形成更种样式的样本变形,以适应更多的字符样子。
总结:halcon的OCR助手在实际的使用更多的是,对自己无法处理的部分进行OCR助手识别然后提取代码进行学习。还有对很多项目可以通过助手完成各种各样的步骤,方式非常灵活,OCR助手也是OCR识别的关键内容。