掌桥专利:专业的专利平台
掌桥专利
首页

身份证号识别方法、系统和相关设备

文献发布时间:2024-04-18 20:01:30


身份证号识别方法、系统和相关设备

技术领域

本申请实施例涉及数据处理技术领域,尤其涉及身份证号识别方法、系统和相关设备。

背景技术

随着互联网的发展,个人信息的安全越来越受重视。实际情形中,由于网络上公开发布的文本,可能会携带身份证号码,从而导致身份信息等泄露。因此,为预防信息泄露的风险,需要识别出公开发布的文本中的身份证号码,以提示用户注重个人信息安全。

然而,传统识别文本中身份证号的方式,是基于正则表达式识别,但正则表达式在匹配文本时,容易因为字符串回溯的问题,导致识别效率低。故针对于此,有必要提供有效的解决方案。

发明内容

本申请实施例提供了身份证号识别方法、系统和相关设备,用于提高对待测文段中身份证号码的识别效率。

本申请实施例第一方面提供一种身份证号识别方法,包括:

获取身份证号记录结构;所述身份证号记录结构以公共前缀的形式记录各身份证号码,所述公共前缀指多串身份证号码中存在相同的前序号码;

识别待测文段中是否携带所述身份证号记录结构记有的身份证号码,并输出识别结果。

可选地,所述身份证号记录结构包括字典树或以公共前缀形式排布的列表。

可选地,所述身份证号记录结构为字典树时,所述获取身份证号记录结构包括:

按字符排列顺序,将所述各身份证号码中的地区码值转移到地区码字典树的子节点以构成地区码字典树,将所述各身份证号码中的生日日期值转移到生日字典树的子节点以构成生日字典树;

在所述地区码字典树的根节点下加入判断节点;所述判断节点用于判断所述待测文段中数字字符的前一字符是否为数字,并在所述前一字符为非数字时,开放所述数字字符及之后字符对所述地区码字典树的遍历权限;

根据宽度优先搜索算法对每一字典树的节点设置失败状态函数fail(n)=m;所述fail(n)=m表示,字典树中根节点到n节点连成的字符值在字典树中对应的最长后缀字符串为,根节点到m节点连成的字符值;对于所述待测文段中相邻出现的前一数字字符、后一数字字符,当所述n节点含所述前一数字字符而所述n节点的子节点未含有所述后一数字字符时,所述fail(n)=m驱使退回所述n节点指向的失败节点m,以基于所述失败节点m查找含所述后一数字字符的节点,直至退回到根节点仍无相匹配的子节点,则确定所述后一数字字符在所述字典树中匹配失败。

可选地,所述身份证号记录结构为字典树时,所述识别待测文段中是否携带所述身份证号记录结构记有的身份证号码,包括:

根据地区码字典树获取所述待测文段中的地区码值,以及所述地区码值在所述待测文段中的起始位置和终止位置;

判断所述起始位置起的第16位字符是否为数字;

若是数字,则识别所述终止位置后是否接续有8位数的生日数字、3位数的顺序码及相应的校验码;所述校验码根据所述地区码值、所述生日数字和所述顺序码算得;

若不是数字,则识别所述终止位置后是否接续有6位数的生日数字、3位数的顺序码;

在识别结果均为是时,确定所述待测文段含有身份证号码。

可选地,所述识别所述终止位置后是否接续有8位数的生日数字、3位数的顺序码及相应的校验码,包括:

判断所述起始位置起的第19位字符是否为数字,及所述起始位置到第17位的字符串中是否有非数字的字符,若其中一判断结果为是,则确定所述待测文段没有身份证号码;

若每一判断结果均为否,则调用最长路径连成的字符串为八位的生日字典树,校验所述地区码值后的8位字符是否为生日数字;

若所述终止位置后的8位字符为生日数字,且所述起始位置起的第18数字等于所述校验码,则确定所述待测文段含有由所述地区码值、所述生日数字、所述顺序码、所述校验码组成的18位身份证号码。

