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分类器,都是基于“白底黑字”的情况来进行文本训练的。