CN110751088A - 一种数据处理方法及相关设备 - Google Patents

一种数据处理方法及相关设备 Download PDF

Info

Publication number
CN110751088A
CN110751088A CN201910990999.1A CN201910990999A CN110751088A CN 110751088 A CN110751088 A CN 110751088A CN 201910990999 A CN201910990999 A CN 201910990999A CN 110751088 A CN110751088 A CN 110751088A
Authority
CN
China
Prior art keywords
screenshot
image
information
target
target image
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201910990999.1A
Other languages
English (en)
Inventor
张庆
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Kingdee Zhangwuyou Network Technology Co Ltd
Original Assignee
Shenzhen Kingdee Zhangwuyou Network Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shenzhen Kingdee Zhangwuyou Network Technology Co Ltd filed Critical Shenzhen Kingdee Zhangwuyou Network Technology Co Ltd
Priority to CN201910990999.1A priority Critical patent/CN110751088A/zh
Publication of CN110751088A publication Critical patent/CN110751088A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V30/00Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
    • G06V30/40Document-oriented image-based pattern recognition
    • G06V30/41Analysis of document content
    • G06V30/412Layout analysis of documents structured with printed lines or input boxes, e.g. business forms or tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/80Recognising image objects characterised by unique random patterns
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/95Pattern authentication; Markers therefor; Forgery detection

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • General Engineering & Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Computing Systems (AREA)
  • Biomedical Technology (AREA)
  • General Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • Biophysics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Molecular Biology (AREA)
  • Multimedia (AREA)
  • Health & Medical Sciences (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Image Analysis (AREA)

Abstract

本申请实施例提供了一种数据处理方法及相关设备,不但可以识别影像质量较高的发票,同时也可以识别影像质量较低的发票,提高发票的识别效率,减少人工损耗。该方法包括:获取目标图像,所述目标图像为待识别详细信息的特定格式的发票图像;基于所述目标图像,通过目标要素识别模型识别所述目标图像对应的多个要素信息,所述目标要素识别模型与所述多个要素信息相对应;根据所述多个要素信息确定所述目标图像的详细信息。

Description

一种数据处理方法及相关设备
技术领域
本申请涉及信息处理领域,尤其涉及一种数据处理方法及相关设备。
背景技术
商务运动的发展催生了发票的迅速发展,用传统纸质发票记账需要手工输入发票信息,容易出错,处理需要消耗大量的人力和时间。
目前提供的大多数发票识别方式,均是基于光学字符识别(Optical CharacterRecognition,ORC)技术实现。ORC技术是通过扫描等光学输入方式将各种票据、报刊、书籍、文稿及其它印刷品的文字转化为图像信息,再利用文字识别技术将图像信息转化为可以使用的计算机输入技术。
但是通过这种方式对发票进行识别时,对待识别的发票图像质量有较高的要求,对清晰、完整以及无模糊污损的发票可以识别,但是对于影像质量不高的发票往往是无法识别的。
发明内容
本申请提供了一种数据处理方法及相关设备,不但可以识别影像质量较高的发票,同时也可以识别影像质量较低的发票,提高发票的识别效率,减少人工损耗。
本申请实施例第一方面提供一种数据处理方法,所述方法包括:
获取目标图像,所述目标图像为待识别详细信息的特定格式的发票图像;
基于所述目标图像,通过目标要素识别模型识别所述目标图像对应的多个要素信息,所述目标要素识别模型与所述多个要素信息相对应;
根据所述多个要素信息确定所述目标图像的详细信息。
可选地,所述多个要素信息包括号码要素信息、代码要素信息、日期要素信息以及第一类别要素信息,所述基于所述目标图像,通过要素识别模型识别所述目标图像对应的多个要素信息包括:
确定所述号码要素信息对应的号码截图、所述代码要素信息对应的代码截图、所述日期要素信息对应的日期截图以及所述第一类别要素信息对应的第一截图,所述号码截图、所述代码截图、所述日期截图以及所述第一截图均包含于所述目标图像;
基于所述号码截图、所述代码截图、所述日期截图以及所述第一截图,通过所述目标识别模型识别所述目标图像的号码信息、代码信息、日期信息以及第一类别信息,所述第一类别信息为所述目标图像中的校验码信息或所述目标图像中的不含税金额信息。
可选地,所述确定所述第一类别要素信息对应的第一截图包括:
确定所述目标图像中的特征截图;
基于所述特征截图,通过特征识别模型确定所述目标图像的类别,所述特征识别模型与所述特征截图相对应,所述第一类别信息与所述目标图像的类别相对应;
根据所述目标图像的类别确定所述第一截图。
可选地,所述获取目标图像包括:
接收终端发送的初始图像;
将所述初始图像转换为特定格式,得到所述目标图像。
可选地,所述将所述初始图像转换为特定格式,得到所述目标图像包括:
判断所述初始图像的高度是否大于所述初始图像的宽度;
若所述初始图像的高度大于所述初始图像的宽度,则将所述初始图像按照第一规则进行旋转得到第一图像;
确定所述第一图像的特定特征对应的特定特征截图;
判断所述特定特征截图是否处于目标区域,所述目标区域为所述第一图像对应的N个象限中的特定区域,其中,N为大于或等于2的正整数;
若所述特定特征截图处于所述目标区域,则将所述第一图像进行格式调整得到所述目标图像;
若所述特定特征截图不处于所述目标区域,则将所述第一图像按照第二规则进行旋转,并将旋转后的所述第一图像进行格式调整得到所述目标图像,其中,所述第一规则与所述第二规则为不同的选择规则。
可选地,所述方法还包括:
步骤1)确定多个图像中每个图像对应的号码截图、代码截图、日期截图以及目标要素截图;
步骤2)初始化要素识别模型;
步骤3)基于第二图像对应的第一号码截图、第一代码截图、第一日期截图以及第二截图,通过初始化后所述要素识别模型得到所述第二图像对应的号码信息、代码信息、日期信息以及第二类别信息,所述第二图像为所述多个图像中的任意一个图像,所述第一号码截图、所述第一代码截图、所述第一日期截图以及所述第二截图均包含于所述第二图像;
步骤4)更新所述要素识别模型的损失函数;
迭代执行步骤3)至步骤4),直至达到预置的迭代终止条件,且将达到所述预置的迭代终止条件的所述要素识别模型确定为所述目标要素识别模型。
可选地,所述方法还包括:
创建卷积神经网络,其中,所述卷积神经网络至少包括具有最大化池的卷积成、包含有特定节点数的隐藏层以及包含有指定数量的输出层;
将所述卷积神经网络填充至目标模型框架得到所述要素识别模型。
可选地,所述方法还包括:
判断迭代次数是否达到预置数值,若是,则确定达到所述预置的迭代终止条件;
或,
判断所述损失函数是否收敛,若是,则确定达到所述预置的迭代终止条件。
本申请实施例第二方面提供了一种数据处理装置,包括:
获取单元,用于获取目标图像,所述目标图像为待识别详细信息的特定格式的发票图像;
识别单元,用于基于所述目标图像,通过目标要素识别模型识别所述目标图像对应的多个要素信息,所述目标要素识别模型与所述多个要素信息相对应;
确定单元,用于根据所述多个要素信息确定所述目标图像的详细信息。
可选地,所述多个要素信息包括号码要素信息、代码要素信息、日期要素信息以及第一类别要素信息,所述识别单元具体用于:
确定所述号码要素信息对应的号码截图、所述代码要素信息对应的代码截图、所述日期要素信息对应的日期截图以及所述第一类别要素信息对应的第一截图,所述号码截图、所述代码截图、所述日期截图以及所述第一截图均包含于所述目标图像;
基于所述号码截图、所述代码截图、所述日期截图以及所述第一截图,通过所述目标识别模型识别所述目标图像的号码信息、代码信息、日期信息以及第一类别信息,所述第一类别信息为所述目标图像中的校验码信息或所述目标图像中的不含税金额信息。
可选地,所述识别单元确定所述第一类别要素信息对应的第一截图包括:
确定所述目标图像中的特征截图;
基于所述特征截图,通过特征识别模型确定所述目标图像的类别,所述特征识别模型与所述特征截图相对应,所述第一类别信息与所述目标图像的类别相对应;
根据所述目标图像的类别确定所述第一截图。
可选地,所述获取单元具体用于:
接收终端发送的初始图像;
将所述初始图像转换为特定格式,得到所述目标图像。
可选地,所述获取单元将所述初始图像转换为特定格式,得到所述目标图像包括:
判断所述初始图像的高度是否大于所述初始图像的宽度;
若所述初始图像的高度大于所述初始图像的宽度,则将所述初始图像按照第一规则进行旋转得到第一图像;
确定所述第一图像的特定特征对应的特定特征截图;
判断所述特定特征截图是否处于目标区域,所述目标区域为所述第一图像对应的N个象限中的特定区域,其中,N为大于或等于2的正整数;
若所述特定特征截图处于所述目标区域,则将所述第一图像进行格式调整得到所述目标图像;
若所述特定特征截图不处于所述目标区域,则将所述第一图像按照第二规则进行旋转,并将旋转后的所述第一图像进行格式调整得到所述目标图像,其中,所述第一规则与所述第二规则为不同的选择规则。
可选地,所述数据处理装置还包括:
训练单元,所述训练单元用于执行如下步骤:
步骤1)确定多个图像中每个图像对应的号码截图、代码截图、日期截图以及目标要素截图;
步骤2)初始化要素识别模型;
步骤3)基于第二图像对应的第一号码截图、第一代码截图、第一日期截图以及第二截图,通过初始化后所述要素识别模型得到所述第二图像对应的号码信息、代码信息、日期信息以及第二类别信息,所述第二图像为所述多个图像中的任意一个图像,所述第一号码截图、所述第一代码截图、所述第一日期截图以及所述第二截图均包含于所述第二图像;
步骤4)更新所述要素识别模型的损失函数;
迭代执行步骤3)至步骤4),直至达到预置的迭代终止条件,且将达到所述预置的迭代终止条件的所述要素识别模型确定为所述目标要素识别模型。
可选地,所述训练单元还用于:
创建卷积神经网络,其中,所述卷积神经网络至少包括具有最大化池的卷积成、包含有特定节点数的隐藏层以及包含有指定数量的输出层;
将所述卷积神经网络填充至目标模型框架得到所述要素识别模型。
可选地,所述训练单元还用于:
判断迭代次数是否达到预置数值,若是,则确定达到所述预置的迭代终止条件;
或,
判断所述损失函数是否收敛,若是,则确定达到所述预置的迭代终止条件。
本申请实施例第三方面提供了一种计算机装置,其包括至少一个连接的处理器、存储器和收发器,其中,所述存储器用于存储程序代码,所述处理器用于调用所述存储器中的程序代码来执行上述各方面所述的数据处理方法的步骤。
本申请实施例第四方面提供了一种计算机存储介质,其包括指令,当其在计算机上运行时,使得计算机执行上述各方面所述的数据处理方法的步骤。
综上所述,可以看出,本申请提供的实施例中,当需要对发票图像的详细信息进行查验时,用户只需要将该发票图像上传,之后,既可以通过提前训练好的目标要素识别模型,得到目标图像对应的多个要素信息,之后根据多个要素信息确定目标图像的详细信息。由于是通过模型识别得到要素信息,相对于现有的ORC技术只能识别图像较高的发票,本申请不但可以识别影像质量较高的发票,同时也可以识别影像质量较低的发票,提高发票的识别效率。
附图说明
图1为本申请实施例提供的一种网络架构示意图:
图2为本申请实施例提供的数据处理方法的流程示意图;
图3为本申请实施例提供的发票图像的示意图;
图4为本申请实施例提供的目标要素识别模型的训练流程示意图;
图5为本申请实施例提供的数据处理装置的虚拟结构示意图;
图6为本申请实施例提供的服务器的硬件结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或模块的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或模块,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或模块,本申请中所出现的模块的划分,仅仅是一种逻辑上的划分,实际应用中实现时可以有另外的划分方式,例如多个模块可以结合成或集成在另一个系统中,或一些特征向量可以忽略,或不执行,另外,所显示的或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,模块之间的间接耦合或通信连接可以是电性或其他类似的形式,本申请中均不作限定。并且,作为分离部件说明的模块或子模块可以是也可以不是物理上的分离,可以是也可以不是物理模块,或者可以分布到多个电路模块中,可以根据实际的需要选择其中的部分或全部模块来实现本申请方案的目的。
首先对本申请涉及的一些名词进行说明:
卷积神经网络(Convolutional Neural Networks,CNN)是一类包含卷积计算且具有深度结构的前馈神经网络(Feedforward Neural Networks,FNN),是深度学习(deeplearning)的代表算法之一。在二十一世纪后,随着深度学习理论的提出和数值计算设备的改进,卷积神经网络得到了快速发展,并被应用于计算机视觉、自然语言处理等领域。
OpenCV是一个基于伯克利软件套件(Berkeley Software Distribution,BSD)许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效——由一系列C函数和少量C++类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。
Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7,8,9,10,11),Mozilla Firefox,Safari,Google Chrome,Opera等。这个工具的主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能——创建回归测试检验软件功能和用户需求。支持自动录制动作和自动生成Net、Java、Perl等不同语言的测试脚本。
Keras是一个由Python编写的开源人工神经网络库,可以作为ensorflow、Microsoft-CNTK和Theano的高阶应用程序接口,进行深度学习模型的设计、调试、评估、应用和可视化。
下面结合图1对本申请实施例提供的数据处理方法的网络架构进行说明:
如图1所示,其中,本申请中的服务器103可以是一台服务器,也可以是多台服务器,服务器103通过网络102与终端101建立通信连接,服务器103通过网络获取终端101的数据。具体的,服务器103可以通过网络102获取终端101发送的目标图像,目标图像为待识别详细信息的特定格式的发票图像,之后,基于目标图像,通过目标要素识别模型识别目标图像对应的多个要素信息,要素识别模型与目标图像相对应,并根据多个要素信息确定所述目标图像的详细信息。
下面将从数据处理装置的角度,对数据处理方法进行详细说明,该数据处理装置可以是服务器,也可以是服务器中的服务单元,具体不做限定。
请参阅图2,图2为本申请实施例提供的数据处理方法的流程示意图,包括:
201、获取目标图像。
本实施例中,数据处理装置获取目标图像,该目标图像为待识别详细信息的特定格式的发票图像,具体的,数据处理装置可以接收终端发送的初始图像,之后将初始图像转换为特定格式,得到目标图像。也就是说,数据处理装置,在接收到终端发送的发票图像时,可以将该发票图像调整为一个特征格式(例如横向正面方向,也即水平方向,印章朝上的方向,当然也还可以是其他的方向,具体不做限定,只要印章朝上即可),并将该调整格式后的发票图像压缩或扩展成统一的大小(例如13.90厘米*21.73厘米的大小,当然也还可以是其他的大小,及具体不做限定),以方便后续统一进行识别。
在一个实施例中,将初始图像转换为特定格式,得到目标图像包括:
判断初始图像的高度是否大于初始图像的宽度;
若初始图像的高度大于所述初始图像的宽度,则将初始图像按照第一规则进行旋转得到第一图像;
确定第一图像的特定特征对应的特定特征截图;
判断特定特征截图是否处于目标区域,目标区域为第一图像对应的N个象限中的特定区域,其中,N为大于或等于2的正整数;
若特定特征截图处于目标区域,则将第一图像进行格式调整得到目标图像;
若特定特征截图不处于目标区域,则将第一图像按照第二规则进行旋转,并将旋转后的第一图像进行格式调整得到所述目标图像。
本实施例中,可以首先判断该初始图像(也即最初的发票图像)的高度是否大于宽度,若该初始图像的高度大于宽度,则将该初始图像按照第一规则进行旋转,得到第一图像。也就是说,当该初始图像的高度大于宽度,则将说明该初始图像是垂直方向展示的,这时将发票图像按照第一规则(逆时针90度)旋转,使其变为水平方向展示;否则,保持发票图像不旋转。
其次,确定该第一图像上的特定特征对应的特定特征截图,该特定特征为所有增值税发票上都共有的特定特征(例如增值税发票上的“No”部分,当然也还可以是其他的部分,具体不做限定),具体的,可以通过Opencv的匹配函数matchTemplate匹配到第一图像中的特定特征部分的区域,如图3中的301区域。
需要说明的是,即使是反向水平放置(如图3中的发票图像即为发现水平放置)的发票,用匹配函数matchTemplate依然能够准确识别“No”图像所在的区域。
再次,判断特定特征截图是否处于目标区域,若该特定特征截图处于目标区域,则将第一图像进行格式调整得到目标图像,若该特定特征截图不处于目标区域,则将第一图像按照第二规则进行旋转,并将旋转后的第一图像进行格式调整得到目标图像。也就是说,可以将水平方向展示的第一图像按照中轴线划分为N个区域,图3中以划分为第一象限、第二象限、第三象限以及第四象限4个区域为例进行说明(此处以4个区域为例进行说明,当然也还可以是其他的数值,具体不做限定),判断特定特征截图是否处于目标区域(也即图3中的第二象限),若该特定特征截图处于第二象限,则说明该第一图像的放置方向为水平方向正面,则直接将该第一图像进行格式调整(如调整为特定长度和特定宽度的图像)得到目标图像,若该特定特征截图不处于目标区域,则说明该第一图像在水平方向反向展示(如图3中所示),此时,可以将该第一图像按照第二规则(如旋转180)进行旋转,使得第一图像旋转为水平方向正向放置,并将旋转后的第一图像进行格式调整(如调整为特定长度和特定宽度的图像)得到目标图像。
需要说明的是,上述仅为举例说明,当然也还可以是其他的方式来对初始图像进行特定格式的转换,例如通过深度学习模型的方式,具体不做限定。
202、基于目标图像,通过目标要素识别模型识别目标图像对应的多个要素信息。
本实施例中,数据处理装置可以提前训练识别目标图像中多个要素信息的目标要素识别模型,之后,基于该目标图像,通过目标要素识别模型识别目标图像对应的多个要素信息,该目标要素识别模型与所述多个要素信息相对应。
在一个实施例中,该多个要素信息包括号码要素信息、代码要素信息、日期要素信息以及第一类别要素信息,数据处理装置基于目标图像,通过要素识别模型识别目标图像对应的多个要素信息包括
确定号码要素信息对应的号码截图、代码要素信息对应的代码截图、日期要素信息对应的日期截图以及第一类别要素信息对应的第一截图,号码截图、代码截图、日期截图以及第一截图均包含于目标图像;
基于号码截图、代码截图、日期截图以及第一截图,通过目标识别模型识别目标图像的号码信息、代码信息、日期信息以及第一类别信息,第一类别信息为目标图像中的校验码信息或目标图像中的不含税金额信息。
可以理解的是,增值税发票可以分为普通发票和专用发票,两者的区别在于,增值税普通发票在查验详细信息时,需要用的要素信息为发票号码、发票代码、发票日期以及校验码后6位;而增值税专用发票在查验发票的详细信息时,需要用到的要素信息为发票号码、发票代码、发票日期以及不含税金额,因此只要通过模型识别到发票图像中的这些要素信息即可。
本实施例中,数据处理装置可以首先确定号码要素信息对应的号码截图、代码要素信息对应的代码截图、日期要素信息对应的日期截图以及第一类别要素信息对应的第一截图,之后,通过目标识别模型对号码截图、代码截图、日期截图以及第一截图进行识别,得到目标图像的号码信息、代码信息、日期信息以及第一类别信息。下面分别对如何确定号码要素信息对应的号码截图、代码要素信息对应的代码截图、日期要素信息对应的日期截图以及第一类别要素信息对应的第一截图进行说明:
1、确定代码要素信息对应的代码截图以及确定号码要素信息对应的号码截图;
由于发票号码以及发票代码两个要素信息是印刷字,它们相对于发票中的“No”符号的位置是固定的,因此通过定位“No”符号的位置,即可以定位发票号码和发票代码在发票上的区域,如图3中的302区域。所以数据处理装置可以通过发票上的“No”部分,通过opencv的目标匹配函数matchTemplate匹配到最合适的区域,下面以Python伪代码截取发票代码区域为例进行说明,具体如下:
def getDaimaImage(image_file):
imgsr,(imgsrh1,imgsrw1)=conv_image_horizontal(image_file,HM_TEMPLATE);#与模版比对,找到匹配图像的相似度矩阵,imgtm即事先截取的“No”图片模板;
res=cv2.matchTemplate(imgsr,imgtm,cv2.TM_CCOEFF_NORMED);#从相似度矩阵中抽取最大,最小值,其中最大值即为相似度最高部分的左上角坐标;
min_val,max_val,min_loc,max_loc=cv2.minMaxLoc(res);#获取发票代码的位置:相对于匹配位置,截取宽度为432像素的区域;
left=max_loc[0]–与发票代码第一个字符的相对位置;
top=max_loc[1]+发票代码顶部的相对偏差;
w=发票代码区域宽度;
h=发票代码区域高度;
image=imgsr[top:top+h,left:left+w]#图像裁剪;
return image。
需要说明的是,号码截图的截取方式与代码截图的截取方式类似,上述已经对代码截图进行说明,具体对号码截图的方式可以参阅代码截图的说明,具体不再赘述。
还需要说明的是,上述是以通过定位“No”符号的位置,可以找到了发票号码和发票代码在发票上的大概区域,当然也还可以通过发票图像中的其他特定特征的位置来定位发票号码以及发票代码的大概区域,例如图3中的发票抬头303区域“深圳增值税普通发票”,具体不做限定。
2、确定日期要素信息对应的日期截图。
由于发票日期是打印在发票上的,因此它们的位置相对于发票并不固定的,因此可以使用模板来定位日期要素信息在目标图像中的相对位置,例如可以通过事先截取的“年”这个汉字作为模板,定位日期要素信息的位置,之后截取日期要素信息对应的日期截图即可,如图3中的304,当然也还可以通过其他的汉字作为模板,定位日期要素信息的位置,例如图3中的303区域中的任何一个字,具体不做限定。
3、确定第一类别要素信息对应的第一截图。
数据处理装置确定第一类别要素信息对应的第一截图包括:
确定目标图像中的特征截图;
基于特征截图,通过特征识别模型确定目标图像的类别,特征识别模型与特征截图相对应,第一类别信息与目标图像的类别相对应;
根据目标图像的类别确定所述第一截图。
本实施例中,数据处理装置可以选定一个特征区域,并进行截图得到特征截图,将该特征截图作为发票类型的分类依据,该分类主要区分发票为增值税普通发票还是增值税专用发票。如图3中的303区域即为选定的特征区域,该区域正好包含了增值税发票中的普通和专用等汉字特征,选取特征区域的Python伪代码如下:
#选定一个特征区域截图,作为分类依据;
left=int(发票宽度/2+相对位置偏差);
top=70;
w=MODEL_WIDTH;
h=MODEL_HEIGHT;
image=imgsr[top:top+h,left:left+w]#图像裁剪。
在得到目标图像中的特征截图之后,可以通过特征识别模型确定目标图像的类别,也即确定出,该发票图像为普通发票还是专用发票;
之后通过模板确定第一类别信息的第一截图,当该目标图像的类别为普通发票,用事先截取的“校验码”这几个汉字作为模板,来定位校验码截图(即第一截图),当该目标图像的类别为专用发票,则通过实现截图的“年”这个汉字作为模板来定位不含税金额截图(也即第一截图),可以理解的是,上述通过“校验码”以及“年”仅为举例说明,当然也还可以通过其他的汉字作为模板,具体不做限定,只要能定位到第一截图即可。
最后,可以通过预先训练好的类别要素识别模型,得到目标图像中的第一类别信息,也即普通发票对应的校验码信息,专用发票对应的不含税金额信息。
需要说明的是,在得到日期要素信息对应的日期截图、代码要素信息对应的代码截图、号码要素信息对应的号码截图第一类别要素信息对应的第一截图之后,可以通过预先训练好的目标识别模型对其进行识别,得到目标图像的号码信息、代码信息、日期信息以及第一类别信息。
需要说明的是,可以通过一个模型来识别日期截图、代码截图、号码截图以及第一截图,也可以通过分别训练每个要素信息对应的模型,如日期截图对应的日期要素识别模型,代码截图对应的代码要素识别模型,号码截图对应的号码要素识别模型以及第一截图对应的类别要素识别模型,还可以任意两个要素信息训练一个识别模型,如代码截图和号码截图对应一个识别模型,日期截图对应一个识别模型,具体不做限定。
203、根据多个要素信息确定目标图像的详细信息。
本实施例中,数据处理装置在得到目标图像对应的号码信息、代码信息、日期信息以及第一类别要素信息之后,可以根据该号码信息、代码信息、日期信息以及第一类别要素信息确定目标图像的详细信息。具体的:数据处理装置可以通过Selenium WebDriver打开发票查验平台,填入目标图像对应的4个要素信息,之后下载查验平台验证码,并调用事先训练好的验证码识别模型识别验证码,填写验证码,并驱动浏览器点击查验按钮后获取返回的发票详细信息。
需要说明的是,数据处理装置,在得到目标图像的详细信息之后,可以将该详细信息进行展示,或者输出,具体不做限定。
综上所述,可以看出,本申请提供的实施例中,当需要对发票图像的详细信息进行查验时,用户只需要将该发票图像上传,之后,既可以通过提前训练好的目标要素识别模型,得到目标图像对应的多个要素信息,之后根据多个要素信息确定目标图像的详细信息。由于是通过模型识别得到要素信息,相对于现有的ORC技术只能识别图像较高的发票,本申请不但可以识别影像质量较高的发票,同时也可以识别影像质量较低的发票,提高发票的识别效率。
上述对通过模型识别发票的详细信息进行说明,下面结合图4对模型的训练流程进行说明:
请参阅图4,图4为本申请实施例提供的目标要素识别模型的训练流程示意图,包括:
401、确定多个图像中每个图像对应的号码截图、代码截图、日期截图以及目标要素截图。
本实施例中,在对目标要素识别模型的训练过程中,可以将训练语料中多个发票图像进行预处理,得到多个图像中每个图像的号码截图、代码截图、日期截图以及目标要素截图(该目标要素截图根据发票的类别不同而不同,如发票类别为普通发票,则该目标要素截图即为校验码信息对应的截图,若该发票类别为专用发票,则该目标要素截图即为不含税金额信息对应的截图),具体的预处理主要包括:特征提取,特征降维、特征空值处理、特征归一化;目标值空值处理,目标值转换(one-hot)等等。
需要说明的是,此处确定多个图像中每个图像的号码截图、代码截图、日期截图以及目标要素截图的截图方式与上述步骤202中的类似,上述已经进行了具体说明,具体此处不再赘述。当然也还可以是通过人工标注的方式得到,具体不做限定。
需要说明的是,在得到多个图像中每个图像的号码截图、代码截图、日期截图以及目标要素截图之后,可以将多个图像划分为两部分,比例可以是75%和25%,将其中75%的数据作为训练数据用于训练模型,将其他25%的数据作为测试数据用于测试模型,具体不做限定,当然也还可以是其他的划分方式。
402、初始化要素识别模型。
本实施例中,初始化要素识别模型,也即对要素识别模型中的参数进行初始化。
需要说明的是,在初始化要素识别模型之前,数据处理装置还可以创建卷积神经网络,其中,卷积神经网络至少包括具有最大化池的卷积成、含有特定节点数的隐藏层以及含有指定数量的输出层,并将卷积神经网络填充至目标模型框架得到要素识别模型。
也就是说,可以首先构建CNN框架,并创建一个有三层的CNN,第一层网络映射上述二值化数列值,图像大小与拆分后的图像大小一致;创建一个具有最大化池的卷积层;创建一个含有500节点的隐藏层;创建一个含有指定数量的输出层;如发票代码,输出层只包含0-9这十个字符,因此输出层的数量为10;将构建的CNN网络层填充至构建的CNN框架,得到要素识别模型。可以理解的是,上述的数值仅为举例说明,并不代表对其的限定。
需要说明的是,通过步骤401可以多个图像中每个图像对应的号码截图、代码截图、日期截图以及目标要素截图,通过步骤402可以初始化要素识别模型,然而这两个步骤之间没有先后执行顺序的限制,可以先执行步骤401,也可以先执行步骤402,或者同时执行,具体不做限定。另外,该要素识别模型可以为CNN模型,也可以为其他的深度学习模型,具体不做限定。
403、基于第二图像对应的第一号码截图、第一代码截图、第一日期截图以及第二截图,通过初始化后要素识别模型得到第二图像对应的号码信息、代码信息、日期信息以及第二类别信息。
本实施例中,数据处理装置可以从多个图像中随机挑选一个第二图像,并将该第二图像对应的第一号码截图、第一代码截图、第一日期截图以及第二截图(第二截图根据发票的类别不同而不同,如发票类别为普通发票,则该第二截图即为校验码信息对应的截图,若该发票类别为专用发票,则该第二截图即为不含税金额信息对应的截图),输入至初始化后的要素识别模型,得到该第二图像对应的号码信息、代码信息、日期信息以及第二类别信息,其中,该第二图像为多个图像中的任意一个图像,第一号码截图、第一代码截图、第一日期截图以及第二截图均包含于第二图像。
404、更新要素识别模型的损失函数。
本实施例中,在可以在得到第二图像对应的号码信息、代码信息、日期信息以及第二类别要素信息,更新要素识别模型的损失函数。此处具体不限定更新的方式,如通过反向传播的方式更新要素识别模型的损失函数。
405、迭代执行步骤403至步骤404,直至达到预置的迭代终止条件,且将达到预置的迭代终止条件的要素识别模型确定为目标要素识别模型。
本实施例中,在迭代计算的过程中,会判断当前是否已经满足迭代终止条件,若是,则停止迭代,将停止迭代时的要素识别模型确定为目标要素识别模型,若否,则重复执行步骤403至步骤404。也就是说,可以判断迭代次数是否达到预置数值,若是,则确定满足预置的迭代终止条件。
或者,
可以判断要素识别模型的损失函数是否收敛,即多次迭代后损失函数的值不再发生大的变化,若是,则确定满足预置的迭代终止条件。
在实际应用中,还可以以其他的条件作为迭代终止条件,具体此处不做限定,另外,损失函数可以是交叉熵(Cross Entropy Loss)函数,也可以是softmax函数,具体不做限定。
需要说明的是,在将目标要素识别模型训练完整会后,可以通过测试数据对该目标要素识别模型进行测试,具体的可以通过目标要素识别模型输出的得分(也即模型的输出结果中对的结果的比例)、查准率、查全率、F1(F score)指数来确定目标要素识别模型是否达到预期要求。
综上所述,可以看出,本申请实施例中,在对目标语义模型的训练过程中,提取多个图像中每个图像的号码截图、代码截图、日期截图以及要素信息截图进行模型训练,来预测每个图像的要素信息、代码信息、号码信息以及日期信息,并通过反向传播算法来更新损失函数。由此可以在具体识别发票影响过程中,不但可以识别影像质量较高的发票,同时也可以识别影像质量较低的发票,提高发票的识别效率,对于影响质量较低的发票,只要提高训练数据即可。
需要说明的是,上述各个要素信息的识别模型、特征识别模型以及验证码识别模型,可以通过一个模型来识别所有的内容,也还可以通过各自的模型来识别,具体不做限定,下面以要素信息为发票代码对应的发票代码识别模型的训练为例,对模型训练流程进行详细说明:
步骤1B、样本采集;收集大量的增值税发票图像;
步骤2B、样本要素信息区域采集:将发票中的发票代码部分的图片从发票图像中裁剪出来,保存至一个样本文件夹Daima,下面以Python伪代码为例展示了如何将发票代码从发票图像中截取出来并进行保存;
#加载原路径下的所有图片文件
image_files=glob.glob(os.path.join(发票样本所在文件夹,"*"))#遍历每一个原始图片进行处理
for(i,image_file)in enumerate(image_files):
#获取文件名称和标识部分名称;
print("当前处理图像进度:{}/{}".format(i+1,len(image_files)))
image=getDaimaImage(image_file)
filename=os.path.basename(image_file)
save_path=os.path.join(保存发票代码区域图片的文件夹,filename)try:
cv2.imwrite(保存发票代码区域图片的文件夹,image)
except:
print("处理图像时发生错误:{}".format(image_file))
其中的getDaiamaImage函数在图2对应的描述中已经进行了详细说明,具体此处不再赘述;
步骤3、将发票代码拆分为0-9的单个数值的图片,每一个数值创建一个对应的文件夹来保存;由于组成发票代码每一个数值的字符字体和大小都相同,因此可以采用平均拆分的方式,将上述发票代码图片进行分拆保存,下面是以Python伪代码为例对发票代码图片拆分成单个字符图片进行说明:
#将一个图片拆分成splitCount个大小相等的图片块
def split_avg_image(image_file,splitCount):
img=cv_imread(image_file)
imgBox={}
h=int(img.shape[0])
w=int(img.shape[1]/splitCount)
for i in range(0,splitCount):#遍历所有长度的点
image=img[0:h,w*i:w*i+w]#图像裁剪
imgBox[i]=image
return imgBox;
图片拆分后,可以通过人工的方式根据拆分出来的每一个图片将其分别归类到0-9对应的文件中,每个文件夹中保存的是每个拆分出来的与文件夹名称一致的图片。
步骤4、构建卷积神经网络,并将卷积神经网络填充至目标模型框架得到要素识别模型,并对要要素识别模型进行训练得到代码识别模型,具体如下:
本申请中通过Keras作为构造CNN的框架(也即目标模型框架,当然也还可以通过其他作为构造CNN的框架,具体不做限定),将步骤3中的单个字符拆分的图片逐个读出,并将其转换为二值化的灰度图,创建一个与文件夹名称对应的标签数组,使其与二值化的数据对应,创建一个有三层的CNN,第一层网络映射上述二值化数列值,图像大小与拆分后的图像大小一致;创建一个具有最大化池的卷积层;创建一个含有500节点的隐藏层;创建一个含有指定数量的输出层;如发票代码,输出层只包含0-9这十个字符,因此输出层的数量为10;使用Keras模型框架进行训练;保存模型;下面对模型训练的Python伪代码进行说明:
import cv2
import pickle
import os.path
import numpy as np
from imutils import paths
from sklearn.preprocessing import LabelBinarizer
from sklearn.model_selection import train_test_split
from keras.models import Sequential
from keras.layers.convolutional import Conv2D,MaxPooling2Dfromkeras.layers.core import Flatten,Dense;
#训练神经网络,并生成训练结果:
LETTER_IMAGES_FOLDER="extracted_letter_images"
MODEL_FILENAME="model.hdf5"
MODEL_LABELS_FILENAME="labels.dat"
OUTPUT_CNT=10#输出层数量,即模型支持识别的字符数量
LETTER_WIDTH=46#拆分后的单字符宽度
LETTER_HEIGHT=66#拆分后的单字符高度
#初始化标签:
data=[]
labels=[]
#遍历图片:
for image_file in paths.list_images(LETTER_IMAGES_FOLDER)
#将加载的图片转换为灰度图:
image=cv2.imread(image_file)
image=cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
#创建Keras对象:
image=np.expand_dims(image,axis=2)
#按文件夹名称打标:
label=image_file.split(os.path.sep)[-2]
#图片文件数据与标签同下标:
data.append(image)
labels.append(label)
#二维化序列:
data=np.array(data,dtype="float")/255.0
labels=np.array(labels)
#设置测试数据百分比:
(X_train,X_test,Y_train,Y_test)=train_test_split(data,labels,test_size=0.25,random_state=0)
#将标签矩阵二值化:
lb=LabelBinarizer().fit(Y_train)
Y_train=lb.transform(Y_train)
Y_test=lb.transform(Y_test)
#保存标签数据:
with open(MODEL_LABELS_FILENAME,"wb")as f:
pickle.dump(lb,f)。
#创建神经网络:
model=Sequential()
#第一个具有最大池的卷积层:
model.add(Conv2D(20,(5,5),padding="same",input_shape=(LETTER_HEIGHT,LETTER_WIDTH,1),activation="relu"))
model.add(MaxPooling2D(pool_size=(2,2),strides=(2,2)))
#第二个具有最大池的卷积层:
model.add(Conv2D(50,(5,5),padding="same",activation="relu"))
model.add(MaxPooling2D(pool_size=(2,2),strides=(2,2)))
#具有500节点的隐藏层:
model.add(Flatten())
model.add(Dense(500,activation="relu"))
#具有X个节点的输出层(每个可能的字母/数值一个):
model.add(Dense(OUTPUT_CNT,activation="softmax"))
#要求Keras在幕后构建TensorFlow模型:
model.compile(loss="categorical_crossentropy",optimizer="adam",metrics=["accuracy"])
#训练神经网络:
model.fit(X_train,Y_train,validation_data=(X_test,Y_test),batch_size=100,epochs=15,verbose=1)
#保存模型:
model.save(MODEL_FILENAME)。
上面从数据处理方法的角度对本申请实施例进行描述,下面从数据处理装置的角度看对本申请实施例进行描述。
请参阅图5,图5为本申请实施例中数据处理装置的虚拟结构示意图,包括:
获取单元501,用于获取目标图像,所述目标图像为待识别详细信息的特定格式的发票图像;
识别单元502,用于基于所述目标图像,通过目标要素识别模型识别所述目标图像对应的多个要素信息,所述目标要素识别模型与所述多个要素信息相对应;
确定单元503,用于根据所述多个要素信息确定所述目标图像的详细信息。
可选地,所述多个要素信息包括号码要素信息、代码要素信息、日期要素信息以及第一类别要素信息,所述识别单元502具体用于:
确定所述号码要素信息对应的号码截图、所述代码要素信息对应的代码截图、所述日期要素信息对应的日期截图以及所述第一类别要素信息对应的第一截图,所述号码截图、所述代码截图、所述日期截图以及所述第一截图均包含于所述目标图像;
基于所述号码截图、所述代码截图、所述日期截图以及所述第一截图,通过所述目标识别模型识别所述目标图像的号码信息、代码信息、日期信息以及第一类别信息,所述第一类别信息为所述目标图像中的校验码信息或所述目标图像中的不含税金额信息。
可选地,所述识别单元502确定所述第一类别要素信息对应的第一截图包括:
确定所述目标图像中的特征截图;
基于所述特征截图,通过特征识别模型确定所述目标图像的类别,所述特征识别模型与所述特征截图相对应,所述第一类别信息与所述目标图像的类别相对应;
根据所述目标图像的类别确定所述第一截图。
可选地,所述获取单元501具体用于:
接收终端发送的初始图像;
将所述初始图像转换为特定格式,得到所述目标图像。
可选地,所述获取单元501将所述初始图像转换为特定格式,得到所述目标图像包括:
判断所述初始图像的高度是否大于所述初始图像的宽度;
若所述初始图像的高度大于所述初始图像的宽度,则将所述初始图像按照第一规则进行旋转得到第一图像;
确定所述第一图像的特定特征对应的特定特征截图;
判断所述特定特征截图是否处于目标区域,所述目标区域为所述第一图像对应的N个象限中的特定区域,其中,N为大于或等于2的正整数;
若所述特定特征截图处于所述目标区域,则将所述第一图像进行格式调整得到所述目标图像;
若所述特定特征截图不处于所述目标区域,则将所述第一图像按照第二规则进行旋转,并将旋转后的所述第一图像进行格式调整得到所述目标图像,其中,所述第一规则与所述第二规则为不同的选择规则。
可选地,所述数据处理装置还包括:
训练单元504,所述训练单元504用于执行如下步骤:
步骤1)确定多个图像中每个图像对应的号码截图、代码截图、日期截图以及目标要素截图;
步骤2)初始化要素识别模型;
步骤3)基于第二图像对应的第一号码截图、第一代码截图、第一日期截图以及第二截图,通过初始化后所述要素识别模型得到所述第二图像对应的号码信息、代码信息、日期信息以及第二类别信息,所述第二图像为所述多个图像中的任意一个图像,所述第一号码截图、所述第一代码截图、所述第一日期截图以及所述第二截图均包含于所述第二图像;
步骤4)更新所述要素识别模型的损失函数;
迭代执行步骤3)至步骤4),直至达到预置的迭代终止条件,且将达到所述预置的迭代终止条件的所述要素识别模型确定为所述目标要素识别模型。
可选地,所述训练单元504还用于:
创建卷积神经网络,其中,所述卷积神经网络至少包括具有最大化池的卷积成、包含有特定节点数的隐藏层以及包含有指定数量的输出层;
将所述卷积神经网络填充至目标模型框架得到所述要素识别模型。
可选地,所述训练单元504还用于:
判断迭代次数是否达到预置数值,若是,则确定达到所述预置的迭代终止条件;
或,
判断所述损失函数是否收敛,若是,则确定达到所述预置的迭代终止条件。
综上所述,可以看出,本申请提供的实施例中,当需要对发票图像的详细信息进行查验时,用户只需要将该发票图像上传,之后,既可以通过提前训练好的目标要素识别模型,得到目标图像对应的多个要素信息,之后根据多个要素信息确定目标图像的详细信息。由于是通过模型识别得到要素信息,相对于现有的ORC技术只能识别图像较高的发票,本申请不但可以识别影像质量较高的发票,同时也可以识别影像质量较低的发票,提高发票的识别效率。
请参阅图6,图6是本发明实施例提供的一种服务器的硬件结构示意图,该服务器600可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(central processing units,CPU)622(例如,一个或一个以上处理器)和存储器632,一个或一个以上存储应用程序642或数据644的存储介质630(例如一个或一个以上海量存储设备)。其中,存储器1132和存储介质630可以是短暂存储或持久存储。存储在存储介质630的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器622可以设置为与存储介质630通信,在服务器600上执行存储介质630中的一系列指令操作。
服务器600还可以包括一个或一个以上电源626,一个或一个以上有线或无线网络接口650,一个或一个以上输入输出接口658,和/或,一个或一个以上操作系统641,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
上述实施例中由数据处理装置所执行的步骤可以基于该图6所示的服务器结构。
本申请实施例还提供了一种计算机存储介质,其上存储有程序,该程序被处理器执行时实现上述所述数据处理方法的步骤。
本申请实施例还提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行上述所述数据处理方法的步骤。
本申请实施例还提供了一种终端设备,设备包括处理器、存储器及存储在存储器上并可在处理器上运行的程序,处理器执行程序时实现上述所述数据处理方法的步骤。
本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行上述所述数据处理方法的步骤。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (10)

