光学字符识别方法、装置及计算机存储介质与流程

文档序号:20621320发布日期:2020-05-06 20:51阅读:108来源:国知局
光学字符识别方法、装置及计算机存储介质与流程

本发明属于文字识别领域,具体涉及光学字符识别方法、装置及计算机可读存储介质。



背景技术:

随着人工智能技术的迅速发展,文字识别应用领域已经从面向科研的简单场景逐步转向为与社会活动密相关的复杂应用场景。基于此,对于光学字符识别的设计和使用逐步从单一的功能性向云端逐渐转移,但是现有的普通光学字符识别ocr技术在相同的发票类型中能够完成检测和识别,发票背景一旦出现高噪音或者较大的类型差异时,现存的ocr技术就不易从背景中分离出各类发票的边界,这对于面向办公场景的光学字符识别技术就不再适用。

目前使用的ocr技术主要应用在办公场景之下和自然场景之中,对于前者以yolo系列为代表的一次检测技术占据了现有自然场景检测的主流,但是该类技术存在着对于不同尺度文字回归率较低的缺陷;在普遍的办公场景文字检测中,现有的技术往往只能对于一类发票奏效、而对于多类发票的识别使用基于聚类方法时尚不能高精确的区分不同类型的发票。



技术实现要素:

针对于上述现有技术的不足,本发明的目的之一是解决现有技术不能高精确的区分不同类型的发票问题以及避免不同尺度文字回归率较低的缺陷。

本发明实施例公开了一种光学字符识别方法,通过ssd网络模型对由光学设备获取的图像进行预处理;采用训练获得的east神经网络检测模型对所述预处理后的图像进行检测;采用训练获得的crnn神经网络识别模型对所述检测结果进行识别。

在一个可能的实施例中,所述预处理包括,对所述图像进行数据清洗和数据集制作;利用训练后的ssd网络模型进行图像分割处理。

在一个可能的实施例中,通过如下步骤获得所述east神经网络检测模型:通过更改数据集路径、根据资源调节训练参数、清理前置训练,并在多窗口管理器tmux下启动训练流程,预训练得到检测模型;存储预训练的参数进行再训练以获得检测模型。

在一个可能的实施例中,通过如下步骤获得crnn神经网络识别模式:将需要识别的图像放在同一个路径下,然后根据检测结果裁剪获取待识别数据;更改数据集路径、调节训练参数、清理前置训练,并在多窗口管理器tmux下启动训练流程,训练得到识别模型。

在一个可能的实施例中,还包括,对所述检测结果和识别结果进行验证。

在一个可能的实施例中,还包括,根据验证结果优化east神经网络检测模型和crnn神经网络识别模型。

本发明实施例还公开了一种光学字符识别装置,预处理模块,用于通过ssd网络模型对由光学设备获取的图像进行预处理;检测模块,用于采用训练获得的east神经网络检测模型对所述预处理后的图像进行检测;识别模块,用于采用训练获得的crnn神经网络识别模型对所述检测结果进行识别。

在一个可能的实施例中,所述预处理模块还用于:对所述图像进行数据清洗和数据集制作;利用训练后的ssd网络模型进行图像分割处理。

在一个可能的实施例中,还包括验证模块,用于根据验证结果优化east神经网络检测模型和crnn神经网络识别模型。

本发明还公开了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现前述任意一项方法。

本发明的有益效果:本发明方案使用ssd网络进行分割、使用east网络进行检测、使用crnn网络进行识别的解决方案,同时兼顾了办公场景下的发票类型、检测速度和识别精确度,为办公场景下的智能光学字符识别ocr落地提供了有效的技术方案。

附图说明

图1为本发明实施例的一种方法流程图;

图2为本发明实施例的一种具体方法流程示意图;

图3为本发明实施例的一种云服务环境部署架构示意图;

图4为本发明实施例的装置结构示意图。

具体实施方式

为了便于本领域技术人员的理解,下面结合实施例与附图对本发明作进一步的说明,实施方式提及的内容并非对本发明的限定。

本发明实施例中公开了一种光学字符识别方法,如图1,所述方法包括:

s101,通过ssd网络模型对由光学设备获取的图像进行预处理。

所述预处理包括,对所述图像进行数据清洗和数据集制作;利用训练后的ssd网络模型进行图像分割处理。其中,ssd的英文全名是singleshotmultiboxdetector,singleshot指明了ssd算法属于one-stage方法,multibox指明了ssd是多框预测。

具体的,参考图2,对所述获取的图像进行预处理也就是进行数据样本采样:通常包括两个子流程,一是数据处理流程,一是原始样本分割流程。

数据处理子流程主要包含数据获取、数据清洗和数据集制作流程。

数据获取流程主要包括向相关部门申请发票数据,在得到采样许可后进行实地数据采样,对采集到的数据简单归一化整理、并按照采集样本质量进行打分,完成粗粒度的数据分析。

数据清洗流程包括对粗粒度清洗后的数据进行细粒度的清洗,可以包括以下几个维度,对于不满足最低尺度、分辨率和所占比例的图片予以滤除;数据的清洗需要达到以下目标:使得发票关键字迹清晰、光照均匀、没有畸变、没有墨迹、没有明显折叠痕迹、票面平整没有褶皱、没有虚图像。

数据集制作需要标准数据集格式的支持,可以将数据制作成类voc数据集格式,这个数据集可以包含以下四项:annotation装载着标定的数据、jpeg包含着各个jpg格式的图像、score包含着对于各个评分档的数据样本、layout包含了用于训练、训练-验证和验证的样本编号。