可选地,识别所述终止位置后是否接续有6位数的生日数字、3位数的顺序码,包括:

判断所述终止位置后的9位字符是否均为数字;

在均为数字时,调用最长路径连成的字符串为六位的生日字典树,校验所述终止位置后的6位字符是否为生日数字,并在为生日数字时,确定所述待测文段含有由所述地区码值、所述生日数字、所述顺序码组成的15位身份证号码。

可选地,所述输出识别结果,包括:

输出所述待测文段携带的身份证号码、所述身份证号码在所述待测文段中的位置信息、关联字符中的至少一种结果;所述关联字符包含所述待测文段中与所述身份证号码有预设位置关系的字符。

本申请第一方面所述的方法在具体实施时可采用本申请第二方面所述的内容实现。

本申请实施例第二方面提供一种身份证号识别系统,包括:

获取单元,用于获取身份证号记录结构;所述身份证号记录结构以公共前缀的形式记录各身份证号码,所述公共前缀指多串身份证号码中存在相同的排先号码;

处理单元,用于识别待测文段中是否携带所述身份证号记录结构记有的身份证号码,并输出识别结果。

本申请实施例第三方面提供一种电子设备,包括:

中央处理器,存储器以及输入输出接口;

所述存储器为短暂存储存储器或持久存储存储器;

所述中央处理器配置为与所述存储器通信,并执行所述存储器中的指令操作以执行本申请实施例第一方面或第一方面的任一具体实现方式所描述的方法。

本申请实施例第四方面提供一种计算机可读存储介质,包括指令,当所述指令在计算机上运行时,使得计算机执行如本申请实施例第一方面或第一方面的任一具体实现方式所描述的方法。

本申请实施例第五方面提供一种包含指令或计算机程序的计算机程序产品,当所述计算机程序产品在计算机上运行时,使得计算机执行如本申请实施例第一方面或第一方面的任一具体实现方式所描述的方法。

从以上技术方案可以看出,本申请实施例至少具有以下优点:

本申请实施例以公共前缀的形式记录各身份证号码,有助于降低对相似身份证号码的存储空间和查询时间,减少待测文段与大量身份证号码之间的字符比较流程,从而加快对待测文段中身份证号码的识别效率,高效预防身份信息泄露。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。

需要说明的是,虽然各实施例所涉及的流程性示意图(若存在)中各个步骤按照箭头的指示依次绘制,但除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。

图1至图2为本申请实施例身份证号识别方法的流程示意图;

图3为传统Trie树的一个结构示意图;

图4为本申请实施例地区码Trie树的一个结构示意图;

图5为本申请实施例电子设备的一个结构示意图。

具体实施方式

为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。

本申请的说明书和权利要求书及附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

在以下的描述中,涉及到“一个具体实施方式”或“一个具体示例”等类似表达,其描述了所有可能实施例的子集,但是可以理解,“一个具体实施方式”或“一个具体示例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。在以下的描述中,涉及到的术语多个是指至少两个。本申请所说的某数值达到阈值(如果存在),在一些具体示例中,可包括前者大于阈值后者的情况;若提及“任意”或“至少一”等类似表述,具体可指所列举示例中的任一种示例或这些示例之间的任意组合。

除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。

下面将对本申请的方法做进一步的详细说明。

请参阅图1,本申请第一方面提供一种身份证号识别方法的一个具体实施例,该实施例包括如下操作步骤:

步骤11、获取身份证号记录结构。

所述身份证号记录结构以公共前缀的形式记录各身份证号码,所述公共前缀指多串身份证号码中存在相同的前序号码。

众所众知,中国公民的身份证号码有18位和15位两种。其中,18位的格式为:6位地区码+yyyyMMdd格式生日日期+3位顺序码+1位校验位,15位的格式为:6位地区码+yyMMdd格式生日日期+3位顺序码,上述地区码为中国行政区划代码,遵循中国国家标准GB/T 2260。因此,不少公民的身份证号码中有相同的号码,有鉴于此,为避免记录大量身份证号码带来的资源损耗和查询用时,可以公共前缀的形式记录各身份证号码。

