Halcon OCR字符识别

create_text_model_reader创建一个文本模型描述要用于分割的文本find_text.

的parameter value文本分段方法的值为*'自动'* 和*'手动'*.

通常,参数模式应设置为*'自动'* 因为这种模式更稳定,需要更少 配置工作量。请注意,在这种情况下,还有一个 OCR 分类器 必须传入OCRClassifierMLP.仅当 以下限制适用,模式必须设置为*'手动'*:

  • 需要对点阵进行分割。

  • 文本的分段,其中 极性是必需的。例如,由于反射,雕刻的文本经常 具有很强的局部差异。

  • 没有合适的基于 MLP 的 OCR 分类器可用(见下文)。

如果模式 = '自动' ,find_text能够提取任意大小的文本。可以限制 搜索到具有特定属性的字符,请参阅set_text_model_param了解详情。 此外,必须传入 OCR 分类器OCRClassifierMLP. 此 OCR 分类器必须基于多层感知器 (MLP)。此外 强烈建议使用提供拒绝的 OCR 分类器 类(请参阅set_rejection_params_ocr_class_mlp) 并接受过培训 使用正则化参数(请参阅set_regularization_params_ocr_class_mlp).合适的 OCR classifier 可以使用create_ocr_class_mlpread_ocr_class_mlp.也可以传递 包含已存储的 OCR 分类器路径的字符串 跟write_ocr_class_mlp.

在以下情况下启用文本分段模式 = '手动' , 文本模型的合理参数,包括预期的 字符高度和宽度,必须使用set_text_model_param.在这种情况下,OCRClassifierMLP被忽略。

文本模型可以使用set_text_model_paramget_text_model_param.

由于在调用create_text_model_reader在以下操作中, model 应由运算符显式释放clear_text_model如 一旦它不再使用。

cs 复制代码
read_image (Image, 'E:/项目/电容/Image_20240311160353328.bmp')
cs 复制代码
gen_rectangle1 (ROI_0, 967.743, 3347.29, 1342.24, 3829.91)
dev_get_window (WindowHandle)
reduce_domain (Image, ROI_0, ImageReduced)
text_line_orientation (ROI_0, ImageReduced, 30, rad(-30), rad(30), OrientationAngle)
rotate_image (ImageReduced, ImageRotate, deg(-OrientationAngle+rad(180)), 'constant')
cs 复制代码
gen_rectangle1 (ROI_0, 2438.7, 1691.79, 2582.98, 1856.02)
reduce_domain (ImageRotate, ROI_0, ImageReduced1)
crop_domain (ImageReduced1, ImagePart)
cs 复制代码
get_image_size (ImagePart, Width, Height)
emphasize (ImagePart, ImageEmphasize, 17, 17, 3)
threshold (ImageEmphasize, Region, 0, 120)
region_to_bin (Region, BinImage, 0, 255, Width, Height)
cs 复制代码
create_text_model_reader ('auto', 'Universal_0-9A-Z+_Rej.occ', TextModel)
set_text_model_param (TextModel, 'min_stroke_width',3)
set_text_model_param (TextModel, 'min_char_height',20)
find_text (BinImage, TextModel, TextResultID)
get_text_object (Characters, TextResultID, 'all_lines')
get_text_result (TextResultID, 'class', Classes)
cs 复制代码
area_center (Characters, Area, Row, Column)
query_font (WindowHandle, Font)
* Specify font name and size
FontWithSize := Font[0]+'-40'

set_font (WindowHandle, FontWithSize)
disp_message (WindowHandle, Classes, 'image', Row-30, Column , 'green', 'false')

例2:

read_ocr_class_mlp读取已 存储于write_ocr_class_mlp.由于训练了 OCR 分类器可以消耗比较长的时间,分类器是 通常在离线进程中训练,并写入具有write_ocr_class_mlp.在在线流程中,分类器 读取 并随后用于 classification 替换为read_ocr_class_mlpdo_ocr_single_class_mlpdo_ocr_multi_class_mlp.

do_ocr_multi_class_mlp计算每个 区域给出的字符字符和灰色 值图像使用 OCR 分类器OCR汉德尔和 返回和相应的 中类的置信度(概率)信心. 与do_ocr_single_class_mlp,do_ocr_multi_class_mlp可以对多个字符进行分类 一次调用,因此通常比使用do_ocr_single_class_mlp对单个字符进行分类。 然而do_ocr_multi_class_mlp只能返回最好的 class 的 class 的 intent 值。因为置信度可以被解释 作为概率(参见classify_class_mlpevaluate_class_mlp),因此很容易检查 一个角色是否被归类为不确定性太大, 这通常不是缺点,除非 类重叠如此之多,以至于在许多情况下,第二好的类 必须进行检查才能决定字符的类别。 在这些情况下,do_ocr_single_class_mlp应该使用。 调用do_ocr_multi_class_mlp,则分类器必须为 训练trainf_ocr_class_mlp.

cs 复制代码
read_image (Image12, 'E:/Halcon数据/测量程序/OCR识别/12.png')
cs 复制代码
dev_get_window (WindowHandle)
gen_rectangle1 (ROI_0, 140.933, 176.767, 286.107, 660.934)
reduce_domain (Image12, ROI_0, ImageReduced)
threshold (ImageReduced, Region, 0, 100)
connection (Region, ConnectedRegions)
read_ocr_class_mlp ('DotPrint_NoRej', OCRHandle)
do_ocr_multi_class_mlp (ConnectedRegions, Image12, OCRHandle, Class, Confidence)
smallest_rectangle1 (ConnectedRegions, Row11, Column1, Row2, Column21)
query_font (WindowHandle, Font)
FontWithSize := Font[0]+'-60'
set_font (WindowHandle, FontWithSize)
disp_message (WindowHandle, Class, 'image', Row2+50, Column1, 'green', 'false')
相关推荐
Uu_05kkq6 分钟前
【C语言1】C语言常见概念(总结复习篇)——库函数、ASCII码、转义字符
c语言·数据结构·算法
清梦20201 小时前
经典问题---跳跃游戏II(贪心算法)
算法·游戏·贪心算法
paixiaoxin2 小时前
CV-OCR经典论文解读|An Empirical Study of Scaling Law for OCR/OCR 缩放定律的实证研究
人工智能·深度学习·机器学习·生成对抗网络·计算机视觉·ocr·.net
Dream_Snowar2 小时前
速通Python 第四节——函数
开发语言·python·算法
Altair澳汰尔2 小时前
数据分析和AI丨知识图谱,AI革命中数据集成和模型构建的关键推动者
人工智能·算法·机器学习·数据分析·知识图谱
AI视觉网奇2 小时前
人脸生成3d模型 Era3D
人工智能·计算机视觉
A懿轩A2 小时前
C/C++ 数据结构与算法【栈和队列】 栈+队列详细解析【日常学习,考研必备】带图+详细代码
c语言·数据结构·c++·学习·考研·算法·栈和队列
Python机器学习AI2 小时前
分类模型的预测概率解读:3D概率分布可视化的直观呈现
算法·机器学习·分类
编码小哥3 小时前
opencv中的色彩空间
opencv·计算机视觉
吃个糖糖3 小时前
34 Opencv 自定义角点检测
人工智能·opencv·计算机视觉