产生电子价格表的方法、计算设备和计算机可读存储介质与流程

文档序号:23157158发布日期:2020-12-04 13:52阅读:122来源:国知局
产生电子价格表的方法、计算设备和计算机可读存储介质与流程

本公开概括而言涉及计算机技术领域,更具体地,涉及一种产生电子价格表的方法、计算设备和计算机可读存储介质。



背景技术:

随着电子信息技术的发展,越来越多的传统行业开展了网上电子服务。在传统的购买交易中,销售方向购买方提供实体价格表或其扫描件,购买方根据实体价格表上的价格信息向销售方进行购买。然而,在通过网上电子商务平台进行交易时,销售方需要将实体价格表转换为电子价格表以通过平台呈现给购买方,对于各种微型或小型商户(如餐饮店铺、便利店、奶茶店等)来说,这是一个不容易完成的工作,并且这样产生的电子价格表仍然存着着格式不统一的问题。如果由电子商务平台来完成这一工作,传统上需要后台工作人员一个一个地手动录入,也是一件耗时且低效的工作。



技术实现要素:

针对上述问题,本公开提供了一种产生电子价格表的方案,通过对实体价格载体进行图像处理和识别来产生商品名称和价格的电子价格表,从而实现了高效的商品录入。

根据本公开的一个方面,提供了一种产生电子价格表的方法。该方法包括:获取实体价格载体的电子图像,其中该实体价格载体至少包括多个商品名称和与该多个商品名称分别对应的商品价格;对该电子图像进行透视校正以获得该电子图像的正视图;识别该电子图像的正视图以获取该实体价格载体的多个数据单元;基于商品价格的数字特征从该多个数据单元中确定候选价格单元集合;对该多个数据单元中除了该候选价格单元之外的数据单元按照高度分为多组数据单元;从该多组数据单元中选择元素个数最多的一组数据单元作为候选名称单元集合;以及基于该候选名称单元集合中的每个候选名称单元与该候选价格单元集合中的每个候选价格单元之间的位置关系将该候选名称单元与该候选价格单元配对以产生一个名称-价格对作为该电子价格表的一个项。

根据本公开的另一个方面,提供了一种计算设备。该计算设备包括:至少一个处理单元;以及至少一个存储单元,该至少一个存储单元被耦合到该至少一个处理单元并且存储用于由该至少一个处理单元执行的指令,该指令当由该至少一个处理单元执行时,使得该计算设备执行根据上述方法的步骤。

根据本公开的再一个方面,提供了一种计算机可读存储介质,其上存储有计算机程序代码,该计算机程序代码在被运行时执行如上所述的方法。

附图说明

通过参考下列附图所给出的本公开的具体实施方式的描述,将更好地理解本公开,并且本公开的其他目的、细节、特点和优点将变得更加显而易见。

图1示出了根据本公开的实施例的用于产生电子价格表的系统的示意图。

图2示出了根据本发明实施例的用于产生电子价格表的方法的流程图。

图3示出了根据本发明一些实施例的用于进行透视校正的步骤的流程图。

图4a示出了根据本发明实施例的实体价格载体的灰度图像的示意图。

图4b示出了根据本发明实施例的实体价格载体的边缘图像的示意图。

图4c示出了根据本发明实施例的实体价格载体的价格表部分的顶点的示意图。

图4d示出了根据本发明实施例的实体价格载体的电子图像的校正图的示意图。

图4e示出了根据本发明实施例的实体价格载体的电子图像的正视图的示意图。

图5示出了对实体价格载体的正视图进行识别获得的多个数据单元的示意图。

图6示出了根据本发明一些实施例的用于确定候选价格单元集合的步骤的流程图。

图7示出了根据本发明另一些实施例的用于确定候选价格单元集合的步骤的流程图。

图8示出了根据本发明实施例的用于产生多组数据单元的步骤的流程图。

图9示出了根据本发明实施例的用于对候选名称单元和候选价格单元进行配对的步骤的流程图。

图10示出了适合实现本公开的实施例的计算设备的结构方框图。

具体实施方式

下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整的传达给本领域的技术人员。