步骤12、识别待测文段中是否携带所述身份证号记录结构记有的身份证号码,并输出识别结果。

基于身份证号记录结构对身份证号码进行枚举甚至是穷举式的记录,可用于判断待测文段中是否含有身份证号码,从而提示用户注重文本的传输安全,以防带来身份信息等的泄露风险。

综上,本申请实施例以公共前缀的形式记录各身份证号码,有助于降低对相似身份证号码的存储空间和查询时间,减少待测文段与大量身份证号码之间的字符比较流程,从而加快对待测文段中身份证号码的识别效率,高效预防身份信息泄露。

在上述示例说明的基础上,下面将提供一些具体的可能实施示例,实际应用中,这些示例之间的实施内容可根据相应的功能原理、应用逻辑由需地结合或单独实施,具体可由实际场景而定。

请参阅图1至图4,本申请提供一种身份证号识别方法的另一些具体实施例,该实施例包括如下操作步骤:

步骤11、获取身份证号记录结构。

在一些具体示例中,身份证号记录结构包括字典树或以公共前缀形式排布的列表。其中,字典树的基本性质有:根节点不包含字符,除根节点外每一个节点都只包含一个字符;从根节点到某一子节点的路径上字符连接起来,就是该子节点对应的字符串;每个节点的所有子节点包含的字符都不相同。以公共前缀形式排布的列表可如表1所示,对于由4位数构成的每一串号码,第2行、第4行的空数位,表示与在先行的同数位有相同的数值,如第2行、第4行构成的号码为4589、1567。

表1列表形式的身份证号记录结构

下面详细说明字典树(即Trie树)的构建过程,因Trie树为AC自动机的基本构成,故本申请实施例中,构建Trie树的过程可以引申为构建AC自动机。AC自动机是一种多模式匹配算法,它由贝尔实验室Ahoh和Corasick于1975年发明,其核心算法是通过寻找模式串相同前缀,进行每次失配的高效跳转,具有线性复杂度,主要应用于字符匹配。

以身份证号特征中的地区码为例,构建地区码字典树即构建a类AC自动机(可称AC自动机a):如图2所示,以地区码列表作为模式串列表构建AC自动机a。具体的,(1)传统AC自动机是根据输入的模式串(即字符串模式)列表,以root为根状态节点State(0),遍历每个模式串的字符值构建Trie树的其他状态节点State(1)、State(2)…State(n),以及构建每个节点的转移函数success(m,a)=State(n),该转移函数表示节点State(m)将字符a匹配到节点State(n),可理解为将字符值a转存到节点State(n)。记录叶子节点也就是记录模式串的值,例如,当字符串模式列表为{abd,abck,abchi,chni,nitf}时,所构建出的Trie树如图3,其每个状态节点转移匹配的值是精确的。因此,在一些具体示例中,身份证号记录结构为字典树时,步骤11的实施过程可包括(即构建身份证号对应的Trie树):按字符排列顺序,将各身份证号码中的地区码值转移到地区码字典树的子节点以构成地区码字典树,将各身份证号码中的生日日期值转移到生日字典树的子节点以构成生日字典树;在地区码字典树的根节点下加入判断节点;判断节点用于判断待测文段中数字字符的前一字符是否为数字,并在前一字符为非数字时,开放数字字符及之后字符对地区码字典树的遍历权限;根据宽度优先搜索算法对每一字典树的节点设置失败状态函数fail(n)=m;fail(n)=m表示,字典树中根节点到n节点连成的字符值在字典树中对应的最长后缀字符串为,根节点到m节点连成的字符值;对于待测文段中相邻出现的前一数字字符、后一数字字符,当n节点含前一数字字符而n节点的子节点未含有后一数字字符时,fail(n)=m驱使退回n节点指向的失败节点m,以基于失败节点m查找含后一数字字符的节点,直至退回到根节点仍无相匹配的子节点,则确定后一数字字符在字典树中匹配失败。就上述fail(n)=m而言,本申请实施例的失败节点m指,比匹配节点n(含上述前一数字字符)的层级更高(高出至少一层级)的节点,此处高出的层级数,具体可由Trie树的节点值等实际情况而定。

