CN110428414B - 一种识别图像中票据数量的方法及装置 - Google Patents

一种识别图像中票据数量的方法及装置 Download PDF

Info

Publication number
CN110428414B
CN110428414B CN201910713021.0A CN201910713021A CN110428414B CN 110428414 B CN110428414 B CN 110428414B CN 201910713021 A CN201910713021 A CN 201910713021A CN 110428414 B CN110428414 B CN 110428414B
Authority
CN
China
Prior art keywords
line
lines
image
notes
boundary
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.)
Active
Application number
CN201910713021.0A
Other languages
English (en)
Other versions
CN110428414A (zh
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.)
Hangzhou Glority Software Ltd
Original Assignee
Hangzhou Glority Software 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 Hangzhou Glority Software Ltd filed Critical Hangzhou Glority Software Ltd
Priority to CN201910713021.0A priority Critical patent/CN110428414B/zh
Publication of CN110428414A publication Critical patent/CN110428414A/zh
Priority to US17/266,626 priority patent/US11687886B2/en
Priority to PCT/CN2020/106231 priority patent/WO2021023111A1/zh
Application granted granted Critical
Publication of CN110428414B publication Critical patent/CN110428414B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/0002Inspection of images, e.g. flaw detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/13Edge detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/136Segmentation; Edge detection involving thresholding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/60Analysis of geometric attributes
    • G06T7/62Analysis of geometric attributes of area, perimeter, diameter or volume
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/20Image preprocessing
    • G06V10/26Segmentation of patterns in the image field; Cutting or merging of image elements to establish the pattern region, e.g. clustering-based techniques; Detection of occlusion
    • G06V10/267Segmentation of patterns in the image field; Cutting or merging of image elements to establish the pattern region, e.g. clustering-based techniques; Detection of occlusion by performing operations on regions, e.g. growing, shrinking or watersheds
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10004Still image; Photographic image
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30242Counting objects in image

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Multimedia (AREA)
  • Geometry (AREA)
  • Quality & Reliability (AREA)
  • Image Analysis (AREA)

Abstract

本发明提供了一种识别图像中票据数量的方法及装置,方法包括:获取包含多张依次排列的票据的图像;对所述图像进行处理,获得所述图像中各个票据的多条边界线;其中,所述边界线包括大体垂直于票据排列方向的第一类边界线;生成一条大体平行于票据排列方向并穿过所有票据所在区域的长线段,所述长线段与每一条所述第一类边界线有一交点;根据各相邻交点之间的子线段的长度,确定所述图像中票据的数量。应用本发明提供的方案可以解决现有技术中无法识别图像中票据数量的问题。

Description