在下文的描述中,出于说明各种发明的实施例的目的阐述了某些具体细节以提供对各种发明实施例的透彻理解。但是,相关领域技术人员将认识到可在无这些具体细节中的一个或多个细节的情况来实践实施例。在其它情形下,与本申请相关联的熟知的装置、结构和技术可能并未详细地示出或描述从而避免不必要地混淆实施例的描述。

除非语境有其它需要,在整个说明书和权利要求中,词语“包括”和其变型,诸如“包含”和“具有”应被理解为开放的、包含的含义,即应解释为“包括,但不限于”。

在整个说明书中对“一个实施例”或“一些实施例”的提及表示结合实施例所描述的特定特点、结构或特征包括于至少一个实施例中。因此,在整个说明书的各个位置“在一个实施例中”或“在一些实施例”中的出现不一定全都指相同实施例。另外,特定特点、结构或特征可在一个或多个实施例中以任何方式组合。

此外,说明书和权利要求中所用的第一、第二等术语,仅仅出于描述清楚起见来区分各个对象,而并不限定其所描述的对象的大小或其他顺序等。

图1示出了根据本公开的实施例的用于产生电子价格表的系统1的示意图。如图1中所示,系统1包括多个客户端10和与多个客户端10通信的服务器20。这里,每个客户端10可以是电子商务平台的线下业务拓展人员携带的移动终端,如手机、平板电脑等。客户端10例如可以通过其上安装的企业应用程序与企业的服务器20通信,以向服务器20发送信息和/或从服务器20接收信息。客户端10和服务器20之间可以通过移动互联网等进行通信。客户端10和服务器20分别可以包括至少一个处理单元和与该至少一个处理单元耦合的至少一个存储单元,该存储单元中存储有可由该至少一个处理单元执行的指令,该指令在被该至少一个处理单元执行时执行如下所述的方法100的至少一部分。客户端10和服务器20的具体结构例如可以如下结合图10所述。

图2示出了根据本公开的一些实施例的用于产生电子价格表的方法100的流程图。方法100例如可以由图1中所示的系统1中的客户端10或服务器20单独执行,或者,可以由客户端10和服务器20结合执行。以下以非法100在服务器20中执行为例,结合图1至图10对方法100进行描述。

如图2中所示,在步骤110,服务器20获取实体价格载体的电子图像。这里,该实体价格载体的电子图像可以电子商务平台的线下业务拓展人员通过其客户端10拍摄或扫描的,并且由客户端10传送给服务器20。实体价格载体至少包括多个商品名称和与多个商品名称分别对应的商品价格。此外,实体价格载体还可能包括商户名称、地址、电话、商品分类等信息。

在步骤120,服务器20对步骤110获取的电子图像进行透视校正,以获得该电子图像的正视图。由于电子图像可能是由不专业的业务人员或商户拍摄的,或者实体价格载体粘贴或印刷在墙壁或桌面等处,造成步骤110得到的电子图像经常是倾斜的,并且这样得到的电子图像除了价格表部分之外不可避免地还会包括背景部分(如墙壁或桌面)。因此,在方法100中,需要首先对实体价格载体的电子图像进行预处理,以使其便于识别。

图3示出了根据本发明一些实施例的用于进行透视校正的步骤120的流程图。

如图3中所示,步骤120可以包括子步骤121,其中将该电子图像转换为灰度图像。图4a示出了根据本发明实施例的实体价格载体的灰度图像200的示意图。如图所示,灰度图像200可以包括价格表部分201和背景部分202。这里,默认步骤110获取的电子图像为彩色图像,因此在子步骤121中首先将该彩色的电子图像转换为灰度图像。然而,在一些情况下,如果在步骤110中获取的电子图像为灰度图像,则可以不执行子步骤121。

接下来,在子步骤122,对子步骤121获取的灰度图像200执行边缘检测以产生灰度图像200的边缘图像210。图4b示出了根据本发明实施例的实体价格载体的边缘图像210的示意图。边缘是图像中灰度值发生剧烈变化的区域的边界,通过对灰度图像200进行边缘检测来产生实体价格载体的边缘图像210。其中边缘检测可以使用现有技术中的各种已知的边缘检测方法,如一阶的robertscross算子、prewitt算子、sobel算子、kirsch算子、罗盘算子或者二阶的marr-hildreth、canny算子、laplacian算子等,或者,也可以使用未来开发的各种边缘检测方法,这些并不限制本发明的范围。