如图2和图4所示,可根据中国公民的身份证信息特征,即排先的字符为数字,可知,身份证号码这类文本串的前一位字符不能为数字,由此可在传统AC自动机的root节点(根节点)下加一个非数字状态节点即判断节点State(nonumer),使得由root→State(nonumber)的状态转移函数不是转移精确的字符值,而是转移一个用以判断字符是否为数字的匹配函数check(number),即此处的转移函数可记为success(0,check(number))=State(nonumber)。加入判断节点State(nonumer)后,参考上述传统AC自动机的步骤(1),在非数字状态节点State(nonumber)之下,以地区码列表(大量的身份证地区码)作为模式串列表,构建出的地区码Trie树可如图4所示。

如上构建好地区码Trie树之后,可以根据宽度优先搜索(BFS,Depth-First-Search)算法构建fail状态表,可记为失败状态函数fail(n)=m。为便于说明和理解,本申请实施例图3对应的Fail状态表可如表2所示,其中表示,可根据最长后缀值(由根节点出发)找出State(n)所指向的失败节点State(m),例如,节点n=4对应(最长后缀值为c)的失败节点为节点8,节点n=6对应(最长后缀值为ch)的失败节点为节点9:

表2失败状态转移表

该fail(n)=m函数表示,当节点State(n)匹配下一个节点失败时,即State(n)之后找不到所需的目标节点(需含有目标字符)时,应该退回在State(n)上层的最佳节点State(m)(即失败节点),以期另由他径root→State(m)试找可充当目标子节点的节点,该root→State(m)路径形成的字符串含root→State(n)路径的最长后缀值。可以理解为,State(n)匹配下一个节点失败时,对于root→State(n)路径中从State(n)节点起往前连成的各字符串(即后缀值),可另寻以root节点起的其他路径,该其他路径最多能连成的相同字符串即前述最长后缀值。换言之,该fail函数的取值为root→State(n)路径中最长后缀值(以根节点开头)指向的State(m)节点编号m,其中,root节点下层级数depth=1的子节点State(x)的fail(State(x))=0,x可包含编号1。如图3所示,面对待测字符串abchef,从字符a开始逐个找各字符在字典树中的匹配节点(该节点需同样含该字符),该匹配顺序是,从root节点起找到a的匹配节点State(1),同理,接着找b的匹配节点State(2),再接着找c的匹配节点State(4)、h的匹配节点State(6),至此abch连着都在字典树中找到了相应的记录值即匹配成功,对应的root→State(6)路径含有后缀值ch、bch、abch;但是,State(6)之后预找匹配的下一节点却没有e,即State(6)→State(7)匹配失败,失败节点编号为6,则可以根据fail函数的指向退回到State(6)的失败节点State(9),因为该字典树中root→State(9)路径记有最长后缀值ch,之后,看该支线root→State(9)是否跟有含e的节点,没有就再找另一路径,若一直找不到,则fail函数最终会指向退回root节点,至此表示完全地匹配失败。而后,可以e开头找f的匹配节点,直至匹配流程结束。

参考上述对fail函数的说明,下面介绍fail函数在身份证号检索场景中的应用:遍历待测文段中的每个字符,初始状态为State(0),根据当前字符值和success(m,a)转移函数,获取或匹配字符值a在trie树的状态State(n),若获取成功,记当前状态为State(n),继续匹配下一字符值,直到叶子节点,并可以记录trie树中State(0)到叶子节点连成的字符串值,及该字符串值在待测文段中的位置(含起始位置和终止位置),然后跳转到当前叶子结点对应的失败节点进行匹配,直到最后一个字符匹配结束,其中若有获取失败,则根据fail表到相应状态(即节点)再尝试匹配,直到fail表的值为0也就是退回到State(0)(因为退回到根节点已无路可退)。如此,最终可以返回匹配到的信息列表list,该list可含在trie树中匹配到的字符(串)值,及该字符(串)值在待测文段中的起始位置和终止位置。