一种识别图像中票据数量的方法及装置
技术领域
本发明涉及人工智能技术领域,特别涉及一种识别图像中票据数量的方法及装置、电子设备、计算机可读存储介质。
背景技术
随着经济的不断发展,人们的消费水平不断的提高,为了维护人们的消费权益,票据成为了消费者的有力保障以及有效的报销凭证,因此财务人员每天需要处理大量的票据。同时也有越来越多的人通过记账分类统计以掌握自身的消费情况。目前虽然可以通过人工智能自动识别票据中的相关信息,但是现有技术中一次只能识别一张票据的信息,当票据较多时,为节省时间和精力,用户倾向于一次采集包含多个票据的图像,但是如何识别图像中票据的数量是一个亟需解决的问题。
发明内容
本发明的目的在于提供一种识别图像中票据数量的方法及装置、电子设备、计算机可读存储介质,以解决现有技术中无法识别图像中票据数量的问题。具体技术方案如下:
第一方面,本发明提供了一种识别图像中票据数量的方法,所述方法包括:
获取包含多张依次排列的票据的图像;
对所述图像进行处理,获得所述图像中各个票据的多条边界线;其中,所述边界线包括大体垂直于票据排列方向的第一类边界线;
生成一条大体平行于票据排列方向并穿过所有票据所在区域的长线段,所述长线段与每一条所述第一类边界线有一交点;
根据各相邻交点之间的子线段的长度,确定所述图像中票据的数量。
可选的,所述根据各相邻交点之间的子线段的长度,确定所述图像中票据的数量,包括:
根据各相邻交点之间的子线段的长度,按照交点的排列顺序依次从各个子线段中确定至少一个目标子线段,其中,每一目标子线段是与该目标子线段相邻的多个子线段中长度最长的子线段;
根据所确定的目标子线段的数量,确定所述图像中票据的数量。
可选的,在确定所述图像中票据的数量之后,所述的识别图像中票据数量的方法还包括:
根据所述票据的数量,确定分辨率的第一缩小比例;
按照所述第一缩小比例对所述图像的分辨率进行缩小处理。
可选的,所述的识别图像中票据数量的方法还包括:
根据所述目标子线段的长度,确定分辨率的第二缩小比例;
按照所述第二缩放比例对所述图像的分辨率进行缩小处理。
可选的,所述图像中多张票据为单排依次排列。
可选的,所述图像中多张票据为多排依次排列;
针对每一排票据,生成一条平行于该排票据对应的票据排列方向并穿过该排所有票据所在区域的长线段。
可选的,所述的识别图像中票据数量的方法还包括:
针对每一目标子线段,根据与该目标子线段相交的两条第一类边界线、以及两条第一类边界线之间的第二类边界线确定一票据区域,并调用预设的票据识别模型识别所述票据区域内的票据内容,其中,所述第二类边界线为大体平行于票据排列方向的边界线。
可选的,所述对包含所述图像进行处理,获得所述图像中各个票据的多条边界线,包括:
对所述图像进行处理,获得所述图像中灰度轮廓的线条图;
将所述线条图中相似的线条进行合并,得到多条初始合并线条,并根据多条所述初始合并线条确定一边界矩阵;
将多条所述初始合并线条中相似的线条进行合并得到目标线条,并且将未合并的所述初始合并线条也作为目标线条;
根据所述边界矩阵,从多条所述目标线条中确定各个票据的多条边界线。
可选的,所述对所述图像进行处理,获得所述图像中灰度轮廓的线条图,包括:
通过基于OpenCV的边缘检测算法对所述图像进行处理,获得所述图像中灰度轮廓的线条图。
可选的,所述将所述线条图中相似的线条进行合并,得到多条初始合并线条,包括:
获取所述线条图中的长线条;其中,所述长线条为长度超过第一预设阈值的线条;
从所述长线条中获取多组第一类线条;其中,所述第一类线条包括至少两个依次相邻的长线条,且任意相邻的两长线条之间的夹角均小于第二预设阈值;
针对每一组第一类线条,将该组第一类线条中的各个长线条依次进行合并得到一条初始合并线条。
可选的,所述将多条所述初始合并线条中相似的线条进行合并得到目标线条,包括:
从多条所述初始合并线条中获取多组第二类线条;其中,所述第二类线条包括至少两个依次相邻的初始合并线条,且任意相邻的两初始合并线条之间的夹角均小于第三预设阈值;
针对每一组第二类线条,将该组第二类线条中的各个初始合并线条依次进行合并得到一条目标线条。
可选的,所述边界矩阵按照以下方式确定:对多条所述初始合并线条以及所述长线条中未合并的线条进行重新绘制,将重新绘制的所有线条中的像素点的位置信息对应到整个图像矩阵中,将图像矩阵中这些线条的像素点所在位置的值设置为第一数值、这些线条以外的像素点所在位置的值设置为第二数值,从而形成边界矩阵。
可选的,所述根据所述边界矩阵,从多条所述目标线条中确定各个票据的多条边界线,包括:
针对每一条所述目标线条,将该目标线条进行延长,根据延长后的该目标线条确定一线条矩阵,然后将该线条矩阵与所述边界矩阵进行对比,计算延长后的该目标线条上属于所述边界矩阵的像素点的个数,作为该目标线条的成绩;其中,所述线条矩阵与所述边界矩阵的大小相同;
根据各个目标线条的成绩,从多条所述目标线条中确定多条边界线。
可选的,所述线条矩阵按照以下方式确定:对延长后的目标线条进行重新绘制,将重新绘制的线条中的像素点的位置信息对应到整个图像矩阵中,将图像矩阵中线条的像素点所在位置的值设置为第一数值、线条以外的像素点所在位置的值设置为第二数值,从而形成线条矩阵。
第二方面,本发明还提供了一种识别图像中票据数量的装置,所述装置包括:
获取模块,用于获取包含多张依次排列的票据的图像;
获得模块,用于对所述图像进行处理,获得所述图像中各个票据的多条边界线;其中,所述边界线包括大体垂直于票据排列方向的第一类边界线;
生成模块,用于生成一条大体平行于票据排列方向并穿过所有票据所在区域的长线段,所述长线段与每一条所述第一类边界线有一交点;
确定模块,用于根据各相邻交点之间的子线段的长度,确定所述图像中票据的数量。
可选的,所述确定模块根据各相邻交点之间的子线段的长度,确定所述图像中票据的数量,包括:
根据各相邻交点之间的子线段的长度,按照交点的排列顺序依次从各个子线段中确定至少一个目标子线段,其中,每一目标子线段是与该目标子线段相邻的多个子线段中长度最长的子线段;
根据所确定的目标子线段的数量,确定所述图像中票据的数量。
可选的,所述确定模块在确定所述图像中票据的数量之后,还用于:
根据所述票据的数量,确定分辨率的第一缩小比例;
按照所述第一缩小比例对所述图像的分辨率进行缩小处理。
可选的,所述确定模块还用于:
根据所述目标子线段的长度,确定分辨率的第二缩小比例;
按照所述第二缩放比例对所述图像的分辨率进行缩小处理。
可选的,所述图像中多张票据为单排依次排列。
可选的,所述图像中多张票据为多排依次排列;
所述生成模块针对每一排票据,生成一条平行于该排票据对应的票据排列方向并穿过该排所有票据所在区域的长线段。
可选的,所述的识别图像中票据数量的装置还包括:
识别模块,用于针对每一目标子线段,根据与该目标子线段相交的两条第一类边界线、以及两条第一类边界线之间的第二类边界线确定一票据区域,并调用预设的票据识别模型识别所述票据区域内的票据内容,其中,所述第二类边界线为大体平行于票据排列方向的边界线。
可选的,所述获得模块,包括:
获得子模块,用于对所述图像进行处理,获得所述图像中灰度轮廓的线条图;
第一合并子模块,用于将所述线条图中相似的线条进行合并,得到多条初始合并线条,并根据多条所述初始合并线条确定一边界矩阵;
第二合并子模块,用于将多条所述初始合并线条中相似的线条进行合并得到目标线条,并且将未合并的所述初始合并线条也作为目标线条;
确定子模块,用于根据所述边界矩阵,从多条所述目标线条中确定各个票据的多条边界线。
可选的,所述获得子模块对对所述图像进行处理,获得所述图像中灰度轮廓的线条图,包括:
通过基于OpenCV的边缘检测算法对所述图像进行处理,获得所述图像中灰度轮廓的线条图。
可选的,所述第一合并子模块将所述线条图中相似的线条进行合并,得到多条初始合并线条,具体为:
获取所述线条图中的长线条;其中,所述长线条为长度超过第一预设阈值的线条;
从所述长线条中获取多组第一类线条;其中,所述第一类线条包括至少两个依次相邻的长线条,且任意相邻的两长线条之间的夹角均小于第二预设阈值;
针对每一组第一类线条,将该组第一类线条中的各个长线条依次进行合并得到一条初始合并线条。
可选的,所述第二合并子模块将多条所述初始合并线条中相似的线条进行合并得到目标线条,具体为:
从多条所述初始合并线条中获取多组第二类线条;其中,所述第二类线条包括至少两个依次相邻的初始合并线条,且任意相邻的两初始合并线条之间的夹角均小于第三预设阈值;
针对每一组第二类线条,将该组第二类线条中的各个初始合并线条依次进行合并得到一条目标线条。
可选的,所述边界矩阵按照以下方式确定:对多条所述初始合并线条以及所述长线条中未合并的线条进行重新绘制,将重新绘制的所有线条中的像素点的位置信息对应到整个图像矩阵中,将图像矩阵中这些线条的像素点所在位置的值设置为第一数值、这些线条以外的像素点所在位置的值设置为第二数值,从而形成边界矩阵。
可选的,所述确定子模块根据所述边界矩阵,从多条所述目标线条中确定各个票据的多条边界线,具体为:
针对每一条所述目标线条,将该目标线条进行延长,根据延长后的该目标线条确定一线条矩阵,然后将该线条矩阵与所述边界矩阵进行对比,计算延长后的该目标线条上属于所述边界矩阵的像素点的个数,作为该目标线条的成绩;其中,所述线条矩阵与所述边界矩阵的大小相同;
根据各个目标线条的成绩,从多条所述目标线条中确定多条边界线。
可选的,所述线条矩阵按照以下方式确定:对延长后的目标线条进行重新绘制,将重新绘制的线条中的像素点的位置信息对应到整个图像矩阵中,将图像矩阵中线条的像素点所在位置的值设置为第一数值、线条以外的像素点所在位置的值设置为第二数值,从而形成线条矩阵。
第三方面,本发明还提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,所述处理器、所述通信接口、所述存储器通过所述通信总线完成相互间的通信;
所述存储器,用于存放计算机程序;
所述处理器,用于执行所述存储器上所存放的程序时,实现上述第一方面所述的识别图像中票据数量的方法的步骤。
第四方面,本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面所述的识别图像中票据数量的方法的步骤。
与现有技术相比,本发明提供的一种识别图像中票据数量的方法及装置、电子设备、计算机可读存储介质具有以下有益效果:
通过获取包含多张依次排列的票据的图像,首先对所述图像进行处理,获得所述图像中各个票据的多条边界线,然后生成一条大体平行于票据排列方向并穿过所有票据所在区域的长线段,这个长线段与每一条第一类边界线有一交点,根据各相邻交点之间的子线段的长度,可以确定出图像中票据的数量,由于本发明可以识别图像中的票据数量,便于后续对多个票据的内容进行识别,提高票据识别的速度,减轻了票据处理人员的工作负担。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例提供的识别图像中票据数量的方法的流程示意图;
图2A、图2B为包含依次排列的票据的图像示例图;
图3为边缘检测处理后的图像示意图;
图4是图1所示的识别图像中票据数量的方法中步骤S102的过程示意图;
图5是本发明一实施例提供的识别图像中票据数量的装置的结构示意图;
图6是本发明一实施例提供的电子设备的结构示意图。
具体实施方式
以下结合附图和具体实施例对本发明提出的一种识别图像中票据数量的方法及装置、电子设备及计算机可读存储介质作进一步详细说明。根据下面说明和权利要求书,本发明的优点和特征将更清楚。需说明的是,附图均采用非常简化的形式且均使用非精准的比例,仅用以方便、明晰地辅助说明本发明实施例的目的。此外,需要说明的是,本文的框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机程序指令的组合来实现。对于本领域技术人员来说公知的是,通过硬件方式实现、通过软件方式实现以及通过软件和硬件结合的方式实现都是等价的。
为了使本发明的目的、特征和优点能够更加明显易懂,请参阅附图1至6。须知,本说明书所附图式所绘示的结构、比例、大小等,均仅用以配合说明书所揭示的内容,以供熟悉此技术的人士了解与阅读,并非用以限定本发明实施的限定条件,故不具技术上的实质意义,任何结构的修饰、比例关系的改变或大小的调整,在不影响本发明所能产生的功效及所能达成的目的下,均应仍落在本发明所揭示的技术内容能涵盖的范围内。
为解决现有技术的问题,本发明实施例提供了一种识别图像中票据数量的方法及装置、电子设备及计算机可读存储介质。
需要说明的是,本发明实施例的一种识别图像中票据数量的方法可应用于本发明实施例的一种识别图像中票据数量的装置,该识别图像中票据数量的装置可被配置于电子设备上。其中,该电子设备可以是个人计算机、移动终端等,该移动终端可以是手机、平板电脑等具有各种操作系统的硬件设备。
图1是本发明一实施例提供的一种识别图像中票据数量的方法的流程示意图。请参考图1,一种识别图像中票据数量的方法可以包括如下步骤:
步骤S101,获取包含多张依次排列的票据的图像。
所述图像为多个票据排列在一起的拍摄图片,多个票据依次互不重叠的排列,可以为单排依次排列,也可以为多排依次排列。票据类型可以为:发票、账单、税单、收据、购物清单、餐饮小票、保险单、报销单、快递单、行程单、车票等含有付款金额的单据。多个票据可以为同一类型,也可以为不同类型,本实施例对此不做限定。
步骤S102,对所述图像进行处理,获得所述图像中各个票据的多条边界线;其中,所述边界线包括大体垂直于票据排列方向的第一类边界线。
本实施例中,可以对所述图像采用边缘检测方法找到各个票据的边界线,具体的,采用边缘检测算法找到边界线的详细步骤将在后文进行详细描述。
边缘检测算法可以找到各个票据的上、下、左、右四个方向的边界线,每个方向的边界线可能有一条,也可能有多条。若各个票据为左右依次排列,则票据的排列方向为沿票据的左右延伸方向。在此基础上,票据的左、右方向的边界线是大体垂直于票据排列方向的,而上、下方向的边界线是大体平行于票据排列方向的。需要说明的是,由于用户在排列各个票据时可能会有细微的倾斜角度,因此票据的左、右方向的边界线不一定会严格垂直于票据排列方向,且上、下方向的边界线也不会严格水平于票据排列方向。本实施例中,将大体垂直于票据排列方向的边界线称为第一类边界线,将大体水平于票据排列方向的边界线称为第二类边界线。
步骤S103,生成一条大体平行于票据排列方向并穿过所有票据所在区域的长线段,所述长线段与每一条所述第一类边界线有一交点。
本实施例中,票据为左右依次排列,则即生成一条沿票据的左右方向延伸的长线段,长线段大体平行于票据排列方向,并且长线段穿过各个票据所在的区域,从而长线段与各个票据的左右方向的各个边界线均有一个交点。
在其它实施例中,所述图像中多张票据可以为多排依次排列,例如依次排列的票据有上下两排,此时,可以针对每一排票据,生成一条大体平行于该排票据对应的票据排列方向并穿过该排所有票据所在区域的长线段。在后续处理时,针对每一排票据分别进行处理,从而得到每一排的票据数量,进而通过每一排票据数量相加得到整个图像中的票据数量。
举例而言,如图2A所示的图像,各个票据从左至右依次排列为一排,票据排列方向为从左至右的方向。在步骤S102中,通过边缘检测算法对图像进行处理,图2B示出了处理后的图像,在图2B所示的图像中,可以看出各个票据的上下左右四个方向均有边界线,图像中在每个票据的左右两侧的竖向的边界线即为第一类边界线。在步骤S103中,生成一个长线段如图2B中所示的位于图像中部的长线段,该长线段大体平行于票据排列方向且与各个第一类边界线均相交。
步骤S104,根据各相邻交点之间的子线段的长度,确定所述图像中票据的数量。
根据各相邻交点之间构成一条子线段,可获得各个子线段的长度。可以理解的是,一个票据的左侧和右侧的边界线之间的子线段的长度约为票据的宽度值,而一个票据的左侧或右侧的边界线之间的子线段的长度很小,同时相邻两个票据中一票据的左侧的边界线与另一票据的右侧的边界线之间的子线段也较小,因此,可以根据各个子线段的长度区分票据区域和非票据区域,从而确定图像中票据的数量。
具体的,根据各相邻交点之间的子线段的长度,确定所述图像中票据的数量,包括:
根据各相邻交点之间的子线段的长度,按照交点的排列顺序依次从各个子线段中确定至少一个目标子线段,其中,每一目标子线段是与该目标子线段相邻的多个子线段中长度最长的子线段;
根据所确定的目标子线段的数量,确定所述图像中票据的数量。
图像中各个票据的宽度可以相同,也可以不同。当票据的宽度相同或近似时,所确定的各个目标子线段的长度相同或近似,因此根据长度相同或近似的长线段的数量可确定图像中票据的数量,或者通过相邻子线段中找到一个最长的子线段来确定为目标子线段,或者通过设定一个长度阈值,先获取所有子线段的长度,然后将大于阈值的子线段确定为目标子线段。当票据的宽度不同时,目标子线段的长度不同,此时,可以通过相邻子线段中找到一个最长的子线段来确定为目标子线段,或者通过设定一个长度阈值,先获取所有子线段的长度,然后直接通过大于阈值的方式获取目标子线段的数量从而确定票据的数量。
下面以图3所示的示意图对确定目标子线段的方法进行举例说明。图3示例性的示出了对一个图像进行边缘检测后获得的图像,图中有3个票据,3个票据从左至右依次排列,图中仅示出了图像中各个票据的边界线。如图3所示,每个票据的上、下、左、右四个方向均有一个或两个边界线,左、右两个方向上的边界线为第一类边界线。图中的水平虚线为生成的穿过各个票据所在区域的长线段,长线段与各个第一类边界线相交,交点依次为a、b、c、d、e、f、g、h、i、j,从图中可以看出,子线段bc是与子线段bc相邻的子线段中长度最长的,子线段ef是与子线段ef相邻的子线段中长度最长的,子线段hi是与子线段hi相邻的子线段中长度最长的,因此将子线段bc、ef、hi作为目标子线段。由于目标子线段的数量为3个,可以确定图3中票据的数量为3个。另外,也可以根据票据的尺寸设定目标子线段的长度阈值,例如,图3中票据的宽度尺寸大致为250,则设定长度阈值为200,则根据图3中各个子线段ab、bc、cd、de、ef、fg、gh、hi、ij的长度,将长度大于等于200的子线段bc、ef、hi确定为目标子线段。
需要说明的是,本实施例中要求各个票据之间间隔的距离不能太大,不然会导致误识别间隔的空白处也有个票据。
在实际应用中,除了上述的票据之间间隔太大的情况,还可能存在有些票据中可能有较长的竖线(例如表格等),导致出现多条较长的子线段,从而将一个票据误识别为多个票据,在这种情况下,还可以利用第二类边界线来进行筛选,对目标子线段进行修正。具体的,确定目标子线段的方法还可以包括:
针对相邻的两个第一边界线区域,令该相邻的两个第一边界线区域之间的目标第二类边界线与该相邻的两个第一边界线区域中的第一类边界线相交,并获取相交后的所述目标第二类边界线的平均长度;若该相邻的两个第一边界线区域之间有多个子线段且所述多个子线段的长度之和近似等于所述平均长度,则将所述多个子线段合并成一目标子线段。
本实施例中,将一个票据的左侧或右侧的至少一个第一类边界线所在的区域称为第一边界线区域,可以理解的是,一个票据的左右两侧分别有一个第一边界线区域,且这两个第一边界线区域相邻。相邻的两个第一边界线区域之间如果有第二类边界线,则表示这相邻的两个第一边界线区域为同一个票据的边界线区域,因此这相邻的两个第一边界线区域之间应该有一个目标子线段,相邻的两个第一边界线区域之间如果没有第二类边界线,则表示这相邻的两个第一边界线区域属于两个不同票据的边界线区域,因此这相邻的两个第一边界线区域之间没有目标子线段。
基于此,令相邻的两个第一边界线区域之间的一个第二类边界线(将该第二类边界线作为目标第二类边界线)与该相邻的两个第一边界线区域中的第一类边界线相交,并获取相交后的所述目标第二类边界线的平均长度,此平均长度也可认为是票据的宽度。然后,若相邻的两个第一边界线区域之间有多个子线段且所述多个子线段的长度之和近似等于所述平均长度(可以认为目标子线段被票据中的较长竖线分割为多个子线段),则将所述多个子线段合并成一目标子线段。
在实际应用中,本发明提供的识别图像中票据数量的方法可以应用于客户端,例如手机客户端,可以由手机获取图像,由于现在手机拍摄的图像的分辨率较高不便于图像传输,因此最好可以对图像进行缩小分辨率处理。同时为了确保缩小分辨率后的图像仍然比较清晰,需要根据图像选择合适的缩小比例。
具体的,可以在确定所述图像中票据的数量之后,根据所述票据的数量,确定分辨率的第一缩小比例,然后按照所述第一缩小比例对所述图像的分辨率进行缩小处理。
可以理解的是,对于相同分辨率的图像,若票据数量少,则缩小比例可以设置得稍大些,这样分辨率可以相应的降低得多些,且降低分辨率后的图像仍然可以清晰显示票据内容,反之,若票据数量多,则缩小比例可以设置得稍小些,因为分辨率应当降低的少些,以免降低分辨率后图像不能清晰显示票据内容。因此,可以预先设置不同的票据数量对应的缩小比例,例如,票据数量为1时第一缩小比例为2,票据数量为2时第一缩小比例为1.5,票据数量为3时第一缩小比例为1.2,依次类推,还可以设置当票据数量超过一定值后第一缩小比例为0,即不进行缩小分辨率处理。在设置缩小比例时,还可以考虑图像的原始分辨率,若原始分辨率较低,则可以在上述缩小比例的数值的基础上相应的降低缩小比例。例如,若原始分辨率小于一定值,则将上述缩小比例的数值降低80%,即票据数量为1时第一缩小比例为1.6,票据数量为2时第一缩小比例为1.2,票据数量为3时第一缩小比例为0.96,依次类推。
另外,还可以根据所述票据区域对应的目标子线段的长度,确定分辨率的第二缩小比例,按照所述第二缩小比例对所述票据区域的分辨率进行缩小处理。
可以理解的是,目标子线段的长度可以作为票据的大致尺寸,对于相同分辨率的图像,若票据的尺寸大,则缩小比例可以设置得稍大些,这样分辨率可以相应的降低得多些,且降低分辨率后的图像仍然可以清晰显示票据内容,若票据的尺寸小,则缩小比例可以设置得稍小些,因为分辨率应当降低的少些,以免降低分辨率后图像不能清晰显示票据内容。对于票据有多个且尺寸不相同的图像,可以根据尺寸最小的票据来确定分辨率的缩小比例,以保证分辨率降低后的图像可以清晰显示尺寸最小的票据的内容。例如,票据尺寸为在第一尺寸范围内时第二缩小比例为2,在第二尺寸范围内时第二缩小比例为1.5,在第三尺寸范围内时第二缩小比例为1.2,依次类推,还可以设置当尺寸超过一定值后第二缩小比例为0,即不进行缩小分辨率处理。在设置缩小比例时,还可以考虑图像的原始分辨率,若原始分辨率较低,则可以在上述缩小比例的数值的基础上相应的降低缩小比例。例如,若原始分辨率小于一定值,则将上述缩小比例的数值降低80%,即票据尺寸在第一尺寸范围时第二缩小比例为1.6,在第二尺寸范围时第一缩小比例为1.2,在第三尺寸范围时第一缩小比例为0.96,依次类推。
在进一步的优化方案中,还可以根据票据的数量和目标子线段的长度,二者结合来确定分辨率的缩小比例,例如票据数量只有1个但是票据尺寸较小则不需要缩小太多,票据数量有1个但是票据尺寸较大则可以缩小较多些。例如,可首先根据票据数量确定一个大致的缩小比例,然后再根据目标子线段的长度对大致的缩小比例在一定范围内进行调整,若目标子线段的长度较短,可将该大致的缩小比例适当减小,若目标子线段的长度较长,则可将该大致的缩小比例适当增大。或者,首先根据票据数量确定一个缩小比例的范围,然后根据目标子线段的长度在此范围内选择合适的缩小比例值,若目标子线段的长度较短,则在此范围内选择较小的缩小比例值,若目标子线段的长度较长,则在此范围内选择较大的缩小比例值。
本实施例中,在确定图像中票据数量之后,还可以确定各个票据的区域,并针对各个票据区域调用票据识别模型来识别各个票据的内容。
具体的,针对每一目标子线段,根据与该目标子线段相交的两条第一类边界线、以及两条第一类边界线之间的第二类边界线确定一票据区域,并调用预设的票据识别模型识别所述票据区域内的票据内容。
由以上描述可知,每个目标子线段是由长线段与每个票据的左右两侧的第一类边界线相交得到的,则目标子线段之间的区域即为票据所在区域,进而可以根据与目标子线段相交的两条第一类边界线、以及两条第一类边界线之间的第二类边界线共同组成的区域确定为票据区域。在确定了票据区域后,可针对每一票据区域,调用预设的票据识别模型识别该票据区域内的票据内容,如识别出票据的付款金额、开票时间、开票的店铺名称、地点等信息。预设的票据识别模型为预先训练好的神经网络模型,例如为可以卷积神经网络模型。针对每一个票据区域,还可以切割后输出作为单张票据图片进行保存。
下面对步骤S102中对所述图像采用边缘检测方法找到边界线的方法进行介绍。
具体的,如图4所示,步骤S102对所述图像进行处理,获得所述图像中各个票据的多条边界线,包括以下步骤:
S21,对所述图像进行处理,获得所述图像中灰度轮廓的线条图;
S22,将所述线条图中相似的线条进行合并,得到多条初始合并线条,并根据多条所述初始合并线条确定一边界矩阵;
S23,将多条所述初始合并线条中相似的线条进行合并得到目标线条,并且将未合并的所述初始合并线条也作为目标线条;
S24,根据所述边界矩阵,从多条所述目标线条中确定各个票据的多条边界线。
在步骤S21中,对所述图像进行处理,获得所述图像中灰度轮廓的线条图的方式,可以为:通过基于OpenCV的边缘检测算法对所述图像进行处理,获得所述图像中灰度轮廓的线条图。OpenCV为一种开源计算机视觉库,基于OpenCV的边缘检测算法包括Sobel、Scarry、Canny、Laplacian、Prewitt、Marr-Hildresh、scharr等多种算法。其中,本实施例中采用Canny边缘检测算法,Canny边缘检测算法是一个多阶段的算法,即由多个步骤构成,包括:1、图像降噪:用高斯滤波器平滑图像;2、计算图像梯度:用一阶偏导有限差分计算梯度幅值和方向;3、非极大值抑制:对梯度幅值进行非极大值抑制;4、阈值筛选:用双阈值算法检测和连接边缘。
通过上述算法处理后,可得到所述图像中灰度轮廓的线条图,在线条图中,各个线条实际上是一段一段很小的线段,其中,图像中票据的边界线线条实际上也被分为一段一段很小的线段,因此需要将相似的线条连接起来,并进行后续处理以得到票据的边界线线条。在实际应用中,线条图中各个小线段的表现形式是数组的形式,每个线段都是由起点和终点对应的像素点在整个线条图中的坐标值组成。
在步骤S22中,按照以下方式将所述线条图中相似的线条进行合并,得到多条初始合并线条:步骤A:获取所述线条图中的长线条;其中,所述长线条为长度超过第一预设阈值的线条;步骤B:从所述长线条中获取多组第一类线条;其中,所述第一类线条包括至少两个依次相邻的长线条,且任意相邻的两长线条之间的夹角均小于预设阈值;步骤C:针对每一组第一类线条,将该组第一类线条中的各个长线条依次进行合并得到一条初始合并线条。
在步骤A中,所述线条图中的长线条指的是所述线条图中长度超过一定阈值的线条,例如将长度超过2像素的线条定义为长线条。仅获取所述线条图中的长线条进行后续合并处理,而不考虑所述线条图中的一些较短的线条,这样可以在合并线条时避免票据内部和外部的线条干扰,例如内部的文字和图形、外部的其它物体等的对应的线条。
对于步骤B,可以通过以下方式获取第一类线条:首先选择一个长线条,然后从该长线条开始依次判断两条相邻线条之间的夹角是否小于第二预设阈值,若判断出某一长线条与相邻线条之间的夹角不小于第二预设阈值时,则可以将所选择的长线条以及到该某一长线条之间的所有依次相邻的长线条组成一组第一类线条,接着再重复上述过程,从该某一长线条的相邻线条开始依次判断两条相邻线条之间的夹角是否小于第二预设阈值,依次类推,直到遍历完所有长线条,从而得到多组第一类线条。
在步骤B中,两条线条的夹角通过以下公式计算:
Figure BDA0002154419740000151
其中,
Figure BDA0002154419740000152
分别表示相邻两条线条的向量。其中,所述第二预设阈值的数值可以根据实际情况进行设置,例如设置为夹角θ小于15度时进行合并。
在步骤C中将两个线条合并,指的是将两个线条的斜率取平均值,此平均值为合并后线条的斜率。在实际应用中,两个线条合并是根据两个线条的数组形式进行计算,从而计算得到合并后线条的起点和终点对应的像素点在整个线条图中的坐标值,进而根据计算得到的坐标值形成合并后线条的数组并进行存储。
另外,所述边界矩阵通过以下方式确定:对多条所述初始合并线条以及所述长线条中未合并的线条进行重新绘制,将重新绘制的所有线条中的像素点的位置信息对应到整个图像矩阵中,将图像矩阵中这些线条的像素点所在位置的值设置第一数值、这些线条以外的像素点所在位置的值设置为第二数值,从而形成边界矩阵。具体而言,所述边界矩阵可以是一个与图像矩阵大小相同的矩阵,例如图像的大小为1024×1024像素,则图像矩阵为1024×1024的矩阵,那么边界矩阵也就是一个1024×1024的矩阵,将多条所述初始合并线条以及所述长线条中未合并的线条按照一定的线宽(如线宽为2)重新绘制,根据重新绘制的线条的像素点对应到矩阵中的位置来对边界矩阵进行值的填充,线条上像素点对应到矩阵中的位置都设定为第一数值例如255,没有线条的像素点对应到矩阵中的位置设定为第二数值例如0,从而形成整个图片的超大矩阵即边界矩阵。需要说明的是,由于多条所述初始合并线条以及所述长线条中未合并的线条均是以数组的形式存储的,因此在确定所述边界矩阵时需要将其形成为实际线条数据,因此将线条重新绘制例如按照线宽为2进行重新绘制,从而获得每个线条上各个点对应的像素点的坐标值,进而根据所获得的坐标值对所述边界矩阵中进行值的填充,例如将所述边界矩阵中与坐标值相对应的位置的值设为255,其余位置的值设为0。
下面示例性的提供一个边界矩阵,该边界矩阵为10×10矩阵,其中该边界矩阵中所有值为255的位置连接起来即为多条初始合并线条以及长线条中未合并的线条。
Figure BDA0002154419740000161
在步骤S22中,合并后的初始合并线条为多条较长的线条。步骤S23可以根据上述步骤S22中的合并规则,继续判断多条初始合并线条中是否存在相似的线条从而将相似线条再次进行合并得到多条目标线条,同时将不能进行合并的初始合并线条也作为目标线条。
其中,将多条所述初始合并线条中相似的线条进行合并得到目标线条的具体的合并步骤如下:步骤a:从多条所述初始合并线条中获取多组第二类线条;其中,所述第二类线条包括至少两个依次相邻的初始合并线条,且任意相邻的两初始合并线条之间的夹角均小于第三预设阈值;步骤b:针对每一组第二类线条,将该组第二类线条中的各个初始合并线条依次进行合并得到一条目标线条。
上述对初始合并线条进行合并的步骤的原理,与步骤S22中对线条图中线条进行合并的原理相同,可以参见步骤S22中的相关描述,在此不做赘述。其中,所述第三预设阈值可以和所述第二预设阈值相同,也可以不同,本实施例对此不做限定,例如将所述第三预设阈值设置为夹角10度。
至此获得了多条目标线条,在多条目标线条中不仅存在边界线,还存在一些较长的干扰线条,例如,内部的文字和图形、外部的其它物体等的对应的线条经过合并处理后得到的较长线条,这些干扰线条会在后续步骤S24中根据边界矩阵进行去除,从而得到票据区域的边界线条。
在步骤S24中,根据所述边界矩阵,从多条所述目标线条中确定多条参考边界线,包括:首先,针对每一条所述目标线条,将该目标线条进行延长,根据延长后的该目标线条确定一线条矩阵,然后将该线条矩阵与所述边界矩阵进行对比,计算延长后的该目标线条上属于所述边界矩阵的像素点的个数,作为该目标线条的成绩,其中线条矩阵与边界矩阵的大小相同;然后,根据各个目标线条的成绩,从多条所述目标线条中确定多条边界线。
其中,所述线条矩阵可以按照以下方式确定:对延长后的目标线条进行重新绘制,将重新绘制的线条中的像素点的位置信息对应到整个图像矩阵中,将图像矩阵中线条的像素点所在位置的值设置为第一数值、线条以外的像素点所在位置的值设置为第二数值,从而形成线条矩阵。所述线条矩阵的形成方式与所述边界矩阵类似,在此不做赘述。需要说明的是,所述目标线条是以数组的形式存储的,即存储其起点和终点的坐标值,对目标线条进行延长后,延长后的目标线条在存储时是以延长后的目标线条的起点和终点的坐标值形成数组的,因此在对延长后的目标线条进行重新绘制时,也是按照相同的线宽例如线宽为2进行重新绘制,从而获得延长后的目标线条上各个点对应的像素点的坐标值,进而根据坐标值对线条矩阵进行值的填充,即将线条矩阵中与坐标值相对应的位置的值设为255,其余位置的值设为0。
将合并后的目标线条进行延长,判断其上的像素点落入步骤S22中初始合并线条和所述长线条中未合并的线条上最多的目标线条作为参考边界线。具体的,针对每一条目标线条,判断上有多少像素点是属于边界矩阵的,计算一个成绩,具体为:将该目标线条进行延长,该目标线条延长后所得的线条也按照边界矩阵的形成方式形成一线条矩阵,将该线条矩阵与边界矩阵进行对比来判断有多少像素点落入到边界矩阵里面,即判断两个矩阵中有多少相同位置的像素点具有相同的第一数值例如255,从而计算成绩。这时成绩最好的线条可能还是有较多条,因此,根据各个目标线条的成绩,从多条目标线条中确定成绩最好的多条目标线条作为参考边界线。
例如,一条延长后的目标线条形成的线条矩阵如下,通过将该线条矩阵与上述的边界矩阵进行对比可知延长后的该目标线条上有7个像素点落入到边界矩阵里面,从而得到该目标线条的成绩。
Figure BDA0002154419740000181
最终,可以确定各个票据的上、下、左、右四个方向的边界线,每个方向的边界线可能有一条,也可能有多条。
综上所述,本实施例提供的识别图像中票据数量的方法,通过获取包含多张依次排列的票据的图像,首先对所述图像进行处理,获得所述图像中各个票据的多条边界线,然后生成一条大体平行于票据排列方向并穿过所有票据所在区域的长线段,这个长线段与每一条第一类边界线有一交点,根据各相邻交点之间的子线段的长度,可以确定出图像中票据的数量,由于本发明可以识别图像中的票据数量,便于后续对多个票据的内容进行识别,提高票据识别的速度,减轻了票据处理人员的工作负担。
相应于上述方法实施例,本发明一实施例还提供了一种识别图像中票据数量的装置。请参考图5,图5是本发明一实施例提供的一种识别图像中票据数量的这种的结构示意图,一种识别图像中票据数量的装置可以包括:
获取模块201,用于获取包含多张依次排列的票据的图像;
获得模块202,用于对所述图像进行处理,获得所述图像中各个票据的多条边界线;其中,所述边界线包括大体垂直于票据排列方向的第一类边界线;
生成模块203,用于生成一条大体平行于票据排列方向并穿过所有票据所在区域的长线段,所述长线段与每一条所述第一类边界线有一交点;
确定模块204,用于根据各相邻交点之间的子线段的长度,确定所述图像中票据的数量。
本实施例提供的识别图像中票据数量的装置,通过获取包含多张依次排列的票据的图像,首先对所述图像进行处理,获得所述图像中各个票据的多条边界线,然后生成一条大体平行于票据排列方向并穿过所有票据所在区域的长线段,这个长线段与每一条第一类边界线有一交点,根据各相邻交点之间的子线段的长度,可以确定出图像中票据的数量,由于本发明可以识别图像中的票据数量,便于后续对多个票据的内容进行识别,提高票据识别的速度,减轻了票据处理人员的工作负担。
可选的,所述确定模块204根据各相邻交点之间的子线段的长度,确定所述图像中票据的数量,可以包括:
根据各相邻交点之间的子线段的长度,按照交点的排列顺序依次从各个子线段中确定至少一个目标子线段,其中,每一目标子线段是与该目标子线段相邻的多个子线段中长度最长的子线段;
根据所确定的目标子线段的数量,确定所述图像中票据的数量。
可选的,所述确定模块204在确定所述图像中票据的数量之后,还可以用于:
根据所述票据的数量,确定分辨率的第一缩小比例;
按照所述第一缩小比例对所述图像的分辨率进行缩小处理。
可选的,所述确定模块204还可以用于:
根据所述目标子线段的长度,确定分辨率的第二缩小比例;
按照所述第二缩放比例对所述图像的分辨率进行缩小处理。
可选的,所述图像中多张票据可以为单排依次排列。
可选的,所述图像中多张票据可以为多排依次排列;
所述生成模块203针对每一排票据,生成一条平行于该排票据对应的票据排列方向并穿过该排所有票据所在区域的长线段。
可选的,所述的识别图像中票据数量的装置还可以包括:
识别模块,用于针对每一目标子线段,根据与该目标子线段相交的两条第一类边界线、以及两条第一类边界线之间的第二类边界线确定一票据区域,并调用预设的票据识别模型识别所述票据区域内的票据内容,其中,所述第二类边界线为大体平行于票据排列方向的边界线。
可选的,所述获得模块202,可以包括:
获得子模块,用于对所述图像进行处理,获得所述图像中灰度轮廓的线条图;
第一合并子模块,用于将所述线条图中相似的线条进行合并,得到多条初始合并线条,并根据多条所述初始合并线条确定一边界矩阵;
第二合并子模块,用于将多条所述初始合并线条中相似的线条进行合并得到目标线条,并且将未合并的所述初始合并线条也作为目标线条;
确定子模块,用于根据所述边界矩阵,从多条所述目标线条中确定各个票据的多条边界线。
可选的,所述获得子模块对对所述图像进行处理,获得所述图像中灰度轮廓的线条图,可以包括:
通过基于OpenCV的边缘检测算法对所述图像进行处理,获得所述图像中灰度轮廓的线条图。
可选的,所述第一合并子模块将所述线条图中相似的线条进行合并,得到多条初始合并线条,具体可以为:
获取所述线条图中的长线条;其中,所述长线条为长度超过第一预设阈值的线条;
从所述长线条中获取多组第一类线条;其中,所述第一类线条包括至少两个依次相邻的长线条,且任意相邻的两长线条之间的夹角均小于第二预设阈值;
针对每一组第一类线条,将该组第一类线条中的各个长线条依次进行合并得到一条初始合并线条。
可选的,所述第二合并子模块将多条所述初始合并线条中相似的线条进行合并得到目标线条,具体可以为:
从多条所述初始合并线条中获取多组第二类线条;其中,所述第二类线条包括至少两个依次相邻的初始合并线条,且任意相邻的两初始合并线条之间的夹角均小于第三预设阈值;
针对每一组第二类线条,将该组第二类线条中的各个初始合并线条依次进行合并得到一条目标线条。
可选的,所述边界矩阵可以按照以下方式确定:对多条所述初始合并线条以及所述长线条中未合并的线条进行重新绘制,将重新绘制的所有线条中的像素点的位置信息对应到整个图像矩阵中,将图像矩阵中这些线条的像素点所在位置的值设置为第一数值、这些线条以外的像素点所在位置的值设置为第二数值,从而形成边界矩阵。
可选的,所述确定子模块根据所述边界矩阵,从多条所述目标线条中确定各个票据的多条边界线,具体可以为:
针对每一条所述目标线条,将该目标线条进行延长,根据延长后的该目标线条确定一线条矩阵,然后将该线条矩阵与所述边界矩阵进行对比,计算延长后的该目标线条上属于所述边界矩阵的像素点的个数,作为该目标线条的成绩;其中,所述线条矩阵与所述边界矩阵的大小相同;
根据各个目标线条的成绩,从多条所述目标线条中确定多条边界线。
可选的,所述线条矩阵可以按照以下方式确定:对延长后的目标线条进行重新绘制,将重新绘制的线条中的像素点的位置信息对应到整个图像矩阵中,将图像矩阵中线条的像素点所在位置的值设置为第一数值、线条以外的像素点所在位置的值设置为第二数值,从而形成线条矩阵。
本发明一实施例还提供了一种电子设备,图6是本发明一实施例提供的一种电子设备的结构示意图。请参考图6,一种电子设备包括处理器301、通信接口302、存储器303和通信总线304,其中,所述处理器301,所述通信接口302,所述存储器303通过所述通信总线304完成相互间的通信,
所述存储器303,用于存放计算机程序;
所述处理器301,用于执行存储器303上所存放的程序时,实现如下步骤:
获取包含多张依次排列的票据的图像;
对所述图像进行处理,获得所述图像中各个票据的多条边界线;其中,所述边界线包括大体垂直于票据排列方向的第一类边界线;
生成一条大体平行于票据排列方向并穿过所有票据所在区域的长线段,所述长线段与每一条所述第一类边界线有一交点;
根据各相邻交点之间的子线段的长度,确定所述图像中票据的数量。
关于该方法各个步骤的具体实现以及相关解释内容可以参见上述图1所示的方法实施例,在此不做赘述。
另外,所述处理器301执行所述存储器303上所存放的程序而实现的识别图像中票据数量的方法的其他实现方式,与前述方法实施例部分所提及的实现方式相同,这里也不再赘述。
本实施例提供的电子设备,通过获取包含多张依次排列的票据的图像,首先对所述图像进行处理,获得所述图像中各个票据的多条边界线,然后生成一条大体平行于票据排列方向并穿过所有票据所在区域的长线段,这个长线段与每一条第一类边界线有一交点,根据各相邻交点之间的子线段的长度,可以确定出图像中票据的数量,由于本发明可以识别图像中的票据数量,便于后续对多个票据的内容进行识别,提高票据识别的速度,减轻了票据处理人员的工作负担。
所述电子设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。所述通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述电子设备的控制中心,利用各种接口和线路连接整个电子设备的各个部分。
本发明一实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现如下步骤:
获取包含多张依次排列的票据的图像;
对所述图像进行处理,获得所述图像中各个票据的多条边界线;其中,所述边界线包括大体垂直于票据排列方向的第一类边界线;
生成一条大体平行于票据排列方向并穿过所有票据所在区域的长线段,所述长线段与每一条所述第一类边界线有一交点;
根据各相邻交点之间的子线段的长度,确定所述图像中票据的数量。
需要说明的是,上述计算机程序被处理器执行时实现的识别图像中票据数量的方法的其他实施例,与前述方法部分提及的识别图像中票据数量的方法的实施例相同,在此不再赘述。
本实施例提供的计算机可读存储介质,通过获取包含多张依次排列的票据的图像,首先对所述图像进行处理,获得所述图像中各个票据的多条边界线,然后生成一条大体平行于票据排列方向并穿过所有票据所在区域的长线段,这个长线段与每一条第一类边界线有一交点,根据各相邻交点之间的子线段的长度,可以确定出图像中票据的数量,由于本发明可以识别图像中的票据数量,便于后续对多个票据的内容进行识别,提高票据识别的速度,减轻了票据处理人员的工作负担。
所述计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备,例如可以是但不限于电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。所述计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所描述的计算机程序可以从所述计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收所述计算机程序,并转发该计算机程序,以供存储在各个计算/处理设备中的所述计算机可读存储介质中。用于执行本发明操作的计算机程序可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。所述计算机程序可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施方式中,通过利用计算机程序的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明实施方式的方法、系统和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序实现。这些计算机程序可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些程序在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机程序存储在计算机可读存储介质中,这些计算机程序使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有该计算机程序的计算机可读存储介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。也可以把计算机程序加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的计算机程序实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
需要说明的是,本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、电子设备、计算机可读存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。在本文中使用的术语仅用于描述特定实施方式的目的,并非旨在限制本发明。如本文中所使用的,单数形式“一(a)”、“一(an)”和“一(the)”旨在也包括复数形式,除非在上下文中清楚地另外指出。如本文中所使用的,术语“和/或”包括一个或多个相关的所列项目的任意的和所有的组合。当例如“中的至少一个”的表述处于一列元件之后时修饰整列元件,而不是修饰该列中的个别元件。如本文中所使用的,术语“基本上”、“约”以及类似术语被用作近似术语,而不是程度术语,并且意在表示测量值或计算值中的固有偏差,所述偏差将被那些本领域普通技术人员识别。此外,在描述本发明的实施方式时,“可以”的使用指的是“本发明的一个或多个实施方式”。如本文中所使用的,术语“使用”、“正使用”和“使用了”可以被认为分别与术语“利用”、“正利用”和“利用了”是同义的。同样,术语“示例性”意在指出实例或示例。
上述描述仅是对本发明较佳实施例的描述,并非对本发明范围的任何限定,本发明领域的普通技术人员根据上述揭示内容做的任何变更、修饰,均属于权利要求书的保护范围。

