06被解说为被显示在平板式计算设备305的显示表面上。如应当领会的,平板式计算设备305只是任何合适计算设备的一个示例,并且其上可显示固定格式文档并且其上可显示转换后的流格式文档的相关联的显示器可根据本发明的各实施例来显示。
[0028]固定格式文档106包含标题310和三个文本段落315、335、340。第一文本段落包含以从左到右的阅读次序书写的英语段落。段落315由多个文本行组成,并且每一文本行由多个文本串组成。如应当领会的,文本串可包括单个字符、字符符号、个体单词、个体单词与相邻的空格的组合、单词之后是空格之后是另一单词的组合、单词经由字符和/或符号(例如,连字号、圆点等)连接到另一单词的组合,或者文本串可包括整个行或行集合。
[0029]第一段落315包括多个单词、单词之间的空格320、数字325、和包括变音符号332 (例如字符“e”上的重音标记)的至少一个单词330。第二段落335包括以从左到由次序书写的多行文本,并包括含连字的至少一个单词337 “wheel (轮子)”,该连字包括字母“heel,,。
[0030]仍参考图3A,段落340被示为以从右到左的阅读次序书写,并包含至少一个单字符文本串350,且包含一双字符数字文本串355。如应当领会的,多种语言通常以从左到右的阅读次序呈现,如在段落315、335中示出的,例如根据英语书写的文本。替换地,多种其他语言(例如许多中东语言,诸如阿拉伯语和希伯来语)被书写到以从右到左的阅读次序呈现的文本中。段落340中示出的单词仅出于说明的目的是以从右到左的方向书写的英语单词,而不旨在表示属于特定语言的文本。实际上,段落340中的单词(文本串)旨在示出根据本文中描述的各实施例的对从右到左的文本方向性的处理。
[0031]现参考图3B,解说了在平板式计算设备上显示的文档中的单词337,该单词337包括字符“w”形式的第一字符365以及包括文本字符“heel”的连字370。单个字符365和连字370的组合结合以形成以草写体文本样式书写的英语单词“wheel”。如应当领会的,许多语言包括连字,诸如图3B中解说的示例连字。具体地,许多语言(例如许多中东语言、东方语言等)包括各种丰富的连字,这些连字包括在文档中呈现的各个文本串中所包括的一个或多个文本字符和/或符号。如以下所描述的,为了确保合适地重构包含一个或多个阅读次序并包含连字的固定格式文档,如图3B所解说的,可基于这样的连字的位置的上下文将这样的连字映射到相应的字符和/或文本串,以供确保合适地执行与相应文本的阅读次序相关联地将这些连字重构为流格式文档的一部分。
[0032]仍参考图3B,解说了与字符“e”上重音标记形式的变音符号332相关联的单词330 ( “Jos6”),其可被包括作为根据从右到左的阅读次序或从左到右的阅读次序呈现的文档中的文本串。边界框375被示为在单词330的文本字符周围,并且边界框380被示为在定位在单词330中的字符“e”上方的重音标记或变音符号332周围。如以下所描述的,当文本串(例如单词330)被包括在必须被重构成流格式文档的固定格式文档中时,诸如重音标记332之类的变音符号必须被考虑,并且必须相对于与这些变音符号相关联的相关联字符或符号被合适地定位,以使得当该文本串被重构在流格式文档中时,这些变音符号将相对于相关联的字符和/或符号并相对于为该文本串确定的文本方向和阅读次序被合适地定位。
[0033]在以上参考图1到图3描述了用于本发明的各实施例的示例性操作环境以及示例多方向文本串的情况下,图4A和4B解说了用于将固定格式文档重构成流格式文档的方法的流程图,其中固定格式文档可包括从右到左的文本方向、从左到右的文本方向、连字和变音符号。随后参考图4A,方法400始于开始操作405,并前进到操作410,在操作410,接收要被重构成流格式文档的固定格式文档。
[0034]在操作415,接收到的固定格式文档被传递给解析器110,并且该固定格式被分成各个体文本串,随后这些个体文本串被根据与构成这些个体文本串的各个体符号相关联的方向性拆分开。即,每一文本串被分成各部分,以使得每一部分对于与每一部分相关联的方向性而言是唯一的。例如,如果给定文本串具有从右到左方向性和从左到右方向性两者,则该文本串将被分成从右到左部分和从左到右部分。
[0035]根据本发明的一实施例,可由文档转换器102使用解析器110、文档处理器112将固定格式文档分解成各文本串,如以上参考图1所描述的。如应当领会的,解析器110、文档处理器112可使用多种方法来将接收到的文本分解成各文本串。根据一个实施例,每一文本串可被分解成各个体单词或各个体字符,并且各个体单词和/或字符可与用于确定所提取的单词和/或字符是否匹配已知单词的单词和/或字符库进行比较。此外,空格和标点符号标记可用于帮助文档处理器112与解析器110相关联地将各行拆分成各个体文本串,包括各个体单词、单词组合等。
[0036]如上所述,文本串可以是文本字符串的多个不同分量之一,例如为单个字符、单个单词、单个单词之后或之前是空格、单词之后是空格再之后是另一单词、整个句子或多个句子。S卩,文本串可以是单词、数字、空格、标点符号标记等的多种不同的组合,其组合在一起以生成有意义的文本字符串,该文本字符串可用作给定语言的书写元素并且可被分析以确定给定文本串的文本方向性或阅读次序,如本文中所描述的。回过头参考图3A,在固定格式文档106中提供的文本包括三个段落315、335、340。每一段落都包括多个行,并且每一段落的每一行包括多个文本串,这些文本串包括单词、空格和数字等。
[0037]除了标识接收到的固定格式文档中的一个或多个文本串外,在文档解析过程期间还可检测连字形式的文本串。如以上参考图3A和3B所解说和描述的,连字可处于字符或符号的混合的形式以形成可被各种语言用作有用文本分量的文本分量。例如,参考图3B,单词“wheel”包括通过小量空格与包括字符“h、e、e、I”的连字分隔开的单个单词“W”,字符“h、e、e、I”在物理上混合在一起作为单个文本分量(“heel”)。如以下所描述的,由于这样的连字可出现在根据特定文本方向(例如,从右到左的方向性)呈现的各文本串中,在确定接收到的固定格式文档中包括的文本串的文本方向性时,必须考虑这样的连字,以使得将该文档重构为流格式文档将被正确地执行。
[0038]在可确定构成接收到的固定格式文档的各文本串的字符和文本串方向性之前,可对从接收到的固定格式文档中解析出的文本串执行预处理,以用于根据与各文本串相关联的不同方向性来拆分解析出的文本串。即,由于各文本串可具有不同方向性的字符,因此在确定从文档解析出的具有强文本方向性的文本串的数目之前,确定各文本串中可存在的不同类方向性可能是必要的。
[0039]接着,可开始与每一经解析文本有关的确定,以用于确定四类方向性之一是否可与每一文本串、构成文本串的字符或诸如连字的其他分量相关联。根据一实施例,可为每一文本串或每一文本串的分量确定四类方向性。第一类方向性是与例如中东语言(如阿拉伯语)的某些语言相关联的从右到左的方向性。可应用于给定文件串或其分量的第二类文本方向性是与例如英语的某些语言相关联的从左到右的方向性。第三类方向性是与诸如文字间的空格、标点符号标记或其他并非给定文本方向性所特有的文本分量之类的文本分量相关联的中间方向性。第四类文本方向性是通常与给定文本串中包含的或与给定文本串相关联的数字相关联的弱方向性。
[0040]在操作420,存在于接收到的固定格式文档中的任何变音符号都可被处理来将合适的文本方向性应用于每一变音符号,以使得该变音符号将根据合适的文本方向性被重构在流格式文档中。当在操作420处理文档以得到变音符号时,接收到的固定格式文档的每一页面被解析以获得在该页面中找到的变音符号。例如,回过头参考图3B,从接收到的固定格式文档中解析出单词“ Jos6”,并定位变音符号332 (例如,重音标记)。在解析过程期间,文本方向检测引擎122尝试定位每一经定位变音符号的载体。例如,参考图3B,变音符号(重音标记)332的载体是单词330的结尾处的字母“e”。由此,在解析期间,文本方向检测引擎122尝试找出每一变音符号以及与每一变音符号相关联的每一载体。
[0041]仍参考图3B,文本方向检测引擎122分析与每一显示文本分量相关联的边界框,例如限定变音符号332的边界框380以及限定单词330的边界框375。在操作425,作出关于在标识出的变音符号的边界框和相关联的载体的边界框之间是否存在水平重叠的确定。如果在变音符号的边界框和载体的边界框之间存在这样的水平重叠,则该方法行进到操作435,并且在操作435,由水平重叠的边界框限定的变音符号和载体字符或载体符号被正好存储在载体字符或载体符号之后(例如在其右侧)。
[0042]如果载体字符或载体符号包含多个字符(即,它形成连字),则必须确定载体符号中的哪个字符携带该连字。在这样的情况下,文本方向检测引擎122可通过用载体符号的边界框除以字符总数来估计字符边界框。随后,可执行对变音符号边界框与估计或计算出的字符边界框的水平重叠的搜索,并且变音符号可被存储在紧跟在载体字符或载体符号后面的符号字符串内。在从右到左的文本方向性的情况下,变音符号可正好被存储在字体后面(即在载体的左边)。
[0043]回过头参考操作425,如果标识出的变音符号的边界框380不与相关联的载体、字符或符号的边界框375水平重叠,则方法400行进到操作430,并且将变音符号保留在用于从固定格式文档中定位变音符号的初始解析过程期间找到该变音符号的地方。
[0044]在操作440,固定格式文档可被分成各个体行,以用于帮助和分析构成各个体行的文本串。引擎120可使用公知的文本行属性将接收到的文本分成各个体行。例如,像之后是一个或多个空格的句号之类的标点符号标记可指示一行的结束,在其之后是另一行的开始。