halcon 深度学习教程(二)halcon基于深度学习的OCR检测

打印 上一主题 下一主题

主题 976|帖子 976|积分 2928

 
原文作者:aircraft
原文链接:https://www.cnblogs.com/DOMLX/p/18777081
   
 
 
深度学习教程目录如下,还在继续更新完善中
深度学习系列教程目录
 
 
本篇非常简单,但黑白常好用的OCR识别,传统的OCR识别方法一大堆各种各样的操作,麻烦的要死。halcon 22版本开始支持深度学习OCR,并且已经提供了练习好的模子,识别率基本可以达到99以上,工业上的一些产物编码,镭克码都可以直接使用。
 
因为使用比较简单这边直接演示,须要详细看的话可以看一下halcon自带的实例deep_ocr_workflow.hdev

 
一.代码
 省去那些七七八八的预处理,深度学习的OCR实在就是4行代码就可以搞定了:
 
  1. *深度学习OCR 主要就是
  2. *1.create_deep_ocr创建模型--
  3. *2.set_deep_ocr_param设置某些参数:诸如宽度,高度,字母大小面积等等参数来帮助识别
  4. *3.apply_deep_ocr进行检测--
  5. *4.get_dict_tuple获取检测的结果,然后把这个结果在处理一下就行了
  6. *
复制代码
 
这边就是主要读取一张图,然后传入OCR检测模子直接得到效果
1.读取图片(图片可以直接截图,大概下载了拿去用)

2.框选ROI区域

 3.得到检测效果显示

 
 
  1. dev_clear_window ()dev_close_window ()dev_open_window (0, 0, 500, 300, 'green', WindowHandle)* 获取显示窗口的句柄dev_get_window (WindowHandle)* 设置文字的字体和大小set_font (WindowHandle, 'Courier New-Bold-' + round(26))**深度学习OCR 主要就是
  2. *1.create_deep_ocr创建模型--
  3. *2.set_deep_ocr_param设置某些参数:诸如宽度,高度,字母大小面积等等参数来帮助识别
  4. *3.apply_deep_ocr进行检测--
  5. *4.get_dict_tuple获取检测的结果,然后把这个结果在处理一下就行了
  6. *create_deep_ocr ('mode', 'recognition', DeepOcrHandle)*默认使用的是GPU,没有GPU的设置一下CPU运行环境query_available_dl_devices ('runtime', 'cpu', DLDeviceHandles)set_deep_ocr_param (DeepOcrHandle, 'device', DLDeviceHandles)*读取一张带字符的图read_image (Image, '1.png')*框选一下检测的范围区域draw_rectangle1 (WindowHandle, Row1, Column1, Row2, Column2)*将区域裁剪下来传入检测crop_rectangle1 (Image, ImagePart, Row1, Column1, Row2, Column2)width:=int(Column2-Column1)* 设置宽度,高度之类的一些可以辅助增强识别的参数set_deep_ocr_param (DeepOcrHandle, 'recognition_image_width', width)*进行深度OCP检测apply_deep_ocr (ImagePart, DeepOcrHandle, 'recognition', DeepOcrResult)*获取检测效果get_dict_tuple (DeepOcrResult, 'word', words)*打印检测效果write_string (WindowHandle, words)
复制代码
 
  1. set_deep_ocr_param 参数这里可以多辅助一下参数来帮助自己识别检测:<br>1.detection_image_width,detection_image_height检测区域的宽度,高度<br>2.detection_min_character_score 最小可容忍的字符识别的分数,就比如你定位一个模板会给出定位的分数1为百分之百匹配,越接近0匹配度越低<br>3.detection_min_link_score 最小连接分数,这个就关系到字符间距了<br>4.detection_min_word_area  最小字符面积<br>5.recognition_num_char_candidates 字符个数<br>等等,这些参数的设置都可以提高识别的准确率,具体可以看算子里的参数表,不过前提是传进来检测的图片字符已经经过了预处理,先预处理让字符更好的识别,在传入会得到更优秀的准确率。
复制代码
 
 
这里轻微补充一下:
1.就是工业上使用这个OCR识别的一样平常要跟定位一起,如果你传入的OCR字符都是固定位置就可以直接固定的裁剪,如果是复杂情况的话还须要先分割,如果有稳定得模板区域的话,也可以创建个模板匹配,然后基于这个模板的位置反射变换区域的位置过去将字符区域裁剪下来进行识别。
2.得到效果后大概效果里字符须要大小写,大概多出一些干扰,这时候你就可以把那个字符串后期再处理一下,比如里面都是小写的你都改为大写,比如1和i可能识别错误,结合
你的产物看看是否是没有i大概没有1直接遇到就替换,还有0和字符o也是类似的思路。
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

玛卡巴卡的卡巴卡玛

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表