Claims (18)

1.一种识别图像中票据数量的方法,其特征在于,包括:
获取包含多张依次排列的票据的图像;
对所述图像进行处理,获得所述图像中各个票据的多条边界线;其中,所述边界线包括大体垂直于票据排列方向的第一类边界线;
生成一条大体平行于票据排列方向并穿过所有票据所在区域的长线段,所述长线段与每一条所述第一类边界线有一交点;
根据各相邻交点之间的子线段的长度,确定所述图像中票据的数量;
其中,根据各相邻交点之间的子线段的长度,确定所述图像中票据的数量,包括:根据各相邻交点之间的子线段的长度,按照交点的排列顺序依次从各个子线段中确定至少一个目标子线段,其中,每一目标子线段是与该目标子线段相邻的多个子线段中长度最长的子线段;根据所确定的目标子线段的数量,确定所述图像中票据的数量。
2.如权利要求1所述的识别图像中票据数量的方法,其特征在于,在确定所述图像中票据的数量之后,还包括:
根据所述票据的数量,确定分辨率的第一缩小比例;
按照所述第一缩小比例对所述图像的分辨率进行缩小处理。
3.如权利要求1所述的识别图像中票据数量的方法,其特征在于,还包括:
根据所述目标子线段的长度,确定分辨率的第二缩小比例;
按照所述第二缩放比例对所述图像的分辨率进行缩小处理。
4.如权利要求1所述的识别图像中票据数量的方法,其特征在于,所述图像中多张票据为单排依次排列。
5.如权利要求1所述的识别图像中票据数量的方法,其特征在于,所述图像中多张票据为多排依次排列;
针对每一排票据,生成一条平行于该排票据对应的票据排列方向并穿过该排所有票据所在区域的长线段。
6.如权利要求1所述的识别图像中票据数量的方法,其特征在于,还包括:
针对每一目标子线段,根据与该目标子线段相交的两条第一类边界线、以及两条第一类边界线之间的第二类边界线确定一票据区域,并调用预设的票据识别模型识别所述票据区域内的票据内容,其中,所述第二类边界线为大体平行于票据排列方向的边界线。
7.如权利要求1所述的识别图像中票据数量的方法,其特征在于,对包含所述图像进行处理,获得所述图像中各个票据的多条边界线,包括:
对所述图像进行处理,获得所述图像中灰度轮廓的线条图;
将所述线条图中相似的线条进行合并,得到多条初始合并线条,并根据多条所述初始合并线条确定一边界矩阵;
将多条所述初始合并线条中相似的线条进行合并得到目标线条,并且将未合并的所述初始合并线条也作为目标线条;
根据所述边界矩阵,从多条所述目标线条中确定各个票据的多条边界线。
8.如权利要求7所述的识别图像中票据数量的方法,其特征在于,所述对所述图像进行处理,获得所述图像中灰度轮廓的线条图,包括:
通过基于OpenCV的边缘检测算法对所述图像进行处理,获得所述图像中灰度轮廓的线条图。
9.如权利要求7所述的识别图像中票据数量的方法,其特征在于,将所述线条图中相似的线条进行合并,得到多条初始合并线条,包括:
获取所述线条图中的长线条;其中,所述长线条为长度超过第一预设阈值的线条;
从所述长线条中获取多组第一类线条;其中,所述第一类线条包括至少两个依次相邻的长线条,且任意相邻的两长线条之间的夹角均小于第二预设阈值;
针对每一组第一类线条,将该组第一类线条中的各个长线条依次进行合并得到一条初始合并线条。
10.如权利要求7所述的识别图像中票据数量的方法,其特征在于,将多条所述初始合并线条中相似的线条进行合并得到目标线条,包括:
从多条所述初始合并线条中获取多组第二类线条;其中,所述第二类线条包括至少两个依次相邻的初始合并线条,且任意相邻的两初始合并线条之间的夹角均小于第三预设阈值;
针对每一组第二类线条,将该组第二类线条中的各个初始合并线条依次进行合并得到一条目标线条。
11.如权利要求10所述的识别图像中票据数量的方法,其特征在于,所述边界矩阵按照以下方式确定:对多条所述初始合并线条以及所述长线条中未合并的线条进行重新绘制,将重新绘制的所有线条中的像素点的位置信息对应到整个图像矩阵中,将图像矩阵中这些线条的像素点所在位置的值设置为第一数值、这些线条以外的像素点所在位置的值设置为第二数值,从而形成边界矩阵。
12.如权利要求7所述的识别图像中票据数量的方法,其特征在于,根据所述边界矩阵,从多条所述目标线条中确定各个票据的多条边界线,包括:
针对每一条所述目标线条,将该目标线条进行延长,根据延长后的该目标线条确定一线条矩阵,然后将该线条矩阵与所述边界矩阵进行对比,计算延长后的该目标线条上属于所述边界矩阵的像素点的个数,作为该目标线条的成绩;其中,所述线条矩阵与所述边界矩阵的大小相同;
根据各个目标线条的成绩,从多条所述目标线条中确定多条边界线。
13.如权利要求12所述的识别图像中票据数量的方法,其特征在于,所述线条矩阵按照以下方式确定:对延长后的目标线条进行重新绘制,将重新绘制的线条中的像素点的位置信息对应到整个图像矩阵中,将图像矩阵中线条的像素点所在位置的值设置为第一数值、线条以外的像素点所在位置的值设置为第二数值,从而形成线条矩阵。
14.一种识别图像中票据数量的装置,其特征在于,包括:
获取模块,用于获取包含多张依次排列的票据的图像;
获得模块,用于对所述图像进行处理,获得所述图像中各个票据的多条边界线;其中,所述边界线包括大体垂直于票据排列方向的第一类边界线;
生成模块,用于生成一条大体平行于票据排列方向并穿过所有票据所在区域的长线段,所述长线段与每一条所述第一类边界线有一交点;
确定模块,用于根据各相邻交点之间的子线段的长度,确定所述图像中票据的数量;
其中,所述确定模块根据各相邻交点之间的子线段的长度,确定所述图像中票据的数量,包括:根据各相邻交点之间的子线段的长度,按照交点的排列顺序依次从各个子线段中确定至少一个目标子线段,其中,每一目标子线段是与该目标子线段相邻的多个子线段中长度最长的子线段;根据所确定的目标子线段的数量,确定所述图像中票据的数量。
15.如权利要求14所述的识别图像中票据数量的装置,其特征在于,所述确定模块在确定所述图像中票据的数量之后,还用于:
根据所述票据的数量,确定分辨率的第一缩小比例;
按照所述第一缩小比例对所述图像的分辨率进行缩小处理。
16.如权利要求14所述的识别图像中票据数量的装置,其特征在于,所述确定模块还用于:
根据所述目标子线段的长度,确定分辨率的第二缩小比例;
按照所述第二缩放比例对所述图像的分辨率进行缩小处理。
17.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,所述处理器、所述通信接口、所述存储器通过所述通信总线完成相互间的通信;
所述存储器,用于存放计算机程序;
所述处理器,用于执行所述存储器上存储的程序时,实现权利要求1-13任一项所述的方法步骤。
18.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-13任一项所述的方法步骤。
CN201910713021.0A 2019-08-02 2019-08-02 一种识别图像中票据数量的方法及装置 Active CN110428414B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN201910713021.0A CN110428414B (zh) 2019-08-02 2019-08-02 一种识别图像中票据数量的方法及装置
US17/266,626 US11687886B2 (en) 2019-08-02 2020-07-31 Method and device for identifying number of bills and multiple bill areas in image
PCT/CN2020/106231 WO2021023111A1 (zh) 2019-08-02 2020-07-31 一种识别图像中票据数量、多个票据区域的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910713021.0A CN110428414B (zh) 2019-08-02 2019-08-02 一种识别图像中票据数量的方法及装置

