0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

怎么设计一种基于OpenVINO与PaddleOCR的结构化输出抄表器?

SDNLAB 来源:SDNLAB 2023-08-11 16:40 次阅读

01 背景介绍

“表”是生活中的随处可见的一种设备。常见的“表”包括了家用电表,水表等设备;除此之外,还有工频场强计等“表”。受制于由于受到区域因素以及技术因素的制约,并非每种“表”都能够进行数据的自动采集,从而只能通过人工手动抄表。

这种数据采集工作一方面较为费事和枯燥,另一方面,长时间工作带来的会导致工作人员疲劳,从而产生抄录错误。通过人工智能技术构造自动化的抄表流程能够极大的克服上述问题,提高工作效率。

相关工作

迄今为止,已经有许多关于电表读数的优秀项目出现,这些项目大都依赖于对特定场景的模型训练(包括微调)。 例如:

【PaddlePaddle+OpenVINO】电表检测识别模型的部署

OpenVINO meter reader

但对于抄表工作的业务场景而言,具有以下特点:

无法准备大量的彻底贴合业务场景的数据集

待抄录的“表”中的内容是文字,而非进度条或仪表盘

基于开放数据训练得到的OCR模型能够识别到“表”中的内容

因而,对于一些较为规整的“表”,我们完全可以基于开源OCR模型进行零微调的抄表工作。

技术方案

本项目提供了有一种无需额外训练的抄表器,只需要人为指定一些和布局有关的配置信息,即可实现表中数据的记录。 总体流程如下:

配置图片中屏幕区域的坐标值。(这些坐标值也可以通过cv2的拐点检测或深度学习进行获取)

对图片进行预处理(仿射变换)

配置待识别的元素对应的坐标,并裁剪对应的区域

如有需要,可以对裁剪下来的区域进行预处理

基于OpenVINO进行文字识别

结构化输出信息

如有需要,对输出结果进行进一步精炼

2874f852-3822-11ee-9e74-dac502259ad0.png

目录

背景介绍

图片预处理

基于OpenVINO加载PaddleOCR识别模型进行预测

结构化输出与后处理

02 图片预处理

由于本项目是一个零微调的项目,因此,为了保证识别模型的有效性,需要人工对齐输入信息。

修正倾斜的图片,将图片中的屏幕区域修正到指定的大小

根据从说明书等地方获取到的设备信息,设定待识别的区域在屏幕上的布局

修正图片

以下列图片为例,本节展示如何将图片从倾斜的状态,修正为正面观众的状态。

28a06b22-3822-11ee-9e74-dac502259ad0.jpg28c54014-3822-11ee-9e74-dac502259ad0.png28d59ad6-3822-11ee-9e74-dac502259ad0.png28f293a2-3822-11ee-9e74-dac502259ad0.png   290028d2-3822-11ee-9e74-dac502259ad0.png  

03 基于OpenVINO加载PaddleOCR识别模型进行预测

文字识别模型(PaddleOCR)

PaddleOCR 是PaddlePaddle的文字识别套件。迄今为止,PaddleOCR已经提供了许多复用性强的预训练模型。在本项目中使用的预训练模型是Chinese and English ultra-lightweight PP-OCR model (9.4M)。更多的信息请参考PaddleOCR Github或PaddleOCR Gitee。

一个标准的OCR流程包括了文字检测和文字识别,对于本项目来说,文字检测工作已经通过人工配置的方式解决了,因此,只需要进行文字识别即可。

OpenVINO简介

OpenVINO作为Intel原生的深度学习推理框架,可以最大化的提升人工智能神经网络在Intel平台上的执行性能,实现一次编写,任意部署的开发体验。OpenVINO在2022.1版本后,就可以直接支持飞桨模型,大大提升了模型在Intel异构硬件上的推理性能与部署便捷性,带来更高的生产效率,更广阔的兼容性以及推理性能的优化。

获取模型

2954d490-3822-11ee-9e74-dac502259ad0.png

基于OpenVINO加载PaddleOCR

使用OpenVINO加载Paddle模型无需经过任何转换,只需要:

创建环境

读取模型

生成推理接口

296a7b38-3822-11ee-9e74-dac502259ad0.png

文字识别

依旧对于上述示例图片,希望结构化输出以下内容:[{"Info_Probe":""}, {"Freq_Set":""}, {"Freq_Main":""}, {"Val_Total":""},{"Val_X":""}, {"Val_Y":""}, {"Val_Z":""}, {"Unit":""}, {"Field":""}]。输出示例如下图所示:

29952a9a-3822-11ee-9e74-dac502259ad0.png

配置布局

首先,需要基于仿射变换的结果,配置各个元素在图片上的布局。这个配置对于同一批表来说是固定的。

29c8ade8-3822-11ee-9e74-dac502259ad0.png

文字识别的预处理函数

29e284c0-3822-11ee-9e74-dac502259ad0.png29ef2338-3822-11ee-9e74-dac502259ad0.png2a0d1032-3822-11ee-9e74-dac502259ad0.png2a24c2ea-3822-11ee-9e74-dac502259ad0.png  

文字识别的后处理函数

用于将文字识别的结果进行解码,转化为汉字

2a397ee2-3822-11ee-9e74-dac502259ad0.png2a56cd4e-3822-11ee-9e74-dac502259ad0.png2a6de556-3822-11ee-9e74-dac502259ad0.png2a893c3e-3822-11ee-9e74-dac502259ad0.png  

基于OpenVINO进行文字识别