同理上述构建地区码字典树的过程,可以yyMMdd格式、yyyyMMdd格式的生日日期作为模式串列表,分别构建最长路径(边)连成的字符串为8位、6位的生日Trie树。其中,由于15位身份证于2006年6月底停止发证,则可以取1900-01-01到2006-06-30期间的yyMMdd格式日期值,作为模式串列表,构建传统AC自动机b,即构建最长路径连成的字符串为六位的生日Trie树,以供检索即匹配6位数的身份证号日期(yyMMdd格式)。此外,可以取1900-01-01到当前日期这一期间的yyyyMMdd格式日期值,作为模式串列表,构建传统AC自动机c,以供检索即匹配8位数的身份证号日期(yyyyMMdd格式)。

步骤12、识别待测文段中是否携带身份证号记录结构记有的身份证号码,并输出识别结果。

在一些具体示例中,步骤12的具体实施过程可包括:根据地区码字典树获取待测文段中的地区码值,以及地区码值在待测文段中的起始位置和终止位置;判断起始位置起的第16位字符是否为数字;若是数字,则识别终止位置后是否接续有8位数的生日数字、3位数的顺序码及相应的校验码;校验码根据地区码值、生日数字和顺序码算得;若不是数字,则识别终止位置后是否接续有6位数的生日数字、3位数的顺序码;在识别结果均为是时,确定待测文段含有身份证号码。

作为一种可能的实施方式,上述“识别终止位置后是否接续有8位数的生日数字、3位数的顺序码及相应的校验码”的具体过程,可包括如下操作(主要用于检索是否有18位的身份证号码):判断起始位置起的第19位字符是否为数字,及起始位置到第17位的字符串中是否有非数字的字符,若其中一判断结果为是,则确定待测文段没有身份证号码;若每一判断结果均为否,则调用最长路径连成的字符串为八位的生日字典树,校验地区码值后的8位字符是否为生日数字;若终止位置后的8位字符为生日数字,且起始位置起的第18数字等于校验码,则确定待测文段含有由地区码值、生日数字、顺序码、校验码组成的18位身份证号码。

作为一种可能的实施方式,上述“识别终止位置后是否接续有6位数的生日数字、3位数的顺序码”的具体过程,可包括如下操作(主要用于检索检索15位的身份证号码):判断终止位置后的9位字符是否均为数字;在均为数字时,调用最长路径连成的字符串为六位的生日字典树,校验终止位置后的6位字符是否为生日数字,并在为生日数字时,确定待测文段含有由地区码值、生日数字、顺序码组成的15位身份证号码。

例如,可以单字节编码ISO-8859-1为编码,获取待测文段对应的文本字符串,并使用AC自动机工具类a(含地区码字典树),检索即匹配出文本字符串中的地区码信息列表List,该List含匹配到的地区码值及其值在待测文段中的起始位置和终止位置,之后,可以对List进行下述的遍历逻辑处理:

1、判断上述起始位置起的第16位字符是否为数字,若是则按18位身份证号码进行校验(即执行第3步),否则按15位身份证号码进行校验(即执行第2步)。

2、15位身份证号校验:

(1)取出终止位置后的9位(yyMMdd+3位顺序码)字符,判断这些字符是否为数字,若不是则不符合校验条件,退出校验流程;否则进行下一步处理。