接下来,在子步骤123,对边缘图像210进行霍夫直线检测以获得价格表部分201的顶点坐标。图4c示出了根据本发明实施例的实体价格载体的价格表部分201的顶点211至214的示意图。霍夫直线检测的基本原理是利用点与线的对偶性,即图像空间中的直线与参数空间中的点是一一对应的,参数空间中的直线与图像空间中的点也是一一对应的,因此可以将图像空间中的直线检测问题转换到参数空间中对点的检测问题,通过在参数空间里寻找峰值来完成直线检测任务。如图4c中所示,通过霍夫直线检测,可以检测出灰度图像210的价格表部分201的四个顶点a211、b212、c213和d214,从而检测出顶点a、b、c、d构成的区域。这里,以价格表部分201为矩形为例进行了描述和展示,但是本领域技术人员可以理解,在价格表部分为其他形状的情况下,也可以类似的用其他霍夫变换来检测目标区域的形状。

接下来,在子步骤124,可以基于价格表部分201的顶点坐标确定电子图像的二维透视校正矩阵。具体地,由于拍摄角度等原因,当价格表部分201实质上为矩形的情况下,检测到的顶点a、b、c、d构成的区域并不是矩形。例如,如图4c所示,线段ab的长度明显小于线段cd的长度。在这种情况下,如果直接对边缘图像210进行识别,则很可能会将事实上相同大小的数据单位识别为不同大小。因此,在子步骤124,可以基于检测到的顶点a、b、c、d的坐标确定二维透视校正矩阵以将不规则的价格表区域abcd校正为标准的矩形区域。可以通过多种方式来确定二维透视校正矩阵。例如,可以对顶点a和d的纵坐标的平均值作为纵坐标,以顶点a和d的横坐标分别作为横坐标确定顶点a和d的校正顶点a'和d',以顶点a和d的横坐标分别作为横坐标,以顶点c的纵坐标作为纵坐标确定顶点c和b的校正顶点c'和b',来将不规则形状abcd校正为规则矩形a'b'c'd',同时对价格表部分201中的像素点进行相应的缩放来产生电子图像200的校正图。图4d示出了根据本发明实施例的实体价格载体的电子图像的校正图220的示意图。

此外,在一些情况下,根据上述子步骤121至124获得的校正图220为正视图,即文字朝向为正常阅读方向。然而,在一些情况下,根据上述子步骤121至124获得的校正图220可能不是正视图,而是倾斜图(如图4d所示)甚至是上下颠倒的图。在这种情况下,步骤120还可以包括子步骤125,其中对子步骤124获得的校正图220进行翻转角度校正以将其校正为正视图230。具体地,子步骤125中可以利用opencv或tensorflow矫正模型等对校正图220进行倾斜检测和旋转角度校正。图4e示出了根据本发明实施例的实体价格载体的电子图像的正视图230的示意图。

在获得了实体价格载体的电子图像的正视图230之后,方法100继续到步骤130,其中可以识别该电子图像的正视图230以获取实体价格载体的多个数据单元。具体地,可以利用各种文字识别方法(如光学字符识别ocr)来对正视图230进行识别,以获得多个数据单元。图5示出了对实体价格载体的正视图230进行识别获得的多个数据单元240-1、240-2、240-3……240-52、240-53(以下统称为数据单元240)的示意图。

接下来,在步骤140,基于商品价格的数字特征从多个数据单元240中确定候选价格单元集合。

如我们所知的,价格表上的商品价格可以表现为多种数字特征中的任一种。例如,其可以为纯数字(如以数字“12”表示商品价格是12元)型的数字特征,或者可以是价格单位(如“元”)、货币符号(如“¥”)、计量单位(如“/份”或“/杯”)这三者中至少一项与纯数字组合的数字特征。当然,对于一份价格表来说,其通常仅适用其中的一种数字特征。