1.一种数据处理方法,其特征在于,包括:
获取目标图像,所述目标图像为待识别详细信息的特定格式的发票图像;
基于所述目标图像,通过目标要素识别模型识别所述目标图像对应的多个要素信息,所述目标要素识别模型与所述多个要素信息相对应;
根据所述多个要素信息确定所述目标图像的详细信息。
2.根据权利要求1所述的方法,其特征在于,所述多个要素信息包括号码要素信息、代码要素信息、日期要素信息以及第一类别要素信息,所述基于所述目标图像,通过要素识别模型识别所述目标图像对应的多个要素信息包括:
确定所述号码要素信息对应的号码截图、所述代码要素信息对应的代码截图、所述日期要素信息对应的日期截图以及所述第一类别要素信息对应的第一截图,所述号码截图、所述代码截图、所述日期截图以及所述第一截图均包含于所述目标图像;
基于所述号码截图、所述代码截图、所述日期截图以及所述第一截图,通过所述目标识别模型识别所述目标图像的号码信息、代码信息、日期信息以及第一类别信息,所述第一类别信息为所述目标图像中的校验码信息或所述目标图像中的不含税金额信息。
3.根据权利要求2所述的方法,其特征在于,所述确定所述第一类别要素信息对应的第一截图包括:
确定所述目标图像中的特征截图;
基于所述特征截图,通过特征识别模型确定所述目标图像的类别,所述特征识别模型与所述特征截图相对应,所述第一类别信息与所述目标图像的类别相对应;
根据所述目标图像的类别确定所述第一截图。
4.根据权利要求1至3中任一项所述的方法,其特征在于,所述获取目标图像包括:
接收终端发送的初始图像;
将所述初始图像转换为特定格式,得到所述目标图像。
5.根据权利要求4所述的方法,其特征在于,所述将所述初始图像转换为特定格式,得到所述目标图像包括:
判断所述初始图像的高度是否大于所述初始图像的宽度;
若所述初始图像的高度大于所述初始图像的宽度,则将所述初始图像按照第一规则进行旋转得到第一图像;
确定所述第一图像的特定特征对应的特定特征截图;
判断所述特定特征截图是否处于目标区域,所述目标区域为所述第一图像对应的N个象限中的特定区域,其中,N为大于或等于2的正整数;
若所述特定特征截图处于所述目标区域,则将所述第一图像进行格式调整得到所述目标图像;
若所述特定特征截图不处于所述目标区域,则将所述第一图像按照第二规则进行旋转,并将旋转后的所述第一图像进行格式调整得到所述目标图像,其中,所述第一规则与所述第二规则为不同的选择规则。
6.根据权利要求1至3、5中任一项所述的方法,其特征在于,所述方法还包括:
步骤1)确定多个图像中每个图像对应的号码截图、代码截图、日期截图以及目标要素截图;
步骤2)初始化要素识别模型;
步骤3)基于第二图像对应的第一号码截图、第一代码截图、第一日期截图以及第二截图,通过初始化后所述要素识别模型得到所述第二图像对应的号码信息、代码信息、日期信息以及第二类别信息,所述第二图像为所述多个图像中的任意一个图像,所述第一号码截图、所述第一代码截图、所述第一日期截图以及所述第二截图均包含于所述第二图像;
步骤4)更新所述要素识别模型的损失函数;
迭代执行步骤3)至步骤4),直至达到预置的迭代终止条件,且将达到所述预置的迭代终止条件的所述要素识别模型确定为所述目标要素识别模型。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
创建卷积神经网络,其中,所述卷积神经网络至少包括具有最大化池的卷积成、包含有特定节点数的隐藏层以及包含有指定数量的输出层;
将所述卷积神经网络填充至目标模型框架得到所述要素识别模型。
8.根据权利要求6或7所述的方法,其特征在于,所述方法还包括:
判断迭代次数是否达到预置数值,若是,则确定达到所述预置的迭代终止条件;
或,
判断所述损失函数是否收敛,若是,则确定达到所述预置的迭代终止条件。
9.一种数据处理装置,其特征在于,包括:
获取单元,用于获取目标图像,所述目标图像为待识别详细信息的特定格式的发票图像;
识别单元,用于基于所述目标图像,通过目标要素识别模型识别所述目标图像对应的多个要素信息,所述目标要素识别模型与所述多个要素信息相对应;
确定单元,用于根据所述多个要素信息确定所述目标图像的详细信息。
10.一种计算机存储介质,其特征在于,其包括指令,当其在计算机上运行时,使得计算机执行如权利要求1-8中任一所述的方法。
CN201910990999.1A 2019-10-17 2019-10-17 一种数据处理方法及相关设备 Pending CN110751088A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910990999.1A CN110751088A (zh) 2019-10-17 2019-10-17 一种数据处理方法及相关设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910990999.1A CN110751088A (zh) 2019-10-17 2019-10-17 一种数据处理方法及相关设备

