读书笔记(一) OCR字符识别-----Halcon机器视觉 应用手册

来源:互联网 发布:java界面布局类型 编辑:程序博客网 时间:2024/06/10 16:49

OCR(Optical Character Recognition),中文全称光学字符识别技术。

在过往自己的研究过程中,我自己的OCR识别主要是以下几步骤

第1步:读图,提取需要识别区域

第2步:把文本通过阈值分割、形态学等方式把文本提取出来

第3步:把提取出来的文本计算出区域的最小外接矩形

第4步:把每个最小外接矩形单独裁剪出图像,并按阅读顺序排序

第5步:通过MLP分类进行OCR字符识别

第6步:清除MLP分析模型



而在Halcon案例中,对于OCR的识别主要分为以下几个步骤。

第1步:读图,提取需要识别区域

第2步:创建文本模型并设置参数

第3步:查找文本行

第4步:通过MLP分类进行OCR字符识别

第5步:清除MLP分类模型


对于第2步,我们的主要步骤如下

首先我们通过create_text_model_reader来创建一个TextModel,其是用来描述、限制find_text需要分割的文本。其中Mode的参数值决定了使用哪种文本分割方法。

查找方式有两种,"auto"和"manual"。

1)、通常我们会使用"auto",因为这样会比较稳定,使得配置工作大大减少。这种模式下find_text能够提取任意大小的文本,当然如若需要限制,可通过set_text_model_param来设置搜索限制,减少错误发生。

2)、"manual"模式通常在以下情况下需要使用:

1、所需分割文本字符是点阵的;

2、背景与字符之间存在局部极性变化的文本;

3、没有合适的基于基于MLP的OCR分类器;

在这模式下,必须使用set_text_model_param设置文本模型的合理参数,如字符的高度、宽度,也可以使用get_text_model_param来查询TextModel的参数。

而无论是“auto”还是“manual”,create_text_model_reader都有一个OCRClassifierMLP,如果在"auto"情况下,必须要有传递OCR的分类,是什么字体类型,而"manual”则为【】空便可。


注意,Halcon所提供的OCR分类器,都是基于“白底黑字”的情况来进行文本训练的。