(2)取出终止位置的后6位(yyMMdd格式),用AC自动机b(含最长路径连成的字符串为六位的生日字典树)做检索匹配,判断这6位字符在该生日字典树中是否有匹配的值,即在构建好的生日trie树(含大量的正确年月日数字)中查找是否有与这6位字符值相同的连成字符串(即字符组合);若匹配值为空代表未匹配到(匹配失败),说明这6位字符值不是正确的年月日数字,退出校验流程;若有匹配的值,代表从起始位置开始的15位字符是正确的15位身份证号码,可以记录这15位字符的值及其在待测文段中的位置信息。

3、18位身份证号校验:

(1)取出起始位置起的第19位字符、起始位置到第17位(地区码+yyyyMMdd+3位顺序码)字符构成的文本字符串s,判断第19位字符是否为数字和字符串s是否为非数字,若满足其中一个条件则匹配失败,退出校验流程;否则进行下一步处理。

(2)取出终止位置后的8位(yyyyMMdd)字符,用AC自动机c(含最长路径连成的字符串为八位的生日字典树)判断这8位字符在该生日字典树中是否有匹配的值,若匹配值为空,则代表不是正确的年月日数字,退出校验流程;否则进行下一步。

(3)根据身份证号第18位的校验码计算规则,将算出的校验码与起始位置起的第18位字符进行比较,若一样代表是正确的身份证号校验码,可以记录这第18位字符在待测文段中的位置信息和值,若不一样则代表这18位字符不是正确的身份证号,退出校验流程。上述校验码计算规则指,将身份证号码的前17位数进行加权求和,用加出来的和值除以11,余数即为校验码,余数只可能是0至10这11个值中的任一值,10在身份证号中用X代替。

在一些具体示例中,上述“输出识别结果”的过程可包括:输出待测文段携带的身份证号码、身份证号码在待测文段中的位置信息、关联字符中的至少一种结果;关联字符包含待测文段中与身份证号码有预设位置关系或身份指向关系的字符。

预设位置关系包含间隔预设个字符或跨预设行数等字符间的排布关系,身份指向关系可以是人名、地名或年龄等,此处输出识别结果,有助于提醒用户传播或传阅文段时注意保护个人信息安全。示例性的,各种识别结果可以汇总或分批的形式输出及显示,该结果可以高亮、加粗或批注等标记形式显示,具体不做限制。

需说明的是,上述地区码字典树、生日字典树等各类自动机的构建顺序不限,可以分先后或同时进行。

综上,本申请实施例基于身份证号特征,在传统构建AC自动机的基础上,加入非数字范围函数check(number)来判断身份证号前一字符是否为数字,并构建相应的Trie树和Fail表,使得实际应用阶段,可根据构建好的Trie树(地区码Trie树、生日Trie树)和树对应的Fail表,对待测文段进行检索匹配,以识别出其中是否含身份证号码,从而保障身份信息的安全。此外,由于AC自动机没有回溯的问题,并且对数字范围作优化处理,其效率能大大提高。

本申请第二方面提供一种身份证号识别系统的一个具体实施例,该系统包括:

获取单元,用于获取身份证号记录结构;身份证号记录结构以公共前缀的形式记录各身份证号码,公共前缀指多串身份证号码中存在相同的排先号码;

处理单元,用于识别待测文段中是否携带身份证号记录结构记有的身份证号码,并输出识别结果。

可选地,身份证号记录结构包括字典树或以公共前缀形式排布的列表。

可选地,身份证号记录结构为字典树时,获取单元具体用于:

按字符排列顺序,将各身份证号码中的地区码值转移到地区码字典树的子节点以构成地区码字典树,将各身份证号码中的生日日期值转移到生日字典树的子节点以构成生日字典树;

在地区码字典树的根节点下加入判断节点;判断节点用于判断待测文段中数字字符的前一字符是否为数字,并在前一字符为非数字时,开放数字字符及之后字符对地区码字典树的遍历权限;

