本发明涉及计算机技术领域,尤其涉及一种字符识别的处理方法和装置。
背景技术:
字符分割和字符识别是光学字符识别(英文全称:Optical Character Recognition,英文缩写:OCR)技术中最重要的两个方面,这两部分直接影响到字符识别的效果和结果,在OCR技术中需要将分割好的字符进行行方向上的排序后呈现给用户,因此字符的行方向排序技术会直接影响到呈现给用户观看的识别效果。但是当前对于OCR的分行技术主要是基于分割后字符间距来对字符进行简单的分行。
现有技术中依据分割后的字符间距来进行字符的合并和拆分,当不同格式的字符进行排版后,拍摄到的每行字符在页面中有很大倾斜等情况发生时,对页面上中的字符识别存在较大的误差,并且在后续利用识别结果进行语义分析时也很难达到很高的准确性。另外,现有技术中对字符分行是根据字符间距实现的,但随着环境变化在把字符块组合成行时有很大可能会被其它字符所影响,从而会影响最终所给出的识别效果。
技术实现要素:
本发明实施例提供了一种字符识别的处理方法和装置,用于提高字符识别的识别效果。
为解决上述技术问题,本发明实施例提供以下技术方案:
第一方面,本发明实施例提供一种字符识别的处理方法,包括:
根据字符在页面上的高度信息将所述页面上的多个字符归属到所述页面上的多个行上,得到所述页面上的每一行包括的多个字符,所述字符在页面上的高度信息包括:该字符在所述页面上的纵坐标和该字符的高度范围;
按照所述页面上字符之间在高度范围上的重叠信息对所述页面上的每个 行包括的多个字符进行行校正,得到所述页面上的每一行包括的行校正后的多个字符;
使用语义分析模型对所述页面上的每一行包括的行校正后的多个字符进行语义校正。
第二方面,本发明实施例还提供一种字符识别的处理装置,包括:
行拆分模块,用于根据字符在页面上的高度信息将所述页面上的多个字符归属到所述页面上的多个行上,得到所述页面上的每一行包括的多个字符,所述字符在页面上的高度信息包括:该字符在所述页面上的纵坐标和该字符的高度范围;
行校正模块,用于按照所述页面上字符之间在高度范围上的重叠信息对所述页面上的每个行包括的多个字符进行行校正,得到所述页面上的每一行包括的行校正后的多个字符;
语义校正模块,用于使用语义分析模型对所述页面上的每一行包括的行校正后的多个字符进行语义校正。
从以上技术方案可以看出,本发明实施例具有以下优点:
在本发明实施例中,首先根据字符在页面上的高度信息将页面上的多个字符归属到页面上的多个行上,得到页面上的每一行包括的多个字符,字符在页面上的高度信息包括:该字符在页面上的纵坐标和该字符的高度范围,接下来按照页面上字符之间在高度范围上的重叠信息对页面上的每个行包括的多个字符进行行校正,得到页面上的每一行包括的行校正后的多个字符,最后使用语义分析模型对页面上的每一行包括的行校正后的多个字符进行语义校正。本发明中采用字符在页面上的高度信息将页面上的所有字符归属到多个行,由于同一行的字符在页面上的纵坐标以及字符的高度范围都相对固定,因此按照字符的高度信息对页面上的所有字符进行分行到的分行结果是准确的,并且本发明中还可以按照页面上字符之间在高度范围上的重叠信息对每个行包括的多个字符进行行校正,因此可以通过重叠信息检测到对不同格式的字符排版中字符应该归属的行,通过重叠信息也可以检测到拍摄的原始页面中可能存在倾斜的字符,另外本发明中还可以利用语义分析模型对字符进行语义校正,因此对字符进行行校正和语义校正可以改变因字符排版的 格式不同以及拍摄原始页面中存在倾斜的字符导致的识别错误,提高字符识别的识别效果。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的技术人员来讲,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种字符识别的处理方法的流程方框示意图;
图2-a为本发明实施例提供的一种对字符识别的处理方法的实现场景示意图;
图2-b为本发明实施例提供的校正字符的行属性的一种实现方式示意图;
图2-c为本发明实施例提供的采用语义分析模型进行语义校正之前的一种页面内容示意图;
图2-d为本发明实施例提供的采用语义分析模型进行语义校正之后的一种页面内容示意图;
图3-a为本发明实施例提供的一种字符识别的处理装置的组成结构示意图;
图3-b为本发明实施例提供的一种行拆分模块的组成结构示意图;
图3-c为本发明实施例提供的一种行校正模块的组成结构示意图;
图3-d为本发明实施例提供的另一种字符识别的处理装置的组成结构示意图;
图3-e为本发明实施例提供的另一种字符识别的处理装置的组成结构示意图;
图4为本发明实施例提供的字符识别的处理方法应用于服务器的组成结构示意图。
具体实施方式
本发明实施例提供了一种字符识别的处理方法和装置,用于提高字符识别的识别效果。
为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部实施例。基于本发明中的实施例,本领域的技术人员所获得的所有其他实施例,都属于本发明保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,以便包含一系列单元的过程、方法、系统、产品或设备不必限于那些单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它单元。
以下分别进行详细说明。
本发明字符识别的处理方法的一个实施例,具体可以应用于COR技术中,请参阅图1所示,本发明一个实施例提供的字符识别的处理方法,可以包括如下步骤:
101、根据字符在页面上的高度信息将页面上的多个字符归属到页面上的多个行上,得到页面上的每一行包括的多个字符。
其中,字符在页面上的高度信息包括:该字符在页面上的纵坐标和该字符的高度范围。
在本发明实施例中,页面上的字符可以是通过OCR技术从页面上分割出单个字符以及识别出各个字符之后得到的字符,首先获取到页面上每个字符的高度信息,其中,字符的高度信息是指:该字符在页面上的纵坐标和该字符的高度范围,通过字符在页面上的高度信息可以准确的确定出字符在页面上纵坐标方向上的固定坐标,以及字符在纵坐标方向上的最低点坐标和最高点坐标,其中,纵坐标方向上的最高点坐标和最低点坐标之间的差值即为字符的高度范围。举例说明,可以以当前页面的左上角顶点作为坐标原点,以左上角顶点作为参考点,测量出在纵坐标方向上字符的左上角顶点到该坐标原点的距离作为字符的纵坐标,另外字符的左上角顶点为字符在纵坐标方向上的最高点坐标,字符的左下角顶点为字符在纵坐标方向上的最低点坐标, 通过最高点坐标和最低点坐标之间的差值计算出字符的高度范围,也可以称之为高度大小。
本发明实施例中,计算出页面上的所有字符的高度信息,然后根据页面上字符的高度信息对页面上的多个字符进行行归属的拆分,即根据字符的高度信息将页面上的多个字符归属到页面上的多个行上,与现有技术使用字符的间距进行行划分不同,本发明实施例中对字符的行归属确定方法使用的是字符所在页面的高度信息,即使用字符在页面上的纵坐标和该字符的高度范围来确定行的归属,因为同一行的字符在页面上的纵坐标以及字符的高度范围都相对固定,因此按照字符的高度信息对页面上的所有字符进行分行到的分行结果是准确的。进一步的,在本发明的一些实施例中,步骤101根据字符在页面上的高度信息将页面上的多个字符归属到页面上的多个行上,得到页面上的每一行包括的多个字符,具体可以包括如下步骤:
A1、从页面上的多个字符中任意选择一个字符作为当前字符,根据当前字符在页面上的高度信息计算当前字符的中心点在页面上的纵坐标;
A2、判断当前字符的中心点是否在当前字符的前一个字符的高度范围内,若当前字符的中心点在当前字符的前一个字符的高度范围内,则当前字符和前一个字符属于同一个行,若当前字符的中心点不在当前字符的前一个字符的高度范围内,则当前字符和前一个字符分别属于两个不同的行。
其中,步骤A1至A2中给出了一个字符进行行归属的判断方法,对于步骤A1至A2的行归属判断方式适用于对页面上每个字符的行归属确定过程,其中,以页面上的多个字符中任意选择的一个字符作为当前字符,步骤A1和步骤A2中均以对当前字符的行归属判断为例,页面中的所有字符都可以采用对当前字符的行归属判断方式。其中,当前字符的中心点指的是字符在纵坐标方向上高度范围的中间值,例如,当前字符的高度范围为(y1,y2),则字符的中心点在纵坐标方向上的纵坐标为(y1+y2)/2,将当前字符的纵坐标(y1+y2)/2和当前字符的前一个字符的高度范围进行判断,从而可以判断当前字符和当前字符的前一个字符的行归属。
需要说明的是,在本发明的一些实施例中,步骤101根据字符在页面上的高度信息将页面上的多个字符归属到页面上的多个行上之前,本发明实施 例提供的字符识别的处理方法还可以包括如下步骤:
B1、根据从页面上分割出的多个符号块识别出页面上的多个原始字符;
B2、根据页面上每个原始字符的高度范围和宽度范围从页面上的所有原始字符中剔除掉过大字符或过小字符,得到页面上的多个字符。
其中,页面上的原始字符可以是通过OCR技术从页面上分割出单个字符以及识别出各个字符之后得到的字符,首先获取到页面上每个原始字符的高度信息和宽度信息,其中,原始字符的高度信息与前述内容描述的字符的高度信息相类似,原始字符的宽度信息是指:该原始字符在页面上的横坐标和该原始字符的宽度范围,通过原始字符在页面上的高度信息和宽度信息可以准确的确定出原始字符在页面上纵坐标方向上的固定坐标和横坐标方向上的固定坐标,以及原始字符在纵坐标方向上的高度范围和宽度范围。另外步骤B2中所述的过大字符指的是在高度范围和/或宽度范围上大于一定数值的字符,步骤B2中所述的过小字符指的是在高度范围和/或宽度范围上小于一定数值的字符,从页面上的所有原始字符中剔除掉过大字符或过小字符,可以得到步骤101中所述的页面上的多个字符。
进一步的,上述步骤B2根据页面上每个原始字符的高度范围和宽度范围从页面上的所有原始字符中剔除掉过大字符或过小字符,得到页面上的多个字符,具体可以包括如下步骤:
B21、根据页面上每个原始字符的高度范围和宽度范围分别计算页面的平均字符高度和平均字符宽度;
B22、根据平均字符高度从页面上的所有原始字符中剔除掉高度范围大于平均字符高度的N倍的原始字符或者高度范围小于平均字符高度的M倍的原始字符,和根据平均字符宽度从页面上的所有原始字符中剔除掉宽度范围大于平均字符宽度的N倍的原始字符或者宽度范围小于平均字符宽度的M倍的原始字符,完成剔除后得到页面上的字符,N为大于1的数值,M为大于0小于1的数值。
其中,步骤B21中页面的平均字符高度是指页面上所有原始字符的高度的平均值,页面的平均字符宽度是指页面上所有原始字符的宽度的平均值,步骤B22中N的取值可以为1.5,即步骤B22中需要剔除掉高度范围为平均 字符高度的1.5倍的原始字符,也需要剔除掉宽度范围为平均字符宽度的1.5倍的原始字符,步骤B22中M的取值可以为0.2,即步骤B22中需要剔除掉高度范围为平均字符高度的0.2倍的原始字符,也需要剔除掉宽度范围为平均字符宽度的0.2倍的原始字符,按照上述方式从页面上的所有原始字符中剔除掉过大字符或过小字符,得到步骤101中所述的页面上的字符,其中N和M的具体取值可不局限于前述举例说明,还可以结合具体的应用场景来决定N、M的具体取值。
在本发明的一些实施例中,步骤101根据字符在页面上的高度信息将页面上的多个字符归属到页面上的多个行上,得到页面上的每一行包括的多个字符之后,本发明实施例提供的字符识别的处理方法还可以包括如下步骤:
C1、根据页面上的每一行中相邻两个字符之间的字符间距计算页面上的每一行的字符段分割距离;
C2、根据字符段分割距离对页面上的每一行包括的多个字符进行分段,得到页面上的每一行包括的多个字符段。
其中,步骤C1中,首先获取到页面上每个字符的宽度信息,字符的宽度信息是指:该字符在页面上的横坐标和该字符的宽度范围,通过字符在页面上的宽度信息可以准确的确定出字符在页面上的横坐标方向上的固定坐标,以及字符在纵坐标方向上的宽度范围。则在同一个行中相邻两个字符之间的字符间距就是后一个字符与前一个字符之间的横坐标差值,根据一个行中相邻两个字符之间的字符间距计算出在页面上的每一个行的字符段分割距离,根据每一行中相邻两个字符之间的字符间距对如何设置字符段分割距离进行设置,其中,字符段是所在一行中可以拆分成多组字符的集合,举例说明如下:在页面中的一个行中记录的内容如下:
姓名:小明 年级:三年级二班 性别:男
则在如上的行有就可以有3个字符段,分别为“姓名:小明”、“年级:三年级二班”、“性别:男”。预测出字符段分割距离之后,采用该字符段分割距离对每一行包括的多个字符进行分段,得到页面上的每一行包括的多个字符段。
进一步的,步骤C1根据页面上的每一行中相邻两个字符之间的字符间距 计算页面上的每一行的字符段分割距离,具体可以包括如下步骤:
C11、计算出页面上的每一行中相邻两个字符之间的字符间距;
C12、对每一行中相邻两个字符之间的字符间距按照数值大小进行降序排列,选择字符间距中的中间值作为页面上的每一行的字符段分割距离。
其中,计算出每一行中相邻两个字符之间的字符间距之后,对获取到所有字符间距按照数值大小进行降序排列,选择在排序中处于中间值的字符间距作为字符段分割距离,字符段分割距离作为字符段分割的依据,选择所有字符间距中的中间值作为字符段分割距离可以准确的获取到每一行中的字符段。
进一步的,步骤C2根据字符段分割距离对页面上的每一行包括的多个字符进行分段,得到页面上的每一行包括的多个字符段,具体可以包括如下步骤:
C21、从页面上的多个字符中任意选择一个字符作为当前字符,获取当前字符与相邻字符之间的字符间距;
C22、若当前字符与相邻字符之间的字符间距小于或等于字符段分割距离,将当前字符和相邻字符划分到一个字符段中,若当前字符与相邻字符之间的字符间距大于字符段分割距离,将当前字符和相邻字符划分到两个不同的字符段中。
其中,步骤C21至C22中给出了一个字符段的判断方法,对于步骤C21至C22的字符段判断方式适用于对页面上每个字符的字符段确定过程,其中,以页面上的多个字符中任意选择的一个字符作为当前字符,步骤C21和步骤C22中均以对当前字符的字符段判断为例,页面中的所有字符都可以采用对当前字符的字符段判断方式。
102、按照页面上字符之间在高度范围上的重叠信息对页面上的每个行包括的多个字符进行行校正,得到页面上的每一行包括的行校正后的多个字符。
在本发明实施例中,针对页面上所有字符,获取页面上所有字符之间在高度范围上有重叠的字符,对字符之间在高度范围上存在重叠的字符进行行校正,其中,页面上字符之间在高度范围上存在重叠可以判断出页面上的大致处于同一个行的多个字符,因为在页面上属于同一个行的多个字符的高度 范围都相类似,若因为字符的排版或者拍摄页面的图片中字符产生倾斜时,有些字符可能被划分到错误的行,因此本发明实施例中在对页面上的字符归属到多个行之后,还可以按照重叠信息对页面上的每个行包括的多个字符进行行校正,从而纠正可能出现的对字符进行行归属时产生的判断错误。
在本发明的一些实施例中,步骤102按照页面上字符之间在高度范围上的重叠信息对页面上的每个行包括的多个字符进行行校正,具体可以包括如下步骤:
D1、从页面上的多个字符中任意选择一个字符作为当前字符,获取高度范围与当前字符的高度范围有重叠的多个字符;
D2、若获取到的高度范围与当前字符的高度范围有重叠的多个字符都属于同一个行,则保持当前字符所在的行不变;
D3、若获取到的高度范围与当前字符的高度范围有重叠的多个字符分别属于两个行,分别计算出两个行中高度范围与当前字符的高度范围有重叠的字符的个数,将当前字符所在的行确定为高度范围与当前字符的高度范围有重叠的字符的个数最多的行。
其中,步骤D1至D2中给出了一个字符进行行校正的方法,对于步骤D1至D3的行校正判断方式适用于对页面上每个字符的行校正的确定过程,其中,以页面上的多个字符中任意选择的一个字符作为当前字符,步骤D1至步骤D3中均以对当前字符的行校正为例,页面中的所有字符都可以采用对当前字符的行校正方式。其中,高度范围与当前字符的高度范围有重叠的多个字符可能是同一个行,也可能是相邻的两个行,步骤D3中通过统计的方式判断出当前字符应该归属的行,可以对原步骤101中进行行归属判断后进一步的实现行校正,从而可以实现高准确度的字符识别。
103、使用语义分析模型对页面上的每一行包括的行校正后的多个字符进行语义校正。
在本发明实施例中,得到页面上的每一个行包括的行校正后的多个字符之后,可以按照预设的语义分析模型对上述字符进行语义校正,其中,本发明实施例中采用的语义分析模型可以是word2vec,或者隐马尔科夫模型等,对字符进行语义校正可以实现对字符识别结果的进一步优化,得到更符合语 言习惯的字符识别效果。
在本发明的前述实施例中,若执行步骤C1和C2,则通过步骤102进行行校正之后,页面上每一行都包括多个字符段,多个字符段中每个字符段包括:行校正后的多个字符,在这种实现场景下,步骤103使用语义分析模型对页面上的每一行包括的行校正后的多个字符进行语义校正,包括:
E1、使用语义分析模型对页面上的每一行中字符段内信息和字符段间信息分别进行语义校正。
其中,若获取到了页面上的每一行包括的字符段,则可以对字符段间和字符段内分别进行语义校正,具体使用语义分析模型进行语义校正的过程可参阅现有技术。
通过以上实施例对本发明实施例的描述可知,首先根据字符在页面上的高度信息将页面上的多个字符归属到页面上的多个行上,得到页面上的每一行包括的多个字符,字符在页面上的高度信息包括:该字符在页面上的纵坐标和该字符的高度范围,接下来按照页面上字符之间在高度范围上的重叠信息对页面上的每个行包括的多个字符进行行校正,得到页面上的每一行包括的行校正后的多个字符,最后使用语义分析模型对页面上的每一行包括的行校正后的多个字符进行语义校正。本发明中采用字符在页面上的高度信息将页面上的所有字符归属到多个行,由于同一行的字符在页面上的纵坐标以及字符的高度范围都相对固定,因此按照字符的高度信息对页面上的所有字符进行分行到的分行结果是准确的,并且本发明中还可以按照页面上字符之间在高度范围上的重叠信息对每个行包括的多个字符进行行校正,因此可以通过重叠信息检测到对不同格式的字符排版中字符应该归属的行,通过重叠信息也可以检测到拍摄的原始页面中可能存在倾斜的字符,另外本发明中还可以利用语义分析模型对字符进行语义校正,因此对字符进行行校正和语义校正可以改变因字符排版的格式不同以及拍摄原始页面中存在倾斜的字符导致的识别错误,提高字符识别的识别效果。
为便于更好的理解和实施本发明实施例的上述方案,下面举例相应的应用场景来进行具体说明。本发明实施例中对于获取到所分割的字符块,不仅 采用了字符块间彼此的逻辑关系,并且也考虑到分行中字符本身行的不对齐问题,即所拍摄的字符行不是水平的时的行校正。
由于目前OCR技术中很多人所关注的是字符分割和识别部分,对于最终的显示结果,通过字符行分割和合并,在结合需要使用的语义分析会对OCR的整体效果有很大提升,尤其在生成OCR字符行不平行,有噪点等多种情况下,本发明实施例能很好的进行字符行拆分,使用场景广泛。本发明的一种应用场景,具体可以包括如下步骤,请参阅如图2-a所示。
步骤1、OCR识别出的单个字符
本发明实施例中,首先通过OCR技术对单个字符分割、识别。首先利用OCR技术中的字符分割方法(如图像二值化,凸包等方法)得到分割后的各个字符块,然后通过逻辑和字符块间关系把合理的单个字符分割并识别出原始字符。识别方法如:基于凸包轮廓的匹配,基于图像灰度的梯度特征匹配等,得到了一个页面下所有分割的字符以及其识别结果,基于上述结果,接着通过二值化、凸包等方法得到了每个字符的各个小块组成,如字符“小”得到三部分的小块,分别为:左点,竖勾、右点,通过组合各字符块识别,最终识别出这三块字符合并在一起所得的汉字。
步骤2、去除页面上的噪点
通过计算页面中总体字符的宽(用char_width表示)和高(用char_height表示)总和,得到关于该页面的平均字符宽度(char_average_width)和平均字符高度(char_average_height),然后从页面的原始字符中去掉大于1.5*char_average_width或1.5*char_average_height的原始字符,因为在一个字符的页面中,大部分情况下都是基于字符的分布,而字符的分布有一定的规律性,要么在宽高上一致(例如:国、并),要么宽一致(例如:一、二),要么高一致(例如如:!、[等),在字符识别中总有些较大的块或较小的块会影响字符的分行效果,例如较大块会占用两行的字符高度,再合并过程中使得当前原本分为两行的字符段合并为一个字符段,从而影响最终的字符识别结果。
步骤3、计算页面每一行和字符段
首先,计算得到页面上的字符分行的初步拆分结果。利用步骤1中得到 合理的字符分布,按照如下逻辑进行字符的合并从而得到初步的字符段(用char_section表示)。
(1)、对每个字符所属行进行标签化:当前字符的位置可以定义为(char_x,char_y,char_width,char_height),其中,char_x为当前字符左上角所在页面的x坐标,char_y为当前字符左上角所在页面的y坐标,char_width为当前字符宽度,当前字符的宽度范围为(char_x,char_x+char_width),char_height为当前字符高度,当前字符的高度范围为(char_y,char_y+char_height)。利用这里所属的字符位置信息,可以计算出每个字符的中心点的y坐标为:char_y+char_height/2,若当前字符的中心点y坐标在当前字符的前一个字符所在的高度范围内,则当前字符与前一个字符是属于一行,公式化如下:
chari+1_y+chari+1_height/2∈[chari_y,chari_y+chari_height];
其中,i=(1,2,3,....n),n为当前页面的总字符数。
根据上述方法可以把每一个字符归属到对应的行上,这样就得到了当前页面字符的初步行属性分布。
(2)对所属每一行的字符计算出进行字符合并的字符段分割距离:
通过上面(1)的方法得到每一行的所属字符后,利用下述方法计算出当前行中相连两个字符之间的字符间距:
distancek=chari+1_x-(chari_x+chari_width);
其中i=1,2,3,......m,k=1,2,3,.....m-1,m为当前行中的字符数。对所存储的每个相邻字符间距(distance)按照降序进行排序,选取里面的中间值(即distance_sort_middle)作为当前行的字符段分割距离。
(3)根据字符段分割距离对当前行的字符进行分段,得到当前行的每个字符段:
对于当前行中的字符间距大于distance_sort_middle的字符拆分到两个字符段中,对于小于distance_sort_middle的字符合并到同一个字符段中。其中,这里的拆分就是把当前字符单独作为新的集合表示,合并是把当前字符合并到满足条件的集合中用于构建字符段。
按照上述方法得到了一个页面下字符所属行和行中字符的分段信息,然后执行步骤4。
步骤4、对字符进行行校正
其中,对页面上的字符校正字符行属性:在对字符进行行属性划分过程中因拍摄角度问题会出现本为一行的字符不再水平方向上,如图图2-b所示,每个框为一个字符分布,本属于第二行的字符因为拍摄角度等外界原因被标注了第一行的属性,长线框框和点框所框出的字符行是按照步骤3中的方法得到的,本步骤4中可采用校正的方法如下:
(1)、在完成步骤3方法下得到当前页面所有字符的行属性,对每个字符按照如下方法计算当前字符的行归属信息:
当前字符行范围:chari_range=[chari_y,chari_y+chari_height];
如果chari_range与另外一个字符的charj_range有重叠,则对chari_line_record这个一维记录数组相应位置增加一个记录值。最后比对两个行中各自存在重叠的字符的个数之后,取chari_line_record里面数值最高所对应的行为当前chari的行属性。以图2-b为例,对于页面中两个行中的最后一个字符,chari_line_record数组长度为2,利用当前字符行范围进行判断,可以得到图2-b最后一个字符在第一行中重叠的字符个数为5,chari_line_record[0]=5而在第二行中重叠的字符个数为:6,chari_line_record[1]=6,这时选取数组中数值最高的6所在行(即第二行)作为当前字符的行属性,那么图2-b中最后一个字符的行属性确定为第二行。
其中,i,j=(1,2,3,....n),n为当前页面的总字符数,chari_range是一个字符在y方向的分布范围,chari_line_record是初始值为0的一个维数组,维度数为步骤3方法下所得到的总行数。
步骤5、对字符段内信息和字符段间信息进行语义校正
对于已经分割融合好的各字符段,可采用语义分析模型对字符段再次进行语义校正,及是对字符段内识别的每个字符内容融合语义分析模型进行判断,语义分析模型可以采用当前比较成熟的技术如:word2vec,或者隐马尔科夫模型等。这样对于字符段内本身识别有误的部分进行校正,如原本为深圳市,被错误识别为深训市等,对于字符段间,则可以利用语义分析模型进行进一步语义校正,请分别参阅如图2-c和图2-d所示,图2-c为语义校正前的字符段示意图,图2-d为语义校正后的字符段示意图,按照语义分析模型, “结”和“果”应该属于一个语义段,因此可以进行语义段的合并。
通过前述举例对本发明的描述可知,本发明可利用字符间距以及字符所在页面的位置,融合字符本身内容和语义分析,对部分字符行的拆分进行矫正,从而使得字符行分割更合理,在呈现结果上更符合语言逻辑。经过大量的实验测试证明,本发明实施例提供的方法会比其它原有的方法在对OCR字符分行分段上更合理,且在内容上以及字符结构排布上更符合语言的习惯。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
为便于更好的实施本发明实施例的上述方案,下面还提供用于实施上述方案的相关装置。
请参阅图3-a所示,本发明实施例提供的一种字符识别的处理装置300,可以包括:行拆分模块301、行校正模块302、语义校正模块303,其中,
行拆分模块301,用于根据字符在页面上的高度信息将所述页面上的多个字符归属到所述页面上的多个行上,得到所述页面上的每一行包括的多个字符,所述字符在页面上的高度信息包括:该字符在所述页面上的纵坐标和该字符的高度范围;
行校正模块302,用于按照所述页面上字符之间在高度范围上的重叠信息对所述页面上的每个行包括的多个字符进行行校正,得到所述页面上的每一行包括的行校正后的多个字符;
语义校正模块303,用于使用语义分析模型对所述页面上的每一行包括的行校正后的多个字符进行语义校正。
在本发明的一些实施例中,如图3-b所示,所述行拆分模块301,包括:
字符中心点确定单元3011,用于从所述页面上的多个字符中任意选择一个字符作为当前字符,根据所述当前字符在页面上的高度信息计算所述当前字符的中心点在所述页面上的纵坐标;
行判断单元3012,用于判断所述当前字符的中心点是否在所述当前字符 的前一个字符的高度范围内,若当前字符的中心点在所述当前字符的前一个字符的高度范围内,则所述当前字符和所述前一个字符属于同一个行,若当前字符的中心点不在所述当前字符的前一个字符的高度范围内,则所述当前字符和所述前一个字符分别属于两个不同的行。
在本发明的一些实施例中,如图3-c所示,所述行校正模块302,包括:
高度重叠字符确定单元3021,用于从所述页面上的多个字符中任意选择一个字符作为当前字符,获取高度范围与所述当前字符的高度范围有重叠的多个字符;
行确定单元3022,用于若获取到的高度范围与所述当前字符的高度范围有重叠的多个字符都属于同一个行,则保持所述当前字符所在的行不变;若获取到的高度范围与所述当前字符的高度范围有重叠的多个字符分别属于两个行,分别计算出两个行中高度范围与所述当前字符的高度范围有重叠的字符的个数,将所述当前字符所在的行确定为高度范围与所述当前字符的高度范围有重叠的字符的个数最多的行。
在本发明的一些实施例中,如图3-d所示,所述字符识别的处理装置300,还包括:字符去噪模块304,用于所述行拆分模块301根据字符在页面上的高度信息将所述页面上的多个字符归属到所述页面上的多个行上之前,根据从所述页面上分割出的多个符号块识别出所述页面上的多个原始字符;根据所述页面上每个原始字符的高度范围和宽度范围从所述页面上的所有原始字符中剔除掉过大字符或过小字符,得到所述页面上的多个字符。
在本发明的一些实施例中,如图3-e所示,所述字符识别的处理装置300,还包括:字符段确定模块305,用于所述行拆分模块301根据字符在页面上的高度信息将所述页面上的多个字符归属到所述页面上的多个行上,得到所述页面上的每一行包括的多个字符之后,根据所述页面上的每一行中相邻两个字符之间的字符间距计算所述页面上的每一行的字符段分割距离;根据所述字符段分割距离对所述页面上的每一行包括的多个字符进行分段,得到所述页面上的每一行包括的多个字符段。
在本发明的一些实施例中,所述多个字符段中每个字符段包括:行校正后的字符;
所述语义校正模块303,具体用于使用语义分析模型对所述页面上的每一行中字符段内信息和字符段间信息分别进行语义校正。
通过以上对本发明实施例的描述可知,首先根据字符在页面上的高度信息将页面上的多个字符归属到页面上的多个行上,得到页面上的每一行包括的多个字符,字符在页面上的高度信息包括:该字符在页面上的纵坐标和该字符的高度范围,接下来按照页面上字符之间在高度范围上的重叠信息对页面上的每个行包括的多个字符进行行校正,得到页面上的每一行包括的行校正后的多个字符,最后使用语义分析模型对页面上的每一行包括的行校正后的多个字符进行语义校正。本发明中采用字符在页面上的高度信息将页面上的所有字符归属到多个行,由于同一行的字符在页面上的纵坐标以及字符的高度范围都相对固定,因此按照字符的高度信息对页面上的所有字符进行分行到的分行结果是准确的,并且本发明中还可以按照页面上字符之间在高度范围上的重叠信息对每个行包括的多个字符进行行校正,因此可以通过重叠信息检测到对不同格式的字符排版中字符应该归属的行,通过重叠信息也可以检测到拍摄的原始页面中可能存在倾斜的字符,另外本发明中还可以利用语义分析模型对字符进行语义校正,因此对字符进行行校正和语义校正可以改变因字符排版的格式不同以及拍摄原始页面中存在倾斜的字符导致的识别错误,提高字符识别的识别效果。
图4是本发明实施例提供的字符识别的处理方法应用于一种服务器的结构示意图,该服务器400可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(central processing units,CPU)422(例如,一个或一个以上处理器)和存储器432,一个或一个以上存储应用程序442或数据444的存储介质430(例如一个或一个以上海量存储设备)。其中,存储器432和存储介质430可以是短暂存储或持久存储。存储在存储介质430的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器422可以设置为与存储介质430通信,在服务器400上执行存储介质430中的一系列指令操作。
服务器400还可以包括一个或一个以上电源426,一个或一个以上有线或无线网络接口450,一个或一个以上输入输出接口458,和/或,一个或一个以 上操作系统441,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
上述实施例中由服务器所执行的步骤可以基于该图1所示的字符识别的处理方法。
另外需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本发明提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用CPU、专用存储器、专用元器件等来实现。一般情况下,凡由计算机程序完成的功能都可以很容易地用相应的硬件来实现,而且,用来实现同一功能的具体硬件结构也可以是多种多样的,例如模拟电路、数字电路或专用电路等。但是,对本发明而言更多情况下软件程序实现是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘,U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
综上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照上述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对上述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。