下面以Freq_Set为例,进行文字识别

2a9bee88-3822-11ee-9e74-dac502259ad0.png2ab3fa1e-3822-11ee-9e74-dac502259ad0.png

100H2实时值

结构化输出与后处理

上面的逻辑已经完成了使用OpenVINO加载PaddleOCR并进行预测,但实际上由于整个模型没有进行微调,所以对于当前的业务场景来说可能不够完美,这个时候可以通过一些简单的逻辑进行处理,比如,对于示例图片中,H2必然是不存在的,这个地方可以直接通过replace替换为HZ。

简单来说,对于示例图片的这种表,可以定义如下后处理函数:

2acb213a-3822-11ee-9e74-dac502259ad0.png2ae90df8-3822-11ee-9e74-dac502259ad0.png

全流程一键运行

为了方便运行,这里也提供了一个封装好的函数

2b042f52-3822-11ee-9e74-dac502259ad0.png2b19a2b0-3822-11ee-9e74-dac502259ad0.png2b2c28e0-3822-11ee-9e74-dac502259ad0.png    






审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 转换器
    +关注

    关注

    27

    文章

    8607

    浏览量

    146786
  • 神经网络
    +关注

    关注

    42

    文章

    4759

    浏览量

    100465
  • 人工智能
    +关注

    关注

    1791

    文章

    46737

    浏览量

    237300
  • OCR
    OCR
    +关注

    关注

    0

    文章

    144

    浏览量

    16316
  • 预处理器
    +关注

    关注

    0

    文章

    13

    浏览量

    2216

原文标题:基于OpenVINO与PaddleOCR的结构化输出抄表器

文章出处:【微信号:SDNLAB,微信公众号:SDNLAB】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    结构化布线系统有哪些难题

    。  3.结构化布线系统的结构  通用结构化布线系统和海量结构化布线系统是结构化布线的核心内容,朗讯科技(前身为AT&T)和它的SYSTIM
    发表于 05-19 13:46

    TrustZone结构化消息是什么?

    大家好,我已阅读任何与TrustZone相关的内容,但我无法弄清楚这两个世界是如何相互沟通的。我所能找到的只是TrustZone API规范中的内容:客户端和服务可以通过两机制进行通信:结构化
    发表于 03-20 08:58

    请问怎样去设计一种智能小区无线系统?

    基于GPRS的智能小区无线系统主要由哪几部分组成?怎样去设计一种智能小区无线系统?
    发表于 05-28 06:16

    怎么实现基于结构化方法的无线传感网络设计?

    怎么实现基于结构化方法的无线传感网络设计?
    发表于 05-31 06:34

    如何设计一种低压电力客户远程集中自动系统?

    安科瑞电气——万佳芬18721502664摘要:在智能、自动、信息的环境背景下,设计一种低压电力客户远程集中自动
    发表于 07-06 07:48

    结构化设计分为哪几部分?结构化设计的要求有哪些

    结构化设计分为哪几部分?结构化设计的要求有哪些?结构化设计主要包括哪些部分?
    发表于 12-23 06:15

    如何使用arm汇编指令去实现一种结构化编程呢?

    如何使用arm汇编指令去实现一种结构化编程呢?有哪位大神可以解答下吗
    发表于 11-09 15:18

    一种结构化道路环境中的视觉导航系统详解

    根据结构化道路环境的特点提出了一种将边沿检测和道路环境知识相结合的机器视觉算法 , 并结合基于行为响应的路径规划方法和智能预瞄控制方法 , 实现了套基本的机器人视觉导航系统 . 在自主机器人实验
    发表于 09-25 07:23

    一种新型的智能用电系统的设计

    本文针对IC 卡电表和低压载波在居民用电行业不能广泛推广的问题,利用GPRS通讯网络技术、总线技术与低压载波通讯技术等设计出一种新型的智能用电
    发表于 12-18 15:55 15次下载

    一种基ZigBee技术无线系统的设计

    传统方式存在着入户麻烦、费用过高、存在安全隐患等弊端,已经不适应现代物业管理的需要;因此,提出了一种基于ZigBee无线通信技术的无线
    发表于 01-25 15:15 42次下载

    一种新型的智能用电系统的设计

    一种新型的智能用电系统的设计  1 引言     目前国内已有多种用于居民用电的产品,
    发表于 02-26 16:46 968次阅读
    <b class='flag-5'>一种</b>新型的智能用电<b class='flag-5'>抄</b><b class='flag-5'>表</b>系统的设计

    一种用于工作流的结构化数据模型及应用研究_胡飞虎

    一种用于工作流的结构化数据模型及应用研究_胡飞虎
    发表于 03-19 11:45 0次下载

    一种改进的无线智能水表系统

    住宅楼结构应用为目标,结合无线智能水表系统特点、部署环境特征和
    发表于 12-07 14:00 1次下载
    <b class='flag-5'>一种</b>改进的无线智能水表<b class='flag-5'>抄</b><b class='flag-5'>表</b>系统

    Alexa示例强调了一种结构化数据的复杂性

    结构化数据对人工智能系统的发展至关重要。人工智能系统与用户的沟通越好,就越能自主学习,因此,它的效率也就越高。这点很重要,因为如果个人工智能系统只要求用户以结构化的格式进行交互,
    的头像 发表于 09-27 15:13 2908次阅读

    一种自适应网页结构化信息提取方法

    一种自适应网页结构化信息提取方法介绍说明。
    发表于 05-08 10:58 2次下载