图6示出了根据本发明一些实施例的用于确定候选价格单元集合的步骤140的流程图。

如图6中所示,步骤140可以包括子步骤142,其中从上述多种数字特征中任意选择一种数字特征对多个数据单元140进行匹配。

接下来,确定子步骤142所选择的数字特征是否与多个数据单元240中的至少一些相匹配。如果确定该数字特征与多个数据单元240都不匹配,则在子步骤144,从上述多种数字特征中选择不同于子步骤142所选择的数字特征的另一种数字特征,并且以重新选择的另一种数字特征对多个数据单元240进行匹配,直至寻找到与多个数据单元240中的至少一部分数据单元匹配的数字特征。并且在子步骤146,将子步骤144找到的该至少一部分数据单元确定为候选价格单元集合。

例如,如图5中所示,假设在子步骤142所选择的数字特征是纯数字与货币符号的组合(如“¥**”的形式,其中**表示任意数字),则根据该数字特征从数据单元240中无法找到匹配的数据单元。因此,在子步骤144,选择另一种数字特征,如纯数字与价格单位的组合(如“**元”的形式,其中**表示任意数字),并且将该数字特征与多个数据单元240进行匹配。在这种情况下,如图5中所示,可以发现数据单元240-3、240-5……240-53与该数字特征匹配,从而在子步骤146中可以将数据单元240-3、240-5……240-53的集合确定为候选价格单元集合。

也就是说,通过以多种数据特征依次匹配步骤130中识别的数据单元可以寻找到符合某种数据特征的数据单元,将所找到的数据单元确定为候选价格单元。

图7示出了根据本发明另一些实施例的用于确定候选价格单元集合的步骤140的流程图。

如图7中所示,步骤140可以包括子步骤142',其中从多个数据单元240中删除表示价格单位、货币符号和计量单位的字符以产生多个第二数据单元。如上所述,由于价格单位(如“元”)、货币符号(如“¥”)、计量单位(如“/份”或“/杯”)通常仅具有有限的可能性,并且这些字符几乎不会用于表示商品名称或其他商户信息,因此可以先对数据单元240进行初步处理,从所有数据单元240中删除这些特殊字符。这样,在删除所有这些特殊字符之后得到的数据单元中,表示价格的数据单元将是纯数字的形式。注意,对于价格单位“元”,由于其在表示价格时通常是以“**元”的形式出现的,即“元”之前有一个空格。因此在删除表示价格的字符时,可以删除以空格+元(“元”)的组合形式的特殊字符。

