具体实施方式
为了节省字符串的定位信息所占用的存储资源,本发明实施例提供一种电子文档的文字信息处理方法,本方法中,将字体和字号相同并且位置连续的字符作为一个字符串,并将字符串中第一个字符的位置信息和字符串的相邻字符距离作为字符串的定位信息进行存储。
参见图1,本发明实施例提供的电子文档的文字信息处理方法,具体包括以下步骤:
步骤10:选取电子文档中位于同一行或同一列的多个字符作为一个字符串,选取的多个字符的字体和字号相同并且位置连续;
步骤11:获取所述字符串中第一个字符在电子文档中的位置信息,并确定该字符串的相邻字符距离;
步骤12:将第一个字符在所述电子文档中的位置信息和确定的相邻字符距离作为所述字符串的定位信息与该字符串进行关联存储。
步骤10中,若电子文档的排版方向为横向排版方向,则选取电子文档中位于同一行的多个字符作为一个字符串;若电子文档的排版方向为纵向排版方向,则选取电子文档中位于同一列的多个字符作为一个字符串。
步骤11中,确定字符串的相邻字符距离,其具体实现方式可以采用如下两种:
第一种,可以适用于在字符串中的字符采用等宽字体的情况:
首先,对于字符串中除最后一个字符之外的其它每个字符,确定该字符的起始点到下一个字符的起始点的距离值;然后,从确定出的各距离值中选取一个出现次数最多的第一距离值,将该第一距离值确定为字符串的相邻字符距离。
采用本方式时,若距离值为浮点数,则需要选取出现次数最多的、在允许误差范围(Delta)内的距离值作为第一距离值,若出现次数最多的并在允许误差范围Delta内的距离值为多个,则将这多个距离值的平均值作为第一距离值。换句话说,需要找到一个平均距离数据(Dm),在[Dm-Delta,Dm+Delta]这个区间覆盖了最多的距离数据。
较佳的,为了提高定位信息的准确性,对于确定出的各距离值中除第一距离值之外的其它距离值,计算该距离值与第一距离值的差值,并将该差值作为该距离值对应的终止字符的字符间距修正信息与字符串的定位信息进行关联存储。这里,距离值是某一字符的起始点到下一个字符的起始点的距离值,那么,该距离值对应的终止字符则是指该下一个字符。
当然,还可以是从确定的各距离值中随机选取一个距离值作为第一距离值;或者,直接计算确定的各距离值的平均值,将该平均值作为第一距离值;或者,从确定的各距离值中选取满足一定条件的距离值作为第一距离值,例如,选取大于或小于某一设定距离门限值的距离值作为第一距离值等。任何根据确定的字符的起始点到下一个字符的起始点的距离值,来确定字符串的相邻字符距离的方法均在本发明的保护范围内。
第二种,可以适用于在字符串中的字符采用非等宽字体的情况:
首先,对于字符串中除最后一个字符之外的其它每个字符,确定该字符与下一个字符的字符间距值;从确定的各字符间距值中选取一个出现次数最多的第一字符间距值,将该第一字符间距值确定为字符串的相邻字符距离。
本方式中,确定某一字符与下一个字符的字符间距值,其具体方法可以为:首先,确定该字符的起始点到下一个字符的起始点的距离值,然后,计算该距离值与该字符的字宽或字高的差值,将该差值即为该字符与下一个字符的字符间距值。
同样的,采用本方式时,若字符间距值为浮点数,则需要选取出现次数最多的、在允许误差范围(Delta)内的字符间距值作为第一字符间距值,若出现次数最多的并在允许误差范围Delta内的字符间距值为多个,则将这多个字符间距值的平均值作为第一字符间距值。换句话说,需要找到一个平均字符间距数据(Dm),在[Dm-Delta,Dm+Delta]这个区间覆盖了最多的字符间距数据。
较佳的,为了提高定位信息的准确性,对于确定出的各字符间距值中除第一字符间距值之外的其它字符间距值,计算该字符间距值与第一字符间距值的差值,并该差值作为该字符间距值对应的终止字符的字符间距修正信息与字符串的定位信息进行关联存储。这里,字符间距值是某一字符与下一个字符的字符间距值,那么,该字符间距值对应的终止字符则是指该下一个字符。
当然,还可以是从确定的各字符间距值中随机选取一个字符间距值作为字符串的字符间距;或者,直接计算确定的各字符间距值的平均值,将该平均值作为字符串的字符间距;或者,从确定的各字符间距值中选取满足一定条件的距离值作为字符串的字符间距,例如,选取大于或小于某一设定间距门限值的字符间距值作为字符串的字符间距等。任何根据确定的字符与下一个字符的字符间距值,来确定字符串的字符间距的方法均在本发明的保护范围内。
较佳的,为了进一步提高定位信息的准确性,在字符串中的多个字符位于同一行时,对多个字符中的各字符,判断该字符的纵向位置相对于多个字符所在行的纵向位置是否存在偏移,若是,则将偏移的信息作为该字符的字符偏移信息与字符串的定位信息进行关联存储。例如,多个字符所在行的纵向坐标为y0,字符a的纵向坐标为y1,那么,字符a相对于多个字符所在行的纵向位置的偏移为y1-y0。
在字符串中的多个字符位于同一列时,对多个字符中的各字符,判断该字符的横向位置相对于多个字符所在列的横向位置是否存在偏移,若是,则将偏移的信息作为该字符的字符偏移信息与字符串的定位信息进行关联存储。例如,多个字符所在列的横向坐标为x0,字符a的纵向坐标为x1,那么,字符a相对于多个字符所在列的横向位置的偏移为x1-x0。
参见图2,本发明实施例还提供一种利用上述电子文档的文字信息处理方法中存储的信息进行字符输出的方法,具体包括以下步骤:
步骤20:读取存储的字符串以及该字符串的定位信息;
步骤21:对于所述字符串中除第一个字符外其它各字符,根据读取到的定位信息确定该字符的输出位置信息;
步骤22:根据确定的字符的输出位置信息对该字符进行输出。
步骤21中,根据定位信息确定字符的输出位置信息,其具体实现可以采用以下两种:
第一种,根据读取到的定位信息中第一个字符在电子文档中的位置信息和第一距离值,确定该字符的输出位置信息。
具体的,在字符串中的多个字符位于同一行时,第一个字符在电子文档中的位置坐标为(x1,y1),第一距离值为x0,在字符a之前有n个字符,则字符a的位置坐标为(x1+n*x0,y1)。
在字符串中的多个字符位于同一列时,第一个字符在电子文档中的位置坐标为(x1,y1),第一距离值为x0,在字符a之前有n个字符,则字符a的位置坐标为(x1,y1+n*x0)。
第二种,根据读取到的定位信息中第一个字符在电子文档中的位置信息、第一字符间距值和该字符之前各字符的字宽或字高,确定该字符的输出位置信息。
具体的,在字符串中的多个字符位于同一行时,第一个字符在电子文档中的位置坐标为(x1,y1),第一字符间距值为x0,在字符a之前有n个字符,则字符a的位置坐标为 其中wi为第i个字符的字宽。
在字符串中的多个字符位于同一列时,第一个字符在电子文档中的位置坐标为(x1,y1),第一字符间距值为x0,在字符a之前有n个字符,则字符a的位置坐标为 其中wi为第i个字符的字高。
较佳的,为了提高字符输出位置的准确性,在确定字符的输出位置信息之后,若存储有该字符的字符间距修正信息,则利用该字符间距修正信息对该字符的输出位置信息进行修正,将修正后的信息确定为该字符的输出位置信息。
例如,在字符串中的多个字符位于同一行时,确定的字符串中某一字符的位置坐标为(xm,ym),存储的该字符的字符间距修正值为C,则修正后该字符的位置坐标为(xm+C,ym)。在字符串中的多个字符位于同一列时,确定的字符串中某一字符的位置坐标为(xm,ym),存储的该字符的字符间距修正值为C,则修正后该字符的位置坐标为(xm,ym+C)。
较佳的,为了进一步提高字符输出位置的准确性,在确定字符的输出位置信息之后,若存储有该字符的字符偏移信息,则利用该字符偏移信息对该字符的输出位置信息进行修正,将修正后的信息确定为该字符的输出位置信息。
例如,在字符串中的多个字符位于同一行时,确定的字符串中某一字符的位置坐标为(xm,ym),存储的该字符的字符偏移值为D,则修正后该字符的位置坐标为(xm,ym+D)。在字符串中的多个字符位于同一列时,确定的字符串中某一字符的位置坐标为(xm,ym),存储的该字符的字符偏移值为D,则修正后该字符的位置坐标为(xm+D,ym)。
参见图3,本发明实施例还提供一种利用上述电子文档的文字信息处理方法中存储的信息进行字符检索的方法,具体包括以下步骤:
步骤30:读取存储的字符串以及该字符串的定位信息;
步骤31:将输入的待检索字符与读取的字符串进行匹配;
步骤32:根据所述字符串的定位信息,确定所述字符串中与所述待检索字符匹配成功的字符的位置信息;
步骤33:根据所述字符的位置信息查找到该字符,并将该字符作为字符检索结果返回。
步骤32的具体实现方法也可以采用以下两种方式:
第一种,根据定位信息中第一个字符在电子文档中的位置信息和第一距离值,确定字符串中与待检索字符匹配成功的字符的位置信息;
具体的,在字符串中的多个字符位于同一行时,第一个字符在电子文档中的位置坐标为(x1,y1),第一距离值为x0,在与待检索字符匹配成功的字符a之前有n个字符,则字符a的位置坐标为(x1+n*x0,y1)。
在字符串中的多个字符位于同一列时,第一个字符在电子文档中的位置坐标为(x1,y1),第一距离值为x0,在与待检索字符匹配成功的字符a之前有n个字符,则字符a的位置坐标为(x1,y1+n*x0)。
第二种,根据定位信息中第一个字符在电子文档中的位置信息、第一字符间距值、以及与待检索字符匹配成功的字符之前各字符的字宽或字高,确定字符串中与待检索字符匹配成功的字符的位置信息。
具体的,在字符串中的多个字符位于同一行时,第一个字符在电子文档中的位置坐标为(x1,y1),第一字符间距值为x0,在与待检索字符匹配成功的字符a之前有n个字符,则字符a的位置坐标为 其中wi为第i个字符的字宽。
在字符串中的多个字符位于同一列时,第一个字符在电子文档中的位置坐标为(x1,y1),第一字符间距值为x0,在与待检索字符匹配成功的字符a之前有n个字符,则字符a的位置坐标为 其中wi为第i个字符的字高。
较佳的,为了提高检索结果的准确性,在确定与待检索字符匹配成功的字符的位置信息之后,若存储有该字符的字符间距修正信息,则利用该字符间距修正信息对该字符的位置信息进行修正,将修正后的信息确定为该字符的位置信息。
例如,在字符串中的多个字符位于同一行时,确定的字符串中与待检索字符匹配成功的某一字符的位置坐标为(xm,ym),存储的该字符的字符间距修正值为C,则修正后该字符的位置坐标为(xm+C,ym)。在字符串中的多个字符位于同一列时,确定的字符串中与待检索字符匹配成功的某一字符的位置坐标为(xm,ym),存储的该字符的字符间距修正值为C,则修正后该字符的位置坐标为(xm,ym+C)。
较佳的,为了进一步提高检索结果的准确性,在确定与待检索字符匹配成功的字符的位置信息之后,若存储有该字符的字符偏移信息,则利用该字符偏移信息对该字符的位置信息进行修正,将修正后的信息确定为该字符的位置信息。
例如,在字符串中的多个字符位于同一行时,确定的字符串中与待检索字符匹配成功的某一字符的位置坐标为(xm,ym),存储的该字符的字符偏移值为D,则修正后该字符的位置坐标为(xm,ym+D)。在字符串中的多个字符位于同一列时,确定的字符串中与待检索字符匹配成功的某一字符的位置坐标为(xm,ym),存储的该字符的字符偏移值为D,则修正后该字符的位置坐标为(xm+D,ym)。
下面以具体实施例对本发明方法进行说明:
本发明可应用于各类版式文档及其应用系统,下面以CEBX格式文档中文字对象为例来进一步说明本发明的实施方式(CEBX为方正技术研究院将于2009年发布的新一代版式文档格式)。
CEBX中页面数据均采用XML语言进行描述,其基础数据类型说明见下表:
CEBX中字体对象中存储了字宽表信息,见图4A中的WidthTable部分,在文字对象中存储了字送(即所述第一距离值)、字符间距信息(即所述第一字符间距值)以及编码-字形变换,其中编码-字形变换主要保存所述字符的字符间距修正信息和字符偏移信息,见图4B中的CharDistance(字送)、CharSpace(字符间距信息)以及CGTransform节点(编码-字形变换)。
CGTransform节点详细描述了字符编码和字形索引之间的变换关系,该节点结构如图4C所示,具体说明见下表:
其中,AdvancedPosition为包含四个元素的数组,形如:
[GlyphPosition PlacementAdjusting XOffset YOffset]
其中每个元素的含义如下表:
例如,附图4D所示的文字对象(即字符串)在CEBX中的描述如下:
<Text ID=″2″Font=″1″Size=″48″>
<CGTransform CodePosition=”1”>
<AdvancedPosition>[0 100 30 20]</AdvancedPosition>
</CGTransform>
<TextCode x=″100″y=″100″>映射表</TextCode>
</Text>
参见图4E-4J,为上述初始字送、字符间距和字宽的含义示意图。
附图4A中各节点的属性信息可以参见下表:
名称 |
类型 |
说明 |
FontName |
String |
字体标识 |
FamilyName |
String |
字体族名 |
Italic |
Integer |
字体倾斜度 |
Weight |
Integer |
字体笔画的浓淡度 |
UnicodeText |
Bool |
TextCode值是否为Unicode编码 |
EmbeddedFont |
EmbeddedFont |
内嵌字体描述信息 |
WidthTable |
|
字宽描述 |
DefaultWidth |
Integer |
默认字符宽度 |
DefaultVMetrics |
Array |
竖排文字时使用的字宽信息 |
Widths |
Array |
字符宽度表 |
VMetrics |
Array |
竖排文字时使用的字宽信息表 |
附图4B中各节点的属性信息可以参见下表:
名称 |
类型 |
说明 |
Font |
RefID |
使用的字体的标识,如果未有有效字体,则使用默认替换字体。 |
Size |
Float |
字号,以磅为单位。 |
Stroke |
Bool |
(可选)勾边属性,true代表勾边,false代表不勾边。不出现时认为不勾边。勾边时采用的颜色使用绘制参数中定义的颜色。[例外处理]当文字对象被裁减区引用时此属性被忽略。 |
ReadDirection |
Integer |
(可选)阅读方向,指定了文字排列的方向,例如横排、竖排,默认值为0。 |
CharDirection |
Integer |
(可选)字符方向,指定了文字放置的方式,例如正常放置、旋转90度放置,默认值为0。 |
CGTransform |
String |
(可选)主要用于描述字符编码和字形索引之间的变换关系。 |
TextCode |
String |
文字内容,也就是一段字符编码串。字符编码有两种表现形式,一是使用Unicode编码,一是直接使用字体中的字形索引,以十六进制表示,空格位分隔符。使用哪种形式由Font中的UnicodeText属性来确定。 |
X |
Float |
(可选)文字的x坐标,是TextCode内包含文字的第一个字符在当前坐标系统下的坐标。当x不出现、y出现时,则采用上一个TextCode的x值。 |
Y |
Float |
(可选)文字的y坐标,是TextCode内包含文字的第一个字符在当前坐标系统下的坐标。当y不出现、x出现时,则采用上一个TextCode的y值。 |
CharDistance |
Float |
(可选)从当前字符的起始位置到下一个字符的起始位置的距离,采用当前坐标空间单位。此属性主要用于等宽字体,如果没有指定,则采用字体中的字宽数据和CharSpace来决定下个字符的起始位置。 |
CharSpace |
Float |
(可选)字间距,默认值为0,主要用于非等宽字体。当CharDistance属性出现时无效,此时下一个字符的起始位置完全由CharDistance决定。 |
UnderLine |
Bool |
(可选)标识该段文字是否使用了下划线,true代表绘制下划线,false代表不绘制下划线。不出现时认为未使用下划线。该属性只是用于标识,主要用于信息抽取,而不用于版式或其他形式的版面还原行为。 |
DeleteLine |
Bool |
(可选)标识该段文字是否使用了删除线,true代表绘制删除线,false代表不绘制删除线。不出现时认为未使用删除线。该属性只是用于标识,主要用于信息抽取,而不用于版式或其他形式的版面还原行为。 |
下面以如何将PDF中采用单字符输出的文字转换为CEBX中的文字对象为例说明本发明所述的文字信息处理方法,这里假定PDF中均为横排中文文字,采用等宽字体。
第一步,解析PDF文件,获取文字信息。
第二步,找出字体字号相同且Y坐标相同的一段文字序列,计算其每个字符起始点到下一个字符起始点的距离,然后在这些距离数据中挑出一个出现次数最多的距离作为初始字送。对于距离数据中和初始字送不同的数据,计算其和初始字送之间的差值,作为字符间距修正。如果在文字行的垂直方向上字符有偏移,则把偏移距离作为字符偏移。
第三步,将上述得到的初始字送写入文字内容(TextCode)中的CharDistance属性,将上述得到的字符间距修正和字符偏移写入CGTransform节点,然后将同一行中字体字号相同的这一段文字序列存储于TextCode节点。
下面以如何呈现CEBX的文字内容为例说明发明内容中的精确还原方法。
第一步,根据TextCode中首字符的x、y坐标以及CharDistance和CharSpace等信息计算出每个字符的起始点位置。如果CharDistance存在,则忽略CharSpace以及字体的WidthTable信息,否则根据CharSpace和字体的WidthTable信息来计算下一个字符的起始点位置。
第二步,根据编码-字形变换中的字符间距修正(PlacementAdjusting)对TextCode中每个字符的起始点位置进行修正,需要注意的是根据TextCode中的字符顺序进行修正,每次修正均基于前面已经处理之后的结果来进行计算。
第三步,根据编码-字形变换中的XOffset和YOffset对每个字符的位置进行修正,从而得到最终的输出位置。
当文字进行绘制时一般分为两种情况:
一种是文字方向(CharDirection)与阅读方向(ReadDirection)平行,即文字方向与阅读方向的夹角为0或180度的时候,文字绘制位置以文字基线为基准,下一个字符位置以阅读方向进行偏移,偏移大小为字宽(横排)与字符间距的和,即CharDistance。也即,字符的输出位置为该字符的前一字符的输出位置以文字基线为基准、向阅读方向偏移大小为前一字符的字宽与字符间距的和的距离后的位置。附图4E~4H展示了文字“流程图”和“Get”在文字方向和阅读方向平行时的示意图。
一种是文字方向(CharDirection)与阅读方向(ReadDirection)垂直,即文字方向与阅读方向的夹角为90或270度的时候,文字绘制位置以文字中心线为基准,下一个字符位置以阅读方向进行偏移,偏移大小为字宽(竖排)与字符间距的和,即VMetrics与CharSpace的和。也即,字符的输出位置为该字符的前一字符的输出位置以文字中心线为基准、向阅读方向偏移大小为前一字符的字宽与字符间距的和的距离后的位置。附图4I~4J展示了文字“流程图”和“Get”在文字方向和阅读方向垂直时的示意图。
CharDirection与ReadDirection规定了文字显示时的排列方向,CharDirection指定了单个文字绘制方向,也就是文字的基线方向,用从x轴正方向顺时针到字形基线的角度表示,ReadDirection指定了阅读方向,用从x轴正方向顺时针到文字排列方向的角度表示。
参见图5,本发明实施例还提供一种电子文档的文字信息处理装置,该装置包括字符选取单元50、位置获取单元51、距离确定单元52和信息存储单元53,其中:
字符选取单元50,用于选取所述电子文档中位于同一行或同一列的多个字符作为一个字符串,所述多个字符的字体和字号相同并且位置连续;
位置获取单元51,用于获取所述字符串中第一个字符在所述电子文档中的位置信息;
距离确定单元52,用于确定所述字符串的相邻字符距离;
信息存储单元53,用于将所述第一个字符在所述电子文档中的位置信息和所述相邻字符距离作为所述字符串的定位信息与所述字符串进行关联存储。
所述字符选取单元50用于:
在所述电子文档的排版方向为横向排版方向时,选取所述电子文档中位于同一行的多个字符作为一个字符串;在所述电子文档的排版方向为纵向排版方向时,选取所述电子文档中位于同一列的多个字符作为一个字符串。
所述距离确定单元52包括起始点距离确定单元和第一结果确定单元,其中:
起始点距离确定单元,用于在所述字符串中的字符采用等宽字体时,对于所述字符串中除最后一个字符之外的其它每个字符,确定该字符的起始点到下一个字符的起始点的距离值;
第一结果确定单元,用于从所述起始点距离确定单元确定出的各距离值中选取一个出现次数最多的第一距离值,将该第一距离值确定为所述字符串的相邻字符距离。
所述距离确定单元52包括字符间距确定单元和第二结果确定单元,其中:
字符间距确定单元,用于在所述字符串中的字符采用非等宽字体时,对于所述字符串中除最后一个字符之外的其它每个字符,确定该字符与下一个字符的字符间距值;
第二结果确定单元,用于从所述字符间距确定单元确定的各字符间距值中选取一个出现次数最多的第一字符间距值,将该第一字符间距值确定为所述字符串的相邻字符距离。
该装置进一步包括:
第一字符间距修正确定单元54,用于对于所述起始点距离确定单元确定出的各距离值中除所述第一距离值之外的其它距离值,计算该距离值与所述第一距离值的差值;
相应的,所述信息存储单元53还用于:
将所述第一字符间距修正确定单元计算得到的差值作为该距离值对应的终止字符的字符间距修正信息与所述定位信息进行关联存储。
该装置进一步包括:
第二字符间距修正确定单元55,用于对于所述字符间距确定单元确定出的各字符间距值中除所述第一字符间距值之外的其它字符间距值,计算该字符间距值与所述第一字符间距值的差值;
相应的,所述信息存储单元53还用于:
将所述第二字符间距修正确定单元计算得到的差值作为该字符间距值对应的终止字符的字符间距修正信息与所述定位信息进行关联存储。
该装置进一步包括:
字符偏移判断单元56,用于在所述多个字符位于同一行时,判断所述多个字符中每个字符的纵向位置相对于所述多个字符所在行的纵向位置是否存在偏移;在所述多个字符位于同一列时,判断所述多个字符中每个字符的横向位置相对于所述多个字符所在列的横向位置是否存在偏移;
相应的,所述信息存储单元53还用于:
在所述字符偏移判断单元判断为是时,将所述偏移的信息作为对应字符的字符偏移信息与所述定位信息进行关联存储。
参见图6,本发明实施例还提供一种利用上述电子文档的文字信息处理装置进行字符输出的装置,该装置包括信息读取单元60位置确定单元61和字符输出单元62,其中:
信息读取单元60,用于读取所述电子文档的文字信息处理装置存储的字符串以及该字符串的定位信息;
位置确定单元61,用于对于所述字符串中除第一个字符外其它各字符,根据所述定位信息确定该字符的输出位置信息;
字符输出单元62,用于根据所述位置确定单元确定的字符的输出位置信息对该字符进行输出。
所述位置确定单元61包括第一位置确定单元和/或第二位置确定单元,其中:
所述第一位置确定单元,用于根据所述定位信息中所述第一个字符在所述电子文档中的位置信息和所述第一距离值,确定该字符的输出位置信息;
所述第二位置确定单元,用于根据所述定位信息中所述第一个字符在所述电子文档中的位置信息、所述第一字符间距值和该字符之前各字符的字宽或字高,确定该字符的输出位置信息。
该装置进一步包括:
第一位置修正单元63,用于在所述电子文档的文字信息处理装置存储有字符的字符间距修正信息时,利用所述字符间距修正信息对该字符的输出位置信息进行修正,将修正后的信息确定为该字符的输出位置信息。
该装置进一步包括:
第二位置修正单元64,用于在所述电子文档的文字信息处理装置存储有存储有字符的字符偏移信息时,利用所述字符偏移信息对该字符的输出位置信息进行修正,将修正后的信息确定为该字符的输出位置信息。
参见图7,本发明实施例还提供一种利用上述电子文档的文字信息处理装置进行字符检索的装置,该装置包括信息读取单元70、字符匹配单元71、位置确定单元72和结果反馈单元73,其中:
信息读取单元70,用于读取存储的字符串以及该字符串的定位信息;
字符匹配单元71,用于将输入的待检索字符与所述字符串进行匹配;
位置确定单元72,用于根据所述字符串的定位信息,确定所述字符串中与所述待检索字符匹配成功的字符的位置信息;
结果反馈单元73,用于根据所述字符的位置信息查找到该字符,并将该字符作为字符检索结果返回。
所述位置确定单元72包括第一位置确定单元和/或第二位置确定单元,其中:
所述第一位置确定单元,用于根据所述定位信息中所述第一个字符在所述电子文档中的位置信息和所述第一距离值,确定与所述待检索字符匹配成功的字符的位置信息;
所述第二位置确定单元,用于根据所述定位信息中所述第一个字符在所述电子文档中的位置信息、所述第一字符间距值、以及与所述待检索字符匹配成功的字符之前各字符的字宽或字高,确定与所述待检索字符匹配成功的字符的位置信息。
该装置进一步包括:
第一位置修正单元74,用于在所述电子文档的文字信息处理装置存储有字符的字符间距修正信息时,利用该字符间距修正信息对该字符的位置信息进行修正,将修正后的信息确定为该字符的位置信息。
第二位置修正单元75,用于在所述电子文档的文字信息处理装置存储有该字符的字符偏移信息时,利用该字符偏移信息对该字符的位置信息进行修正,将修正后的信息确定为该字符的位置信息。
综上,本发明的有益效果包括:
本发明实施例提供的文字信息处理方案中,通过选取电子文档中位于同一行或同一列、并且字体和字号相同、位置连续的多个字符作为一个字符串,确定该字符串的相邻字符距离,将字符串中第一个字符在电子文档中的位置信息和字符串的相邻字符距离作为字符串的定位信息进行关联存储,而不需要存储每个字符的坐标信息作为对应字符的定位信息,能够大大节省存储字符的定位信息所需的存储空间。
本发明实施例提供的字符输出方案中,读取存储的字符串以及该字符串的定位信息,根据定位信息确定字符串中除第一个字符外其它各字符的输出位置信息,并根据确定的字符的输出位置信息对该字符进行输出,而不需要依次读取字符串所包含的各字符的坐标信息,来根据各字符的坐标信息对相应字符进行输出,可见本方案能够有效提高字符位置解析的效率,进而提高字符串输出的速度。
本发明实施例提供的字符检索方案中,读取存储的字符串以及该字符串的定位信息,将输入的待检索字符与读取的字符串进行匹配,根据读取到的字符串的定位信息确定字符串中与待检索字符匹配成功的字符的位置信息,然后根据确定的字符的位置信息查找到该字符,并将该字符作为字符检索结果返回。而不需要依次读取存储的字符串所包含的各字符,将各字符与待检索字符进行匹配,再依次读取匹配成功的各字符的坐标信息,来根据各字符的坐标信息查找到该字符,可见本方案能够有效提高字符检索的效率。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。