其次,原始样本分割子流程主要包括ssd接口设计和ssd图像分割训练。其中。ssd接口设计之所以能够分割发票成功是源于ocr和标签都是用同一个ssd框的结果分类,这就保证了大框的相对有序。ssd图像分割训练是指在完成了ssd接口设计之后,进行ssd图像分割训练,使用训练得到的模型区分出粗粒度的发票种类。

s102,采用训练获得的east神经网络检测模型对所述预处理后的图像进行检测。

在进行检测之前需要先训练检测模型。通过如下步骤获得所述east神经网络检测模型:通过更改数据集路径、根据资源调节训练参数、清理前置训练,并在多窗口管理器tmux下启动训练流程,预训练得到检测模型;存储预训练的参数进行再训练以获得检测模型。

具体地,参考图2,east检测模型训练主要分为预训练与再训练。其中,预训练包括在east预训练部分要更改数据集路径、在多核v100上根据资源调节训练参数、将前置训练予以清理,并在tmux下启动训练流程、然后训练得到检测模型。再训练包括在east再训练部分要保留前置训练的checkpoint,然后输入相关图像和对应的json文件,restore预训练的参数完成再训练。

s103,采用训练获得的crnn神经网络识别模型对所述检测结果进行识别。

通过如下步骤获得crnn神经网络识别模型:将需要识别的图像放在同一个路径下,然后根据检测结果裁剪获取待识别数据;更改数据集路径、调节训练参数、清理前置训练,并在多窗口管理器tmux下启动训练流程,训练得到识别模型。其中,crnn是一种卷积循环神经网络结构,用于解决基于图像的序列识别问题,特别是场景文字识别问题。

具体地,参考图2,识别模型的训练主要分为标签生成与训练。其中,标签生成包括将需要识别的发票放在同一个文件夹地址之下,然后根据检测结果裁剪出基于quad的八点坐标,将这幅子图和对应的标签打包形成label和path的文件,然后更改crnn的训练标签集合,以避免预测字符的自动转义。训练包括在crnn预训练部分要更改数据集路径、在多核v100上根据资源调节训练参数、将前置训练予以清理,并在tmux下启动训练流程、然后训练得到检测模型。

在获得对应的训练模型即east神经网络检测模型和crnn神经网络识别模型后,可以对这些模型进行验证,并最终得到检测和识别的分析报告。具体的,参考图2,验证方法包括检测模型验证:主要分为查看具体的检测结果和查看宏观的检测指标,前者包括了发票的代码、号码、日期、时间、里程和金额的画框;后者包括了对于字段级别的正确率、回归率和f1数值;识别模型验证:主要分为查看具体的识别结果和查看宏观的检测指标,前者包括了发票的代码、号码、日期、时间、里程和金额的具体字段值;后者包括了对于字段级别的正确率、回归率和f1数值。

该方法还包括改进流程,主要分为数据质量改进和算法改进。参考图2,其中,数据质量改进可以是对于少量样本的采样,主要采取补充发票重采样策略改数据质量;对于特定用途的数据样本,主要采取数据增强等图像处理方式进行数据质量改进。算法改进可以分为api图像处理层级改进和核心算法改进两个层级,在宏观上选择目标检测+聚类+文字检测+文字识别的核心算法,在api层面进行图像的运算操作。

上述方法可以发布在云端服务器,参考图3,对应云端服务器的设计包括部署基本环境和部署集群环境,其中,部署基本环境可以包括:1)部署docker环境:安装普通docker并配置权限,然后创建docker组、让当前用户加入组,并安装nvidia-docker。2)制作docker镜像并上传到仓库:首先到dockerhub注册帐号,注册好了就创建一个仓库,然后在本地构建docker镜像后上传到仓库。3)利用docker在集群中安装深度学习镜像:首先要下载深度学习镜像,然后创建运行深度学习容器,最后开启深度学习容器就可以完成基本容器的部署。

部署集群环境可以包括:1)深度学习集群框架组件安装:在完成深度学习镜像安装后进而安装深度学习集群框架组件,k8s的客户端和服务器分别部署在相关的服务器上。2)创建k8s部署和服务:部署由kubernetes部署inception_inference控制的3个服务器副本组成,查看部署和pod的状态如果处于running,则创建k8s部署和服务成功。3)调用k8s部署和服务:将这个面向办公场景的光学字符识别打包成为云服务,发布在公有云上,完成面向办公场景的ocr落地。

通过上述方法,能够在兼顾办公场景下的发票类型、检测速度和识别精确度情况下得到较好的办公场景文字识别结果;本次发明立足于将简单的文字识别服务打包成为云端服务才可以提供更加广泛的服务以便于更多用户使用,构建一种面向办公场景的光学字符识别云服务。

本发明实施例还公开了一种光学字符识别装置10,如图4,包括:预处理模块101,用于通过ssd网络模型对由光学设备获取的图像进行预处理;检测模块102,用于采用训练获得的east神经网络检测模型对所述预处理后的图像进行检测;识别模块103,用于采用训练获得的crnn神经网络识别模型对所述检测结果进行识别。

在一个实施例中,所述预处理模块101还用于:对所述图像进行数据清洗和数据集制作;利用训练后的ssd网络模型进行图像分割处理。

在一个实施例中,还包括验证模块,用于根据验证结果优化east神经网络检测模型和crnn神经网络识别模型

装置10具体的实施方式可以参考方法实施例,不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。

作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

本发明具体应用途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进,这些改进也应视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1