一种条形码的识别方法和装置
技术领域
本申请涉及计算机技术领域,尤其涉及一种条形码的识别方法和装置。
背景技术
随着互联网技术的快速发展,条形码走进了人们的生活,通过对条形码的扫描与识别,可以完成支付、添加好友、获取信息等各种业务。条形码的识别速率已成为用户业务体验的重要衡量标准。
发明内容
有鉴于此,本申请提供一种条形码的识别方法和装置。
具体地,本申请是通过如下技术方案实现的:
一种条形码的识别方法,所述方法包括:
根据预设的提取策略,在条形码图片中提取一行像素点;
对该行像素点进行解析,以得到对应的第一字符串;
当所述第一字符串满足预设的字符规则时,将所述第一字符串确定为所述条形码图片中条形码的识别结果。
一种条形码的识别装置,所述装置包括:
像素点提取单元,根据预设的提取策略,在条形码图片中提取一行像素点;
像素点解析单元,对该行像素点进行解析,以得到对应的第一字符串;
第一识别单元,当所述第一字符串满足预设的字符规则时,将所述第一字符串确定为所述条形码图片中条形码的识别结果。
由以上描述可以看出,由于大部分条形码携带的字符串都满足预设的字符规则,因此本申请可以在条形码图片中一行像素点对应的字符串满足所述字符规则时,将该字符串确定为条形码的识别结果,无需多次解析,大大提高了条形码的识别速率。
附图说明
图1是本申请一示例性实施例示出的一种条形码的识别方法的流程示意图。
图2是本申请一示例性实施例示出的另一种条形码的识别方法的流程示意图。
图3是本申请一示例性实施例示出的一种用于条形码的识别装置的一结构示意图。
图4是本申请一示例性实施例示出的一种条形码的识别装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
图1是本申请一示例性实施例示出的一种条形码的识别方法的流程示意图。
请参考图1,所述条形码的识别方法可以应用在手机、平板电脑等终端设备中,包括有以下步骤:
步骤101,根据预设的提取策略,在条形码图片中提取一行像素点。
在本实施例中,终端设备在扫描条形码后,可以获得包括有条形码的图片,为便于后续识别,终端设备可以对所述包括有条形码的图片进行压缩、灰度化、二值化等处理,这部分的处理与实现可以参考相关技术,本申请在此不再一一赘述。
在本实施例中,可以将经过压缩、灰度化、二值化等处理后的所述包括有条形码的图片称为条形码图片。在本步骤中,可以根据预设的提取策略,在所述条形码图片中提取一行像素点。其中,所述预设的提取策略是以行为单位进行像素点的提取,具体可以由开发人员进行设置。
在一个例子中,可以从缺省的行开始,间隔固定的行数进行像素点的提取,直至目标提取行超出所述条形码图片。假设,将所述缺省的行设置为所述条形码图片的第1行,所述固定的行数可以为10。依据这样的提取策略,第一次提取所述条形码图片的第1行像素点,第二次提取所述条形码图片的第11行像素点,第三次提取所述条形码图片的第21行像素点,第N次提取所述条形码图片的第1+(N-1)×10行像素点,直至所述第1+(N-1)×10行像素点超出所述条形码图片,结束像素点的提取。当然,所述缺省的行也可以是所述条形码图片的第2行,所述固定的行数也可以是15行等,本申请对此不做特殊限制。
在另一个例子中,还可以从缺省的行开始,间隔动态变化的行数进行像素点的提取,直至目标提取行超出所述条形码图片。假设,将所述缺省的行设置为所述条形码图片的第1行,间隔的行数在10和20这两个数值之间变化。依据这样的提取策略,第一次提取所述条形码图片的第1行像素点,第二次提取所述条形码图片的第11行像素点,第三次提取所述条形码图片的第31行像素点,第四次提取所述条形码图片的第41行像素点,第五次提取所述条形码图片的第61行,依次类推,直至目标提取行超出所述条形码图片,结束像素点的提取。
步骤102,对该行像素点进行解析,以得到对应的第一字符串。
基于前述步骤101,在提取到一行像素点后,可以对这行像素点进行解析,以得到对应的第一字符串。需要说明的是,依据条形码的组成规则,所述条形码中通常会包含校验码,针对包含有校验码的条形码,所述解析得到第一字符串通常已通过校验码的校验。当然,还有一些条形码中不包含校验码,针对不包含校验码的条形码,所述第一字符串未进行校验。这部分的处理与实现可以参照相关技术,本申请在此不再一一赘述。
步骤103,当所述第一字符串满足预设的字符规则时,将所述第一字符串确定为所述条形码图片中条形码的识别结果。
基于前述步骤102,在得到所述第一字符串之后,可以判断所述第一字符串是否满足预设的字符规则,如果所述第一字符串满足所述字符规则,则可以确定所述第一字符串为所述条形码图片中条形码的识别结果。
在本实施例中,所述字符规则可以由开发人员进行设置,比如:不存在连续的预设字符,所述预设字符通常不包括:26个大小写字母、0至9以及空格,即所述预设字符可以为除26个大写字母、26个小写字母、0至9以及空格之外的其他字符,比如:字符“&”、字符“%”、字符“#”等。具体地,在实际应用中,条形码中出现连续的所述预设字符的概率几乎为0,因此在本步骤中,可以判断所述第一字符串是否不存在连续的所述预设字符,如果所述第一字符串不存在连续的所述预设字符,则可以确定所述第一字符串为条形码的识别结果。当然,在实际的应用中,根据条形码的携带的字符串的特点,开发人员还可以设置其他的字符规则,比如:国产商品的条形码前三位通常为690-699,针对国产商品的条形码,所述字符规则还可以包括前三位在690至699之间等。
由以上描述可以看出,由于大部分条形码携带的字符串都满足预设的字符规则,因此本申请可以在条形码图片中一行像素点对应的字符串满足所述字符规则时,将该字符串确定为条形码的识别结果,无需多次解析,大大提高了条形码的识别速率。
可选的,在本申请另一个例子中,基于图1所示的实施例,为提高条形码识别的准确率,当步骤102中解析得到的第一字符串不满足预设的字符规则时,可以继续判断所述第一字符串与上一次根据所述提取策略在所述条形码图片中提取的除所述第一字符串对应的行之外其他一行像素点对应的第二字符串是否相同,并在所述第一字符串与所述第二字符串相同时,将所述第一字符串确定为条形码的识别结果。
具体地,虽然将近100%的条形码中携带的字符串均满足所述预设的字符规则,但为了避免条形码中携带不满足所述字符规则的字符串,采用图1所示的方式导致条形码识别错误的问题,当步骤102中解析得到的所述第一字符串不满足预设的字符规则时,可以继续判断连续两次提取的像素点的解析结果是否一致,如果一致,则可以将一致的解析结果确认为条形码的识别结果,以提高条形码识别的准确率。如果不一致,则可以基于预设的提取策略继续提取像素点,并判断本次提取的像素点对应的字符串是否满足所述字符规则,直至某行像素点对应的字符串满足所述字符规则,或者连续两次提取的像素点对应的字符串一致。
由以上描述可以看出,本申请在基于字符规则无法识别出条形码携带的字符串时,可以判断连续两次提取的像素点对应的字符串是否相同,并将相同的字符串确定为条形码的识别结果,进而提高条形码识别的准确率。当然,在实际应用中,为进一步提高条形码识别的准确率,在基于字符规则无法识别出条形码携带的字符串时,还可以判断连续三次或四次提取的像素点对应的字符串是否相同,并将连续三次或四次相同的字符串作为条形码的识别结果,本申请对此不作特殊限制。
可选的,在本申请另一个例子中,当目标提取行超出条形码图片时,如果基于前述字符规则和连续两次字符串相同的方案仍未确定出条形码的识别结果,则可以统计已解析得到的各个字符串的出现频数,并将出现频数最大且大于1的字符串确定为条形码图片中条形码的识别结果。举例来说,假设已解析得到两个字符串,分别为字符串A和字符串B,字符串A出现3次,字符串B出现1次,则可以将字符串A确定为条形码的识别结果。本申请可以根据解析出的字符串的出现频数对前述方式无法识别的条形码图片进行补充识别,提高了条形码识别的准确率。可以理解的是,在实际实现中,还可以将确定条形码识别结果的出现频数设置为大于2或者大于3等,以进一步提高条形码识别的准确率,比如:针对不包含校验码的条形码,可以设置较大的出现频数。在本实施例中,如果已解析得到的各字符串的出现频数均为1,则可以确定条形码识别失败。另一方面,当目标提取行超出所述条形码图片时,如果仍未解析得到任何字符串,也可以确定条形码识别失败。
在本申请中,基于字符规则对条形码进行识别的速率最快,且能够识别出绝大多数的条形码,因此,本申请可先基于字符规则对条形码进行识别。而采用连续两次提取的像素点对应的字符串相同方式进行识别的速率其次,因此,本申请可以将其作为字符规则识别方式的补充识别方式。而采用出现频数进行识别的速率最慢,故本申请将其作为前两种识别方式的补充识别方式。由此可以看出,本申请可以采用三种识别方式对条形码进行识别,在兼顾识别速率的同时还可提高条形码识别的准确率。
图2是本申请一示例性实施例示出的另一种条形码的识别方法的流程示意图。
请参考图2,本例中条形码的识别方法可以包括以下步骤:
步骤201,根据预设的提取策略,在条形码图片中提取缺省行像素点。
在本实施例中,假设经终端设备进行压缩、灰度化、二值化等处理之后得到的条形码图片一共有40行像素点,缺省的行为第1行,预设的提取策略为间隔10行进行像素点的提取。在本步骤中,首次提取所述条形码图片的第1行像素点。
步骤202,对该行像素点进行解析,以得到对应的字符串A。
在本步骤中,解析所述条形码图片的第1行像素点,得到对应的字符串A。
步骤203,判断所述字符串A是否满足预设的字符规则。如果所述字符串A不满足所述字符规则,则可以执行步骤204。如果所述字符串A满足所述字符规则,则可以执行步骤208。
步骤204,根据所述提取策略,在条形码图片中再提取一行像素点。
基于前述步骤203的判断结果,当所述条形码图片的第1行像素点对应的字符串A不满足所述字符规则时,根据所述提取策略,可以提取所述条形码图片的第11行像素点。
步骤205,对该行像素点进行解析,以得到对应的字符串B。
基于前述步骤204,可以对所述第11行像素点进行解析,以得到对应的字符串B。
步骤206,判断所述字符串B是否满足所述字符规则。如果所述字符串B满足所述字符规则,则可以执行步骤208。如果所述字符串B不满足所述字符规则,则可以执行步骤207。
步骤207,判断所述字符串B和上一次提取的像素点对应的字符串(所述字符串A)是否相同。如果相同,则可以执行步骤208。如果不相同,则可以继续执行步骤204。
基于前述步骤206的判断结果,当所述条形码图片的第11行像素点对应的字符串B也不满足所述字符规则时,可以判断所述字符串B与所述字符串A是否相同,如果相同,则可以执行步骤208。
步骤208,确定条形码的识别结果。
基于前述步骤203的判断结果,当所述条形码图片的第1行像素点对应的字符串A满足所述字符规则时,可以将所述字符串A确定为条形码的识别结果。
基于前述步骤206的判断结果,当所述条形码图片的第11行像素点对应的字符串B满足所述字符规则时,可以将所述字符串B确定为条形码的识别结果。
基于前述步骤207的判断结果,当所述字符串B与所述字符串A相同时,可以将所述字符串B确定为条形码的识别结果。
在本实施例中,如果步骤207中确定所述字符串B与所述字符串A不相同,则可以再次执行步骤204,提取所述条形码图片的第21行像素点,并继续执行步骤203解析所述第21行像素点,以得到对应的字符串C。判断所述字符串C是否满足所述字符规则,如果满足,则可以将所述字符串C确定为条形码的识别结果。如果所述字符串C不满足所述字符规则,则判断所述字符串C与所述字符串B是否相同,如果相同,则也可以将所述字符串C确定为条形码的识别结果。如果不相同,则可以继续提取所述条形码图片的第31行,并通过解析得到第31行像素点对应的字符串D,如果字符串D不满足所述字符规则,且字符串D与字符串C也不相同,而第41行像素点又已经超出了条形码图片,则可以统计各个字符串的出现频数,并将出现频数最高且大于1的字符串确定为条形码的识别结果。如果各字符串的出现频数均为1,则可以确定条形码识别失败。
与前述条形码的识别方法的实施例相对应,本申请还提供了条形码的识别装置的实施例。
本申请条形码的识别装置的实施例可以应用在终端设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在终端设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图3所示,为本申请条形码的识别装置所在终端设备的一种硬件结构图,除了图3所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的终端设备通常根据该终端设备的实际功能,还可以包括其他硬件,对此不再赘述。
图4是本申请一示例性实施例示出的一种条形码的识别装置的框图。
请参考图4,所述条形码的识别装置300可以应用在前述图3所示的终端设备中,包括有:像素点提取单元301、像素点解析单元302、第一识别单元303、相同判断单元304、第二识别单元305、频数统计单元306、第三识别单元307、第四识别单元308以及第五识别单元309。
其中,像素点提取单元301,根据预设的提取策略,在条形码图片中提取一行像素点;
像素点解析单元302,对该行像素点进行解析,以得到对应的第一字符串;
第一识别单元303,当所述第一字符串满足预设的字符规则时,将所述第一字符串确定为所述条形码图片中条形码的识别结果。
相同判断单元304,当所述第一字符串不满足所述字符规则时,判断所述第一字符串与上一次根据所述提取策略在所述条形码图片中提取的除所述第一字符串对应的行之外其他一行像素点对应的第二字符串是否相同;
第二识别单元305,当所述第一字符串与所述第二字符串相同时,将所述第一字符串确定为所述条形码图片中条形码的识别结果,当所述第一字符串与所述第二字符串不相同时,返回根像素点提取单元。
可选的,所述提取策略为从缺省的行开始,间隔固定的行数进行像素点的提取,直至目标提取行超出所述条形码图片。
可选的,所述提取策略为从缺省的行开始,间隔动态变化的行数进行像素点的提取,直至目标提取行超出所述条形码图片。
频数统计单元306,当目标提取行超出所述条形码图片时,统计已解析得到的各字符串的出现频数;
第三识别单元307,将出现频数最大,且大于1的字符串确定为所述条形码图片中条形码的识别结果。
第四识别单元308,当已解析得到的各字符串的出现频数均为1时,确定条形码识别失败。
第五识别单元309,当目标提取行超出所述条形码图片时,如果未解析得到任何字符串,则确定条形码识别失败。
可选的,所述字符规则为不存在连续的预设字符,所述预设字符不包括:26个大小写字母、0至9以及空格。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。