根据宽度优先搜索算法对每一字典树的节点设置失败状态函数fail(n)=m;fail(n)=m表示,字典树中根节点到n节点连成的字符值在字典树中对应的最长后缀字符串为,根节点到m节点连成的字符值;对于待测文段中相邻出现的前一数字字符、后一数字字符,当n节点含前一数字字符而n节点的子节点未含有后一数字字符时,fail(n)=m驱使退回n节点指向的失败节点m,以基于失败节点m查找含后一数字字符的节点,直至退回到根节点仍无相匹配的子节点,则确定后一数字字符在字典树中匹配失败。

可选地,身份证号记录结构为字典树时,获取单元具体用于:

根据地区码字典树获取待测文段中的地区码值,以及地区码值在待测文段中的起始位置和终止位置;

判断起始位置起的第16位字符是否为数字;

若是数字,则识别终止位置后是否接续有8位数的生日数字、3位数的顺序码及相应的校验码;校验码根据地区码值、生日数字和顺序码算得;

若不是数字,则识别终止位置后是否接续有6位数的生日数字、3位数的顺序码;

在识别结果均为是时,确定待测文段含有身份证号码。

可选地,获取单元具体用于:

判断起始位置起的第19位字符是否为数字,及起始位置到第17位的字符串中是否有非数字的字符,若其中一判断结果为是,则确定待测文段没有身份证号码;

若每一判断结果均为否,则调用最长路径连成的字符串为八位的生日字典树,校验地区码值后的8位字符是否为生日数字;

若终止位置后的8位字符为生日数字,且起始位置起的第18数字等于校验码,则确定待测文段含有由地区码值、生日数字、顺序码、校验码组成的18位身份证号码。

可选地,获取单元具体用于:

判断终止位置后的9位字符是否均为数字;

在均为数字时,调用最长路径连成的字符串为六位的生日字典树,校验终止位置后的6位字符是否为生日数字,并在为生日数字时,确定待测文段含有由地区码值、生日数字、顺序码组成的15位身份证号码。

可选地,处理单元具体用于:

输出待测文段携带的身份证号码、身份证号码在待测文段中的位置信息、关联字符中的至少一种结果;关联字符包含待测文段中与身份证号码有预设位置关系的字符。

本申请实施例中,身份证号识别系统各单元所执行的操作,与前述第一方面或第一方面的任一具体方法实施例所描述的操作类似,具体此处不再赘述。当然,本申请第一方面各操作的具体实现过程也可参见第二方面的相关描述实现。

请参阅图5,本申请实施例的电子设备500可以包括一个或一个以上中央处理器CPU(CPU,central processing units)501和存储器505,该存储器505中存储有一个或一个以上的应用程序或数据。

其中,存储器505可以是易失性存储或持久存储。存储在存储器505的程序可以包括一个或一个以上模块,每个模块可以包括对电子设备中的一系列指令操作。更进一步地,中央处理器501可以设置为与存储器505通信,在电子设备500上执行存储器505中的一系列指令操作。

电子设备500还可以包括一个或一个以上电源502,一个或一个以上有线或无线网络接口503,一个或一个以上输入输出接口504,和/或,一个或一个以上操作系统,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等。

该中央处理器501可以执行前述第一方面或第一方面的任一具体方法实施例所执行的操作,具体不再赘述。

本申请提供的一种计算机可读存储介质,包括指令,当指令在计算机上运行时,使得计算机执行如上述第一方面或第一方面的任一具体实现方式所描述的方法。

本申请提供的一种包含指令或计算机程序的计算机程序产品,当计算机程序产品在计算机上运行时,使得计算机执行如上述第一方面或第一方面的任一具体实现方式所描述的方法。

可以理解的是,在本申请的各种实施例中,各步骤的序号大小并不意味着执行顺序的先后,各步骤的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统(若存在)、装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

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

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

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

集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品(计算机程序产品)存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,业务服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,read-only memory)、随机存取存储器(RAM,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。

相关技术
  • 一种高精度轴承滚针生产用表面抛光
  • 一种高精度轴承滚针生产加工设备
技术分类

06120116558529