Publications (2)

Publication Number Publication Date
CN110428414A CN110428414A (zh) 2019-11-08
CN110428414B true CN110428414B (zh) 2023-05-23

Family

ID=68414004

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910713021.0A Active CN110428414B (zh) 2019-08-02 2019-08-02 一种识别图像中票据数量的方法及装置

Country Status (1)

Country Link
CN (1) CN110428414B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021023111A1 (zh) * 2019-08-02 2021-02-11 杭州睿琪软件有限公司 一种识别图像中票据数量、多个票据区域的方法及装置
CN111598074B (zh) * 2020-05-21 2023-07-07 杭州睿琪软件有限公司 边缘检测方法和装置、电子设备和存储介质
CN112036232B (zh) * 2020-07-10 2023-07-18 中科院成都信息技术股份有限公司 一种图像表格结构识别方法、系统、终端以及存储介质
CN112308036A (zh) * 2020-11-25 2021-02-02 杭州睿胜软件有限公司 票据识别方法、装置及可读存储介质
CN112749731A (zh) * 2020-12-10 2021-05-04 航天信息股份有限公司 一种基于深度神经网络的票据数量识别方法及系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN204595989U (zh) * 2015-04-25 2015-08-26 周雪 一种智能识别票据图像特征的鉴别仪
CN109977907A (zh) * 2019-04-04 2019-07-05 厦门商集网络科技有限责任公司 基于票据识别的费用报销方法及其系统

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106296578B (zh) * 2015-05-29 2020-04-28 阿里巴巴集团控股有限公司 一种图像处理方法及装置
CN106447907B (zh) * 2016-09-18 2019-04-26 深圳怡化电脑股份有限公司 一种钞票图像异常的检测方法及装置
CN108537237A (zh) * 2018-04-04 2018-09-14 深圳怡化电脑股份有限公司 票据的特征区域提取方法、装置、设备和存储介质

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN204595989U (zh) * 2015-04-25 2015-08-26 周雪 一种智能识别票据图像特征的鉴别仪
CN109977907A (zh) * 2019-04-04 2019-07-05 厦门商集网络科技有限责任公司 基于票据识别的费用报销方法及其系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
一种新的基于特征线检取的票据识别算法;李琥,卜佳俊,陈纯;浙江大学学报(工学版)(第02期);全文 *