Publications (1)

Publication Number Publication Date
CN110751088A true CN110751088A (zh) 2020-02-04

Family

ID=69278843

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910990999.1A Pending CN110751088A (zh) 2019-10-17 2019-10-17 一种数据处理方法及相关设备

Country Status (1)

Country Link
CN (1) CN110751088A (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107977665A (zh) * 2017-12-15 2018-05-01 北京科摩仕捷科技有限公司 一种发票中关键信息的识别方法及计算设备
CN108268641A (zh) * 2018-01-18 2018-07-10 大象慧云信息技术有限公司 发票信息识别方法及发票信息识别装置、设备和存储介质
CN108734849A (zh) * 2018-04-25 2018-11-02 新浪网技术(中国)有限公司 一种自动化发票验真方法及系统
CN109344838A (zh) * 2018-11-02 2019-02-15 长江大学 发票信息自动快速识别方法、系统以及装置
CN109426814A (zh) * 2017-08-22 2019-03-05 顺丰科技有限公司 一种发票图片特定板块的定位、识别方法、系统、设备
CN110008956A (zh) * 2019-04-01 2019-07-12 深圳市华付信息技术有限公司 发票关键信息定位方法、装置、计算机设备及存储介质

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109426814A (zh) * 2017-08-22 2019-03-05 顺丰科技有限公司 一种发票图片特定板块的定位、识别方法、系统、设备
CN107977665A (zh) * 2017-12-15 2018-05-01 北京科摩仕捷科技有限公司 一种发票中关键信息的识别方法及计算设备
CN108268641A (zh) * 2018-01-18 2018-07-10 大象慧云信息技术有限公司 发票信息识别方法及发票信息识别装置、设备和存储介质
CN108734849A (zh) * 2018-04-25 2018-11-02 新浪网技术(中国)有限公司 一种自动化发票验真方法及系统
CN109344838A (zh) * 2018-11-02 2019-02-15 长江大学 发票信息自动快速识别方法、系统以及装置
CN110008956A (zh) * 2019-04-01 2019-07-12 深圳市华付信息技术有限公司 发票关键信息定位方法、装置、计算机设备及存储介质

Similar Documents

Publication Publication Date Title
CN109543690B (zh) 用于提取信息的方法和装置
US11475321B2 (en) Automated extraction of rules embedded in software application code using machine learning
US10878173B2 (en) Object recognition and tagging based on fusion deep learning models
CN111615702B (zh) 一种从图像中提取结构化数据的方法、装置和设备
CN109670191A (zh) 机器翻译的校准优化方法、装置与电子设备
CN110222330B (zh) 语义识别方法及装置、存储介质、计算机设备
CN114596566B (zh) 文本识别方法及相关装置
CN113705733A (zh) 医疗票据图像处理方法及装置、电子设备、存储介质
CN112990175B (zh) 手写中文字符的识别方法、装置、计算机设备和存储介质
CN112132827A (zh) 病理图像的处理方法、装置、电子设备及可读存储介质
CN111652266A (zh) 用户界面组件的识别方法、装置、电子设备和存储介质
CN113469067A (zh) 一种文档解析方法、装置、计算机设备和存储介质
CN114429636B (zh) 图像扫描识别方法、装置及电子设备
CN113762269A (zh) 基于神经网络的中文字符ocr识别方法、系统、介质及应用
CN113094287B (zh) 页面兼容性检测方法、装置、设备及存储介质
CN116361502B (zh) 一种图像检索方法、装置、计算机设备及存储介质
CN113989817A (zh) 一种自定义票据的识别方法、设备及介质
CN113537187A (zh) 文本识别方法、装置、电子设备及可读存储介质
CN110751088A (zh) 一种数据处理方法及相关设备
CN113283432A (zh) 图像识别、文字排序方法及设备
CN110197175A (zh) 一种图书书名定位及词性标注的方法及系统
CN115004241B (zh) 基于深度学习的图像分割的移位不变损失
CN115730589A (zh) 一种基于词向量的新闻传播路径生成方法以及相关装置
CN112732423B (zh) 流程迁移方法、装置、设备及介质
CN109558582B (zh) 基于视角的句子情感分析方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20200204