在执行了子步骤142'的预处理之后,在子步骤144',可以从删除了特殊字符的多个第二数据单元中选择仅包含数字的至少一部分第二数据单元,并将该至少一部分第二数据单元对应的数据单元240确定为候选价格单元集合(子步骤146')。

接下来,在步骤150,对多个数据单元(如数据单元240-1、240-2、240-3……240-52、240-53)中除了候选价格单元(如数据单元240-3、240-5……240-53)之外的数据单元(如数据单元240-1、240-2、240-4……240-52)按照高度分为多组数据单元。以下,将多个数据单元(如数据单元240-1、240-2、240-3……240-52、240-53)中除了候选价格单元(如数据单元240-3、240-5……240-53)之外的数据单元(如数据单元240-1、240-2、240-4……240-52)称为文本数据单元。

图8示出了根据本发明实施例的用于产生多组数据单元的步骤150的流程图。

如图8中所示,步骤150可以包括子步骤152,其中确定该多个文本数据单元240-1、240-2、240-4……240-52。在子步骤154,分别确定多个文本数据单元240-1、240-2、240-4……240-52的高度,并且在子步骤156,将多个文本数据单元240-1、240-2、240-4……240-52按照高度排序。

在子步骤158,将相邻文本数据单元240-1、240-2、240-4……240-52之间高度差值小于预定值的文本数据单元划分为一组数据单元。具体地,如图5中所示,在对文本数据单元240-1、240-2、240-4……240-52按照高度排序之后,发现文本数据单元240-1与其下一个文本数据单元(假设为240-2)之间的高度差大于预定值(如5个像素),而文本数据单元240-2、240-4……240-52之间的高度差都小于预定值,因此可以将文本数据单元240-1划分为一个组,将文本数据单元240-2、240-4……240-52划分为另一个组。注意,在图5所述的实例中,文本数据单元只包含两个不同的分组,但是在其他实例中,文本数据单元可以包含更多或更少的分组。

接下来,在步骤160,从多组数据单元中选择元素个数最多的一组数据单元作为候选名称单元集合。对于一个价格表来说,元素最多的数据单元应该是表示商品名称的数据单元(表示商品价格的数据单元在上述步骤140中已经筛除)。具体地,如图5中所示,数据单元240-2、240-4……240-52构成的分组中元素数量最多,因此将该分组确定为候选名称单元集合。

在文本识别时,并不会将候选价格单元和候选名称单元天然配对,因此方法100还包括步骤170,其中对候选价格单元和候选名称单元进行配对以产生真正的电子价格表。具体地,可以基于候选名称单元与候选价格单元之间的位置关系将候选名称单元与候选价格单元配对,以产生一个名称-价格对作为该电子价格表的一个项。

图9示出了根据本发明实施例的用于对候选名称单元和候选价格单元进行配对的步骤170的流程图。

如图9中所示,步骤170可以包括子步骤171,其中选择任意一个候选名称单元的文字排列方向作为第一维度,沿着该第一维度寻找与该候选名称单元对应的候选价格单元。例如,如图5中所示,可以选择候选名称单元240-2的文字排列方向(水平方向)作为第一维度,沿着该方向寻找与候选名称单元240-2对应的候选价格单元。

在子步骤172,确定沿着该第一维度是否找到对应的候选价格单元。如果确定找到了对应的候选价格单元(如数据单元240-3),即子步骤172的判断为“是”,则在子步骤174,确定该候选名称单元240-2与找到的候选价格单元240-3之间的距离是否小于预定距离阈值(例如20个像素)。

如果确定该候选名称单元240-2与找到的候选价格单元240-3之间的距离小于该预定距离阈值(子步骤174的判断为“是”),则在子步骤176,可以将该候选名称单元240-2与找到的候选价格单元240-3关联以产生一个名称-价格对作为电子价格表的一个项。

另一方面,如果确定没有找到对应的候选价格单元,即子步骤172的判断为“否”,则在子步骤173,沿着与第一维度垂直的第二维度(即垂直方向)寻找与该候选名称单元240-2对应的数据单元240,例如找到了数据单元240-4。

接下来,在子步骤175,确定沿着该第二维度找到的数据单元240-4是一个候选价格单元还是一个候选名称单元。如果确定找到的数据单元240-4是一个候选价格单元(子步骤175的判断为“是”),在子步骤176,将该候选名称单元240-2与该候选价格单元配对以产生该名称-价格对。也就是说,在这种情况下,价格表中的商品价格是放在商品名称下方的,这与图5中所示的商品价格放在商品名称右方的情况不同。事实上,在大多数价格表中,商品价格要么放在商品名称右方,要么放在商品名称下方,因此需要对这两种情况都予以考虑。

此外,如果确定沿着第二维度找到的与候选名称单元240-2对应的数据单元不是一个候选价格单元(子步骤175的判断为“否”),或者确定沿着第一维度找到的候选名称单元与候选价格单元之间的距离小于预定距离阈值(子步骤174的判断为“否”),则在子步骤177,启动熔断机制以将该候选名称单元240-2标记为异常数据单元。这是因为,当一个候选名称单元右方和下方都没有对应的候选价格单元(子步骤175的判断为“否”)时,可能是识别过程发生了错误以致于没有识别出有效的价格单元(例如由于字体原因将对应的价格“10”识别为字母“io”),或者该候选名称单元并不是表示商品名称的数据单元,而是一个表示商品其他信息的数据单元,如商品注释、商品类别等。此外,如果候选名称单元240-2与子步骤172找到的候选价格单元之间的距离大于预定距离阈值(子步骤174的判断为“否”),则有可能是价格表中存在多列名称-价格对,并且第一列的价格与第二列的名称没有被识别出来,从而在沿着第一维度的方向为第一列的名称单元寻找配对的价格单元时,找到的是第二列的价格单元,此处显然出现了配对错误。在这种情况下,通过设置熔断机制将该候选名称单元240-2设置为异常数据单元来避免产生错误的配对。

图10示出了适合实现本公开的实施例的计算设备1000的结构方框图。计算设备1000例如可以是如上所述的客户端10或服务器20。

如图10中所示,计算设备1000可以包括一个或多个中央处理单元(cpu)1010(图中仅示意性地示出了一个),其可以根据存储在只读存储器(rom)1020中的计算机程序指令或者从存储单元1080加载到随机访问存储器(ram)1030中的计算机程序指令,来执行各种适当的动作和处理。在ram1030中,还可存储计算设备1000操作所需的各种程序和数据。cpu1010、rom1020以及ram1030通过总线1040彼此相连。输入/输出(i/o)接口1050也连接至总线1040。

计算设备1000中的多个部件连接至i/o接口1050,包括:输入单元1060,例如键盘、鼠标等;输出单元1070,例如各种类型的显示器、扬声器等;存储单元1080,例如磁盘、光盘等;以及通信单元1090,例如网卡、调制解调器、无线通信收发机等。通信单元1090允许计算设备1000通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。

上文所描述的方法100例如可由计算设备1000(如客户端10或服务器20)的cpu1010执行。例如,在一些实施例中,方法100可被实现为计算机软件程序,其被有形地包括于机器可读介质,例如存储单元1080。在一些实施例中,计算机程序的部分或者全部可以经由rom1020和/或通信单元1090而被载入和/或安装到计算设备1000上。当计算机程序被加载到ram1030并由cpu1010执行时,可以执行上文描述的方法100的一个或多个操作。此外,通信单元1090可以支持有线或无线通信功能。

本领域技术人员可以理解,图10所示的计算设备1000仅是示意性的。在一些实施例中,客户端10或者服务器20可以包含比计算设备1000更多或更少的部件。

利用本发明的方案,通过对实体价格载体进行图像处理和识别,产生商品名称和价格的电子价格表,从而实现了高效的商品录入。

以上结合附图对根据本发明的用于产生电子价格表的方法100以及可用作客户端10或服务器20的计算设备1000进行了描述。然而本领域技术人员可以理解,方法100的步骤的执行并不局限于图中所示和以上所述的顺序,而是可以以任何其他合理的顺序来执行。此外,计算设备1000也不必须包括图10中所示的所有组件,其可以仅仅包括执行本发明中所述的功能所必须的其中一些组件,并且这些组件的连接方式也不局限于图中所示的形式。

本公开可以是方法、装置、系统和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于执行本公开的各个方面的计算机可读程序指令。

在一个或多个示例性设计中,可以用硬件、软件、固件或它们的任意组合来实现本公开所述的功能。例如,如果用软件来实现,则可以将所述功能作为一个或多个指令或代码存储在计算机可读介质上,或者作为计算机可读介质上的一个或多个指令或代码来传输。

本文公开的装置的各个单元可以使用分立硬件组件来实现,也可以集成地实现在一个硬件组件,如处理器上。例如,可以用通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或其它可编程逻辑器件、分立门或者晶体管逻辑、分立硬件组件或用于执行本文所述的功能的任意组合来实现或执行结合本公开所描述的各种示例性的逻辑块、模块和电路。

本领域普通技术人员还应当理解,结合本公开的实施例描述的各种示例性的逻辑块、模块、电路和算法步骤可以实现成电子硬件、计算机软件或二者的组合。

本公开的以上描述用于使本领域的任何普通技术人员能够实现或使用本公开。对于本领域普通技术人员来说,本公开的各种修改都是显而易见的,并且本文定义的一般性原理也可以在不脱离本公开的精神和保护范围的情况下应用于其它变形。因此,本公开并不限于本文所述的实例和设计,而是与本文公开的原理和新颖性特性的最广范围相一致。

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