Also Published As

Publication number Publication date
CN110428414A (zh) 2019-11-08

Similar Documents

Publication Publication Date Title
CN110427932B (zh) 一种识别图像中多个票据区域的方法及装置
CN110428414B (zh) 一种识别图像中票据数量的方法及装置
CN111951290B (zh) 一种图像中物体的边缘检测方法及装置
CN112016438B (zh) 一种基于图神经网络识别证件的方法及系统
CN110135424B (zh) 倾斜文本检测模型训练方法和票证图像文本检测方法
US9245200B2 (en) Method for detecting a straight line in a digital image
CN111598074B (zh) 边缘检测方法和装置、电子设备和存储介质
CN110781885A (zh) 基于图像处理的文本检测方法、装置、介质及电子设备
CN111079772A (zh) 图像边缘提取处理方法、装置及存储介质
CN113592776A (zh) 图像处理方法及装置、电子设备、存储介质
CN110598703B (zh) 一种基于深度神经网络的ocr识别方法及装置
CN110298858B (zh) 一种图像裁剪方法及装置
CN110909809A (zh) 基于深度学习的卡证图像识别方法
CN110502977B (zh) 一种建筑物变化分类检测方法、系统、装置及存储介质
CN114331951A (zh) 图像检测方法、装置、计算机、可读存储介质及程序产品
CN111597845A (zh) 一种二维码检测方法、装置、设备及可读存储介质
CN108734846B (zh) 纸币图像的去噪方法及装置、终端及存储介质
CN112651953A (zh) 图片相似度计算方法、装置、计算机设备及存储介质
US11687886B2 (en) Method and device for identifying number of bills and multiple bill areas in image
CN110796130A (zh) 用于文字识别的方法、装置及计算机存储介质
CN114445825A (zh) 文字检测方法、装置、电子设备和存储介质
CN108230332B (zh) 文字图像的处理方法和装置、电子设备、计算机存储介质
Boiangiu et al. Handwritten documents text line segmentation based on information energy
WO2015114021A1 (en) Image capture using client device
CN113012110B (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
GR01 Patent grant
GR01 Patent grant