專利名稱:用于文檔重構(gòu)的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及文檔重構(gòu)。特別地,本發(fā)明涉及用于從未結(jié)構(gòu)化文檔定義結(jié)構(gòu)化文檔的方法、用于提高這種處理的效率的方法以及用于改善對(duì)結(jié)構(gòu)化文檔的顯示和與結(jié)構(gòu)化文檔的交互的方法。
背景技術(shù):
文檔通常被定義為僅僅是在頁(yè)面上的規(guī)定位置處繪出的本原元素(primitive element)的集合。例如,PDF(便攜式文檔格式)文件可能不具有對(duì)結(jié)構(gòu)的定義,而只有在各個(gè)位置處繪制圖示符(glyph)、形狀和位圖的指令。用戶可以在標(biāo)準(zhǔn)監(jiān)視器上瀏覽這種文檔,并且推導(dǎo)出結(jié)構(gòu)。然而,由于這種文件僅僅是本原元素的集合,所以文檔瀏覽應(yīng)用不會(huì)了解文檔的預(yù)期結(jié)構(gòu)。例如,表格顯示為一系列線條和/或矩形,其中線條之間具有文本,人類瀏覽者可以將其識(shí)別為表格。然而,顯示文檔的應(yīng)用沒(méi)有指示文本分組基于行和列彼此具有關(guān)系,這是因?yàn)槲臋n不包括這種信息。 類似地,應(yīng)用沒(méi)有關(guān)于整個(gè)頁(yè)面的文本流(例如,從一列到下一列的流,或者在嵌入圖像周圍的流)的指示,或者關(guān)于可以由人類用戶即時(shí)確定的各種其他重要特征的指示。當(dāng)用戶僅僅是在標(biāo)準(zhǔn)監(jiān)視器上瀏覽文檔時(shí),缺少對(duì)文檔結(jié)構(gòu)的了解不總是個(gè)問(wèn)題。然而,對(duì)于使得閱讀者能夠訪問(wèn)文件并對(duì)其進(jìn)行編輯,就像該文件是由字處理器、圖像編輯應(yīng)用等生成的且具有元素之間的關(guān)系和結(jié)構(gòu)的文檔一樣,這通常是頗為重要的。因此,需要能夠重構(gòu)未結(jié)構(gòu)化的文檔的方法。類似地,需要利用這種重構(gòu)文檔結(jié)構(gòu)來(lái)使對(duì)文檔的顯示理想化(例如,對(duì)于小屏幕設(shè)備,其中無(wú)法實(shí)現(xiàn)在屏幕上一起顯示整個(gè)文檔)或者使得能夠智能地選擇文檔的元素的方法。在現(xiàn)代社會(huì)中,越來(lái)越多的計(jì)算應(yīng)用轉(zhuǎn)向手持式設(shè)備(例如,蜂窩式電話、媒體播放器,等等)。因此,文檔重構(gòu)技術(shù)必須在這種設(shè)備上可行,這種設(shè)備通常具有比標(biāo)準(zhǔn)個(gè)人計(jì)算機(jī)小的計(jì)算能力。然而,文檔重構(gòu)通常采用相當(dāng)多的計(jì)算和存儲(chǔ)器密集過(guò)程(例如,集群分析),并且使用大塊的存儲(chǔ)器。因此,還需要允許總的來(lái)說(shuō)在文檔重構(gòu)中且具體而言在集群分析中的更高效率的技術(shù)。
發(fā)明內(nèi)容
本發(fā)明的不同實(shí)施例采用不同的技術(shù)來(lái)分析未結(jié)構(gòu)化文檔以定義結(jié)構(gòu)化文檔。在一些實(shí)施例中,未結(jié)構(gòu)化文檔包括眾多本原元素,但是不包括結(jié)構(gòu)性元素,該結(jié)構(gòu)性元素規(guī)定本原元素之間的結(jié)構(gòu)性關(guān)系和/或基于這些本原元素的文檔的結(jié)構(gòu)性屬性。因此,為了定義結(jié)構(gòu)化文檔,一些實(shí)施例采用未結(jié)構(gòu)化文檔的本原元素來(lái)識(shí)別未結(jié)構(gòu)化文檔的各種幾何屬性,然后采用所識(shí)別出的幾何屬性和本原元素的其他屬性來(lái)定義結(jié)構(gòu)性元素,例如相關(guān)聯(lián)的本原元素(例如,字、段落、連結(jié)圖,等等)、表格、導(dǎo)引(guide)、裝訂線(gutter)等等,以及定義閱讀本原元素和結(jié)構(gòu)性元素的流(flow)。如所提到的,一些實(shí)施例采用本原元素來(lái)識(shí)別各種幾何屬性。例如,一些實(shí)施例提供識(shí)別多組本原元素之間的邊界和由所述邊界界定的區(qū)域的方法。該方法采用識(shí)別出的區(qū)域來(lái)定義用于該文檔的結(jié)構(gòu)性元素,并且基于本原元素和結(jié)構(gòu)性元素定義結(jié)構(gòu)化文檔。在一些實(shí)施例中,定義結(jié)構(gòu)性元素包括單獨(dú)地分析每個(gè)區(qū)域,以生成特定區(qū)域中的多組本原元素之間的關(guān)聯(lián)。在一些實(shí)施例中,定義結(jié)構(gòu)化文檔包括識(shí)別所識(shí)別出的區(qū)域之間的分級(jí)關(guān)系。一些實(shí)施例提供用于分析包括眾多字的未結(jié)構(gòu)化文檔的方法,其中每個(gè)字是相關(guān)聯(lián)的圖示符集,并且每個(gè)圖示符具有定位坐標(biāo)。該方法識(shí)別定位值的集群,其中每個(gè)定位值與一個(gè)字相關(guān)聯(lián)、是用于字對(duì)準(zhǔn)的基礎(chǔ)、并且是從該字的圖示符的定位坐標(biāo)導(dǎo)出的。基于所識(shí)別出的定位值的集群,該方法定義用于字的邊界元素集,所述邊界元素識(shí)別用于字的對(duì)準(zhǔn)導(dǎo)引集。該方法基于圖示符和定義的邊界元素定義結(jié)構(gòu)化文檔。一些實(shí)施例還定義一對(duì)邊界元素之間的空白空間的至少一個(gè)區(qū)域,并且還基于空白空間的區(qū)域來(lái)定義結(jié)構(gòu)化文檔。一些實(shí)施例通過(guò)采用密度集群來(lái)識(shí)別定位值的集群。一些實(shí)施例采用本原元素的識(shí)別出的幾何屬性和其他屬性,來(lái)定義結(jié)構(gòu)性元素, 以及定義閱讀本原元素和結(jié)構(gòu)性元素的流。例如,一些實(shí)施例提供了一種用于分析包括眾多圖示符的未結(jié)構(gòu)化文檔的方法,其中每個(gè)圖示符在未結(jié)構(gòu)化文檔中具有一個(gè)位置?;趫D示符的位置,該方法生成不同圖示符集之間的關(guān)聯(lián),以將不同圖示符集識(shí)別為不同的字。 該方法生成不同字集之間的關(guān)聯(lián),以將不同字集識(shí)別為不同的段落。該方法定義不鄰接的段落之間的關(guān)聯(lián),以定義閱讀段落的順序。為了生成不同字集之間的關(guān)聯(lián)以將不同字集識(shí)別為不同的段落,一些實(shí)施例生成不同字集之間的關(guān)聯(lián)作為不同的文本行,并且生成不同文本行集之間的關(guān)聯(lián)作為不同的段落。一些實(shí)施例提供了一種方法,該方法識(shí)別圖示符集之間的邊界,并識(shí)別出幾個(gè)所述邊界形成表格。該方法基于所述表格定義包括布置在若干行和列中的若干單元的表格結(jié)構(gòu)性元素,其中每個(gè)單元包括相關(guān)聯(lián)的圖示符集。一些實(shí)施例通過(guò)識(shí)別形成更大矩形形狀和包含在更大矩形形狀內(nèi)的若干矩形形狀的邊界集,來(lái)識(shí)別出邊界形成表格。在一些實(shí)施例中,基于形成單元的所述相關(guān)聯(lián)的圖示符集的位置來(lái)推斷至少一些識(shí)別出的邊界。一些實(shí)施例提供了一種用于分析包括眾多本原圖形元素的未結(jié)構(gòu)化文檔的方法, 其中每個(gè)本原圖形元素被定義為單個(gè)對(duì)象。所述文檔具有繪制順序,該繪制順序指示繪制本原圖形元素的順序。該方法按照繪制順序識(shí)別接連的本原圖形元素之間的位置關(guān)系?;谒鑫恢藐P(guān)系,該方法從若干本原圖形元素定義單個(gè)結(jié)構(gòu)性圖形元素。一些實(shí)施例通過(guò)計(jì)算包括按照繪制順序相繼的第一和第二本原圖形元素的結(jié)構(gòu)性圖形元素的尺寸,來(lái)識(shí)別所述第一與第二本原圖形元素之間的位置關(guān)系。一些實(shí)施例提供了用于更高效地進(jìn)行幾何分析和文檔重構(gòu)的方法。例如,一些實(shí)施例提供了一種方法,該方法提供用于定義包括多個(gè)本原元素的結(jié)構(gòu)化文檔的一組缺省文檔重構(gòu)操作。該方法提供了分級(jí)的簡(jiǎn)檔(profile)集合,其中每個(gè)簡(jiǎn)檔包括(i) 一組文檔重構(gòu)結(jié)果和(ii)當(dāng)中間文檔重構(gòu)結(jié)果與所述簡(jiǎn)檔的潛在文檔重構(gòu)結(jié)果相匹配時(shí)用于修改文檔重構(gòu)操作的結(jié)果。來(lái)自所述分級(jí)中的較低級(jí)別的簡(jiǎn)檔的指令撤銷(override)來(lái)自較高級(jí)別的簡(jiǎn)檔的指令。在一些實(shí)施例中,用于特定簡(jiǎn)檔的指令包括所述分級(jí)的簡(jiǎn)檔集合中位于較低級(jí)別的簡(jiǎn)檔子集,該簡(jiǎn)檔子集應(yīng)在中間文檔重構(gòu)結(jié)果與用于簡(jiǎn)檔的潛在文檔重構(gòu)結(jié)構(gòu)匹配時(shí)被測(cè)試。
一旦定義了結(jié)構(gòu)化文檔,一些實(shí)施例提供各種用于使與結(jié)構(gòu)化文檔的用戶交互理想化的技術(shù)。例如,一些實(shí)施例提供用于顯示結(jié)構(gòu)化文檔的方法,所述結(jié)構(gòu)化文檔包括通過(guò)分析未結(jié)構(gòu)化文檔而構(gòu)建的結(jié)構(gòu)性元素的分級(jí)。該方法在設(shè)備(例如,小屏幕設(shè)備)上顯示結(jié)構(gòu)化文檔。該方法接收文檔中感興趣的位置,并基于所述感興趣的位置將分級(jí)中的結(jié)構(gòu)性元素識(shí)別為感興趣的區(qū)域。該方法修改對(duì)文檔的顯示,以突出顯示識(shí)別出的感興趣的區(qū)域。一些實(shí)施例通過(guò)以下操作來(lái)識(shí)別結(jié)構(gòu)性元素識(shí)別包括所述感興趣位置的分級(jí)的最低級(jí)別處的結(jié)構(gòu)性元素,以及識(shí)別包括在最低級(jí)別處識(shí)別出 的結(jié)構(gòu)性元素的分級(jí)的較高級(jí)別處的結(jié)構(gòu)性元素,直到達(dá)到適合作為感興趣區(qū)域的結(jié)構(gòu)性元素。一些實(shí)施例還接收用以從感興趣區(qū)域移動(dòng)的輸入,并修改對(duì)文檔的顯示以突出顯示結(jié)構(gòu)性相關(guān)的感興趣區(qū)域。一些實(shí)施例提供了一種用于定義對(duì)包括眾多圖示符的未結(jié)構(gòu)化文檔中的文本的選擇的方法。該方法識(shí)別相關(guān)聯(lián)的圖示符集以及規(guī)定閱讀這些圖示符的流的閱讀順序。該方法顯示文檔,并接收用于選擇所顯示文檔內(nèi)的文本的起始點(diǎn)和終止點(diǎn)。該方法通過(guò)采用所識(shí)別出的圖示符集和預(yù)期的閱讀流來(lái)定義從所述起始點(diǎn)到所述終止點(diǎn)對(duì)文本的選擇。在一些實(shí)施例中,所述相關(guān)聯(lián)的圖示符集是段落,閱讀順序規(guī)定從不鄰接的第一段落到第二段落的閱讀流。一些實(shí)施例提供了提高幾何分析和文檔重構(gòu)處理的效率的方法。一些實(shí)施例采用集群分析用于幾何分析和/或文檔重構(gòu),其可以是計(jì)算密集處理。因此,一些實(shí)施例提供了一種定義未結(jié)構(gòu)化文檔的結(jié)構(gòu)的方法,該未結(jié)構(gòu)化文檔包括眾多本原元素,這些本原元素是按照它們?cè)谖臋n中的位置來(lái)定義的。該方法識(shí)別出一個(gè)成對(duì)的最接近本原元素的分組, 并按照從最近對(duì)到最遠(yuǎn)對(duì)的順序?qū)λ龀蓪?duì)的本原元素進(jìn)行排序。該方法存儲(chǔ)識(shí)別哪些成對(duì)的本原元素足夠遠(yuǎn)離以形成分隔(partition)的單個(gè)值。該方法采用存儲(chǔ)的值來(lái)識(shí)別和分析所述分隔,以定義文檔的結(jié)構(gòu)性元素。一些實(shí)施例還提供了利用高效的數(shù)據(jù)結(jié)構(gòu)的方法。例如,一些實(shí)施例提供幾種不同的用于分析和操縱包括眾多本原元素的未結(jié)構(gòu)化文檔的處理。一些實(shí)施例還提供了對(duì)與本原元素相關(guān)聯(lián)的數(shù)據(jù)的存儲(chǔ)。至少一些所述數(shù)據(jù)存儲(chǔ)在與所述處理分開(kāi)的存儲(chǔ)器空間中,并由至少兩個(gè)不同的處理共享。所述處理通過(guò)利用對(duì)所述數(shù)據(jù)的引用來(lái)訪問(wèn)所述數(shù)據(jù)。 所述數(shù)據(jù)不會(huì)被處理復(fù)制。
本發(fā)明的新穎特征在所附權(quán)利要求中闡述。然而,為了解釋,在附圖中闡述了本發(fā)明的若干實(shí)施例。圖1例示了一些實(shí)施例的整體重構(gòu)流。圖2例示了文檔的頁(yè)面和來(lái)自對(duì)所述頁(yè)面執(zhí)行的一些實(shí)施例的幾何分析和文檔重構(gòu)的各種結(jié)果。圖3概念性地例示了一些實(shí)施例的用于識(shí)別文檔的頁(yè)面的區(qū)并產(chǎn)生用于頁(yè)面的區(qū)樹(shù)的處理。圖4例示了在一些實(shí)施例中的頁(yè)面和用于識(shí)別所述頁(yè)面的區(qū)并產(chǎn)生用于所述頁(yè)面的區(qū)樹(shù)的序列。圖5例示了包括若干區(qū)的文檔的頁(yè)面。
圖6例示了包括區(qū)邊界圖形和多個(gè)區(qū)的頁(yè)面,其包括旋轉(zhuǎn)分組。圖7例示了用于圖5的頁(yè)面的一些實(shí)施例的區(qū)樹(shù)。圖8概念性地例示了一些實(shí)施例的用于定義頁(yè)面上的旋轉(zhuǎn)分組的處理。圖9概念性地例示了一些實(shí)施例的用于識(shí)別區(qū)邊界和相交部的處理。圖10例示了包括各種圖形和文本的頁(yè)面。圖11例示了用于圖10的頁(yè)面的區(qū)邊界區(qū)間(interval)和相交部。圖12概念性地例示了一些實(shí)施例的用于識(shí)別區(qū)的處理。圖13和14例示了應(yīng)用圖12的處理以識(shí)別圖10的頁(yè)面的區(qū)。圖15概念性地例示了一些實(shí)施例的用于生成區(qū)樹(shù)的處理。圖16例示了來(lái)自圖10的頁(yè)面的區(qū)按照尺寸被排序并放置在節(jié)點(diǎn)圖中。圖17概念性地例示了一些實(shí)施例的區(qū)分析應(yīng)用的軟件構(gòu)架。圖18例示了一些實(shí)施例的用于識(shí)別文檔中的導(dǎo)引和裝訂線的整體處理。圖19例示了具有兩列文本的頁(yè)面以及針對(duì)頁(yè)面識(shí)別出的導(dǎo)引和裝訂線。圖20概念性地例示了一些實(shí)施例的用于執(zhí)行密度集群的處理。圖21概念性地例示了一些實(shí)施例的用于確定左對(duì)準(zhǔn)導(dǎo)引的處理。圖22至M例示了對(duì)頁(yè)面上的左對(duì)準(zhǔn)導(dǎo)弓I的識(shí)別。圖25概念性地例示了一些實(shí)施例的用于確定右對(duì)準(zhǔn)導(dǎo)引的處理。圖沈概念性地例示了一些實(shí)施例的用于確定文檔的區(qū)域的裝訂線的處理。圖27至四例示了對(duì)頁(yè)面上的裝訂線的識(shí)別。圖30概念性地例示了一些實(shí)施例的導(dǎo)引和裝訂線分析應(yīng)用的軟件架構(gòu)。圖31概念性地例示了一些實(shí)施例的用于確定文檔的布局和流的處理。圖32例示了一些實(shí)施例的對(duì)文檔的頁(yè)面的布局和流信息的確定的序列。圖33概念性地例示了一些實(shí)施例的用于識(shí)別和合并文本行的處理。圖34例示了具有六個(gè)交疊文本行分組的頁(yè)面。圖35例示了對(duì)來(lái)自圖34的文本行分組的合并。圖36概念性地例示了一些實(shí)施例的用于執(zhí)行差值集群的處理。圖37例示了差值集群的示例。圖38概念性地例示了一些實(shí)施例的用于拆分文本行的處理。圖39例示了示出對(duì)哪里拆分頁(yè)面上的文本行的識(shí)別的序列。圖40概念性地例示了一些實(shí)施例的用于將文本行分組成段落的處理。圖41例示了對(duì)頁(yè)面上的段落的識(shí)別。圖42概念性地例示了一些實(shí)施例的用于識(shí)別文檔的一部分中的列和布局的處理。圖43和44例示了兩個(gè)不同頁(yè)面上的段落。圖45和46例示了針對(duì)圖43和44的頁(yè)面產(chǎn)生流圖。圖47概念性地例示了一些實(shí)施例的布局和流分析應(yīng)用的軟件架構(gòu)。圖48概念性地例示了一些實(shí)施例的用于識(shí)別文檔的一部分中的表格的處理。圖49例示了具有完整邊界的表格的示例。圖50例示了具有連接的但不完整的邊界的表格的示例。
圖51例示了沒(méi)有邊界的表格的示例。圖52例示了具有中斷的邊界的表格的示例。圖53概念性地例示了一些實(shí)施例的用于識(shí)別具有完整邊界集合的表格并定義所識(shí)別出的表格中的單元、行和列的處理。圖M例示了包括具有完整邊界的表格的頁(yè)面。圖55概念性地例示了一些實(shí)施例的用于識(shí)別和重構(gòu)具有連接邊界集合的表格的處理。圖56例示了示出對(duì)具有連接邊界集合的表格的識(shí)別和重構(gòu)的序列。圖57概念性地例示了一些實(shí)施例的用于識(shí)別和重構(gòu)沒(méi)有邊界或者具有中斷的邊界的表格的處理。圖58至60例示了對(duì)頁(yè)面應(yīng)用圖57的處理以識(shí)別具有中斷的邊界的表格。圖61概念性地例示了一些實(shí)施例的表格識(shí)別應(yīng)用的軟件架構(gòu)。圖62概念性地例示了一些實(shí)施例的用于將單獨(dú)的圖連結(jié)成連結(jié)圖的處理。圖63例示了對(duì)頁(yè)面上的圖的連結(jié)。圖64概念性地例示了一些實(shí)施例的用于執(zhí)行界線(bound)集群以識(shí)別應(yīng)被連結(jié)的圖以及連結(jié)這些圖的處理。圖65例示了兩個(gè)頁(yè)面,其中每個(gè)頁(yè)面具有兩個(gè)圖形對(duì)象,針對(duì)這兩個(gè)圖形對(duì)象計(jì)算展度(spread)。圖66例示了一些實(shí)施例的用于將集群處理成子序列的處理。圖67概念性地例示了一些實(shí)施例的用于識(shí)別應(yīng)被連結(jié)的圖并將這些圖關(guān)聯(lián)為一個(gè)圖形的圖連結(jié)應(yīng)用。圖68概念性地例示了一些實(shí)施例的采用簡(jiǎn)檔來(lái)調(diào)整內(nèi)容處理以適應(yīng)內(nèi)容類型的處理。圖69例示了適合#10封皮(envelope)的簡(jiǎn)檔的文檔。圖70例示了一些實(shí)施例的分級(jí)簡(jiǎn)檔集合。圖71概念性地例示了一些實(shí)施例的用于根據(jù)分級(jí)簡(jiǎn)檔處理內(nèi)容的處理。圖72概念性地例示了一些實(shí)施例的用于采用分級(jí)簡(jiǎn)檔化來(lái)執(zhí)行文檔重構(gòu)的處理。圖73例示了一些實(shí)施例如何識(shí)別實(shí)現(xiàn)特定方法的最低級(jí)別的活動(dòng)(active)簡(jiǎn)檔。圖74至77例示了一些實(shí)施例的用于四個(gè)不同頁(yè)面的示例頁(yè)面簡(jiǎn)檔匹配處理。圖78概念性地例示了在一些實(shí)施例中用于基于對(duì)感興趣的位置的識(shí)別來(lái)顯示文檔的處理。圖79例示了根據(jù)本發(fā)明一些實(shí)施例的在其中選擇了感興趣的位置且修改了顯示的小屏幕設(shè)備上的序列。圖80例示了一些實(shí)施例的用于識(shí)別感興趣的區(qū)域并應(yīng)用轉(zhuǎn)換以在顯示設(shè)備上繪制感興趣的區(qū)域的第一具體處理。圖81例示了一些實(shí)施例的用于識(shí)別感興趣的區(qū)域并應(yīng)用轉(zhuǎn)換以在顯示設(shè)備上繪制感興趣的區(qū)域的第二具體處理。
圖82概念性地例示了一些實(shí)施例的用于顯示語(yǔ)義地重構(gòu)的文檔的處理。圖83例示了一些實(shí)施例的對(duì)圖82的處理的應(yīng)用。圖84概念性地例示了一些實(shí)施例的用于在語(yǔ)義地重構(gòu)的文檔中的區(qū)域之間進(jìn)行導(dǎo)航的處理。圖85概念性地例示了一些實(shí)施例的用于針對(duì)小屏幕設(shè)備修改語(yǔ)義地重構(gòu)的文檔的布局的處理。圖86例示了根據(jù)本發(fā)明一些實(shí)施例的文檔的頁(yè)面,如同它將在大屏幕上顯示的那樣,以及該頁(yè)面的一部分在小屏幕設(shè)備上的顯示。圖87概念性地例示了一些實(shí)施例的用于確定對(duì)語(yǔ)義地重構(gòu)的文檔中的文本的選擇的處理。圖88例示了根據(jù)一些實(shí)施例的對(duì)語(yǔ)義地重構(gòu)的文檔的頁(yè)面上的文本的選擇的序列。圖89例示了一些實(shí)施例的用于定義對(duì)語(yǔ)義地重構(gòu)的文檔中的文本的選擇的第一具體處理。圖90例示了用于在語(yǔ)義地重構(gòu)的文檔的頁(yè)面上進(jìn)行選擇的第一起始點(diǎn)和第一終止點(diǎn)。圖91例示了根據(jù)圖89的處理由圖90中的起始點(diǎn)和終止點(diǎn)定義的選擇。圖92例示了用于在語(yǔ)義地重構(gòu)的文檔的頁(yè)面上進(jìn)行選擇的第二起始點(diǎn)和第二終止點(diǎn)。圖93例示了根據(jù)圖89的處理由圖92的起始點(diǎn)和終止點(diǎn)定義的選擇。圖94例示了一些實(shí)施例的用于定義對(duì)語(yǔ)義地重構(gòu)的文檔中的文本的選擇的第二具體處理。圖95例示了根據(jù)圖94的處理由圖90的起始點(diǎn)和終止點(diǎn)定義的選擇。圖96例示了根據(jù)圖94的處理由圖92的起始點(diǎn)和終止點(diǎn)定義的選擇。圖97概念性地例示了一些實(shí)施例的用于采用集群分析在資源受限的設(shè)備上語(yǔ)義地重構(gòu)文檔的處理。圖98例示了一些實(shí)施例的語(yǔ)義地重構(gòu)文檔的序列。圖99概念性地例示了一些實(shí)施例的用于通過(guò)采用間接排序的陣列分隔數(shù)據(jù)集的處理。圖100例示了對(duì)具有9個(gè)數(shù)據(jù)項(xiàng)的數(shù)據(jù)集的分隔。圖101概念性地例示了一些實(shí)施例的用于在多個(gè)距離尺度(distance scale)下同時(shí)執(zhí)行集群分析的處理。圖102概念性地例示了一些實(shí)施例的用于執(zhí)行集群分析的集群分析應(yīng)用的軟件構(gòu)架。圖103概念性地例示了一些實(shí)施例的用于高效地重構(gòu)文檔的處理。圖104例示了根據(jù)圖103的處理解析和分析文檔的序列。圖105例示了根據(jù)本發(fā)明一些實(shí)施例的排序數(shù)據(jù)的方式。圖106概念性地例示了 API,其在采用高效的存儲(chǔ)器管理技術(shù)的同時(shí)執(zhí)行文檔重構(gòu)處理。
圖107概念性地例示了一些實(shí)施例的用于重構(gòu)文檔、顯示文檔和與文檔交互的應(yīng)用的軟件架構(gòu)。圖108概 念性地例示了一些實(shí)施例的用于制造存儲(chǔ)諸如圖107中描述的應(yīng)用的計(jì)算機(jī)程序的計(jì)算機(jī)可讀介質(zhì)的處理。圖109概念性地例示了實(shí)現(xiàn)本發(fā)明一些實(shí)施例的計(jì)算機(jī)系統(tǒng)。
具體實(shí)施例方式在以下描述中,出于解釋的目的給出了眾多細(xì)節(jié)。然而,本領(lǐng)域普通技術(shù)人員應(yīng)當(dāng)認(rèn)識(shí)到,本發(fā)明可以在不采用這些具體細(xì)節(jié)的情況下應(yīng)用。例如,在一些情況下,下面描述的技術(shù)被描述為按照特定順序發(fā)生。然而,在一些實(shí)施例中,按照與所描述的順序不同的順序執(zhí)行所述技術(shù)。此外,盡管這些技術(shù)是針對(duì)從左向右讀的語(yǔ)言(例如,英語(yǔ))描述的,但是本領(lǐng)域普通技術(shù)人員將認(rèn)識(shí)到這些技術(shù)很容易改造為適合從右向左讀的語(yǔ)言。I.概覽本發(fā)明的一些實(shí)施例提供了用于從未結(jié)構(gòu)化文檔定義結(jié)構(gòu)化文檔的新穎方法。在一些實(shí)施例中,未結(jié)構(gòu)化文檔是被定義為僅包括諸如形狀(例如,矢量圖)、圖像(例如,位圖)和圖示符的本原元素的文檔。在一些實(shí)施例中,圖示符是對(duì)文本字符(例如,字母、數(shù)字、標(biāo)點(diǎn)符號(hào)或者其他內(nèi)嵌(inline)字符)、字符集或者字符的一部分的可視表示。在一些實(shí)施例中,圖示符可以是可縮放矢量圖的預(yù)定集合,包括用于圖示符的輪廓(outline)的路徑定義。在一些實(shí)施例中,圖示符可以是針對(duì)各種尺寸優(yōu)化的預(yù)定的柵格圖像(raster image)或者柵格圖像集合。作為示例,字符“i”可以由單個(gè)圖示符表示,該圖示符是具有兩個(gè)子路徑的路徑,其中一個(gè)子路徑用于點(diǎn)的輪廓,而另一子路徑用于更低部分的輪廓。作為另一示例,三個(gè)字符“ffi”的組合在成序列出現(xiàn)時(shí)有時(shí)由稱為連字符(ligature)的單個(gè)圖示符表示,該圖示符是按照與字符單獨(dú)地出現(xiàn)的方式略微不同的方式繪制的。作為第三個(gè)示例,諸如1”的重讀字符有時(shí)由多于一個(gè)的圖示符表示(例如,一個(gè)用于字符,一個(gè)用于重讀)并且有時(shí)由單個(gè)圖示符表示(將重讀與字符相結(jié)合)。一些實(shí)施例的未結(jié)構(gòu)化文檔沒(méi)有規(guī)定本原元素之間的任何關(guān)系或關(guān)聯(lián),而在其他實(shí)施例中,它規(guī)定最小量的這種關(guān)系和關(guān)聯(lián)。在一些實(shí)施例中,未結(jié)構(gòu)化文檔可以具有一定量的結(jié)構(gòu),但是該結(jié)構(gòu)是不可識(shí)別的或者不可依賴的。在一些實(shí)施例中,未結(jié)構(gòu)化文檔具有未知的結(jié)構(gòu)或者被假定為未結(jié)構(gòu)化的。一些實(shí)施例從未結(jié)構(gòu)化文檔生成結(jié)構(gòu)化文檔,該結(jié)構(gòu)化文檔包括本原元素之間的關(guān)聯(lián)和關(guān)系、本原元素的分組和排序以及本原元素的分組的性質(zhì)。例如,一些實(shí)施例采用未結(jié)構(gòu)化文檔的本原元素,來(lái)識(shí)別未結(jié)構(gòu)化文檔的各種幾何屬性,并采用這些識(shí)別出的幾何屬性(以及本原元素的其他屬性)來(lái)定義結(jié)構(gòu)性元素。一些實(shí)施例的結(jié)構(gòu)性元素包括相關(guān)聯(lián)的本原元素(例如,字、段落、連結(jié)圖,等等)、導(dǎo)引、裝訂線、文本流、表格,等等。在一些實(shí)施例中,這些結(jié)構(gòu)性元素按照分級(jí)的方式相關(guān)(例如,段落包括文本行、文本行包括字, 而字包括本原圖示符)。在一些實(shí)施例中,結(jié)構(gòu)化文檔有兩個(gè)用途——它識(shí)別相關(guān)聯(lián)的元素 (例如,構(gòu)成表格的元素),并且它識(shí)別本原元素的流順序(即,預(yù)計(jì)人將閱讀文檔中的本原元素的順序)。在接收到未結(jié)構(gòu)化文檔時(shí),一些實(shí)施例首先將文檔解析為其構(gòu)成元素(例如,本原元素及其相關(guān)聯(lián)的信息,例如坐標(biāo)定位、繪制順序,等等)。例如,在未結(jié)構(gòu)化文檔中大塊文本可以被定義為多個(gè)字符圖示符,其中每一個(gè)具有其錨點(diǎn)將放置在特定頁(yè)面上的X坐標(biāo)和y坐標(biāo),以及定義每個(gè)圖示符的尺寸的縮放因子(以及任何其他將要被應(yīng)用的線性轉(zhuǎn)換),每個(gè)圖示符按照特定順序(相對(duì)于當(dāng)一個(gè)圖示符覆蓋另一個(gè)圖示符時(shí)執(zhí)行的混合操作)被繪制在頁(yè)面上。一些實(shí)施例然后對(duì)本原元素執(zhí)行幾何分析,以定義文檔的幾何屬性。 例如,一些實(shí)施例分析本原元素,以識(shí)別本原元素之間的邊界以及由所述邊界界定的區(qū)域。圖1例示了一些實(shí)施例的整體流程。如圖所示,初始(在一些實(shí)施例中,在解析以識(shí)別本原元素之后)由幾何分析模塊110來(lái)分析文檔100。幾何分析模塊110分析文檔,以識(shí)別諸如邊界和由邊界界定的區(qū)域的幾何屬性。在一些實(shí)施例中,區(qū)域包括由諸如直線和窄矩形(即,特定本原形狀和圖像)的本原元素來(lái)界定的區(qū)。圖2例示了進(jìn)入的文檔的頁(yè)面200以及來(lái)自幾何分析和文檔重構(gòu)的各種結(jié)果。進(jìn)入的文檔是未結(jié)構(gòu)化文檔,該文檔具有人在瀏覽該文檔時(shí)將識(shí)別為文本、邊界、表格和圖形對(duì)象的本原元素集合。分析結(jié)果205例示了幾何分析模塊110具有識(shí)別出的由文檔200中的邊界250隔開(kāi)的兩個(gè)區(qū)Z1 240和Z2 245。在一些實(shí)施例中,由幾何分析模塊110識(shí)別出的邊界還包括對(duì)準(zhǔn)導(dǎo)引。在一些實(shí)施例中,對(duì)準(zhǔn)導(dǎo)引是由字的開(kāi)始或結(jié)尾形成的垂直邊緣(例如,在左對(duì)準(zhǔn)文本列的左邊緣)。類似地,在一些實(shí)施例中,由幾何分析識(shí)別出的區(qū)域包括多組圖示符之間(即,導(dǎo)引之間)的未填充空白空間的間隔。在一些實(shí)施例中這些間隔被稱為裝訂線。分析結(jié)果210例示了位于第一列文本的左邊緣處的左對(duì)準(zhǔn)導(dǎo)引212以及跨兩列文本之間的空白空間的裝訂線214(為了簡(jiǎn)便起見(jiàn),未示出其他導(dǎo)引和文本列)。如圖1所例示的,一些實(shí)施例的語(yǔ)義分析模塊110的輸出是區(qū)105、導(dǎo)引115和裝訂線125。從幾何分析模塊110輸出的數(shù)據(jù)被發(fā)送到文檔重構(gòu)模塊120。文檔重構(gòu)模塊120 繼續(xù)分析未結(jié)構(gòu)化文檔以定義結(jié)構(gòu)化文檔的處理。在一些實(shí)施例中,文檔重構(gòu)模塊120生成本原元素之間的關(guān)聯(lián),以定義諸如文本、表格和形狀的鄰接結(jié)構(gòu)性元素。一些實(shí)施例還定義結(jié)構(gòu)性元素的分級(jí)以及結(jié)構(gòu)性元素之間的關(guān)系。例如,在一些實(shí)施例中,文檔重構(gòu)模塊120生成多個(gè)圖示符、多個(gè)圖示符集、多組圖示符集等之間的關(guān)聯(lián)。一些實(shí)施例將單獨(dú)的圖示符關(guān)聯(lián)成字,將字關(guān)聯(lián)成文本行,將文本行關(guān)聯(lián)成段落,等等。分析結(jié)果215例示了在第一列文本內(nèi)識(shí)別出單獨(dú)的行217和段落 219。文檔重構(gòu)模塊120還識(shí)別圖示符的布局,以定義圖示符的文本流。具體而言,為了定義文本流,一些實(shí)施例識(shí)別圖示符(或者圖示符集)的閱讀順序,該順序表示預(yù)計(jì)人將閱讀頁(yè)面上的圖示符的順序(例如,從第一列的底部到第二列的頂部,然后跳過(guò)中央的單獨(dú)的文本框,等等)。分析結(jié)果220例示了在文檔200內(nèi)識(shí)別出兩列,并且閱讀流222是從第一列的底部到第二列的頂部。在一些實(shí)施例中,對(duì)布局和流的識(shí)別和定義采用區(qū)結(jié)果205、 導(dǎo)引和裝訂線結(jié)果210以及圖示符關(guān)聯(lián)結(jié)果215。文檔重構(gòu)模塊120還定義文檔中的其他結(jié)構(gòu)性元素,它們是除圖示符之外的本原元素之間或者結(jié)構(gòu)性元素之間的關(guān)聯(lián)。例如,在一些實(shí)施例中,文檔重構(gòu)模塊120將文檔中的表格識(shí)別為由幾何分析模塊110識(shí)別出的區(qū)域以及區(qū)域中的圖示符和圖示符集之間的關(guān)聯(lián)。例如,一些實(shí)施例將區(qū)域關(guān)聯(lián)為表格的單元,以及將每個(gè)區(qū)域內(nèi)的圖示符關(guān)聯(lián)為表格信息。分析結(jié)果225例示了文檔重構(gòu)模塊120對(duì)文檔200中的具有9個(gè)單元229的表格 227的識(shí)別。一些實(shí)施例通過(guò)定義表格結(jié)構(gòu)性元素來(lái)關(guān)聯(lián)形成表格的本原元素。然而,在初始文檔中,被瀏覽為表格的內(nèi)容被定義為本原元素(線條和圖示符)的非關(guān)聯(lián)集合,在重構(gòu)之后,單元在表格結(jié)構(gòu)性元素中被識(shí)別為表格單元,并且是單獨(dú)地或一體地可編輯的。如進(jìn)一步例示的,在一些實(shí)施例中,表格識(shí)別和重構(gòu)采用區(qū)結(jié)果205、圖示符關(guān)聯(lián)結(jié)果215以及布局和流結(jié)果220。一些實(shí)施例還識(shí)別何時(shí)文檔中的兩個(gè)或更多個(gè)本原圖形元素或者圖形對(duì)象(例如,形狀、圖像、照片、位圖,等等)應(yīng)被分組為一個(gè)結(jié)構(gòu)性圖形元素。例如,大部分交疊的兩個(gè)對(duì)象可能是被定義為未結(jié)構(gòu)化文檔中的兩個(gè)形狀或圖像的一個(gè)元素。文檔重構(gòu)模塊120 將這兩個(gè)對(duì)象連結(jié)起來(lái)作為一個(gè)對(duì)象。分析結(jié)果230例示了來(lái)自初始文檔200的兩個(gè)本原形狀(星形和六角形)已經(jīng)被文檔重構(gòu)模塊120連結(jié)成一個(gè)圖形232。如圖1所例示的,文檔重構(gòu)模塊120的輸出的示例包括語(yǔ)義分級(jí)數(shù)據(jù)135(即,圖示符的關(guān)聯(lián))、布局和流數(shù)據(jù)145、表格數(shù)據(jù)155以及連結(jié)圖數(shù)據(jù)165。此外,在一些實(shí)施例中,一些這種信息還在若干文檔重構(gòu)模塊120之間傳遞。圖2例示了采用所有這種信息來(lái)定義結(jié)構(gòu)化文檔235。結(jié)構(gòu)化文檔235具有與未結(jié)構(gòu)化文檔200相同的外觀,但是結(jié)構(gòu)化文檔235包括關(guān)于結(jié)構(gòu)性元素以及元素的關(guān)聯(lián)、關(guān)系和分級(jí)的信息,由此使得能夠進(jìn)行編輯、 更直觀地顯示,等等。文檔顯示和交互模塊130采用來(lái)自文檔重構(gòu)模塊120的數(shù)據(jù)(以及,在一些實(shí)施例中,來(lái)自幾何分析模塊110的數(shù)據(jù))。文檔顯示和交互模塊130使得用戶能夠?qū)ξ臋n進(jìn)行瀏覽、編輯、滾動(dòng)等。例如,序列140例示了在豎直保持的手持式設(shè)備上顯示為兩列文本的文檔。當(dāng)手持式設(shè)備側(cè)邊轉(zhuǎn)動(dòng)時(shí),這兩列中的文本被重新布置為三列。這種重新布置是不能針對(duì)未結(jié)構(gòu)化文檔進(jìn)行的,因?yàn)檫@依賴于元素之間的關(guān)聯(lián),尤其是不作為未結(jié)構(gòu)化文檔的一部分的通過(guò)圖示符的文本流。在一些實(shí)施例中,文檔顯示和交互模塊130還可以識(shí)別已被用戶選擇的結(jié)構(gòu)性元素(例如,段落、圖形對(duì)象,等等),并智能地縮放以顯示所選的元素。在一些實(shí)施例中,用戶選擇感興趣的位置(即,顯示文檔中的特定定位),并且顯示和交互模塊130識(shí)別結(jié)構(gòu)性元素的分級(jí)中的合格結(jié)構(gòu)性元素。一些實(shí)施例將特定類型的結(jié)構(gòu)性元素定義為合格的結(jié)構(gòu)性元素。在一些實(shí)施例中,合格的結(jié)構(gòu)性元素用于定義在顯示器中突出顯示的感興趣區(qū)域。序列150例示了對(duì)段落170的選擇(例如,通過(guò)選擇段落內(nèi)的感興趣位置)以及對(duì)該段落和附近文本的隨后智能顯示。文檔顯示和交互模塊130還提供其他特征,例如對(duì)文本和圖形對(duì)象的智能選擇、智能滾動(dòng)文檔,等等。一些實(shí)施例采用分級(jí)簡(jiǎn)檔化來(lái)利用中間分析和重構(gòu)結(jié)果運(yùn)行中地(on the fly) 修改如何執(zhí)行幾何分析和文檔重構(gòu)。一些實(shí)施例將中間結(jié)果與指示文檔包括何種類型的內(nèi)容的簡(jiǎn)檔進(jìn)行核對(duì),并相應(yīng)地改變重構(gòu)處理。在一些實(shí)施例中,分級(jí)簡(jiǎn)檔可以指示分析和重構(gòu)模塊執(zhí)行更多或更少的處理、不同地執(zhí)行處理或者重新執(zhí)行處理。例如,如果中間分析結(jié)果指示文檔是一頁(yè)長(zhǎng)、具有一列文本以及沒(méi)有形狀或圖像,則一些實(shí)施例將僅執(zhí)行處理以將圖示符關(guān)聯(lián)成字、行和段落。例如將不執(zhí)行表格識(shí)別。一些實(shí)施例采用各種新穎的效率技術(shù)以進(jìn)行更高效的存儲(chǔ)和處理利用。例如,一些實(shí)施例通過(guò)采用集群分析來(lái)執(zhí)行一些上述處理,集群分析是用來(lái)識(shí)別相對(duì)于其他元素按照某種方式緊密間隔開(kāi)的元素分組。一些實(shí)施例采用集群分析來(lái)基于眾多字識(shí)別導(dǎo)引,所述字在相同或者近似相同的X坐標(biāo)處開(kāi)始、結(jié)尾、居中或者以其他方式對(duì)準(zhǔn)。一些實(shí)施例采用集群分析來(lái) 識(shí)別圖示符之間的不同尺寸間隔,以識(shí)別字之間的間隔以及大于字之間的間隔的間隔。一些實(shí)施例還采用集群分析來(lái)識(shí)別應(yīng)當(dāng)被連結(jié)成單個(gè)圖形的本原圖形(例如, 形狀、圖像)。一些實(shí)施例通過(guò)采用引用未排序數(shù)據(jù)的有序數(shù)據(jù)(例如,本原元素位置數(shù)據(jù))以及通過(guò)利用單個(gè)值來(lái)排序?qū)?shù)據(jù)的分隔,以高效地執(zhí)行集群分析。在本發(fā)明中采用的術(shù)語(yǔ)分隔將序列或者線性有序集合分成多個(gè)子序列,所述子序列是具有相同順序關(guān)系的序列的子集。此外,分隔具有以下性質(zhì)(i)原始序列中的每個(gè)成員恰包含在分隔的子序列中的一個(gè)中,以及(ii)給定兩個(gè)分隔的子序列S和T,根據(jù)順序關(guān)系,S中的所有成員都小于T中的所有成員,或者T中的所有成員都小于S中的所有成員。在一些實(shí)施例中,將分隔排序?yàn)閱蝹€(gè)值使得能夠更高效地執(zhí)行各種集群分析功能,例如檢查多個(gè)分隔。一些實(shí)施例還通過(guò)利用應(yīng)用編程接口(API)來(lái)提高文檔重構(gòu)處理中的效率,其中應(yīng)用編程接口最小化在呈現(xiàn)給API的用戶(例如,采用API的程序員或者軟件應(yīng)用)時(shí)的數(shù)據(jù)復(fù)制量,就像數(shù)據(jù)可以被自由地修改一樣。一些實(shí)施例將數(shù)據(jù)存儲(chǔ)在隨機(jī)排序的陣列中,然后定義對(duì)數(shù)據(jù)的引用的經(jīng)排序陣列,以及在眾多集合對(duì)象(例如,字符序列對(duì)象,其是字符數(shù)據(jù)的集合)中共享該經(jīng)排序陣列,以優(yōu)化對(duì)存儲(chǔ)器和處理的使用。在一些實(shí)施例中,采用這兩種效率改進(jìn)以及其他技術(shù)來(lái)使得能夠在資源受限設(shè)備(例如,蜂窩式電話、媒體播放器,等等(例如,iPhone ))上執(zhí)行文檔重構(gòu)。盡管通過(guò)參照?qǐng)D1和圖2中例示的示例提供了對(duì)一些實(shí)施例的上述概覽,但是本領(lǐng)域普通技術(shù)人員將認(rèn)識(shí)到,這些示例僅僅意味著引入本發(fā)明一些實(shí)施例的特征和操作的示例性實(shí)施例。本領(lǐng)域普通技術(shù)人員將認(rèn)識(shí)到,很多實(shí)施例具有不同于圖1和2中所例示的特征和操作。例如,盡管已經(jīng)將幾何分析描述為一個(gè)模塊集110,但是本領(lǐng)域普通技術(shù)人員將認(rèn)識(shí)到,一些實(shí)施例不必一起識(shí)別出所有幾何屬性。例如,一些實(shí)施例首先進(jìn)行幾何分析的子集(例如,區(qū)域分析以識(shí)別出文檔中的一個(gè)或多個(gè)區(qū)),然后逐區(qū)地識(shí)別出導(dǎo)引和裝訂線。下面將描述一些實(shí)施例的更多具體示例。第II章描述基于邊界本原元素識(shí)別文檔的區(qū)域(即,區(qū)),以及定義形成結(jié)構(gòu)化文檔的框架的分級(jí)結(jié)構(gòu)(例如,文檔對(duì)象模型)。 第III章然后描述對(duì)圖示符的邊界元素(例如,對(duì)準(zhǔn)導(dǎo)引)以及對(duì)準(zhǔn)點(diǎn)之間的特定空白空間(裝訂線)的識(shí)別。接下來(lái),第IV章詳細(xì)描述了生成圖示符和圖示符集之間的關(guān)聯(lián),以定義諸如字、文本行、段落、列等的結(jié)構(gòu)性元素,以及定義這些結(jié)構(gòu)性元素(以及其他元素, 例如圖形、表格,等等)的流順序。第V章描述了根據(jù)本原元素識(shí)別表格,以及生成本原元素之間的關(guān)聯(lián)以形成表格結(jié)構(gòu)性元素,而第VI章描述了識(shí)別應(yīng)被分組到一起的本原圖形元素,以及生成這種本原元素之間的關(guān)聯(lián)以定義復(fù)合的圖形元素。接下來(lái),第VII章描述了基于將中間處理結(jié)果與預(yù)定簡(jiǎn)檔集合匹配來(lái)修改內(nèi)容處理(采用如第II至VI章中詳細(xì)描述的文檔重構(gòu)的示例),這可以提高內(nèi)容處理的效率和精度。接下來(lái),第VIII章詳述了采用結(jié)構(gòu)化文檔(例如,由文檔對(duì)象模型定義的文檔) 來(lái)在小屏幕設(shè)備(例如,手持式電話或媒體播放器)上顯示文檔的各個(gè)方面。討論了文檔顯示對(duì)小屏幕的調(diào)整以及對(duì)識(shí)別出的感興趣區(qū)域的顯示。第IX章描述了采用結(jié)構(gòu)化文檔來(lái)響應(yīng)于用戶輸入定義對(duì)文本(或者文檔的其他元素)的選擇。然后第X章描述了用于提高集群分析技術(shù)的效率的各種方法,其(除了別的以外) 用于在文檔重構(gòu)處理中識(shí)別對(duì)準(zhǔn)導(dǎo)引、字和圖示符間距以及復(fù)合圖形。接下來(lái),第XI章詳述了使得能夠更高效地解析和分析文檔的方法和數(shù)據(jù)結(jié)構(gòu)。這些數(shù)據(jù)結(jié)構(gòu)例示了在文檔重構(gòu)處理中可以采用的生成圖示符之間的關(guān)聯(lián)(例如,形成字、文本行、段落,等等)的一種方式。然而,本領(lǐng)域普通技術(shù)人員將認(rèn)識(shí)到,可以有很多在本領(lǐng)域內(nèi)廣為公知的其他方式, 來(lái)生成本原元素(例如,圖示符、圖形元素,等等)之間的關(guān)聯(lián)以定義結(jié)構(gòu)性元素(例如,段落、表格、復(fù)合圖形,等等)。接下來(lái),第XII章描述了一些實(shí)施例的文檔重構(gòu)應(yīng)用的軟件架構(gòu),而第XIII章描述了實(shí)現(xiàn)本發(fā)明一些實(shí)施例的計(jì)算機(jī)系統(tǒng)。II.區(qū)分析當(dāng)在頁(yè)面上有多個(gè)文章、章節(jié)或目錄信息時(shí),它們通常由線條、圖像或者形狀來(lái)描繪。盡管人能夠容易地識(shí)別圖形線索意在指示頁(yè)面如何被斷成區(qū)的方式,但是對(duì)于計(jì)算機(jī)來(lái)說(shuō)這可不是個(gè)容易的問(wèn)題(尤其是在有圖形本原元素的情況下,圖形本原元素中的一些旨在作為頁(yè)面內(nèi)容,而其他的旨在描繪內(nèi)容區(qū))。本發(fā)明的一些實(shí)施例提供了用于基于未結(jié)構(gòu)化文檔的本原元素(例如,形狀和圖像)來(lái)識(shí)別邊界和由這些邊界界定的區(qū)域(例如,區(qū))的方法。在一些實(shí)施例中,區(qū)域用在對(duì)文檔的后續(xù)重構(gòu)中,以及用于進(jìn)一步重構(gòu)處理的劃區(qū)(compartmentalization)。一些實(shí)施例生成填充有內(nèi)容的區(qū)域圖(即,諸如樹(shù)的分級(jí)結(jié)構(gòu)),并且使得能夠?qū)?nèi)容與該內(nèi)容所處的區(qū)域相關(guān)聯(lián)。一些實(shí)施例逐頁(yè)面地執(zhí)行區(qū)域識(shí)別。圖3概念性地例示了在一些實(shí)施例中用于識(shí)別文檔的頁(yè)面的區(qū)并生成頁(yè)面的區(qū)樹(shù)的處理300。將結(jié)合圖4來(lái)描述處理300。圖4例示了根據(jù)一些實(shí)施例的用于識(shí)別文檔的頁(yè)面400的區(qū)并生成該頁(yè)面的區(qū)樹(shù)430的序列。如圖3所示,處理300通過(guò)接收(在305 處)文檔的頁(yè)面開(kāi)始。在一些情況下,文檔包括眾多頁(yè)面(例如,電子書(shū)),而在其他情況下,文檔將僅僅是一個(gè)頁(yè)面(例如,廣告?zhèn)鲉?。接下來(lái),該處理識(shí)別(在310處)頁(yè)面上的區(qū)。在一些實(shí)施例中,對(duì)區(qū)的識(shí)別包括 識(shí)別區(qū)邊界和相交部,然后遍歷區(qū)邊界以識(shí)別出區(qū)。參照?qǐng)D4的示例,處理300識(shí)別出頁(yè)面 400包括五個(gè)區(qū),S卩,區(qū)A 405、區(qū)B 410、區(qū)C 415、區(qū)D 420以及區(qū)E 425。在識(shí)別出區(qū)之后,處理300生成(在315處)頁(yè)面的區(qū)圖(即,諸如樹(shù)的分級(jí)結(jié)構(gòu))。區(qū)圖例示了區(qū)的分級(jí)。例如,區(qū)圖430例示了頁(yè)面(節(jié)點(diǎn)P)的區(qū)包括四個(gè)區(qū)A、B、C 和D。此外,因?yàn)閰^(qū)E完全在區(qū)D內(nèi),所以區(qū)D包括區(qū)E。在一些實(shí)施例中,當(dāng)?shù)诙^(qū)完全處于第一區(qū)中時(shí),第一區(qū)是第二區(qū)的父輩。在一些實(shí)施例中,父輩和子輩可以共享一個(gè)或多個(gè)邊界。在生成區(qū)圖之后,處理300將頁(yè)面的內(nèi)容插入(在320處)區(qū)圖中。然后處理結(jié)束。在一些實(shí)施例中,頁(yè)面包括文本、圖形或者其他內(nèi)容。每個(gè)特定內(nèi)容分組(例如,圖像、 段落、列,等等)被放置為完全包含該特定內(nèi)容分組的最小區(qū)的子輩。在一個(gè)實(shí)施例中,一旦已經(jīng)進(jìn)一步分析了內(nèi)容(例如,將文本分組為段落、識(shí)別表格,等等),則在文檔重構(gòu)處理中隨后執(zhí)行內(nèi)容對(duì)象到區(qū)圖的插入。此外,當(dāng)執(zhí)行文檔重構(gòu)時(shí),一些實(shí)施例利用每個(gè)區(qū)的內(nèi)容子樹(shù)來(lái)更新區(qū)圖。A.術(shù)語(yǔ)
圖5例示了文檔的包括若干區(qū)的頁(yè)面500。頁(yè)面500包括眾多區(qū)邊界,包括區(qū)邊界 505至509。在一些實(shí)施例中,區(qū)邊界是水平或垂直(即,直線的)條,其厚度由貢獻(xiàn)于區(qū)邊界的區(qū)邊界圖形定義。在一些實(shí)施例中,區(qū)邊界的厚度是貢獻(xiàn)于區(qū)邊界的區(qū)邊界圖形的豎直界定框在其窄方向上的寬度。在一些實(shí)施例中,特定元素或元素集的豎直界定框是完全圍住該元素或元素集的最小豎直矩形(在分析的坐標(biāo)系統(tǒng)中)。區(qū)邊界圖形是頁(yè)面上的作為窄矩形或者具有作為窄矩形的豎直界定框的圖形對(duì)象(例如,形狀、圖像、線條)。例如,區(qū)邊界505至509全部是具有特定(相對(duì)窄)厚度的線條。在一些實(shí)施例中,區(qū)邊界圖形包括相對(duì)窄的對(duì)象,對(duì)其的全部或部分呈現(xiàn)填充全部或部分區(qū)邊界。在一些實(shí)施例中,區(qū)邊界圖形還包括其邊界貢獻(xiàn)于區(qū)邊界的對(duì)象(例如,填充多邊形的一個(gè)側(cè)邊可以指示區(qū)邊界的全部或部分,即使多邊形本身不窄并且沒(méi)有適合在區(qū)邊界中)。然而,區(qū)邊界圖形不需要是完全筆直的線或者完全直線。例如,圖6例示了包括區(qū)邊界圖形605的頁(yè)面600。區(qū)邊界圖形605不是完全垂直的條相反,它們是非常接近垂直對(duì)準(zhǔn)的細(xì)枝圖像。一些實(shí)施例將圖形識(shí)別為區(qū)邊界圖形,而一些實(shí)施例沒(méi)有這樣。圖5的頁(yè)面500還包括眾多區(qū)邊界相交部,例如相交部510和511。在一些實(shí)施例中,區(qū)邊界相交部是水平區(qū)邊界與垂直區(qū)邊界的矩形相交部。如相交部511所例示的,區(qū)邊界相交部不必位于區(qū)邊界的端部。在一些實(shí)施例中,區(qū)邊界中間的區(qū)邊界相交部將區(qū)邊界斷開(kāi)成一個(gè)或多個(gè)區(qū)邊界區(qū)間(interval)。例如,頁(yè)面500的底部區(qū)邊界被斷開(kāi)成區(qū)邊界區(qū)間 515、516、517 和 518。因此,在一些實(shí)施例中,區(qū)是由形成豎直直線形狀的區(qū)邊界區(qū)間集界定的閉合區(qū)域。豎直直線形狀是可由水平和垂直線段形成的任何多邊形,其包括但不限于作為由水平和垂直線段形成的矩形的豎直矩形。每個(gè)區(qū)具有豎直直線外界線,其是由界定矩形的區(qū)邊界的外側(cè)形成的形狀。每個(gè)區(qū)還具有豎直直線內(nèi)界線,其是由界定矩形的區(qū)邊界的內(nèi)側(cè)形成的形狀。頁(yè)面500包括區(qū)P 526(頁(yè)面界線),區(qū)A 520 (包括左側(cè)和右側(cè)上的細(xì)條以及區(qū)C 和D上面的區(qū)域的拱形區(qū)),區(qū)B 521、區(qū)C 522(與區(qū)E共享邊界的左側(cè)區(qū))、區(qū)D 523 (作為區(qū)C的鏡像圖像的右側(cè)區(qū))、區(qū)E 5 和區(qū)G 525。在一些實(shí)施例中,區(qū)具有由區(qū)邊界的外側(cè)和內(nèi)側(cè)定義的外界線和內(nèi)界線。圖7例示了頁(yè)面500的區(qū)樹(shù)700,其中區(qū)P(頁(yè)面邊界)是區(qū)A、C、E和D的父輩; 區(qū)B是區(qū)A的子輩;以及區(qū)G是區(qū)D的子輩。區(qū)B、E和G是島(island)的示例。島是不與其父區(qū)共享邊界區(qū)間的區(qū)。盡管區(qū)E與區(qū)C和D共享其邊界區(qū)間,但是因?yàn)閰^(qū)C和D中的任一個(gè)實(shí)際上都沒(méi)有圍住區(qū)E,所以它們中的任一個(gè)都不是區(qū)E的父輩。區(qū)樹(shù)還例示了節(jié)點(diǎn)已經(jīng)填充有節(jié)點(diǎn)所包括的內(nèi)容。在一些實(shí)施例中,每個(gè)頁(yè)面的文檔對(duì)象模型(DOM)的一部分構(gòu)建在頁(yè)面的區(qū)樹(shù)的節(jié)點(diǎn)上。文檔對(duì)象模型是將文檔表示為其節(jié)點(diǎn)為對(duì)象的圖。在一些實(shí)施例中,該圖是樹(shù),其葉節(jié)點(diǎn)表示本原元素,而其非葉節(jié)點(diǎn)是結(jié)構(gòu)對(duì)象,該結(jié)構(gòu)對(duì)象表示它們的子節(jié)點(diǎn)之間的關(guān)系以及它們的子節(jié)點(diǎn)作為一個(gè)分組具有的性質(zhì)。在一些實(shí)施例中, 節(jié)點(diǎn)的子輩的順序表示這些子輩的閱讀順序。在一些實(shí)施例中,根節(jié)點(diǎn)是文檔節(jié)點(diǎn),其子輩是頁(yè)面節(jié)點(diǎn),區(qū)樹(shù)從每個(gè)頁(yè)面節(jié)點(diǎn)向下延伸,流樹(shù)(包括表示結(jié)構(gòu)的節(jié)點(diǎn),所述結(jié)構(gòu)例如有表格、文本框、布局、列、段落、列表和文本行)從一些區(qū)節(jié)點(diǎn)向下延伸,而表示本原元素(例如,圖示符、形狀和圖像)的節(jié)點(diǎn)是該流樹(shù)中的一些節(jié)點(diǎn)的子輩。在一些實(shí)施例中,結(jié)構(gòu)節(jié)點(diǎn)包括表示節(jié)點(diǎn)之間的關(guān)系以及由樹(shù)的父子關(guān)系(其定向圖邊緣)表示的關(guān)系的性質(zhì)。例如,開(kāi)始一個(gè)新列的段落可以是結(jié)束前一列的段落的繼續(xù),而兩者之間沒(méi)有段落中斷。在這種情況下,在樹(shù)中將有兩個(gè)段落節(jié)點(diǎn),每一個(gè)具有一個(gè)不同的列父節(jié)點(diǎn),但是它們將具有指向彼此以指示它們是表示單個(gè)共同段落的部分的兩個(gè)節(jié)點(diǎn)的性質(zhì)。在一些實(shí)施例中,DOM是文檔的分級(jí)表示,其包括文檔的所有結(jié)構(gòu)性元素。當(dāng)內(nèi)容完全地位于特定區(qū)的外界線內(nèi)并且沒(méi)有完全地位于特定區(qū)的任何子輩的外界線內(nèi)時(shí),一些實(shí)施例將該內(nèi)容定義為特定區(qū)的子輩。因此,區(qū)B包括頁(yè)眉文本,區(qū)C和D包括標(biāo)準(zhǔn)文本,而區(qū)E和G包括圖像。B.旋轉(zhuǎn)分組一些實(shí)施例定義頁(yè)面上的若干旋轉(zhuǎn)分組,并單獨(dú)地分析每個(gè)旋轉(zhuǎn)分組的區(qū)和內(nèi)容。在一些實(shí)施例中,旋轉(zhuǎn)分組類似于區(qū),只是旋轉(zhuǎn)分組不具有任何區(qū)邊界。相反,旋轉(zhuǎn)分組被定義為包括以相同角度(或者在小到人類瀏覽者難以區(qū)分的特定閾值內(nèi)近似相同的角度)旋轉(zhuǎn)的所有內(nèi)容。圖8概念性地例示了一些實(shí)施例的用于定義頁(yè)面上的旋轉(zhuǎn)分組的處理800。如圖所示,處理800接收(在805處)文檔的頁(yè)面。在一些情況下,該頁(yè)面是文檔的唯一頁(yè)面,而在其他情況下,該頁(yè)面是多個(gè)頁(yè)面之一。一些實(shí)施例一起而非逐頁(yè)地執(zhí)行對(duì)多頁(yè)面文檔(或者,多頁(yè)面章節(jié))的旋轉(zhuǎn)分組分析。然后該處理確定(在810處)頁(yè)面上的每個(gè)對(duì)象的旋轉(zhuǎn)角度。在一些實(shí)施例中, 假設(shè)不規(guī)則構(gòu)形圖像的旋轉(zhuǎn)角度為零。例如,頁(yè)面500的區(qū)E中的圖像是不規(guī)則構(gòu)形的,其將不會(huì)被給定非零旋轉(zhuǎn)角度。水平對(duì)準(zhǔn)的文本也具有零度的旋轉(zhuǎn)角度,而偏離χ軸對(duì)準(zhǔn)的文本被給定以一旋轉(zhuǎn)角度。例如,頁(yè)面500的區(qū)域F 530中的文本將具有大約-45度的旋轉(zhuǎn)角度。類似地,頁(yè)面600中的文本610( “Organic”和“Pure”)將具有其自己的旋轉(zhuǎn)角度。在也將圖像對(duì)象放置到旋轉(zhuǎn)分組中的實(shí)施例中,文本610上面的矩形圖像615將與文本610具有相同的旋轉(zhuǎn)角度。接下來(lái),處理800按照旋轉(zhuǎn)角度來(lái)排序(在815處)對(duì)象。然后處理將對(duì)象分組 (在820處)成具有低于特定閾值的旋轉(zhuǎn)角度的展度的集群。在一些實(shí)施例中,與特定閾值相比的展度是從分組的最大旋轉(zhuǎn)角度中減去該分組中的最小旋轉(zhuǎn)角度。采用非零閾值允許分組考慮初始接收到的文檔中的內(nèi)容定義中的小誤差(例如,非常略微地偏離水平的文本行)。然后處理800單獨(dú)地分析(在825處)每個(gè)旋轉(zhuǎn)分組。然后該處理結(jié)束。對(duì)于大多數(shù)頁(yè)面,大多數(shù)分析將涉及豎直(零度)分組。一些實(shí)施例針對(duì)除豎直分組之外的分組不執(zhí)行區(qū)分析,相反只簡(jiǎn)單地將旋轉(zhuǎn)分組的內(nèi)容作為一個(gè)整體分類為頁(yè)面的子輩。在一些實(shí)施例中,每個(gè)旋轉(zhuǎn)分組具有其中內(nèi)容呈現(xiàn)為豎直的坐標(biāo)系統(tǒng)。在這種實(shí)施例中,每個(gè)旋轉(zhuǎn)分組具有其自己的區(qū)樹(shù),其內(nèi)容適合文檔的D0M。一些實(shí)施例針對(duì)頁(yè)面上內(nèi)容旋轉(zhuǎn)的每個(gè)區(qū)別角度定義一個(gè)旋轉(zhuǎn)分組。下面將詳細(xì)地描述對(duì)每個(gè)分組的分析。C.識(shí)別區(qū)邊界和相交部圖9概念性地例示了一些實(shí)施例的用于識(shí)別區(qū)邊界和相交部的處理900。將結(jié)合圖10來(lái)描述處理900。圖10例示了包括各種圖形和文本的頁(yè)面1000。如圖9所示,該處理接收(在900處)旋轉(zhuǎn)分組,并將該分組標(biāo)準(zhǔn)化到豎直坐標(biāo)系統(tǒng)。在一些實(shí)施例中,將分組標(biāo)準(zhǔn)化到豎直坐標(biāo)系統(tǒng)包括,定義分組的坐標(biāo)系統(tǒng),使得分組中的所有對(duì)象是垂直的或水平的(例如,在坐標(biāo)系統(tǒng)中,文本行是水平的)。下面的討論假設(shè)旋轉(zhuǎn)分組是豎直(零度)分組。本領(lǐng)域普通技術(shù)人員將能夠把相同的技術(shù)應(yīng)用到在其內(nèi)容呈現(xiàn)為豎直的坐標(biāo)系統(tǒng)中具有非零角度的旋轉(zhuǎn)分組。一些實(shí)施例在針對(duì)特定旋轉(zhuǎn)分組執(zhí)行區(qū)識(shí)別之前從其他旋轉(zhuǎn)分組中移除內(nèi)容。例如,一些實(shí)施例在豎直直線坐標(biāo)系統(tǒng)中執(zhí)行區(qū)識(shí)別和分析之前將從圖6的頁(yè)面600中移除文本610和圖像615。然后該處 理識(shí)別(在910處)潛在區(qū)邊界。在一些實(shí)施例中,潛在區(qū)邊界包括足夠窄的任何水平或垂直圖形對(duì)象。在一些實(shí)施例中,對(duì)特定圖形對(duì)象是否足夠窄的確定采用絕對(duì)量度(例如,當(dāng)圖形對(duì)象的豎直界定矩形的較小尺寸小于1/24英寸時(shí))。在其他實(shí)施例中,該確定采用相對(duì)量度(例如,豎直界定矩形的較大尺寸是較小尺寸大小的八倍), 或者絕對(duì)量度和相對(duì)量度的組合(例如,可以允許窄尺寸達(dá)到1/12英寸,但是應(yīng)用8 1 的相對(duì)量度)。一些實(shí)施例與頁(yè)面的尺寸相關(guān)地調(diào)整閾值。例如,以上示例可以應(yīng)用于標(biāo)準(zhǔn)的8. 5X 11英寸頁(yè)面,而大得多的頁(yè)面可以具有更大的潛在區(qū)邊界。參照?qǐng)D10,頁(yè)面1000包括將被分類為潛在區(qū)邊界的若干線條水平邊界1005至 1010和垂直邊界(1011至1016)。然而,圖形對(duì)象1020通常將不會(huì)被考慮為水平區(qū)邊界, 因?yàn)樗讦址较蛏咸?。一些?shí)施例還識(shí)別至少具有閾值尺寸的所有豎直直線形狀,并采用這些形狀的側(cè)邊作為潛在區(qū)邊界。在一些實(shí)施例中,閾值尺寸是特定面積,而在其他實(shí)施例中,必須超過(guò)閾值寬度和閾值高度。例如,對(duì)象1020可以具有大到足以使其邊緣適合為潛在區(qū)邊界的面積,但是它太窄而不能成為一個(gè)單獨(dú)的區(qū)。另一方面,星形對(duì)象1025不是豎直直線形狀,由此其邊緣將不適合作為區(qū)邊界。因此,這些對(duì)象將僅僅被分類為在一個(gè)區(qū)或另一個(gè)區(qū)中的內(nèi)容(具體而言,圖形對(duì)象)。一些實(shí)施例將識(shí)別為豎直直線形狀的側(cè)邊的每個(gè)潛在區(qū)邊界的界線設(shè)置為界定側(cè)邊的豎直矩形,其在是劃出的情況下包括筆劃寬度。如果頁(yè)面邊界在旋轉(zhuǎn)分組的坐標(biāo)系統(tǒng)中是豎直直線的,則一些實(shí)施例還包括該頁(yè)面邊界作為區(qū)邊界。在識(shí)別出潛在區(qū)邊界之后,處理900移除(在915處)與頁(yè)面中的其他對(duì)象相交的邊界或邊界部分。例如,潛在邊界1015被星形對(duì)象1025遮蓋,并由此將被斷開(kāi)成兩個(gè)潛在區(qū)邊界(星形上面的區(qū)域和星形下面的區(qū)域)。一些實(shí)施例還移除與字符界定框相交的區(qū)邊界。在一些實(shí)施例中,用于特定字符的字符界定框是完全圍住字符的最小矩形。例如, 潛在區(qū)邊界1010穿過(guò)字符“Lorem Ipsum”。因此,一些實(shí)施例將移除潛在區(qū)邊界1010不予 ^慮ο接下來(lái),處理900合并(在920處)邊界。一些實(shí)施例合并平行的以及交疊的或者接近交疊的邊界。邊界在它們的界線相交時(shí)交疊。例如,當(dāng)不同寬度的兩個(gè)非常窄的矩形被繪制為使得一個(gè)完全圍住另一個(gè)時(shí),將合并兩個(gè)潛在區(qū)邊界。一些實(shí)施例略微擴(kuò)展界線 (在潛在區(qū)邊界的寬度和長(zhǎng)度兩者上)用以測(cè)試交疊。因此,圖10中的邊界1013和1014 將被合并為一個(gè)區(qū)邊界1027,其厚度大于邊界1013和1014的厚度。然后處理900確定(在923處)是否仍有任何合并邊界未被處理。當(dāng)沒(méi)有邊界被合并或者已經(jīng)處理了所有合并邊界時(shí),處理前進(jìn)到下面描述的945。否則,處理選擇(在 925處)未處理的合并邊界。然后處理確定(在930處)是否合并邊界太厚或者包括太多區(qū)邊界圖形。在一些實(shí)施例中,當(dāng)合并邊界在窄方向上的寬度大于特定閾值時(shí),該合并邊界太厚。在一些實(shí)施例中,厚度的測(cè)試與圖形對(duì)象是否窄到足以初始地被分類為區(qū)邊界相同。當(dāng)處理確定邊界沒(méi)有太厚時(shí),處理前進(jìn)到上面描述的923。否則,當(dāng)合并邊界太厚時(shí),處理從潛在區(qū)邊界候選中移除(在935處)該合并邊界,并將其分類為單個(gè)圖形對(duì)象,然后前進(jìn)到 923。例如,這可能在圖像被繪制為一系列窄矩形或者用窄且間隔緊密的條繪制條形圖時(shí)出現(xiàn)?!z查了所有的合并邊界,則處理識(shí)別(在945處)區(qū)邊界相交部。如上所述, 在水平邊界與垂直邊界相交的任何地方識(shí)別區(qū)邊界相交部。一些實(shí)施例還識(shí)別近似相交部,并將它們分類為相交部。為了找到近似相交部,少量擴(kuò)展邊界,然后進(jìn)行測(cè)試以找到相交部。一些實(shí)施例將邊界擴(kuò)展固定量(例如,1/4英寸),而其他實(shí)施例將每個(gè)邊界擴(kuò)展作為特定區(qū)邊界的長(zhǎng)度的百分比的量。當(dāng)加長(zhǎng)的邊界相交時(shí),將近似相交部分類為相交部,并將兩個(gè)邊界擴(kuò)展為完全穿過(guò)彼此的厚度。作為示例,圖10的邊界1027和1008沒(méi)有完全相交。然而,它們足夠接近,使得它們將被分類為相交并擴(kuò)展為使得它們相交。然后處理消除(在950處)具有少于兩個(gè)相交部的邊界。一旦移除一個(gè)邊界,則與被移除的邊界相交的任何邊界必須被重新測(cè)試,以確定是否它們將具有至少兩個(gè)相交部。 在示例頁(yè)面1000中,邊界1006和邊界1015的兩個(gè)剩余部分將被移除,因?yàn)樗鼈儾痪哂袇^(qū)邊界相交部。一旦識(shí)別出區(qū)邊界和相交部,處理剪裁(在955處)區(qū)邊界,以移除延伸超過(guò)最外相交部的任何部分。例如,邊界1027和1009延伸超出它們的相交部。它們將被剪裁以僅僅延伸到彼此的最外界線。在剪裁了邊界之后,處理存儲(chǔ)(在960處)區(qū)邊界和相交部信息用以日后使用(例如,在識(shí)別區(qū)時(shí))。然后處理結(jié)束。此時(shí),已經(jīng)全部確定了區(qū)邊界區(qū)間和區(qū)邊界相交部。圖11例示了垂直區(qū)邊界區(qū)間 1105、1115、1125、1135、1145、1155、1165 和 1175,以及水平區(qū)邊界區(qū)間 1110、1120、1130、 1140、1150、1160、1170 和 1180。圖 11 還例示了區(qū)邊界相交部 1102、1112、1113、1122、1123、 1132、1133、1142、1143、1152、1162、1172、1182 和 1192。D.識(shí)別區(qū)一旦識(shí)別出區(qū)邊界和區(qū)邊界相交部,就可以識(shí)別區(qū)。圖12概念性地例示了一些實(shí)施例的用于識(shí)別區(qū)的處理1200。將結(jié)合圖13和14來(lái)描述處理1200。圖13和14例示了應(yīng)用處理1200來(lái)識(shí)別頁(yè)面1000的區(qū)。每個(gè)圖被例示為序列。圖13例示了用以識(shí)別第一區(qū)邊界的序列1305至1330。圖13中的箭頭例示了方向矢量,而虛線例示了采取的通過(guò)區(qū)邊界區(qū)間以定義區(qū)的路徑。圖14例示了由處理1200識(shí)別出的區(qū)。如圖12所示,處理1200接收(在1205處)分組或頁(yè)面的區(qū)邊界和相交部。在一些實(shí)施例中,區(qū)邊界和相交部是以上描述的處理900的輸出。然后處理確定(在1207處) 是否有任何區(qū)邊界區(qū)間。當(dāng)沒(méi)有時(shí),處理結(jié)束。否則,處理將兩個(gè)方向矢量分配(在1210 處)給每個(gè)區(qū)邊界區(qū)間(即,水平區(qū)間具有指向右和左的矢量,而垂直區(qū)間具有指向上和下的矢量)。圖13例示(在1305處)了頁(yè)面1000的每個(gè)邊界區(qū)間以雙向的方向矢量開(kāi)始。接下來(lái),處理選擇(在1215處)邊界區(qū)間b、相交部i和方向d。一些實(shí)施例隨機(jī)選擇開(kāi)始點(diǎn),而其他實(shí)施例采用啟發(fā)法,例如沿特定方向的最上和最左相交部。圖13例示 (在1305處)了隨機(jī)選擇在相交部1182處開(kāi)始沿著區(qū)間1115向上移動(dòng)。然后處理1200 從相交部i沿著方向d前進(jìn)(在1220處),直到到達(dá)下一個(gè)相交部?!┻_(dá)到相交部,處理確定(在1225處)該相交部是否是在1215處選擇的開(kāi)始相交部。當(dāng)該相交部是原始開(kāi)始相交部時(shí),處理前進(jìn)到下面描述的1265。否則,處理確定(在1230處)通過(guò)區(qū)邊界區(qū)間的路徑是否能在該相交部順時(shí)針轉(zhuǎn)向。當(dāng)路徑能順時(shí)針轉(zhuǎn)向時(shí),路徑就順時(shí)針轉(zhuǎn)向(在1235處)。然后處理前進(jìn)到下面描述的1255。當(dāng)路徑不能順時(shí)針轉(zhuǎn)向時(shí),處理確定(在1240處)該路徑是否能繼續(xù)徑直通過(guò)相交部。當(dāng)路徑能徑直繼續(xù)時(shí),則路徑就徑直繼續(xù)(在1245處)。然后該處理前進(jìn)到下面描述的1255。當(dāng)路徑不能徑直繼續(xù)時(shí),該路徑逆時(shí)針轉(zhuǎn)向(在1250處)到下一個(gè)邊界區(qū)間。通過(guò)在步驟1230和1240 中作出的選擇,處理1200在每個(gè)邊界相交部展現(xiàn)對(duì)順時(shí)針轉(zhuǎn)向的優(yōu)選。一些實(shí)施例相反將展現(xiàn)對(duì)逆時(shí)針轉(zhuǎn)向的優(yōu)選,這會(huì)給出相同的結(jié)果。處理將新邊界區(qū)間設(shè)置(在1255處)為當(dāng)前邊界區(qū)間b,并將新相交部設(shè)置為當(dāng)前相交部i。然后該處理設(shè)置(在1260處)方向d沿著邊界b移動(dòng)離開(kāi)相交部i。然后該處理前進(jìn)到以上描述的1220。一旦到達(dá)了原始相交部,則處理1200將區(qū)Z定義(在1265處)為自操作1215起遍歷的邊界區(qū)間的集合。如上所述,圖13例示了根據(jù)處理1200對(duì)區(qū)邊界區(qū)間集合的遍歷。 在1305處,在選擇了區(qū)間1145從相交部1182開(kāi)始向上移動(dòng)(在圖中由圓圈和短箭頭示出),路徑來(lái)到相交部1112。順時(shí)針轉(zhuǎn)向是一個(gè)選項(xiàng),所以路徑轉(zhuǎn)向(在1310處)到區(qū)間 1120,然后在相交部1122處再次順時(shí)針轉(zhuǎn)向到達(dá)區(qū)間1155。路徑在相交部1132處又再次順時(shí)針轉(zhuǎn)向(在1315處)到達(dá)區(qū)間1150,但是然后在相交部1142處不能順時(shí)針轉(zhuǎn)向或者繼續(xù)徑直通過(guò)。相反,路徑逆時(shí)針轉(zhuǎn)向到區(qū)間1145,然后在相交部1152處再次逆時(shí)針轉(zhuǎn)向到區(qū)間1160以朝向相交部1162前進(jìn)。在相交部1162處,路徑順時(shí)針轉(zhuǎn)向(在1320處) 到區(qū)間1175,然后在相交部1172處再次順時(shí)針轉(zhuǎn)向到區(qū)間1180。區(qū)間1180返回到至原始相交部1182的路徑。圖 13 例示(在 1325 處)了由對(duì)區(qū)間 1115、1120、1155、1150、1145、1160、1175 和 1180的遍歷定義的區(qū)1300,以及在遍歷中采用的方向矢量。返回到處理1200,在定義(在 1265處)區(qū)Z之后,處理移除(在1270處)用以遍歷區(qū)Z的方向矢量。圖13例示(在 1330處)了頁(yè)面1000的區(qū)邊界區(qū)間,其中移除了用以遍歷區(qū)1300的方向矢量。接下來(lái),處理1200移除(在1275處)所有的邊界區(qū)間,沒(méi)有方向矢量留下。這將不會(huì)在識(shí)別出第一區(qū)之后發(fā)生,但是可以在識(shí)別出任何其他區(qū)之后發(fā)生。當(dāng)區(qū)Z是島(即, 與其父輩不共享邊界的區(qū))時(shí),處理1200按其本身對(duì)該區(qū)進(jìn)行分類(在1280處)。在優(yōu)選順時(shí)針轉(zhuǎn)向的實(shí)施例中,通過(guò)沿逆時(shí)針?lè)较虮闅v區(qū)的中心而定義的區(qū)域?qū)⑹菎u。然后該處理確定(在1285處)是否還有任何區(qū)邊界區(qū)間。當(dāng)有更多的區(qū)邊界區(qū)間時(shí),處理前進(jìn)到以上描述的1215。否則,一旦在雙向上采用所有區(qū)邊界區(qū)間,處理就已經(jīng)定義了頁(yè)面的所有區(qū)。然后處理存儲(chǔ)(在1290處)區(qū)信息。然后處理結(jié)束。圖14例示了應(yīng)用于頁(yè)面1000的處理1200的繼續(xù)。為簡(jiǎn)便起見(jiàn),圖14沒(méi)有例示遍歷區(qū)邊界區(qū)間的每一次移動(dòng)。首先,在相交部1113、1123、1133和1143中的任一個(gè)開(kāi)始, 識(shí)別兩個(gè)區(qū)1435和1440。這兩個(gè)區(qū)彼此完全一樣,就像將在不具有非島子輩的島的情況中出現(xiàn)的一樣。一些實(shí)施例移除完全一樣的區(qū)。然而,其他實(shí)施例將區(qū)處理為兩個(gè)一個(gè)是矩形區(qū),另一個(gè)是島。接下來(lái),在相交部1192開(kāi)始得到區(qū)1445 (頁(yè)面邊界),這是因?yàn)轫?yè)面邊界的所有可能轉(zhuǎn)向?qū)⑹悄鏁r(shí)針移動(dòng)。最后,這留下區(qū)1450和1455,它們被遍歷并移除。一旦遍歷了所有的區(qū),就沒(méi)有剩余的區(qū)邊界區(qū)間。E.生成區(qū)樹(shù)
一旦已經(jīng)識(shí)別出區(qū),就可以生成區(qū)圖(區(qū)樹(shù))。在一些實(shí)施例中,在逐區(qū)進(jìn)行的文檔重構(gòu)中采用區(qū)樹(shù)。圖15概念性地例示了一些實(shí)施例的用于生成區(qū)樹(shù)的處理1500。如圖所示,該處理接收(在1505處)區(qū)和內(nèi)容對(duì)象。在一些實(shí)施例中,這些區(qū)已經(jīng)被諸如處理 1200的處理識(shí)別。然后該處理按面積對(duì)這些區(qū)進(jìn)行排序(在1510處)。一些實(shí)施例為了對(duì)區(qū)進(jìn)行排序,在島和非島的面積相等時(shí),將島處理為大于非島。接下來(lái),該處理選擇(在1515處)最小的區(qū)作為ζ。然后該處理確定(在1520 處)區(qū)ζ在頁(yè)面的區(qū)圖中是否還有節(jié)點(diǎn)。當(dāng)ζ具有節(jié)點(diǎn)時(shí),該處理前進(jìn)到下面描述的1530。 否則,當(dāng)ζ不具有節(jié)點(diǎn)時(shí),該處理1500確定(在1525處)區(qū)ζ的節(jié)點(diǎn)。接下來(lái),處理選擇(在1530處)下一個(gè)最小的區(qū)作為區(qū)P。然后處理確定(在 1535處)區(qū)ρ是否包含區(qū)ζ (即,區(qū)ζ的外界線是否完全在區(qū)ρ的外界線內(nèi))。當(dāng)區(qū)ρ包含區(qū)ζ時(shí),該處理確定(在1540處)區(qū)ζ是區(qū)ρ的子輩?;诖耍撎幚矶x(在1545處) 節(jié)點(diǎn)圖中針對(duì)區(qū)P的一個(gè)節(jié)點(diǎn)。然后該處理定義(在1550處)從區(qū)ρ到區(qū)ζ的邊緣。然后該處理前進(jìn)到下面描述的1565。在1535處,當(dāng)處理確定區(qū)ρ不包含區(qū)ζ時(shí),該處理確定(在1555處)是否有任何大于當(dāng)前區(qū)P的區(qū)。當(dāng)還有更大的區(qū)時(shí),處理前進(jìn)到1530,并選擇下一個(gè)最小的區(qū)作為區(qū) P,以測(cè)試新的區(qū)P是否是區(qū)ζ的父輩。否則,當(dāng)沒(méi)有大于區(qū)P的區(qū)時(shí),處理確定(在1560 處)區(qū)ζ不具有父區(qū)。接下來(lái),處理確定(在1565處)是否有任何大于區(qū)ζ的區(qū)。當(dāng)有更大的區(qū)時(shí),該處理從要從其選擇的區(qū)集合中移除(在1570處)區(qū)z,并前進(jìn)到1515以選擇另一個(gè)區(qū)進(jìn)行父子分析。圖 16 例示了(圖 10 中示出的)頁(yè)面 1000 的區(qū) 1435 (A)、1440 (A,),1455 (B), 1450(C)、1300 (D)和1445 (E),它們按照尺寸順序排序(A’是A的島)且放置到節(jié)點(diǎn)圖1600 中。利用處理1500,首先將定義區(qū)A(最小的區(qū))的節(jié)點(diǎn),然后將測(cè)試這些區(qū)直到處理確定島區(qū)A’是區(qū)A的父輩,此時(shí)區(qū)A將在節(jié)點(diǎn)圖中被定義,并且將定義從A’到A的邊緣。接下來(lái),區(qū)D將被確定為島區(qū)A’的父輩,然后區(qū)B、C和D全部將被確定為是島區(qū)E的子輩,其中島區(qū)E沒(méi)有父輩。在一些實(shí)施例中,區(qū)和島區(qū)的級(jí)別在區(qū)圖中總是交替的。由此,島E和A’ 處于圖1600的第一和第三級(jí)別,而區(qū)B、C、D和A處于第二和第四級(jí)別。一旦已經(jīng)分析了所有的區(qū),處理就前進(jìn)到1573,并且確定是否有任何未處理的內(nèi)容對(duì)象。當(dāng)沒(méi)有內(nèi)容對(duì)象(即,除了區(qū)邊界,文檔是空白的)或者已經(jīng)處理了所有的內(nèi)容對(duì)象時(shí),處理前進(jìn)到下面描述的1597。否則,該處理前進(jìn)到1575并選擇內(nèi)容對(duì)象C。然后該處理定義(在1580處)對(duì)象c的節(jié)點(diǎn)。在一些實(shí)施例中,內(nèi)容對(duì)象是本原對(duì)象(例如,圖示符、形狀或圖像)。然后該處理確定(在1585處)包含內(nèi)容對(duì)象c的最小區(qū)χ。一旦確定了包含內(nèi)容對(duì)象c的區(qū)X,該處理定義(在1590處)在區(qū)圖中從區(qū)χ到內(nèi)容對(duì)象c的邊緣。當(dāng)已經(jīng)添加了所有對(duì)象時(shí),處理存儲(chǔ)(在1597處)區(qū)圖。處理然后結(jié)束。在一些實(shí)施例中,進(jìn)一步分析每個(gè)區(qū)中的內(nèi)容(例如,將文本分組為段落,識(shí)別表格,等等)。此外,當(dāng)執(zhí)行文檔重構(gòu)時(shí),一些實(shí)施例利用每個(gè)區(qū)的內(nèi)容子樹(shù)來(lái)更新區(qū)圖,其中這些內(nèi)容子樹(shù)包括表示區(qū)的本原對(duì)象的分級(jí)分組的結(jié)構(gòu)節(jié)點(diǎn)。通過(guò)首先執(zhí)行區(qū)分析,可以確保在隨后的文檔重構(gòu)步驟中不會(huì)不適當(dāng)?shù)胤纸M來(lái)自不同區(qū)的內(nèi)容。在一些實(shí)施例中,對(duì)諸如邊界和由這些邊界界定的區(qū)域(例如,區(qū))的幾何屬性的識(shí)別設(shè)置了用于進(jìn)一步的文檔重構(gòu)的階段。例如,簡(jiǎn)檔可以依賴于區(qū)幾何結(jié)構(gòu),并且諸如表格或者文本框的結(jié)構(gòu)元素可以從區(qū)幾何結(jié)構(gòu)中識(shí)別出來(lái)。F.軟件架構(gòu)在一些實(shí)施例中 ,將以上描述的區(qū)分析處理實(shí)施為在特定機(jī)器(例如,計(jì)算機(jī)、媒體播放器、蜂窩式電話(例如,iPhone )或者其他手持式或資源受限設(shè)備)上運(yùn)行(或者存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)上)的軟件。圖17概念性地例示了一些實(shí)施例的用于對(duì)文檔執(zhí)行區(qū)分析的區(qū)分析應(yīng)用1700的軟件架構(gòu)。在一些實(shí)施例中,應(yīng)用是獨(dú)立應(yīng)用或者集成到另一應(yīng)用(例如,文檔重構(gòu)應(yīng)用)中,而在其他實(shí)施例中,應(yīng)用可能是在操作系統(tǒng)內(nèi)實(shí)現(xiàn)的。區(qū)分析應(yīng)用1700包括邊界識(shí)別模塊1705、區(qū)間和相交部識(shí)別模塊1710、區(qū)識(shí)別模塊1715、和區(qū)圖構(gòu)建器1720以及區(qū)信息存儲(chǔ)設(shè)備1725。圖17還例示了文檔內(nèi)容1730。邊界識(shí)別模塊1705從文檔內(nèi)容1730接收信息。 在一些實(shí)施例中,該信息是關(guān)于文檔中的所有圖形(例如,形狀、圖像、線條,等等)的信息。 邊界識(shí)別模塊1705識(shí)別潛在區(qū)邊界,并將該信息傳遞到區(qū)間和相交部識(shí)別模塊1710以及到區(qū)信息存儲(chǔ)設(shè)備1725。在一些實(shí)施例中,邊界識(shí)別模塊1705執(zhí)行處理900的一些或全部。區(qū)間和相交部識(shí)別模塊1710從邊界識(shí)別模塊1705和/或區(qū)信息存儲(chǔ)設(shè)備1725 接收區(qū)邊界信息。區(qū)間和相交部識(shí)別模塊1710基于由模塊1705識(shí)別出的潛在區(qū)邊界來(lái)識(shí)別區(qū)邊界相交部和區(qū)邊界區(qū)間。所識(shí)別出的區(qū)邊界相交部和區(qū)邊界區(qū)間被傳遞到區(qū)識(shí)別模塊1715,并存儲(chǔ)在區(qū)信息存儲(chǔ)設(shè)備1725中。在一些實(shí)施例中,區(qū)間和相交部識(shí)別模塊1710 執(zhí)行處理900的一些或全部。區(qū)識(shí)別模塊1715接收來(lái)自邊界識(shí)別模塊1705的區(qū)邊界信息、來(lái)自區(qū)間和相交部識(shí)別模塊1710的區(qū)邊界相交部和區(qū)邊界區(qū)間信息、以及/或者來(lái)自區(qū)信息存儲(chǔ)設(shè)備1725 的信息。區(qū)識(shí)別模塊1715基于來(lái)自模塊1705和1715的信息識(shí)別區(qū)。將識(shí)別出的區(qū)傳遞到區(qū)圖構(gòu)建器,并存儲(chǔ)在區(qū)信息存儲(chǔ)設(shè)備1725中。在一些實(shí)施例中,區(qū)識(shí)別模塊1715執(zhí)行存儲(chǔ)1200中的一些或全部。區(qū)圖構(gòu)建器1720模塊接收來(lái)自區(qū)識(shí)別模塊1715和/或區(qū)信息存儲(chǔ)設(shè)備1725的區(qū)信息,以及來(lái)自文檔內(nèi)容1730的內(nèi)容信息。區(qū)圖構(gòu)建器1720基于區(qū)信息定義文檔的區(qū)圖, 并用內(nèi)容信息填充區(qū)圖。在一些實(shí)施例中,當(dāng)由諸如下面章節(jié)描述的其他重構(gòu)處理識(shí)別出內(nèi)容信息時(shí),區(qū)圖構(gòu)建器1720填充區(qū)圖。在一些實(shí)施例中,區(qū)圖構(gòu)建器1720執(zhí)行處理1500 中的一些或全部。在一些實(shí)施例中,將以上描述的模塊或其他模塊執(zhí)行的處理的結(jié)果存儲(chǔ)在電子存儲(chǔ)設(shè)備中(例如,作為文檔對(duì)象模型的一部分)。文檔對(duì)象模型然后可以用于在電子顯示設(shè)備(例如,手持式設(shè)備、計(jì)算機(jī)屏幕,等等)上顯示文檔,使得用戶能夠?yàn)g覽文檔和/或與文檔交互(例如,通過(guò)觸摸屏、游標(biāo)控制設(shè)備,等等)。III.導(dǎo)引和裝訂線分析本發(fā)明的一些實(shí)施例提供了用于識(shí)別文檔或文檔的一部分中的諸如邊界(例如, 對(duì)準(zhǔn)導(dǎo)引)和未填充空間(例如,圖示符分組之間的未填充空白空間的間隔,稱為裝訂線) 的幾何屬性的方法。在一些實(shí)施例中,裝訂線是兩個(gè)對(duì)準(zhǔn)點(diǎn)之間(例如,右對(duì)準(zhǔn)點(diǎn)與左對(duì)準(zhǔn)點(diǎn)之間)的空白空間。在一些實(shí)施例中,在隨后的諸如列識(shí)別和文本行拆分的重構(gòu)過(guò)程中采用對(duì)導(dǎo)引和裝訂線的識(shí)別。一些實(shí)施例逐區(qū)地或逐頁(yè)面地識(shí)別導(dǎo)引和裝訂線。圖18例示了一些實(shí)施例的用于識(shí)別文檔中的導(dǎo)引和裝訂線的整體處理1800。下面將結(jié)合圖19來(lái)描述處理1800,圖19例示了具有兩列文本的頁(yè)面1900以及在頁(yè)面1900 上識(shí)別出的導(dǎo)引和裝訂線。如圖18所示,處理1800接收(在1805處)文檔的一部分。該部分可以是多個(gè)頁(yè)面、一個(gè)頁(yè)面或已經(jīng)被先前的區(qū)分析識(shí)別出的一個(gè)區(qū)。文檔的一部分可以包括已經(jīng)通過(guò)在本申請(qǐng)中其他地方描述的方法從本原圖示符重構(gòu)的字。然后處理應(yīng)用(在1810處)集群分析來(lái)確定接收到的文檔部分的導(dǎo)引。集群分析使得該處理能夠確定字的結(jié)尾或開(kāi)始被分組到一起的χ坐標(biāo),使得這些χ坐標(biāo)可能是對(duì)準(zhǔn)導(dǎo)引。如所提及的,圖19例示了具有兩列文本的頁(yè)面1900。頁(yè)面1900包括多個(gè)導(dǎo)引集 1905。一些實(shí)施例將列的底部行和頂部行確定為導(dǎo)引,而其他實(shí)施例僅確定左對(duì)準(zhǔn)導(dǎo)引和右對(duì)準(zhǔn)導(dǎo)引。一些實(shí)施例還識(shí)別其他對(duì)準(zhǔn)的導(dǎo)引,例如中央對(duì)準(zhǔn)或者編號(hào)列表中十進(jìn)制點(diǎn)的對(duì)準(zhǔn)。下面將進(jìn)一步詳細(xì)地描述集群分析和導(dǎo)引確定處理。接下來(lái),處理確定(在1815處)文檔部分的裝訂線。一些實(shí)施例采用來(lái)自操作 1810的信息來(lái)確定裝訂線。圖19例示了針對(duì)頁(yè)面1900確定的在第一列的右對(duì)準(zhǔn)導(dǎo)引與第二列的左對(duì)準(zhǔn)導(dǎo)引之間的裝訂線1910。一些實(shí)施例將頁(yè)邊距處理為裝訂線,而其他實(shí)施例不這樣處理。一旦確定了導(dǎo)引和裝訂線,處理1800就采用(在1820處)導(dǎo)引和裝訂線用于對(duì)文檔的進(jìn)一步重構(gòu)。然后處理結(jié)束。A.密度集群一些實(shí)施例通過(guò)如下操作來(lái)確定右對(duì)準(zhǔn)導(dǎo)引和左對(duì)準(zhǔn)導(dǎo)引在頁(yè)面上搜索在相同或近似相同的X坐標(biāo)處開(kāi)始或結(jié)尾的文本行,以及確定是否存在足夠的證據(jù)使得X坐標(biāo)實(shí)際上是對(duì)準(zhǔn)點(diǎn)。一些實(shí)施例采用稱為密度集群的集群分析的形式來(lái)確定對(duì)準(zhǔn)導(dǎo)引。一些實(shí)施例的密度集群利用在下面第X章中描述的存儲(chǔ)器和處理效率,使得它可以在資源受限的設(shè)備(例如,iPhone )上執(zhí)行。密度集群通??蓱?yīng)用到其中有相當(dāng)量的“噪音”或隨機(jī)數(shù)據(jù)混在否則清晰可見(jiàn)的集群中的問(wèn)題。當(dāng)數(shù)據(jù)是實(shí)數(shù)集時(shí),集群被識(shí)別為最佳地滿足給定密度約束的子集。約束通常被設(shè)計(jì)為挑選比其他子集相對(duì)更密集的子集。例如,一些實(shí)施例采用集群的最小尺寸和集群的最大展度作為約束。圖20概念性地例示了一些實(shí)施例的用于執(zhí)行密度集群的處理2000。如圖所示,該處理接收(在2005處)輸入數(shù)據(jù)集。在一些實(shí)施例中,輸入數(shù)據(jù)是頁(yè)面上的字符圖示符的坐標(biāo)數(shù)據(jù)。例如,在采用密度集群來(lái)尋找左對(duì)準(zhǔn)導(dǎo)引時(shí),輸入數(shù)據(jù)是頁(yè)面上每個(gè)字的第一個(gè)字母的錨點(diǎn)的χ坐標(biāo)。然后該處理對(duì)輸入數(shù)據(jù)集進(jìn)行排序(在2010處)。一些實(shí)施例按照升序排序數(shù)據(jù),而其他實(shí)施例按照降序來(lái)排序數(shù)據(jù)。例如,在采用密度集群來(lái)確定對(duì)準(zhǔn)導(dǎo)引的情況下, 數(shù)據(jù)(X坐標(biāo)值)是從最低X坐標(biāo)值到最高X坐標(biāo)值排序的,使得如果兩個(gè)X坐標(biāo)值相等, 則它們?cè)谂判驍?shù)據(jù)中是彼此緊鄰的(除非有具有相同X坐標(biāo)值的其他字落在兩者之間)。 一些實(shí)施例針對(duì)排序數(shù)據(jù)生成新陣列,而一些實(shí)施例采用在下面第X章中描述的索引的間接排序陣列。接下來(lái),處理2000確定(在2012處)是否該集合具有至少兩條數(shù)據(jù)。如果沒(méi)有的話,則處理結(jié)束,因?yàn)闆](méi)有內(nèi)容用以集群。否則,處理前進(jìn)以確定(在2015處)排序集合中的后續(xù)數(shù)據(jù)之間的差值集合。這種集合將具有比輸入數(shù)據(jù)集少一個(gè)的值。作為示例,當(dāng)在頁(yè)面上有三個(gè)字時(shí),差值集合中的兩個(gè)值是第一個(gè)字和第二個(gè)字的X坐標(biāo)值之間的差值以及第二個(gè)字和第三個(gè)字的X坐標(biāo)值之間的差值。接下來(lái),該處理將變量d設(shè)置(在2020處)為差值集合中的最大未評(píng)估差值。例如,當(dāng)字集的差值為0. 7英寸、0. 2英寸、0. 0英寸和0. 4英寸時(shí),初始地可以將變量d設(shè)置為0. 7英寸。然后該處理在差值大于或等于d的任何地方分隔(在2025處)排序數(shù)據(jù),以生成數(shù)據(jù)子集的集合。第一分隔將總是僅在等于d的差值處分隔排序數(shù)據(jù),這是因?yàn)閐將被設(shè)置為最大差值。在以上五個(gè)差值為0. 7,0. 2,0. 0和0. 4的數(shù)據(jù)值的示例中,分隔將生成兩個(gè)子集(第一個(gè)值在一個(gè)子集中,而其他四個(gè)值在另一個(gè)子集中)。然后該處理確定(在2030處)滿足針對(duì)要解決的問(wèn)題的特定約束的子集的組合 S。在一些實(shí)施例中,約束的目的在于確定比其他子集相對(duì)更密集的子集。一些實(shí)施例采用兩個(gè)密度約束最小集群尺寸(即,子集中的值的最小個(gè)數(shù))以及最大集群展度(即,子集中的最大值和最小值之間的最大允許差值)。在采用密度集群來(lái)確定對(duì)準(zhǔn)導(dǎo)引的情況下,一些實(shí)施例采用最小集群尺寸,該最小集群尺寸是被評(píng)估的頁(yè)面或區(qū)中總行數(shù)的分?jǐn)?shù) (fraction),而其他實(shí)施例采用常數(shù)。一些實(shí)施例采用最大展度,該最大展度是字的第一字符(用于左對(duì)準(zhǔn))或最后字符(用于右對(duì)準(zhǔn))的中位字體大小的分?jǐn)?shù)。一旦確定了滿足約束的子集的集合S,則該處理確定(在2035處)是否S為空。 當(dāng)S為空時(shí),處理進(jìn)行到下面描述的2055。當(dāng)S包括至少一個(gè)子集時(shí),處理評(píng)估(在2040 處)S的優(yōu)化函數(shù)。一些實(shí)施例采用的優(yōu)化函數(shù)尋找具有滿足約束的最大子集的集合S。其他實(shí)施例采用優(yōu)化函數(shù)嘗試(try)來(lái)最大化滿足約束的全部子集上的特定值(例如,子集的尺寸減去最小集群尺寸)的平方和。而其他實(shí)施例采用以上提及的優(yōu)化函數(shù)之一,然后在同數(shù)(tie)的情況下采用另一個(gè)。其他實(shí)施例采用其他優(yōu)化函數(shù)。接下來(lái),處理基于優(yōu)化函數(shù)確定(在2045處)是否集合S是目前最優(yōu)的。當(dāng)S不是最優(yōu)的時(shí),處理前進(jìn)到下面描述的2055。否則,當(dāng)S是最優(yōu)的時(shí),處理將S存儲(chǔ)(在2050 處)為已經(jīng)發(fā)現(xiàn)的最佳集群集合。如果S非空,則此時(shí)第一次通過(guò)(其中d是最大差值) 將始終是最優(yōu)的。在后續(xù)通過(guò)中,將當(dāng)前S與所存儲(chǔ)的集群集合進(jìn)行比較。然后處理確定(在2055處)是否有任何未評(píng)估的差值。一些實(shí)施例測(cè)試每一個(gè)可能的分隔來(lái)尋找最優(yōu)集群集合。一些這種實(shí)施例采用下面在第X章中描述的效率技術(shù)來(lái)使得能夠進(jìn)行更快且更高效的處理。當(dāng)處理確定有未評(píng)估的差值時(shí),該處理前進(jìn)到以上描述的2020。否則,一旦已經(jīng)評(píng)估了所有差值,則處理輸出(在2060處)當(dāng)前存儲(chǔ)的最優(yōu)集合 (或者,如果沒(méi)有找到滿足約束的集群,則是空集合)作為最終的集群集合。在確定對(duì)準(zhǔn)導(dǎo)引的情況下,最終的集群集合將是具有非常接近的X坐標(biāo)的字分組。然后處理結(jié)束。本領(lǐng)域普通技術(shù)人員將認(rèn)識(shí)到,除了密度約束和最優(yōu)量度,處理2000對(duì)集群施加一致性約束;即, 集群中接連的值之間的集群內(nèi)差值將永遠(yuǎn)不會(huì)等于或超過(guò)集群間差值,這是因?yàn)榭偸窃诘扔诨虼笥谝?guī)定間隔最小值的所有差值處分隔數(shù)據(jù)的。B.確定對(duì)準(zhǔn)導(dǎo)引如上所述,一些實(shí)施例通過(guò)如下操作來(lái)確定右對(duì)準(zhǔn)導(dǎo)引和左對(duì)準(zhǔn)導(dǎo)引搜索在頁(yè)面上的相同或近似相同的X坐標(biāo)處開(kāi)始或結(jié)尾的相關(guān)圖示符(例如,字、文本行)集,以及確定是否存在足夠的證據(jù)使得X坐標(biāo)實(shí)際上是對(duì)準(zhǔn)點(diǎn)。一些實(shí)施例采用相似但不是完全相同的處理來(lái)尋找左對(duì)準(zhǔn)導(dǎo)引和右對(duì)準(zhǔn)導(dǎo)引。圖21概念性地例示了一些實(shí)施例的用于確定左對(duì)準(zhǔn)導(dǎo)引的處理2100。將結(jié)合圖 22至M來(lái)描述處理2100的一部分。圖22至M例示了識(shí)別頁(yè)面2200上的左對(duì)準(zhǔn)導(dǎo)引的處理。如圖21所示,處理2100將用于密度集群的輸入數(shù)據(jù)設(shè)置(在2105處)為文檔的區(qū)域中的字的左邊緣的χ坐標(biāo)。在一些實(shí)施例中,區(qū)域是頁(yè)面或者頁(yè)面的區(qū)。在一些實(shí)施例中,特定字的左邊緣是該特定字的第一圖示符的錨點(diǎn)的χ坐標(biāo),其針對(duì)該圖示符期望的左對(duì)準(zhǔn)位置進(jìn)行了調(diào)整。然后處理確定(在2110處)希望的集群性質(zhì)。在一些實(shí)施例中,集群性質(zhì)是用于以上描述的密度集群的約束。一些實(shí)施例采用兩個(gè)密度約束最小集群尺寸(即,子集中的值的最小個(gè)數(shù))和最大集群展度(即,子集的最大值與最小值之間的最大允許差值)。在采用密度集群用于確定對(duì)準(zhǔn)導(dǎo)引的情況下,一些實(shí)施例采用作為被評(píng)估的頁(yè)面或區(qū)中的總行數(shù)的分?jǐn)?shù)的最小集群尺寸,而其他實(shí)施例采用常數(shù)。一些實(shí)施例采用作為字的第一個(gè)字符(用于左對(duì)準(zhǔn))或者最后字符(用于右對(duì)準(zhǔn))的中位字體大小的分?jǐn)?shù)的最大展度。約束的一個(gè)示例是最小集群尺寸是區(qū)域中的文本行總數(shù)的5%,而最大展度是中位字體大小的 10%。接下來(lái),該處理利用確定的集群性質(zhì)對(duì)輸入數(shù)據(jù)應(yīng)用(在2115處)密度集群,以確定可以是對(duì)準(zhǔn)導(dǎo)引的X坐標(biāo)值的集群。一些實(shí)施例采用如上所述的處理2000。然后處理2100確定(在2117處)是否有任何未評(píng)估的集群。當(dāng)沒(méi)有集群或者已經(jīng)評(píng)估了所有的集群時(shí),處理結(jié)束。否則,該處理選擇(在2120處)一個(gè)集群(即,從集群分析輸出的多個(gè)集群之一)。然后處理將左對(duì)準(zhǔn)導(dǎo)引設(shè)置(在2125處)為矩形,該矩形的最小和最大χ坐標(biāo)為集群中的最小和最大值,并且其最小和最大y坐標(biāo)為頁(yè)面的頂部和底部。在一些情況下,最小和最大χ坐標(biāo)將是相同的,因?yàn)榧褐械乃笑肿鴺?biāo)將具有相同的值。在其他情況下,意外進(jìn)入集群中的小的偏差或字將給予矩形非零寬度。圖22例示了一些實(shí)施例的具有潛在左對(duì)準(zhǔn)導(dǎo)引2205的頁(yè)面2200。矩形2205的最小χ坐標(biāo)由右列2215的左邊緣設(shè)置,而最大χ坐標(biāo)由頁(yè)面的中間的字“tate”2210設(shè)置, 這是因?yàn)樽?210的開(kāi)頭足夠靠近形成右列的左邊緣的字的開(kāi)頭,使得它被密度集群處理成與這些字分組在一起。然后處理2100基于對(duì)在矩形中開(kāi)始的字和穿過(guò)該矩形的字的分析移除(在2130 處)不滿足約束的y坐標(biāo)處的矩形。然后該處理前進(jìn)到以上描述的2117。一些實(shí)施例移除字開(kāi)始矩形的左側(cè)并穿過(guò)到矩形中的任何地方的矩形部分。還移除在其間不具有足夠數(shù)量的邊界字的兩個(gè)交叉字(crossing word)之間的任意y坐標(biāo)處的矩形。邊界字是在矩形的邊緣中開(kāi)始或在矩形的一個(gè)邊緣處開(kāi)始的字。一些實(shí)施例采用如下要求,即在交叉字之間有至少五個(gè)邊界字,并且這些五個(gè)邊界字中的至少一個(gè)必須是在其文本行中的最左側(cè),或者與其文本行中的前一個(gè)字隔開(kāi)至少一個(gè)正常字間隔。一些實(shí)施例采用在Mansfield等人的題為‘、emantic Reconstruction”的美國(guó)專利公開(kāi)No. 2007/0250497中描述的處理來(lái)確定字間隔和更大的間隔,該專利申請(qǐng)通過(guò)引用并入于此。一些實(shí)施例采用不同的要求(例如,在交叉字之間有小于或大于五個(gè)邊界字)來(lái)執(zhí)行操作2130。圖23例示了頁(yè)面2200和矩形2205,其中矩形2205的交叉字被圈起。交叉字包括字2340(“r印rehenderit”)和2315 (“dolore”)以及其他。在交叉字2340與2315之間有兩個(gè)邊界字2210 ( "tate")和2325 ( "esse");然而,當(dāng)對(duì)交叉字之間的邊界字的要求是三個(gè)或更大時(shí),還將移除這部分的矩形。一些實(shí)施例僅僅移除從交叉字的最大冒進(jìn)(ascent) 到最大縮進(jìn)(descent)以及交叉字之間的不合格區(qū)域。其他實(shí)施例還移除可能超出對(duì)準(zhǔn)導(dǎo)引的區(qū)域,例如從交叉字2330 ( “auteir”)到在它之上的邊界字2335 ( “r印rehenderit”) 的區(qū)域。圖24例示了用 于頁(yè)面2200的左對(duì)準(zhǔn)導(dǎo)引2405和2410。由于頁(yè)面中央的調(diào)出部 (call-out)區(qū)域,特定χ坐標(biāo)處的左對(duì)準(zhǔn)導(dǎo)引沒(méi)有貫穿整個(gè)頁(yè)面2200的長(zhǎng)度。如上所述,一些實(shí)施例采用類似于處理2100的處理來(lái)確定右對(duì)準(zhǔn)導(dǎo)引。圖25概念性地例示了一些實(shí)施例的用于確定右對(duì)準(zhǔn)導(dǎo)引的處理2500。如圖所示,該處理將用于密度集群的輸入數(shù)據(jù)設(shè)置(在2505處)為文檔的區(qū)域中的字的右邊緣的χ坐標(biāo)。在一些實(shí)施例中,該區(qū)域是頁(yè)面或頁(yè)面中的區(qū)。在一些實(shí)施例中,特定字的右邊緣是特定字的最后圖示符的錨點(diǎn)的χ坐標(biāo)加上該字的最后圖示符的前進(jìn)矢量的χ坐標(biāo),其針對(duì)該圖示符期望的右對(duì)準(zhǔn)位置進(jìn)行了調(diào)整。然后該處理確定(在2510處)希望的集群性質(zhì)。在一些實(shí)施例中,集群性質(zhì)是用于以上描述的密度集群的約束。一些實(shí)施例采用兩個(gè)密度約束最小集群尺寸(即,子集中的值的最小個(gè)數(shù))和最大集群展度(即,子集的最大值與最小值之間的最大允許差值)。在采用密度集群用于確定對(duì)準(zhǔn)導(dǎo)引的情況下,一些實(shí)施例采用作為被評(píng)估的頁(yè)面或區(qū)中的總行數(shù)的分?jǐn)?shù)的最小集群尺寸,而其他實(shí)施例采用常數(shù)。一些實(shí)施例采用作為字的第一個(gè)字符(用于左對(duì)準(zhǔn))或者最后字符(用于右對(duì)準(zhǔn))的中位字體大小的分?jǐn)?shù)的最大展度。約束的一個(gè)示例是最小集群尺寸是區(qū)域中的文本行總數(shù)的5%,而最大展度是中位字體大小的 10%。接下來(lái),該處理利用確定的集群性質(zhì)對(duì)輸入數(shù)據(jù)應(yīng)用(在2515處)密度集群,以確定可以是對(duì)準(zhǔn)導(dǎo)引的X坐標(biāo)值的集群。一些實(shí)施例采用如上所述的處理2000。然后該處理確定(在2517處)是否有任何未評(píng)估的集群。當(dāng)沒(méi)有集群或者已經(jīng)評(píng)估了所有的集群時(shí),處理結(jié)束。否則,該處理選擇(在2520處)一個(gè)集群(即,從集群分析輸出的多個(gè)集群之一)。然后處理將右對(duì)準(zhǔn)導(dǎo)引設(shè)置(在2525處)為矩形,該矩形的最小和最大χ坐標(biāo)為集群中的最小和最大值,并且其最小和最大y坐標(biāo)為頁(yè)面的頂部和底部。 在一些情況下,最小和最大χ坐標(biāo)將是相同的,因?yàn)榧褐械乃笑肿鴺?biāo)將具有相同的值。 在其他情況下,意外進(jìn)入集群中的小的偏差或字將給予該矩形非零寬度。然后該處理基于對(duì)在矩形中結(jié)尾的字和穿過(guò)該矩形的字的分析移除(在2530處) 不滿足約束的y坐標(biāo)處的矩形。然后該處理前進(jìn)到以上描述的2517。一些實(shí)施例移除字穿過(guò)矩形或者在矩形中開(kāi)始并在矩形的右側(cè)結(jié)尾的任何地方的矩形部分。還移除在其間不具有足夠數(shù)量的邊界字的兩個(gè)交叉字之間的任意y坐標(biāo)處的矩形。邊界字是在矩形的邊緣中結(jié)尾或在矩形的一個(gè)邊緣處結(jié)尾的字。一些實(shí)施例采用如下要求,即在交叉字之間有至少五個(gè)邊界字,并且這些五個(gè)邊界字中的至少一個(gè)必須是在其文本行中的最右側(cè),或者與其文本行中的下一個(gè)字隔開(kāi)超過(guò)一個(gè)正常字間隔。一些實(shí)施例采用在以上提及的美國(guó)專利公開(kāi)No. 2007/0250497中描述的處理來(lái)確定字間隔和更大的間隔。一些實(shí)施例采用不同的要求(例如,在交叉字之間有小于或大于五個(gè)邊界字)來(lái)執(zhí)行操作2530。
C.確定裝訂線在確定了導(dǎo)引之后,一些實(shí)施例接著確定區(qū)域(例如,區(qū)、頁(yè)面,等等)的裝訂線。 一些實(shí)施例采用來(lái)自導(dǎo)引確定處理(例如,處理2100和2500)的信息來(lái)確定區(qū)域的相關(guān)聯(lián)圖示符(例如,裝訂線)之間的未填充空白空間的分組。除了導(dǎo)引之外,一些實(shí)施例還采用其他對(duì)準(zhǔn)點(diǎn)來(lái)確定區(qū)域中的裝訂線。圖沈概念性地例示了一些實(shí)施例的用于確定區(qū)域中的裝訂線的處理沈00。將結(jié)合圖27至四來(lái)描述處理沈00的部分。圖27至四例示了識(shí)別頁(yè)面2700上的裝訂線的處理。如圖沈所示,該處理接收(在沈05處)對(duì)準(zhǔn)信息。在一些實(shí)施例中,該信息是由處理2100和2500確定的導(dǎo)引。一些實(shí)施例包括其他對(duì)準(zhǔn)點(diǎn)以及導(dǎo)引。例如,在一些實(shí)施例中,左對(duì)準(zhǔn)(非兩端對(duì)齊)文本中的文本行的末端被處理為右對(duì)準(zhǔn)點(diǎn)。這使得即使在第一列的右邊緣處沒(méi)有發(fā)現(xiàn)導(dǎo)弓I,也能夠識(shí)別列間隔中的裝訂線。類似地,在一些實(shí)施例中將右對(duì)準(zhǔn)文本的左邊緣或者居中文本的兩側(cè)邊緣看作對(duì)準(zhǔn)點(diǎn)。然后處理沈00確定(在沈07處)是否有任何未處理的右對(duì)準(zhǔn)點(diǎn)。當(dāng)沒(méi)有右對(duì)準(zhǔn)點(diǎn)或者已經(jīng)處理了所有的右對(duì)準(zhǔn)點(diǎn)時(shí),該處理結(jié)束。否則,該處理選擇(在沈10處)一個(gè)右對(duì)準(zhǔn)點(diǎn)。在一些實(shí)施例中,該處理首先識(shí)別最左的右對(duì)準(zhǔn)點(diǎn),而在其他實(shí)施例中,該處理選取隨機(jī)的右對(duì)準(zhǔn)點(diǎn)。然后該處理確定(在沈15處)是否在選定的右對(duì)準(zhǔn)點(diǎn)與區(qū)域的右邊緣之間存在左對(duì)準(zhǔn)點(diǎn)。當(dāng)沒(méi)有左對(duì)準(zhǔn)點(diǎn)時(shí),該處理前進(jìn)到以上描述的沈07。否則,當(dāng)在右對(duì)準(zhǔn)點(diǎn)與區(qū)域邊緣之間存在至少一個(gè)左對(duì)準(zhǔn)點(diǎn)時(shí),該處理識(shí)別(在沈20處)從所選的右對(duì)準(zhǔn)點(diǎn)起跨區(qū)域向右移動(dòng)的下一個(gè)左對(duì)準(zhǔn)點(diǎn)。這是兩個(gè)點(diǎn)之間的處理進(jìn)行測(cè)試以確定是否有裝訂線的區(qū)域。一旦識(shí)別出右對(duì)準(zhǔn)點(diǎn)和左對(duì)準(zhǔn)點(diǎn),該處理將裝訂線設(shè)置(在2625處)為如下矩形,即該矩形以右對(duì)準(zhǔn)點(diǎn)作為最小X坐標(biāo)且以左對(duì)準(zhǔn)點(diǎn)作為最大X坐標(biāo)。矩形的最小和最大y坐標(biāo)是頁(yè)面的頂部和底部。圖27例示了頁(yè)面2700和將被測(cè)試為可能的裝訂線的矩形 2705。最小χ坐標(biāo)是第一列的右邊緣處的右對(duì)準(zhǔn)點(diǎn),而最大χ坐標(biāo)是第二列的左邊緣處的左對(duì)準(zhǔn)點(diǎn)。接下來(lái),該處理基于對(duì)穿過(guò)到矩形中以及與矩形交界的字的分析移除(在沈30 處)不滿足約束的y坐標(biāo)處的裝訂線。一些實(shí)施例移除字穿過(guò)到矩形中或者在矩形中開(kāi)始的任意地方處的矩形部分。還移除在其間不具有足夠數(shù)量的邊界字的兩個(gè)交叉字之間的任何y坐標(biāo)處的矩形。裝訂線的邊界字是在矩形的左邊緣處結(jié)尾或者在矩形的右邊緣處開(kāi)始的字。一些實(shí)施例采用如下要求,即在交叉字之間有至少五個(gè)邊界字,并且這些五個(gè)邊界字中的至少一個(gè)必須是在其文本行中的最左側(cè)或與其文本行中的前一個(gè)字隔開(kāi)多于一個(gè)正常字間距,或者是在其文本行中的最右側(cè)或與其文本行中的下一個(gè)字隔開(kāi)多于一個(gè)正常字間隔。一些實(shí)施例采用在以上提及的美國(guó)專利公開(kāi)No. 2007/0250497中描述的處理來(lái)確定字間隔和更大的間隔。一些實(shí)施例采用不同的要求(例如,在交叉字之間有小于或大于五個(gè)邊界字)來(lái)執(zhí)行操作沈30。然后該處理前進(jìn)到以上描述的沈07。圖觀例示了頁(yè)面2700和矩形2705,其中圈出了矩形2705的交叉字。交叉字包括字2810( “ciIlum")和2815( ‘‘nulla,,)以及其他。在交叉字沘10與沘15之間有一個(gè)邊界字觀20( “eu”);然而,如果對(duì)于交叉字之間的邊界字的要求為兩個(gè)或更大,則還將移除這部分的矩形。一些實(shí)施例僅僅移除從交叉字的最大冒進(jìn)到最大縮進(jìn)以及交叉字之間的不合格區(qū)域。其他實(shí)施例還移除可能超出裝訂線的區(qū)域。圖四例示了頁(yè)面2700的裝訂線四05和四10。由于頁(yè)面中央的調(diào)出部區(qū)域,所以兩個(gè)主要列之間的裝訂線沒(méi)有貫穿頁(yè)面的整個(gè)長(zhǎng)度。一些實(shí)施例在整個(gè)語(yǔ)義重構(gòu)處理中采用導(dǎo)引和裝訂線。例如,采用裝訂線來(lái)拆分文本行并識(shí)別列。處理在下面的第IV章中進(jìn)行描述。D.軟件架構(gòu)在一些實(shí)施例中,以上描述的導(dǎo)引和裝訂線分析處理被實(shí)現(xiàn)為在特定機(jī)器(例如,計(jì)算機(jī)、媒體播放器、蜂窩式電話(例如,iPhone )或者其他手持式或資源受限設(shè)備) 上運(yùn)行(或者存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)上)的軟件。圖30概念性地例示了一些實(shí)施例的用于識(shí)別文檔中的導(dǎo)引和裝訂線的導(dǎo)引和裝訂線分析應(yīng)用3000的軟件架構(gòu)。在一些實(shí)施例中,應(yīng)用是獨(dú)立應(yīng)用或者集成到另一應(yīng)用(例如,文檔重構(gòu)應(yīng)用)中,而在其他實(shí)施例中,應(yīng)用可能是在操作系統(tǒng)內(nèi)實(shí)現(xiàn)的。導(dǎo)引和裝訂線分析應(yīng)用3000包括導(dǎo)引識(shí)別模塊3005、密度集群模塊3010和裝訂線識(shí)別模塊3015以及導(dǎo)引和裝訂線信息存儲(chǔ)設(shè)備3020。圖30還例示了文檔內(nèi)容3025。導(dǎo)引識(shí)別模塊3005從文檔內(nèi)容3025接收信息。 導(dǎo)引識(shí)別模塊3005分析文檔內(nèi)容以識(shí)別文檔中的對(duì)準(zhǔn)導(dǎo)引。識(shí)別出的導(dǎo)引被傳遞到裝訂線識(shí)別模塊3015以及到導(dǎo)引和裝訂線信息存儲(chǔ)設(shè)備3020以及文檔內(nèi)容3025。在一些實(shí)施例中,導(dǎo)引識(shí)別模塊3005執(zhí)行處理2100和2500的一些或全部。導(dǎo)引識(shí)別模塊3005還將信息傳遞到密度集群模塊3010,并從密度集群模塊3010 接收信息。密度集群模塊3010接收來(lái)自導(dǎo)引識(shí)別模塊3005和/或?qū)б脱b訂線信息存儲(chǔ)設(shè)備3025的輸入數(shù)據(jù),并對(duì)輸入數(shù)據(jù)執(zhí)行密度集群以確定潛在的導(dǎo)引。在一些實(shí)施例中, 密度集群模塊3010執(zhí)行處理2000的一些或全部。裝訂線識(shí)別模塊3015接收來(lái)自導(dǎo)引識(shí)別模塊3005和文檔內(nèi)容3025的信息。裝訂線識(shí)別模塊分析接收到的信息以識(shí)別文檔中的裝訂線。所識(shí)別出的裝訂線被傳遞到導(dǎo)引和裝訂線信息存儲(chǔ)設(shè)備3020以及文檔內(nèi)容3025。在一些實(shí)施例中,裝訂線識(shí)別模塊3015 執(zhí)行處理沈00的一些或全部。在一些實(shí)施例中,由以上描述的模塊或其他模塊執(zhí)行的處理的結(jié)果被存儲(chǔ)在電子存儲(chǔ)設(shè)備中(例如,作為文檔對(duì)象模型的一部分)。文檔對(duì)象模型然后可以用于在電子顯示設(shè)備(例如,手持式設(shè)備、計(jì)算機(jī)屏幕,等等)上顯示文檔,使得用戶能夠?yàn)g覽文檔和/或與該文檔交互(例如,通過(guò)觸摸屏、游標(biāo)控制設(shè)備,等等)。IV.確定布局和流文檔通常具有隱含的結(jié)構(gòu)和內(nèi)容流。具體而言,在一些情況下,字符(和內(nèi)嵌圖形)的有序序列構(gòu)成字,字的有序序列構(gòu)成文本行(或者用連字符來(lái)跨接文本行),文本行的有序序列構(gòu)成段落,段落的有序序列構(gòu)成列(或者跨接列),列的有序序列構(gòu)成布局,以及布局的有序序列構(gòu)成文檔的章節(jié)。當(dāng)在電子文檔的文件格式中沒(méi)有提供這種結(jié)構(gòu)時(shí),該結(jié)構(gòu)先前不能被軟件訪問(wèn)。盡管僅僅瀏覽文檔不必要求文檔結(jié)構(gòu),但是用于編輯文檔、導(dǎo)入 (import)文檔、搜索文檔、設(shè)計(jì)文檔樣式或者以其他方式重新計(jì)劃文檔的應(yīng)用卻需要了解文檔結(jié)構(gòu)和流,以正常地工作。本發(fā)明的一些實(shí)施例提供了用于確定文檔或文檔區(qū)域的布局和流的方法。它包括確定語(yǔ)義分級(jí)(例如,文檔的字、行和段落),以及布局性質(zhì),例如列和列如何放在一起用于對(duì)文檔的預(yù)期閱讀。在一些實(shí)施例中,處理的目的是識(shí)別人將從頭到尾閱讀文檔的順序。圖31概念性地例示了一些實(shí)施例的用于確定文檔的布局和流的處理3100。將結(jié)合圖32來(lái)描述處理3100。圖32例示了針對(duì)具有兩列文本的文檔的頁(yè)面3200確定的各種布局和流信息的序列。在圖32中,將認(rèn)識(shí)到頁(yè)面3200的內(nèi)容不是重要的,而行、段落等才是重要的。如圖31所示,處理3100接收(在3105處)文檔的一部分。在一些實(shí)施例中, 該部分是整個(gè)文檔或者章節(jié)、頁(yè)面或區(qū)。然后該處理識(shí)別(在3110處)接收到的文檔中的文本行。這包括識(shí)別共享公共基線的字符以及在必要時(shí)將預(yù)備(preliminary)行合并到一起(例如,下標(biāo)和上標(biāo))。圖 32例示了對(duì)行3205和3210的識(shí)別。下面將在第A節(jié)中進(jìn)一步對(duì)一些實(shí)施例的行識(shí)別處理進(jìn)行詳細(xì)描述。接下來(lái),該處理識(shí)別(在3115處)文本中的字。一些實(shí)施例采用如在以上提及的美國(guó)專利公開(kāi)No. 2007/0250497中描述的差值集群來(lái)識(shí)別文本中的字。圖32例示了對(duì)頁(yè)面3200上的字的識(shí)別,包括來(lái)自行3205的字3215( “Lorem")和來(lái)自行3210的字 3220( “amet”)。下面將在第B節(jié)中進(jìn)一步詳細(xì)描述字識(shí)別處理。然后該處理拆分(在3120處)文本斷開(kāi)處的文本行。圖32例示了行3205被拆分為行3225和3230,而行3210被拆分為行3235和3240。下面將在第C節(jié)中進(jìn)一步詳細(xì)描述一些實(shí)施例的行拆分處理。在拆分了行之后,處理將文本行放置(在3125處)成段落。圖32例示了在頁(yè)面 3200上識(shí)別出的段落3245和3250。下面將在第D節(jié)中進(jìn)一步詳細(xì)描述段落識(shí)別處理。最后,處理將段落放置(在3130處)成列和布局。圖32例示了在頁(yè)面3200上識(shí)別出的列3255和3260。下面將在第E節(jié)中進(jìn)一步詳細(xì)描述列和布局識(shí)別處理。一些實(shí)施例不一起執(zhí)行處理3100的全部操作。相反,一些實(shí)施例在處理3100的操作之間執(zhí)行其他文檔重構(gòu)處理。例如,一些實(shí)施例確定文本行和文本中的字,但是然后在拆分文本行之前識(shí)別導(dǎo)引和裝訂線。A.初始行識(shí)別如上所述,在一些實(shí)施例中,必須識(shí)別文本行。由于特定文本行中的每個(gè)字符不必然總是共享公共基線,所以一些實(shí)施例試圖基于兩行中的字符將要被讀為同一文本行的一部分(例如,上標(biāo)和下標(biāo))的事實(shí)而將多個(gè)行合并到一起。圖33概念性地例示了一些實(shí)施例的用于識(shí)別和合并文本行的處理3300。將結(jié)合圖34和35來(lái)描述處理3300。圖34例示了具有六個(gè)交疊文本行的分組3405至3430的頁(yè)面3400,而圖35例示了根據(jù)本發(fā)明一些實(shí)施例對(duì)這些文本行分組的合并。如圖33所示,處理接收(在3305處)文檔的一部分。在一些實(shí)施例中,該處理是文檔的頁(yè)面或者頁(yè)面的區(qū),等等。然后該處理確定(在3307處)文檔部分中是否有任何字符。當(dāng)沒(méi)有字符時(shí),處理結(jié)束。否則,處理將共享公共基線的字符關(guān)聯(lián)(在3310處)為預(yù)備文本行。在一些實(shí)施例中當(dāng)字符具有相同的y坐標(biāo)錨點(diǎn)時(shí),這些字符共享公共基線。通常,關(guān)聯(lián)共享公共基線的字符將標(biāo)準(zhǔn)文本行分組到一起。一些實(shí)施例采用小閾值,使得預(yù)備文本行中的y坐標(biāo)錨點(diǎn)不必精確地相等,但是必須在彼此的小閾值內(nèi)。接下來(lái),處理識(shí)別(在3315處)垂直交疊的文本行分組。在一些實(shí)施例中,當(dāng)?shù)谝恍械慕缍ň匦卧趛坐標(biāo)值上與第二行的界定矩形交疊時(shí),這兩行垂直交疊。圖35例示了頁(yè)面3400,該頁(yè)面3400具有六個(gè)垂直交疊文本行的分組行3505和3506,行3510和3511, 行 3515 和 3516,行 3520,3521 和 3522,行 3525 和 3526 以及行 3530 和 3531。行 3520 與行 3522關(guān)聯(lián)成一個(gè)分組,這是因?yàn)檫@兩行都與行3521交疊,盡管它們彼此并不交疊。盡管沒(méi)有水平交疊,但是由于航3530和3531垂直交疊,所以在一些實(shí)施例中它們也初始地被分組到一起。然后該處理選擇(在3320處)未評(píng)估分組,并將該分組分隔(在3325處)成多個(gè)部分,不同部分的文本行之間沒(méi)有水平交疊。在一些實(shí)施例中,當(dāng)?shù)谝晃谋拘械慕缍虻?X坐標(biāo)與第二文本行的界定框的X坐標(biāo)交疊時(shí),這兩個(gè)文本行水平交疊。例如,此時(shí)分隔出行3530和3531,因?yàn)樗鼈儧](méi)有水平地交疊,并由此將不會(huì)被認(rèn)為不是同一行。一些實(shí)施例在文本行的開(kāi)頭和結(jié)尾處擴(kuò)展對(duì)水平交疊的量度達(dá)小的距離(例如,空格字符的一半),使得合并行的開(kāi)頭或結(jié)尾處的偏置(offset)字符(例如,下標(biāo)和上標(biāo))。例如,在行3510與 3511之間沒(méi)有水平交疊,但是它們不會(huì)被分隔開(kāi),這是因?yàn)樾?510的結(jié)尾離行3511的開(kāi)頭足夠緊密。在分隔了所選的分組之后,該處理從該分組中選擇(在3330處)未評(píng)估的部分, 并從頂部到底部地排序(在3335處)該部分中的行。由此,如果選擇了具有行3520至3522 的所選部分,則這些行將被排序如下,即第一個(gè)是行3520,第二個(gè)是行3521以及第三個(gè)是行3522。各種實(shí)施例按照冒進(jìn)、縮進(jìn)、基線或者行的垂直位置的其他量度來(lái)對(duì)行進(jìn)行排序。然后該處理選擇(在3340處)該部分中的最頂部的未評(píng)估行。接下來(lái),該處理選擇(在3345處)所選行中的第一個(gè)(對(duì)于從左向右的語(yǔ)言來(lái)說(shuō)是從左側(cè)起閱讀)未評(píng)估字符。該處理確定(在3350處)是否可以將所選字符合并到下一行。當(dāng)所選字符沒(méi)有顯著地與下一行中的任何字符水平地交疊時(shí),一些實(shí)施例允許將字符合并到下一行。一些實(shí)施例允許字符之間的一定小量的水平交疊。對(duì)于從左向右的語(yǔ)言來(lái)說(shuō),一些實(shí)施例允許要向下合并的字符的左側(cè)比要向下合并的字符的右側(cè)有更小的交疊,以考慮對(duì)于偏置字符的公共間距調(diào)整。此外,一些實(shí)施例允許在交疊字符的原始插入順序相鄰時(shí)有任意量的交疊。在一些實(shí)施例中,插入順序是在頁(yè)面上繪制字符的順序。通常(盡管不總是),字符是按照它們要被閱讀的順序來(lái)繪制的,因此當(dāng)兩個(gè)垂直和水平交疊的字符在插入順序上相鄰時(shí),可能它們是要在一起閱讀的。當(dāng)處理確定所選字符可以被合并到下一行時(shí),該處理將所選字符合并(在3355) 到下一行。然后該處理前進(jìn)到下面描述的3365。否則,當(dāng)所選字符不能被合并時(shí),該處理將所選字符保持(在3360處)在所選行中。接下來(lái),處理確定(在3365處)所選行是否包括更多字符。當(dāng)當(dāng)前所選行中有更多字符時(shí),該處理前進(jìn)到3345以選擇該行中的下一個(gè)未評(píng)估字符。否則,當(dāng)已經(jīng)評(píng)估了該行中的所有字符時(shí),處理確定(在3370處)當(dāng)前部分是否包括更多行。當(dāng)在當(dāng)前所選部分中有更多行時(shí),該處理前進(jìn)到3340以選擇下一個(gè)未評(píng)估的行。否則,當(dāng)已經(jīng)評(píng)估了部分中的所有行時(shí),處理確定(在3375處)所選分組是否包括更多部分。當(dāng)在當(dāng)前所選分組中有更多部分時(shí),處理前進(jìn)到3330以選擇另一個(gè)部分并合并該部分中的行。否則,當(dāng)已經(jīng)評(píng)估了該分組中的所有部分時(shí),該處理確定(在3380處) 在文檔部分中是否有任何更多的分組要評(píng)估。當(dāng)有更多分組時(shí),該處理前進(jìn)到3320以選擇另一個(gè)分組。否則,當(dāng)已經(jīng)評(píng)估了所有分組時(shí),針對(duì)文檔部分的行合并完成,該處理結(jié)束。 圖35例示了在一些實(shí)施例中的針對(duì)頁(yè)面3500的行合并的結(jié)果。行3506可以向下合并到行3505,使得行3505現(xiàn)在包括來(lái)自行3506的上標(biāo)“m”,而行3506為空并由此被移除。盡管在行3510與3511之間沒(méi)有水平交疊,但是行3510的結(jié)尾與行3511的開(kāi)頭足夠緊密使得它們不會(huì)被分隔開(kāi),并且行3510的所有內(nèi)容可以被向下合并到3511中。行3516 中的兩個(gè)字符被向下合并到行3515。行3520至3522不能完全合并。行3520中的字符“b”初始向下合并到行3521。 接著,行3521中的字符“A”向下合并到行3522,因?yàn)樗慌c字符“C”交疊。然而,字符“b” 不向下合并到行3522,這是因?yàn)樗c字符“C”完全交疊。由此,行3521僅包括“b”,行3522 包括“A”和“C”,而行3520為空。如上所述,如果“b”和“C”按照插入順序是相鄰的,則一些實(shí)施例將“b”合并到行3522中。類似地,行3525和3526不被合并。行3526中的所有字符與行3525中的一個(gè)或多個(gè)字符有較大程度的交疊,并由此不被向下合并到行3525。按照頁(yè)面3500的插入順序, 行3526中的“T”不可能在行3525的“h”與“η”之間。最后,行3530和3531沒(méi)有被合并, 這是因?yàn)檫@兩行之間沒(méi)有水平交疊,由此它們?cè)诓僮?325處被分隔開(kāi)。在識(shí)別和合并了行之后,在一些實(shí)施例中識(shí)別字。一些實(shí)施例采用如在美國(guó)專利公開(kāi)No. 2007/0250497中描述的差值集群,來(lái)基于字內(nèi)的字母之間以及字之間的間距來(lái)識(shí)別字。在一些實(shí)施例中,差值集群還提供關(guān)于段間隔、列間隔等的信息。一些實(shí)施例采用在下面第X章中描述的存儲(chǔ)器和處理效率技術(shù)來(lái)執(zhí)行差值集群。B.利用差值集群來(lái)識(shí)別字和間隔圖36概念性地例示了一些實(shí)施例的用于執(zhí)行差值集群分析的處理3600。很多形式的集群分析要求了解分組/集群的個(gè)數(shù),因?yàn)榭赡艽嬖诙鄠€(gè)級(jí)別/分級(jí)的集群。例如,當(dāng)采用集群分析來(lái)分組天體時(shí),對(duì)集群個(gè)數(shù)的規(guī)定確定集群分析是否將在恒星、太陽(yáng)系、星系或者超星系團(tuán)的級(jí)別上來(lái)分組天體。然而當(dāng)采用集群分析來(lái)尋找內(nèi)容元素之間的結(jié)構(gòu)性關(guān)系時(shí),例如在很多情況下不了解分組個(gè)數(shù)。例如,在文本的頁(yè)面的情況下,不能假設(shè)圖示符構(gòu)成字、字組合形成行以及多組行形成段落,這是因?yàn)槲臋n可能具有兩個(gè)或更多列文本,使得文本的給定初始行可能包括兩個(gè)或更多個(gè)段落的部分。在一些實(shí)施例中,集群分析是一組技術(shù),它們可以被應(yīng)用到數(shù)據(jù)點(diǎn)集合以將點(diǎn)分組成集群,集群中的點(diǎn)相比于其他集群中的點(diǎn)彼此更靠近。在一些實(shí)施例中,集群分析應(yīng)用到表示諸如圖示符、字和文本行的對(duì)象之間的水平和垂直間距的數(shù)據(jù)點(diǎn)。例如,一些實(shí)施例采用下面將描述的k均值(k-means)集群分析。以表示空間間距的個(gè)數(shù)集(Pl、…、pN)以及k (集群個(gè)數(shù))的已知值開(kāi)始,采用該技術(shù)來(lái)將個(gè)數(shù)分隔成k個(gè)集群(V·· Ck,其由形式為 Cj= {Pi|aj<Pi<aj+l}的不等式來(lái)限定,其中 、…、%+1是增大的序列。在應(yīng)用k均值技術(shù)之前,按照大小來(lái)排序差值Pi+1_Pi,并且取k-Ι個(gè)最大差值作為分隔點(diǎn)。例如,如果 Pi+1-Pi是k-Ι個(gè)最大差值之一,則pi+1處于與Pi不同的集群中,并且pi+1是連續(xù)值…之一。 然后應(yīng)用k均值集群分析來(lái)重復(fù)精化(refine)集群。k均值技術(shù)包括取每個(gè)集群中的個(gè)數(shù)的平均值, 然后通過(guò)將Pi與最緊密的計(jì)算平均值相關(guān)聯(lián)來(lái)將它重新分布到集群中。重復(fù)執(zhí)行該技術(shù)直到不會(huì)給集群或其平均值帶來(lái)變化為止。在一些實(shí)施例中,本文公開(kāi)并稱為“差值集群”的技術(shù)用來(lái)確定包括給定源內(nèi)容的內(nèi)容元素之間存在的結(jié)構(gòu)性關(guān)系的級(jí)別個(gè)數(shù),以及/或者這種級(jí)別之間的一個(gè)或多個(gè)分級(jí)關(guān)系,還有可以用于確定內(nèi)容元素是否與每個(gè)所確定的級(jí)別中的另一內(nèi)容相關(guān)的一個(gè)或多個(gè)特性。在一些實(shí)施例中,差值集群與其他技術(shù)一起采用k均值技術(shù)。在圖36所示的示例中,采用差值集群分析來(lái)分析內(nèi)容元素位置之間的差值(間距)。在一些實(shí)施例中,通過(guò)分析內(nèi)容元素之間的間距,可以至少部分地利用間距的分組數(shù)據(jù)來(lái)分組內(nèi)容元素。在一些實(shí)施例中,單獨(dú)地分析間距的每個(gè)方向分量。例如,采用對(duì)水平分量的差值集群分析來(lái)在字符間距、字間距和列間距之間進(jìn)行區(qū)分。在一些實(shí)施例中,可以采用對(duì)垂直分量的差值集群分析來(lái)區(qū)分行間距、段落間距和文本框間距。處理3600概念性地例示了針對(duì)單個(gè)方向分量的差值集群分析。該處理可以再次用于分析一個(gè)或多個(gè)附加方向分量。在一些實(shí)施例中,沿著一個(gè)或多個(gè)維度執(zhí)行差值集群分析的結(jié)果被組合到一起,以確定一個(gè)或多個(gè)級(jí)別處的內(nèi)容元素之間的結(jié)構(gòu)性關(guān)系。如圖36所示,處理3600接收(在3605處)文檔的一部分。然后該處理識(shí)別(在 3610處)文檔中的元素的定位。在一些實(shí)施例中,元素包括字符、圖示符、圖像、行、圖畫、 框、單元、頁(yè)邊以及/或者各種其他內(nèi)容元素。在一些實(shí)施例中,元素的定位包括確定一個(gè)或多個(gè)定位坐標(biāo)分量和/或?qū)⑵浞峙涞皆?。在一些?shí)施例中,按順序組織元素的定位。例如,當(dāng)分析字符的水平間距時(shí),針對(duì)每行字符按照水平坐標(biāo)增大的順序組織字符。在一些實(shí)施例中,希望元素的定位坐標(biāo)值與元素之間的間距相關(guān)聯(lián),并且針對(duì)元素的寬度/長(zhǎng)度來(lái)補(bǔ)償定位值。例如,當(dāng)針對(duì)元素的組織順序中的第η個(gè)位置處的元素確定補(bǔ)償水平坐標(biāo)(χ 坐標(biāo))值時(shí),采用以下公式Xfn ^Xn-Ywi其中,V η是補(bǔ)償定位坐標(biāo)值,Xn是原始定位坐標(biāo)值,而Wi是第i個(gè)位置的元素的寬度。在一些實(shí)施例中,元素的寬度是基于它所表示的字符、字體大小以及字符的樣式, 等等。一些實(shí)施例通過(guò)采用已知的針對(duì)每個(gè)字符的錨點(diǎn)坐標(biāo)并以每個(gè)特定字符的寬度來(lái)調(diào)整該特定字符的這些坐標(biāo),來(lái)確定補(bǔ)償定位坐標(biāo)值。接下來(lái),該處理確定(在3615處)相鄰元素的定位之間的一階差值。在一些實(shí)施例中,當(dāng)具有至少一個(gè)相同定位坐標(biāo)分量值的兩個(gè)元素在至少一個(gè)其他定位坐標(biāo)分量值中彼此順序緊鄰時(shí),一個(gè)元素與另一個(gè)元素相鄰。例如,如果兩個(gè)圖示符屬于同一文本行并且兩者之間沒(méi)有其他圖示符,則這兩個(gè)圖示符彼此相鄰。在一些實(shí)施例中,當(dāng)兩個(gè)元素的對(duì)應(yīng)定位坐標(biāo)分量值之間的差值低于一限值或者在一個(gè)范圍值內(nèi)時(shí),這兩個(gè)元素具有至少一個(gè)相同的定位坐標(biāo)分量。在各種實(shí)施例中,當(dāng)兩個(gè)元素按照與所識(shí)別出的元素定位相關(guān)聯(lián)的順序和/或組織而彼此緊鄰時(shí),一個(gè)元素與另一個(gè)元素相鄰。在一些實(shí)施例中,定位之間的一階差值是經(jīng)寬度/長(zhǎng)度補(bǔ)償?shù)亩ㄎ蛔鴺?biāo)值之間的差值。例如,在一些實(shí)施例中,當(dāng)確定補(bǔ)償水平坐標(biāo)的組織順序中第η個(gè)和第η+1個(gè)位置中的相鄰元素的補(bǔ)償水平坐標(biāo)(χ坐標(biāo)) 之間的差值時(shí),采用以下公式^JTfl
在一些實(shí)施例中,一階差值與內(nèi)容中的圖示符之間的間隔間距相關(guān)聯(lián)。 接下來(lái),該處理3600對(duì)一階差值進(jìn)行排序(在3620處)。在一些實(shí)施例中,組織一階差值包括按照升序?qū)σ浑A差值進(jìn)行排序。在一些實(shí)施例中,組織一階差值包括將權(quán)重值分配給一階差值中的一個(gè)或多個(gè),以及至少部分地通過(guò)采用權(quán)重值來(lái)組織一階差值。例如,在一些實(shí)施例中,給定所用的字體及其字體度量(包括大小、缺省字母間距和與字體文本一起存儲(chǔ)的字距調(diào)整(kerning)值表),針對(duì)每個(gè)特定圖示符對(duì)以期望的圖示符間距來(lái)分割實(shí)際的圖示符間距。實(shí)際間距與期望間距之比按照增大的值來(lái)排序,并且在差值集群方法的其余部分采用該比值來(lái)替代一階差值。然后該處理確定(在3625處)排序的一階差值之間的二階差值。例如,當(dāng)確定一階差值的組織順序中第i個(gè)位置和第i+Ι個(gè)位置中的一階差值之間的二階差值時(shí),采用以下公式A2Xi=AX(R1)-AXw其中,Δ 2Xi是第i個(gè)二階差值,ΔΧω是排序的一階差值的第i個(gè)位置中的一階差值,而ΔΧ( +1)是同一排序的一階差值的i+Ι位置中的一階差值。在一些實(shí)施例中,二階差值與圖示符的間距之間的差值相關(guān)聯(lián)。接下來(lái),處理3600通過(guò)分析二階差值來(lái)確定(在3630處)集群級(jí)別的個(gè)數(shù)。在一些實(shí)施例中,分析二階差值包括組織所確定的二階差值。在一些實(shí)施例中,組織二階差值包括按照升序排序二階差值和/或按照增大的二階差值的順序繪制二階差值。在一些實(shí)施例中,組織二階差值包括將權(quán)重值分配給一個(gè)或多個(gè)二階差值。在一些實(shí)施例中,組織二階差值包括將二階差值分成一個(gè)或多個(gè)分組。在一些實(shí)施例中,二階差值各自被分類為分組間差值或分組內(nèi)差值。分組內(nèi)差值與相對(duì)較小的二階差值相關(guān)聯(lián),并且可以表示同一集群分組內(nèi)的一階差值的二階差值。分組內(nèi)差值的一個(gè)示例是將期望在同一字中的字母之間的字符寬度補(bǔ)償間距中發(fā)現(xiàn)的相對(duì)小變化。分組間差值與相對(duì)較大的差值相關(guān)聯(lián),并且可以表示不同集群分組之間的一階差值的二階差值。分組間差值的一個(gè)示例是一方面兩個(gè)字之間的間距與另一方面同一個(gè)字中的兩個(gè)字母之間的間距之間的相對(duì)大的差值。在一些實(shí)施例中,通過(guò)對(duì)有序二階差值應(yīng)用2均值集群分析來(lái)實(shí)現(xiàn)將二階差值分類成分組內(nèi)值和分組間值;具體而言,按升序取(P1,…,PN)作為M2X1,…,Δ2ΧΝ}。類似地, 可以針對(duì)有序二階差值應(yīng)用足以區(qū)分兩個(gè)集群的數(shù)據(jù)值的任何其他集群分析技術(shù)。然后分組內(nèi)差值在第一集群C1= {pja^p^aj中,而分組間差值在第二集群C2= {Pi | a2 ^ Pi < a3}中,其中< a2 < a3。在一些實(shí)施例中,內(nèi)容元素基于如上所述分析的它們的空間關(guān)系而被確定要組織到的級(jí)別的個(gè)數(shù)比在差值集群分析中找到的分組間差值的個(gè)數(shù)多一個(gè)。 例如,當(dāng)存在兩個(gè)分組間差值時(shí),結(jié)構(gòu)性級(jí)別的個(gè)數(shù)為三個(gè)。舉一個(gè)簡(jiǎn)單的例子,考慮形成包括單行文本的字的字符。x-x方向上的字符之間的間距中的一階差值將產(chǎn)生字符間距與字間距之間的二階差值(一個(gè)分組間差值),指示結(jié)構(gòu)的兩個(gè)級(jí)別(字和行)。當(dāng)文本在兩列中時(shí),將針對(duì)總共兩個(gè)分組間差值檢測(cè)(字間距與列間距之間)進(jìn)一步的二階差值,指示 X方向上的三個(gè)結(jié)構(gòu)性級(jí)別(字、行和列)。在一些實(shí)施例中,重復(fù)y方向上的分析并組合結(jié)果在可應(yīng)用于特定內(nèi)容時(shí)將識(shí)別在字符與字符分組之間的間距中出現(xiàn)的任何進(jìn)一步結(jié)構(gòu)性級(jí)別(例如,段落,等等)。
然后該處理確定(在3635處)每個(gè)集群級(jí)別的特性。然后處理結(jié)束。在一些實(shí)施例中,確定特性包括確定哪個(gè)一階差值(和/或什么范圍的一階差值)與哪個(gè)集群級(jí)別相關(guān)聯(lián)。在一些實(shí)施例中,確定特性包括計(jì)算與和集群級(jí)別相關(guān)聯(lián)的一階差值相關(guān)聯(lián)的統(tǒng)計(jì)值。例如,通過(guò)確定與集群級(jí)別相關(guān)聯(lián)的一階差值的部分的平均值、最小值和最大值,可以確定內(nèi)容中的圖示符之間的平均、最小和最大間距。令L為集群級(jí)別的個(gè)數(shù)。在一些實(shí)施例中,通過(guò)計(jì)數(shù)二階差值的第二集群中的點(diǎn)的個(gè)數(shù)并加1來(lái)計(jì)算L。接著,可以識(shí)別與每個(gè)級(jí)別相對(duì)應(yīng)的一階差值的分組,并且例如可以按照以下兩種方式之一來(lái)識(shí)別每個(gè)級(jí)別處的補(bǔ)償V值的集群。一種可能是對(duì)一階差值執(zhí)行L均值集群分析。所得的L個(gè)集群是與每個(gè)級(jí)別相對(duì)應(yīng)的一階差值的分組。接著,通過(guò)將一階差值的第(m+1)個(gè)、第(m+幻個(gè)…和第L個(gè)集群的點(diǎn)的個(gè)數(shù)加1來(lái)計(jì)算級(jí)別m處的Xn'的集群的個(gè)數(shù)Km。最后,對(duì)補(bǔ)償Xn'值執(zhí)行Km均值分析,以生成級(jí)別m處的Km個(gè)集群。第二種可能是在初始計(jì)算每個(gè)一階差值Δ Xn = Xn+1' -Xn'以將其值與索引η存儲(chǔ)在一起的時(shí)候,其中η可以用于識(shí)別相減以生成差值的連續(xù)X值對(duì)中的任一個(gè)。將該值和索引引用存儲(chǔ)在單個(gè)“一階差值”數(shù)據(jù)結(jié)構(gòu)中。類似地,當(dāng)初始計(jì)算每個(gè)二階差值時(shí),將其值與索引引用存儲(chǔ)在一起,索引引用可以用于識(shí)別其值被相減以生成差值的連續(xù)“一階差值”數(shù)據(jù)對(duì)中的任一個(gè)?,F(xiàn)在,針對(duì)位于第二集群中的每個(gè)二階差值(即,針對(duì)每個(gè)分組間差值),采用其索引引用來(lái)識(shí)別一階差值中的分隔點(diǎn)。這意味著索引識(shí)別被分隔成單獨(dú)的集群的一階差值對(duì)。按照這種方式進(jìn)行分隔得到與原始數(shù)據(jù)中的集群的L個(gè)級(jí)別相對(duì)應(yīng)的一階差值的L個(gè)集群。現(xiàn)在,級(jí)別η處的Xn值集群被識(shí)別如下針對(duì)一階差值的第(m+1)個(gè)、 第(m+幻個(gè)…和第L個(gè)集群中的每個(gè)一階差值數(shù)據(jù),采用其索引引用作為Xn'值中的分隔點(diǎn)ο圖37例示了差值集群的示例。在一些實(shí)施例中,圖37的示例與圖36的處理3600 相關(guān)聯(lián)。一階差值3705、3710和3715的分組按照從最低值到最高值的順序在與一階差值相關(guān)聯(lián)的行上繪制。每個(gè)點(diǎn)與一個(gè)差值(例如,從文本字符或其他圖示符到相鄰的文本字符或其他圖示符的距離)相關(guān)聯(lián),并且在圖37中,點(diǎn)沒(méi)有在彼此之上疊置以清楚地例示該示例。在所示示例中,數(shù)據(jù)與圖示符之間的水平間距相關(guān)聯(lián)。通過(guò)排序一階差值,該示例例示了一階差值3705、3710和3715的三個(gè)分組。一階差值分組3705與構(gòu)成字的圖示符之間的間距相關(guān)聯(lián)。一階差值分組3710與字之間的間距相關(guān)聯(lián)。一階差值分組3715與列之間的間距相關(guān)聯(lián)。對(duì)于每對(duì)相鄰一階差值,二階差值(即,一個(gè)一階差值與相鄰一階差值之間的差值)被確定并按照升序在與二階差值相關(guān)聯(lián)的行上繪制。二階差值分組3720、3725 和3730各自包括與二階差值相關(guān)聯(lián)的一個(gè)或多個(gè)點(diǎn)。在一些實(shí)施例中,點(diǎn)3725是包括二階差值分組的相關(guān)聯(lián)的二階差值點(diǎn)的分組的成員。在一些實(shí)施例中,點(diǎn)3730是包括二階差值分組的相關(guān)聯(lián)二階差值點(diǎn)的分組的成員。在一些實(shí)施例中,3720被識(shí)別為一個(gè)集群,而3725與3730 —起被識(shí)別為第二個(gè)集群。 同一單個(gè)一階差值分組內(nèi)的一階差值之間的二階差值(分組內(nèi)差值)被包括在二階差值分組3720中。例如,在文本文檔中,通常字內(nèi)或者在不同對(duì)字之間的間距中的字符之間的字符寬度補(bǔ)償間距僅略微變化。分組3705和3710中的分組間相鄰點(diǎn)之間的二階差值被包括在點(diǎn)3725中。分組3710和3715中的分組間相鄰點(diǎn)之間的二階差值被包括在點(diǎn)3730中。 由于在該示例中存在兩個(gè)分組間二階差值,所以有2加1個(gè)(3個(gè))分組級(jí)別(在本例中為,字、列中的文本行的句子或其部分、以及列)。通過(guò)確定分組3705中的一階差值的最小值和最大值,可以確定構(gòu)成字的圖示符之間的最小間距和最大間距,并且類似地可以采用分組3710和3715來(lái)分別確定字間距和列間距。在一些實(shí)施例中,采用與每個(gè)分組級(jí)別相關(guān)聯(lián)的最小和最大間距來(lái)例如通過(guò)識(shí)別包括字的字符分組相應(yīng)地分組內(nèi)容元素(例如,圖示符),將字分組成列中的文本行,等等。 通過(guò)采用從集群分析確定的數(shù)據(jù),將圖示符分組成確定的分組級(jí)別??梢韵鄬?duì)于任意內(nèi)容快速地且自動(dòng)地執(zhí)行分析,這部分是由于不必事先了解在分析的內(nèi)容或其他元素集合的結(jié)構(gòu)中有多少分組級(jí)別。無(wú)論分組級(jí)別的個(gè)數(shù)如何,僅在兩個(gè)處理步驟中確定級(jí)別個(gè)數(shù)。通過(guò)確定分組3705中的一階差值的平均值,可以確定構(gòu)成字的圖示符之間的平均間距。類似地,可以針對(duì)構(gòu)成字的圖示符確定其他統(tǒng)計(jì)量。類似地,可以采用對(duì)分組3710和3715中的一階差值的分析來(lái)確定與字間距和列間距相關(guān)的統(tǒng)計(jì)量。C.拆分行一些實(shí)施例在生成字和段中斷信息之后拆分文本行。例如,在文本行跨多于一個(gè)列的情況下拆分文本行,因?yàn)閮蓚€(gè)(或更多個(gè))部分中的文本可能不打算在一起閱讀。一些實(shí)施例采用從如上在第III節(jié)中所述的處理得出的導(dǎo)引和裝訂線信息以及來(lái)自差值集群的信息(例如,段間隔,等等),來(lái)拆分文本行。圖38概念性地例示了一些實(shí)施例的用于拆分文本行的處理3800。將結(jié)合圖39來(lái)描述處理3800的部分。圖39例示了如下序列,該序列示出了識(shí)別應(yīng)在哪里拆分頁(yè)面3900 中的行。如圖38所示,處理3800接收(在3805處)文檔部分的文本行、導(dǎo)引和裝訂線信息以及段中斷信息。在一些實(shí)施例中文本行信息是處理3300的輸出,而在一些實(shí)施例中導(dǎo)引和裝訂線信息是處理2100、2500和2600的輸出。段中斷(或段間隔)信息是如在以上提及的美國(guó)專利公開(kāi)No. 2007/0250497中以及在以上的一些實(shí)施例中描述的差值集群的輸出之一。在一些實(shí)施例中,文本部分是整個(gè)文檔、章節(jié)、頁(yè)面或頁(yè)面的區(qū)。接下來(lái),該處理基于接收到的文本行的基線的y坐標(biāo)來(lái)對(duì)接收到的文本行進(jìn)行排序(在3810處)。在頁(yè)面的底部開(kāi)始,處理選擇(在3815處)最底部的未評(píng)估文本行,并識(shí)別(在3820 處)所選行中的潛在拆分。一些實(shí)施例將潛在拆分定義為行中的兩個(gè)字之間的任意間隔,其(i)是如由差值集群定義的段間隔,或者(2)具有通過(guò)其的導(dǎo)引或裝訂線。 其他實(shí)施例針對(duì)潛在拆分僅采用一個(gè)或另一個(gè)或者不同定義。然后該處理確定(在3822處)是否識(shí)別了任何潛在拆分。當(dāng)沒(méi)有識(shí)別出拆分時(shí), 處理前進(jìn)到下面描述的3845。否則,該處理從當(dāng)前選擇的文本行選擇(在3825處)潛在拆分。然后該處理確定(在3830處)是否潛在拆分的χ區(qū)間與來(lái)自前一文本行的任何潛在拆分的χ區(qū)間交疊。評(píng)估的第一個(gè)文本行將不具有前一文本行,由此將不具有交疊的潛在拆分。在當(dāng)前所選的潛在拆分的χ區(qū)間不與來(lái)自前一行的潛在拆分的χ區(qū)間交疊時(shí),處理前進(jìn)到以上描述的3822。否則,該處理關(guān)聯(lián)(在3835處)交疊的潛在拆分。然后處理前進(jìn)到以上描述的3822。當(dāng)沒(méi)有更多的未評(píng)估潛在拆分時(shí),該處理確定(在3845處)是否有更多的行要評(píng)估。當(dāng)還有更多行時(shí),該處理前進(jìn)到3815以識(shí)別下一行中的潛在拆分并測(cè)試它們的交疊。
當(dāng)已經(jīng)評(píng)估了所有行時(shí),已經(jīng)識(shí)別和關(guān)聯(lián)了文檔部分中的所有潛在拆分。然后該處理執(zhí)行若干操作來(lái)消除假肯定(false positive)(即,實(shí)際上不應(yīng)拆分文本行的潛在拆分)。處理確定(在3847處)是否識(shí)別出任何潛在拆分分組。當(dāng)沒(méi)有識(shí)別出來(lái)時(shí),處理結(jié)束。否則,該處理選擇(在3850處)一個(gè)相關(guān)聯(lián)的潛在拆分的分組,并定義(在3855處) 完全通過(guò)所選分組的潛在拆分的矩形條。在一些實(shí)施例中,該條具有作為所選分組中的所有潛在拆分的χ區(qū)間的相交部的χ區(qū)間(即,兩個(gè)條的潛在拆分幾乎不交疊的條的χ區(qū)間將非常窄)。圖39例示了具有若干文本行的頁(yè)面3900。大多數(shù)文本行在兩列之間被拆分。然而,任一列中的基線是相同的。因此,在行拆分處理之前,來(lái)自第一列的每一行將與來(lái)自第二列的一個(gè)行處于同一行中。圖39還例示了相關(guān)聯(lián)的潛在拆分的四個(gè)矩形條3905、3910、 3915 和 3920。在定義了所選分組的矩形條之后,該處理確定(在3860處)是否該條跨少于閾值個(gè)數(shù)的文本行??缫粋€(gè)或僅幾個(gè)文本行的條不可能代表閱讀中的實(shí)際拆分,但是可以是一行或其他非中斷間隔內(nèi)的制表位(tab)。有時(shí)段間隔是在字之間的間隔由于兩端對(duì)齊的文本而非常大的情況下通過(guò)差值集群發(fā)現(xiàn)的。當(dāng)條跨少于閾值個(gè)數(shù)的行時(shí),該處理從潛在拆分列表中移除(在3865處)該分組,并將不會(huì)在這些定位處拆分文本行。然后該處理前進(jìn)到下面描述的3890。在頁(yè)面3900上,移除構(gòu)成條3910和3920的潛在拆分,這是因?yàn)樗鼈儧](méi)有足夠的拆分作為可能的列中斷。更可能的是,這些潛在拆分是制表位或者大的字間隔。當(dāng)條跨至少閾值個(gè)數(shù)的行時(shí),該處理確定(在3870處)當(dāng)前條是否在另一個(gè)條的閾值距離內(nèi)。一些實(shí)施例僅僅查看已經(jīng)被測(cè)試并且在確定另一個(gè)條是否在當(dāng)前條的閾值內(nèi)時(shí)還沒(méi)有被移除的先前條。在當(dāng)前條處于另一個(gè)條的閾值距離內(nèi)時(shí),該處理移除(在3875 處)具有垂直更短條的分組(在一些情況下,其中行都具有相同的尺寸,這是跨更少文本行的條)。然后該處理前進(jìn)到下面描述的3890。頁(yè)面3900的條3905和3915都適合跨足夠的文本行來(lái)通過(guò)操作3860。然而,在一些實(shí)施例中,條彼此太靠近以至于不能兩者都保留。因此,移除構(gòu)成條3905的潛在拆分的分組,這是因?yàn)?915是兩個(gè)條中較長(zhǎng)的一個(gè)。在一些實(shí)施例中,該處理防止列表項(xiàng)目符號(hào) (bullet)或編號(hào)與它們所指代的項(xiàng)目拆分開(kāi),以及其他潛在有問(wèn)題的拆分。在當(dāng)前條沒(méi)有與另一個(gè)條太近時(shí),該處理確定(在3880處)該條是否包括不是段間隔的在一行中的閾值個(gè)數(shù)的后續(xù)潛在拆分。在一些實(shí)施例中,可以識(shí)別字邊緣意外對(duì)準(zhǔn)的導(dǎo)引和/或裝訂線。這尤其可能出現(xiàn)在文本按照等寬字體(例如,Courier)顯示的情況下。當(dāng)條至少包括該閾值個(gè)數(shù)的后續(xù)非段間隔潛在拆分時(shí),該處理從潛在拆分列表中移除 (在3885處)該分組,并將不在這些定位處拆分文本行。接下來(lái),該處理確定(在3890處)是否有更多的潛在拆分分組還沒(méi)有相對(duì)于各種閾值要求進(jìn)行測(cè)試。當(dāng)有更多分組時(shí),該處理前進(jìn)到3850以選擇和評(píng)估下一個(gè)潛在拆分分組。否則,當(dāng)已經(jīng)評(píng)估了所有分組時(shí),該處理利用還沒(méi)有被移除的任何拆分來(lái)拆分(在3895 處)文本行。然后處理結(jié)束。在針對(duì)頁(yè)面3900例示的情況下,將被采用的拆分僅是隔開(kāi)兩列文本的中央處的拆分。盡管處理3800被例示為采用三個(gè)具體測(cè)試(操作3860、3870和3880)來(lái)移除潛在拆分分組,但是一些實(shí)施例僅采用它們中的子集,而其他實(shí)施例采用未示出的其他測(cè)試來(lái)清除不予考慮的潛在拆分。D.段落識(shí)別在一些實(shí)施例中,一旦已經(jīng)合并和拆分了文本行,則將這些行分組成段落。圖40 概念性地例示了一些實(shí)施例的用于將文本行分組成段落的處理4000。將結(jié)合圖41來(lái)描述處理4000的部分。圖41例示了對(duì)文檔的頁(yè)面4100上的段落的識(shí)別。如圖40所示,處理 4000接收(在4005處)文檔一部分的文本行。在一些實(shí)施例中,在執(zhí)行處理4000之前, 已經(jīng)合并(例如,通過(guò)處理3300)和拆分(例如,通過(guò)處理3800) 了文本行。在一些實(shí)施例中,文檔部分是整個(gè)文檔、文檔的章節(jié)、頁(yè)面或者區(qū),等等。該處理確定(在4007處)文檔部分中是否有任何行。當(dāng)沒(méi)有時(shí),處理結(jié)束。否則, 從接收到的文檔部分的頂部開(kāi)始,該處理選擇(在4010處)文檔部分中的第一個(gè)未評(píng)估文本行。然后該處理確定(在4015處)在所選行下面是否有多于一個(gè)文本行。在一些實(shí)施例中,為了操作4015,這些行必須在針對(duì)所選行下面的要考慮的更低行彼此的特定垂直距離內(nèi)。一些實(shí)施例要求至少三個(gè)文本行來(lái)判斷文本行是否屬于同一段落。在一些實(shí)施例中, 由于為了進(jìn)行比較必需兩個(gè)間距(即,第一與第二文本行之間的間距以及第二與第三文本行之間的間距),所以有該要求。當(dāng)所選文本行下面有兩個(gè)或更多個(gè)行時(shí),該處理前進(jìn)到下面描述的4030。否則,當(dāng)所選文本行下面有少于兩個(gè)行時(shí),該處理將所選行自己放置(在4020處)在一個(gè)段落中。 然后該處理確定(在4025處)文檔部分中是否有更多行。當(dāng)沒(méi)有更多行時(shí)(例如,當(dāng)文檔部分中只有一行文本時(shí)),該處理結(jié)束。否則,當(dāng)有更多行時(shí),該處理前進(jìn)到4010并選擇下一個(gè)文本行。在4015處,當(dāng)在4010處選擇的行(S卩,當(dāng)前段落中的第一個(gè)行)下面有兩個(gè)或更多個(gè)文本行時(shí),該處理識(shí)別(在4030處)所選文本行下面的下兩個(gè)行。然后該處理確定 (在4035處)間距和對(duì)準(zhǔn)是否在三個(gè)行之間一致。在一些實(shí)施例中,該確定包括檢查從第一個(gè)行到第二個(gè)行的垂直距離是否與從第二個(gè)行到第三個(gè)行的垂直距離相同。一些實(shí)施例采用文本行的基線來(lái)確定垂直間距。在一些實(shí)施例中,如果一個(gè)行開(kāi)始縮進(jìn)或者在其他行的左側(cè)結(jié)尾,則識(shí)別對(duì)準(zhǔn)差值,由此通知段落可能的開(kāi)始或結(jié)尾。當(dāng)間距和對(duì)準(zhǔn)不一致時(shí),該處理應(yīng)用(在4040處)啟發(fā)式規(guī)則以確定是否向具有所選第一行的段落添加任一個(gè)識(shí)別出的行。例如,在一些實(shí)施例中,當(dāng)頭兩行緊密在一起而第三行向下更遠(yuǎn)離時(shí),頭兩行被放置在一個(gè)段落中,而第三行是下一個(gè)段落的開(kāi)始。類似地,在一些實(shí)施例中,當(dāng)?shù)谝恍懈h(yuǎn)離第二和第三行時(shí),第一段落是單行段落,并且在第二行開(kāi)始下一段落。在一些實(shí)施例中采用類似的規(guī)則用于行之間的對(duì)準(zhǔn)差值。在應(yīng)用了啟發(fā)式規(guī)則之后,該處理前進(jìn)到4010以選擇下一個(gè)未評(píng)估文本行(即,還未被分配到一個(gè)段落的下一行),并開(kāi)始一個(gè)新的段落。當(dāng)三個(gè)行之間的間距和對(duì)準(zhǔn)一致時(shí),該處理將所有三個(gè)行放置(在4045處)在同一段落中。一些實(shí)施例還識(shí)別段落的間距和對(duì)準(zhǔn)性質(zhì)。例如,一些實(shí)施例將段落識(shí)別為左對(duì)準(zhǔn)、右對(duì)準(zhǔn)、兩端對(duì)齊、居中,等等。一些實(shí)施例留下開(kāi)放的多個(gè)可能性(例如,具有縮進(jìn)的第一行、所有三行右對(duì)準(zhǔn)或者非常靠近且下兩行左對(duì)準(zhǔn)的段落可能是左對(duì)準(zhǔn)、右對(duì)準(zhǔn)或者兩端對(duì)齊三者中的任一個(gè))。在識(shí)別了新段落的開(kāi)始的初始階段之后,處理4000試圖向段落添加行。在一些實(shí)施例中,行添加是基于從構(gòu)成段落的開(kāi)始的三個(gè)行確定的間距和對(duì)準(zhǔn)性質(zhì)。在其他實(shí)施例中,當(dāng)添加不與段落的間距和對(duì)準(zhǔn)性質(zhì)沖突的行時(shí),基于任何進(jìn)一步事實(shí)來(lái)精化間距和對(duì)準(zhǔn)性質(zhì)。接下來(lái),該處理確定(在4047處)文檔部分中是否有任何更多的行。當(dāng)沒(méi)有更多行(例如,文檔部分恰具有三個(gè)行)時(shí),處理結(jié)束。否則,該處理識(shí)別(在4050處)文檔部分中的下一個(gè)文本行。然后該處理確定(在4055處)在當(dāng)前段落與識(shí)別出的文本行之間是否有間距或?qū)?zhǔn)失配。當(dāng)有失配時(shí),處理結(jié)束該段落并前進(jìn)到以上描述的4010。在這種情況下,最近失配的行將是在4010處選擇的行。否則,當(dāng)間距和對(duì)準(zhǔn)一致(line up)時(shí),該處理將該行添加(在4060處)到當(dāng)前段落中。然后處理前進(jìn)到以上描述的4047。在一些實(shí)施例中,當(dāng)識(shí)別出的下一個(gè)文本行與段落的一個(gè)性質(zhì)(例如,兩端對(duì)齊)不適合時(shí),發(fā)現(xiàn)對(duì)準(zhǔn)失配。類似地,在一些實(shí)施例中,如果段落中的最后一行與下一行之間的間距相比于段落的間距增大,則發(fā)現(xiàn)間距失配。一些實(shí)施例采用其他停止條件(例如,得出識(shí)別出的行不要被添加到段落中的條件)。例如,一些實(shí)施例識(shí)別是否識(shí)別出的行中的第一個(gè)字將適合在左對(duì)準(zhǔn)段落的上一行的結(jié)尾處的空白空間中。當(dāng)是這種情況時(shí),假設(shè)新的一行是下一段落的部分,這是因?yàn)槿绻撔惺钱?dāng)前段落的部分的話,字將處于上一行的結(jié)尾處的空白空間中,而非開(kāi)始一個(gè)新的行。 類似地,一些實(shí)施例將縮進(jìn)識(shí)別為表示一個(gè)新的段落。一些實(shí)施例的第三個(gè)條件是是否識(shí)別出的行是統(tǒng)一樣式的(例如,全加粗或者具有更大字體大小)且不同于先前行中的任何字符的樣式。一旦完成了處理4000,則識(shí)別出文檔部分中的所有段落,并且將所有文本行分配給一個(gè)段落。一些實(shí)施例然后采用段落來(lái)識(shí)別列和布局。圖41例示了具有四個(gè)段落的頁(yè)面4100。對(duì)該頁(yè)面(該頁(yè)面是文檔部分)應(yīng)用處理4000使得識(shí)別出段落4105、4110、4115和4120。一些實(shí)施例的處理將開(kāi)始自把頭三個(gè)行分組到一起,然后添加第四和第五行,直到第六行4125具有間距和對(duì)準(zhǔn)失配為止,從而在段落4105中留下五個(gè)行。然后該處理從第六行開(kāi)始,并注意到下面兩行之間的間距和對(duì)準(zhǔn)失配。因?yàn)榕c第七行和第八行彼此相比第六行更遠(yuǎn)離它們,所以第六行就是整個(gè)段落4110, 并且下一個(gè)段落4115從第七行開(kāi)始。類似地識(shí)別段落4115和4120。E.列和布局識(shí)別一些實(shí)施例在識(shí)別出段落之后將段落放置成列和布局。在一些實(shí)施例中,列是段落的垂直有序分組,其中文本連貫地從頂部到底部閱讀。一些實(shí)施例中的布局是非交疊列的集合,并且在一些實(shí)施例中的線性布局是列的水平有序分組,其中文本連貫地從最左列的頂部到最右列的底部閱讀。例如,一些實(shí)施例將具有未分段文本行且沒(méi)有頁(yè)眉或頁(yè)腳的單個(gè)頁(yè)面分類為具有一列的單個(gè)線性布局。圖42概念性地例示了在一些實(shí)施例中用于識(shí)別文檔一部分中的列和布局的處理 4200。將結(jié)合圖43至46來(lái)描述處理4200。圖43和44例示了兩個(gè)不同頁(yè)面4300和4400 上的段落,而圖45和46分別例示了針對(duì)兩個(gè)頁(yè)面4300和4400的流圖的生成。如圖42所示,處理4200接收(在4205處)文檔部分的段落的信息。在一些實(shí)施例中,該文檔部分是整個(gè)文檔、文檔的章節(jié)、頁(yè)面、區(qū),等等。在一些實(shí)施例中,采用以上描述的處理4000來(lái)確定段落信息。然后該處理確定是否有任何段落要選擇。當(dāng)沒(méi)有時(shí),處理退出ο否則,該處理選擇(在4210處)一個(gè)段落。在一些實(shí)施例中,文檔部分中段落是在左上開(kāi)始按順序選擇的,而在其他實(shí)施例中段落是按照隨機(jī)順序選擇的。接下來(lái),該處理計(jì)算(在4215處)內(nèi)順序(in-order)、外順序(out-order)、左順序和右順序,以及伴隨這些值中的一個(gè)的段落集合。在一些實(shí)施例中,通過(guò)采用集合B(p) 來(lái)計(jì)算段落P的外順序。集合B(p)初始地是文檔部分中在段落ρ下面水平地與ρ交疊 (即,與χ坐標(biāo)交疊)的所有段落。例如,圖43例示了具有包括段落P 4305在內(nèi)的11個(gè)段落的頁(yè)面4300。集合B(p)初始是{Q,R,S,T,U}。接著,最靠近ρ的段落被識(shí)別為q,從集合B(p)中移除與段落q水平地交疊的所有段落。在段落P 4305的情況下,段落Q 4310 最靠近段落P,并且從集合B (ρ)中移除段落R 4315,S 4320,T 4325和U 4330。此時(shí),集合 B(P)為㈧}。一些實(shí)施例然后繼續(xù)到初始地在集合B (ρ)中的對(duì)ρ的下一個(gè)最靠近段落,并從 B(P)中移除在該下一個(gè)最靠近段落下面且與之水平地交疊的任何段落。其他實(shí)施例繼續(xù)到留在集合B(p)中的對(duì)ρ的下一個(gè)最靠近段落,并且從B(ρ)中移除與該段落水平地交疊的任何段落。無(wú)論哪種方式,在圖43的示例中,段落P 4305的集合B(p)是㈧}。然后ρ的外順序是集合Β(ρ)的基數(shù)(cardinality)(即,元素個(gè)數(shù))。這針對(duì)Β(ρ)中的每個(gè)段落重復(fù)。 因此,在這種情況下,段落P 4305的外順序是1。作為具有大于1的外順序的段落的示例, 針對(duì)段落R 4315,集合B (R)是{S,X},因此段落R 4315的外順序是2。在一些實(shí)施例中,類似于外順序,通過(guò)采用集合A(p)來(lái)計(jì)算段落ρ的內(nèi)順序。集合A(p)初始地是文檔部分中在段落ρ上面水平地與ρ交疊的所有段落。將最靠近ρ的段落選擇為段落q,并從A(ρ)中移除與段落q水平地交疊的段落。這然后針對(duì)A(p)中的每個(gè)段落重復(fù)。在頁(yè)面4300的示例中,用于段落P 4305的集合A(p)是空集合,而用于段落 R 4315的集合A(p)是{0,W}。段落ρ的內(nèi)順序是集合A (ρ)的基數(shù)(即,元素個(gè)數(shù))。在一些實(shí)施例中,還采用集合L (ρ)(采用相同的移除規(guī)則,在ρ左側(cè)且與ρ垂直交疊的段落)和集合R(P)(采用相同的移除規(guī)則,在P右側(cè)且與P垂直交疊的段落)類似地計(jì)算段落P的左順序和右順序。一些實(shí)施例在確定(例如,通過(guò)外部手段)語(yǔ)言方向?yàn)閺纳系较聲r(shí),采用L(p)和R(P)用于流圖(見(jiàn)下面)。對(duì)于頁(yè)面4300,段落P 4305的集合R(P) 為IV},而段落V 4335的集合L(V)是{P}。段落R 4315的集合L(R)和R(R)都為空。一旦針對(duì)所選段落計(jì)算了內(nèi)順序、外順序、左順序和右順序,處理4200確定(在 4220處)是否有更多的段落要必須針對(duì)其計(jì)算各種值。如果有更多段落的話,則處理前進(jìn)到4210來(lái)選擇另一個(gè)段落。否則,一旦針對(duì)所有段落計(jì)算了值,則處理生成(在4225處)段落的流圖。一些實(shí)施例的流圖被生成為使得評(píng)估的文檔部分中的每個(gè)段落是一個(gè)節(jié)點(diǎn)。定向邊緣從段落P 的節(jié)點(diǎn)繪制到集合A(P)中的段落的每個(gè)節(jié)點(diǎn)。在一些實(shí)施例中,這與從集合B(P)中的段落的每個(gè)節(jié)點(diǎn)繪制定向邊緣到段落P的節(jié)點(diǎn)是相同的。圖45例示了頁(yè)面4300的初始流圖 4501。接著,處理4200識(shí)別(在4230處)調(diào)出部。在一些實(shí)施例中,從流圖移除識(shí)別出的調(diào)出部。在一些實(shí)施例中,調(diào)出部是頁(yè)面上要按照獨(dú)立于頁(yè)面上的其余文本的順序閱讀的文本元素。調(diào)出部的一些示例包括頁(yè)眉和頁(yè)腳、注腳、頁(yè)邊注(margin note)、邊條(side-bar)和放置在其他元素中的其他文本塊(例如,雜志文章中的大字體引述 )?!?shí)施例基于文本元素的幾何結(jié)構(gòu)、其在頁(yè)面上的位置、其流性質(zhì)(內(nèi)順序、夕卜順序、左順序和右順序)以及其元素的樣式性質(zhì)的組合來(lái)識(shí)別調(diào)出部。例如,當(dāng)頂點(diǎn)ν包括靠近頁(yè)面頂部的單行段落,從單行段落到A(V)中的任意元素的距離大于一個(gè)行高度, L(V) ( 1,R(V) ( 1,并且L(V)和R(V)中的任何頂點(diǎn)共享這些條件時(shí),一些實(shí)施例將段落分類為頁(yè)眉調(diào)出部。在一些實(shí)施例中,對(duì)頁(yè)腳調(diào)出部的要求也是類似的,只是找出到頁(yè)面底部和到B(V)中的元素的距離。一些實(shí)施例還將突出到列中(且不在它們自己的區(qū)中)的邊條、隨機(jī)定位的文本框、與其他文本沒(méi)有明顯關(guān)系的少量文本(例如,附圖標(biāo)題)等等識(shí)別為調(diào)出部。一些實(shí)施例基于純文本分析來(lái)進(jìn)行這種確定(以及對(duì)流性質(zhì)的其他確定),而其他實(shí)施例將圖像并入到分析中(例如,作為對(duì)附圖標(biāo)題的進(jìn)一步證據(jù))。例如,在一些實(shí)施例中,一些實(shí)施例將遠(yuǎn)離A(p)和B(p)中的所有元素的單行段落識(shí)別為隔離的小段落。在一些實(shí)施例中,當(dāng)具有單個(gè)文本行的段落由圖像的界線包圍且按照特定方式與圖像界線對(duì)準(zhǔn)(例如,在底部附近居中、在頂部附近居中,等等)時(shí)識(shí)別出標(biāo)題。當(dāng)兩個(gè)或更多個(gè)段落的矩形界定框相交時(shí),一些實(shí)施例將除一個(gè)段落之外的所有段落都識(shí)別為相交調(diào)出部。例如,假設(shè)兩個(gè)段落P和q交疊,并且B (ρ) = {q,r}。當(dāng)r具有1的內(nèi)順序或者當(dāng)q是在A(r)中時(shí),在一些實(shí)施例中q是相交調(diào)出部。一些實(shí)施例將其樣式和/或?qū)?zhǔn)性質(zhì)不與A(p)或B(p)中的段落一致時(shí)的任何段落ρ識(shí)別為相交調(diào)出部。 當(dāng)兩個(gè)段落相交以及沒(méi)有應(yīng)用以上的規(guī)則時(shí),一些實(shí)施例將具有更小面積的段落識(shí)別為調(diào)出部。在針對(duì)文檔部分中的段落生成流圖之后,處理4200將流圖的節(jié)點(diǎn)合并(在4235 處)成列。如果A(p) = {q}且B(q) = {ρ},則一些實(shí)施例合并段落ρ和q的節(jié)點(diǎn)。在一些實(shí)施例中這表示段落P和q處于同一列中。在一些實(shí)施例中,新節(jié)點(diǎn)Pq將具有A(pq)= A (q),B(pq) =B(p),L(pq) = L(p)+L(q)和 R(pq) =R(p)+R(q)。例如,在圖 45 中,修改流圖4501使得在修改后的流圖4502中將節(jié)點(diǎn)S 4520、T 4525和U 4530合并到節(jié)點(diǎn)STU 4575中。類似地修改其他節(jié)點(diǎn)。圖46例示了在已經(jīng)將節(jié)點(diǎn)初始地合并成列之后針對(duì)圖44的頁(yè)面4400的流圖 4601。一些實(shí)施例將段落R 4420識(shí)別為調(diào)出部,這是因?yàn)樗鐑蓚€(gè)列,并且左側(cè)和右側(cè)都有段落。因此,一些實(shí)施例從流圖4601中移除節(jié)點(diǎn)R 4620。這使得能夠?qū)⒐?jié)點(diǎn)進(jìn)一步合并到列中。一旦已經(jīng)識(shí)別出(以及在一些實(shí)施例中從流圖中移除)調(diào)出部,則處理4200將流圖分隔(在4240處)成布局。一些實(shí)施例將用于擴(kuò)展和縮減邊緣的標(biāo)記定義為分隔處理的一部分。在一些實(shí)施例中,如果段落P的外順序大于1并且集合B (ρ)中的每個(gè)段落q的內(nèi)順序?yàn)?,則從P到B(p)中的每個(gè)q的邊緣是擴(kuò)展邊緣。類似地,在一些實(shí)施例中,如果段落P的內(nèi)順序大于1并且集合A (ρ)中的每個(gè)段落q的外順序?yàn)?,則從A (ρ)中的每個(gè)q 到P的邊緣是縮減邊緣。圖45例示了引入到節(jié)點(diǎn)R 4515的邊緣都是縮減邊緣,并且從節(jié)點(diǎn)R 4515引出的邊緣都是擴(kuò)展邊緣。一些實(shí)施例的分隔檢查其邊緣全部被標(biāo)記的每個(gè)頂點(diǎn)V。當(dāng)ν的內(nèi)順序大于1時(shí), 只要針對(duì)B (ν)中的每個(gè)ρ有Α(ρ) = {ν},則一些實(shí)施例定義其元素為B (ν)的分隔。類似地,當(dāng)ν的外順序大于1時(shí),只要針對(duì)A(ν)中的每個(gè)ρ有B(p) = {ν},則一些實(shí)施例定義其元素為A(V)的分隔。當(dāng)兩個(gè)分隔都可能時(shí),將頂點(diǎn)ν自己定義為分隔?;谶@些規(guī)則,將流圖4502分隔成三個(gè)分隔4511,4512和4513。一些實(shí)施例將任何剩余節(jié)點(diǎn)放置在一個(gè)或多個(gè)分隔中,使得在分隔之間沒(méi)有任何幾何交疊的情況下定義最小個(gè)數(shù)的分隔。由于復(fù)雜的頁(yè)面結(jié)構(gòu),一些實(shí)施例采用比以上所述更放松的分隔規(guī)則。例如,在一些實(shí)施例中,當(dāng)能夠從節(jié)點(diǎn)ν生成分隔時(shí),除了 ν的外順序大于1,清除遠(yuǎn)離ν且相對(duì)于ν較窄的A(V)的元素。當(dāng)A(V)中僅留有一個(gè)元素時(shí),從ν 到被移除頂點(diǎn)的邊緣被移除,并且繼續(xù)分隔。一旦分隔完成,則處理4200結(jié)束。在一些實(shí)施例中,每個(gè)分隔對(duì)應(yīng)于一個(gè)線性布局,并且最終(合并的)節(jié)點(diǎn)中的每一個(gè)對(duì)應(yīng)于一列。一旦定義了分隔,則一些實(shí)施例計(jì)算文檔部分的性質(zhì),例如裝訂線寬度、 頁(yè)邊距、內(nèi)嵌或浮置圖像,等等。此外,布局和流信息(包括字、行、段落和列數(shù)據(jù))主要地用在對(duì)文檔的顯示中,并且使得能夠進(jìn)行更魯棒的與文檔的用戶交互,如在下面第VIII章和第IX章中所描述的。 例如,在一些實(shí)施例中,用戶可能希望瀏覽復(fù)雜的文檔,該文檔包括若干列文本、圖像、調(diào)出部、標(biāo)題等等,并且能夠?qū)⑽臋n的整個(gè)文本復(fù)制和粘貼到文本編輯器中。為實(shí)現(xiàn)此,向文檔中的每個(gè)元素分配一個(gè)閱讀順序,該閱讀順序試圖標(biāo)識(shí)人將閱讀文檔中的元素的順序。例如,一些實(shí)施例向列分配閱讀順序,使得閱讀順序符合人將從文檔或頁(yè)面的開(kāi)始到結(jié)尾閱讀列的預(yù)期順序。其他實(shí)施例向其他結(jié)構(gòu)性元素(例如,段落、字等等)分配閱讀順序。在一些實(shí)施例中,當(dāng)用戶將這種文檔的整個(gè)文本復(fù)制和粘貼到另一個(gè)應(yīng)用中時(shí),文本按照人將閱讀的順序出現(xiàn)在應(yīng)用中。這與從標(biāo)準(zhǔn)PDF文件(其按照嚴(yán)格的從上到下的配置來(lái)對(duì)所有文本排序)復(fù)制和粘貼不同。一些實(shí)施例還將圖像和形狀插入到閱讀順序中。例如,一些實(shí)施例將特定圖像識(shí)別為與特定文本列相關(guān)聯(lián),并將圖像插入到該文本列之前或之后(取決于文檔中的情況 (evidence)) 0作為示例,一些實(shí)施例識(shí)別出圖像與該圖像的標(biāo)題相關(guān)聯(lián),并將圖像插入到閱讀順序中恰在其標(biāo)題之前。一些實(shí)施例還定義結(jié)構(gòu)性元素之間的鏈接。例如,一些實(shí)施例采用閱讀順序來(lái)定義列結(jié)尾處的段落與下一列開(kāi)始處的段落之間的鏈接,這兩個(gè)段落實(shí)際上是一個(gè)段落。在一些實(shí)施例中,為了保持每個(gè)段落分配給一個(gè)特定列的分級(jí)結(jié)構(gòu),不定義橋接列的單獨(dú)段落。相反,兩個(gè)段落之間的鏈接被定義為指示它們實(shí)際上是一個(gè)段落。一些實(shí)施例采用與將行添加到段落中的測(cè)試類似的測(cè)試,來(lái)確定來(lái)自第二列的頂部段落是否實(shí)際上是第一列的結(jié)尾處的段落的延續(xù)(即,檢查間距、對(duì)準(zhǔn)、字體樣式,等等)。然后可以采用該鏈接,例如如果用戶執(zhí)行意在選擇任一個(gè)所定義段落中的一個(gè)段落的選擇操作(例如,三擊),則將基于該鏈接選擇整個(gè)實(shí)際段落。一些實(shí)施例還定義布局(例如,跨頁(yè)面鏈接的布局)或區(qū)之間的鏈接。例如,一些實(shí)施例可以識(shí)別延續(xù)文本(例如,報(bào)紙中指示故事在另一頁(yè)面上繼續(xù)的文本),并且可以將具有延續(xù)文本的布局中的文本與其中文本延續(xù)的布局相鏈接。一些實(shí)施例僅在簡(jiǎn)檔已經(jīng)匹配從而指示應(yīng)當(dāng)執(zhí)行鏈接時(shí)試圖進(jìn)行這種鏈接。例如,如果已經(jīng)將文檔識(shí)別為報(bào)紙,則一些實(shí)施例將搜索延續(xù)文本。E.軟件架構(gòu)
在一些實(shí)施例中,將以上描述的布局和流分析處理實(shí)施為在特定機(jī)器(例如,計(jì)算機(jī)、媒體播放器、蜂窩式電話(例如,iPhone )或者其他手持式或資源受限設(shè)備)上運(yùn)行(或者存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)上)的軟件。圖47概念性地例示了一些實(shí)施例的用于對(duì)識(shí)別文檔的布局和流特性的布局和流分析應(yīng)用4700的軟件架構(gòu)。在一些實(shí)施例中,應(yīng)用是獨(dú)立應(yīng)用或者集成到另一應(yīng)用(例如,文檔重構(gòu)應(yīng)用)中,而在其他實(shí)施例中,應(yīng)用可能是在操作系統(tǒng)內(nèi)實(shí)現(xiàn)的。布局和流分析應(yīng)用4700包括行識(shí)別模塊4705、行合并模塊4710、字識(shí)別模塊 4715、差值集群模塊4720、行拆分模塊4725、段落識(shí)別模塊4730、列和布局識(shí)別模塊4735以及順序計(jì)算器4740。圖47還例示了文檔內(nèi)容4745。行識(shí)別模塊4705接收來(lái)自文檔內(nèi)容4730的信息。 在一些實(shí)施例中,該信息是關(guān)于文檔中的字符的位置的信息。行識(shí)別模塊4705識(shí)別頁(yè)面上具有公共基線的字符并將它們分配給一個(gè)行。行識(shí)別模塊傳遞信息到行合并模塊4710并從其接收信息。行合并模塊識(shí)別垂直交疊的行的分組并確定是否應(yīng)當(dāng)合并這些行。在一些實(shí)施例中,行合并模塊4710執(zhí)行以上描述的處理3300中的一些或全部。行合并模塊4710 將該信息傳遞回行識(shí)別模塊4705,行識(shí)別模塊4705識(shí)別出最終的文本行。行識(shí)別模塊4705 將行信息傳遞回文檔內(nèi)容4745,以及傳遞到行拆分模塊4725。字識(shí)別模塊4715也從文檔內(nèi)容4745接收信息。在一些實(shí)施例中,該信息是關(guān)于文檔中字符的位置的信息。字識(shí)別模塊4715識(shí)別應(yīng)被分組到一起作為字的字符。字識(shí)別模塊4715將信息傳遞到差值集群模塊4720并從其接收信息。差值集群模塊4720對(duì)文檔字符執(zhí)行差值集群以返回字符之間的不同級(jí)別的間隔(例如,字間隔、段間隔,等等)。字識(shí)別模塊4715采用差值集群結(jié)果來(lái)識(shí)別字。字識(shí)別模塊4715將其結(jié)果(以及其他差值集群結(jié)果,例如段間距)傳遞到文檔內(nèi)容4745以及傳遞到行拆分模塊4725。行拆分模塊4725接收來(lái)自行識(shí)別模塊的行信息和來(lái)自字識(shí)別模塊的間隔信息, 以及來(lái)自文檔內(nèi)容4745的其他信息(例如,裝訂線信息)。行拆分模塊4725識(shí)別應(yīng)當(dāng)在哪里拆分行以及基于該拆分輸出新的行信息。該新的行信息被傳遞到文檔內(nèi)容4745以及段落識(shí)別模塊4745。在一些實(shí)施例中,行拆分模塊4725執(zhí)行處理3800中的一些或全部。段落識(shí)別模塊4730接收來(lái)自行拆分模塊4725的行信息以及來(lái)自文檔內(nèi)容4745 的其他信息(例如,對(duì)準(zhǔn)信息)。段落識(shí)別模塊4730識(shí)別哪些行應(yīng)當(dāng)被分組成段落并輸出所得信息。該段落信息被傳遞到文檔內(nèi)容4745以及傳遞到列和布局識(shí)別模塊4735。在一些實(shí)施例中,段落識(shí)別模塊4730執(zhí)行處理4000中的一些或全部。列和布局識(shí)別模塊4735接收來(lái)自段落識(shí)別模塊4730的段落信息以及來(lái)自文檔內(nèi)容4745的其他信息(例如,區(qū)信息)。列和布局識(shí)別模塊4735將段落分組成列并將列分組成布局。列和布局信息模塊4735將信息傳遞到順序計(jì)算器4740并從其接收信息。順序計(jì)算器4740從模塊4735接收段落信息,并計(jì)算段落的內(nèi)順序、外順序、左順序和右順序(以及對(duì)應(yīng)的集合A、B、L和R)。然后該信息被返回到模塊4735用于生成流圖。來(lái)自列和布局識(shí)別模塊4735的結(jié)果被傳遞到文檔內(nèi)容4745。在一些實(shí)施例中,列和布局識(shí)別模塊4745 執(zhí)行以上描述的處理4200的一些或全部。在一些實(shí)施例中,由以上描述的模塊或其他模塊執(zhí)行的處理的結(jié)果存儲(chǔ)在電子存儲(chǔ)設(shè)備中(例如,作為文檔對(duì)象模型的一部分)。文檔對(duì)象模型然后可以用于在電子顯示設(shè)備(例如,手持式設(shè)備、計(jì)算機(jī)屏幕,等等)上顯示文檔,使得用戶能夠?yàn)g覽文檔和/或與文檔交互(例如,通過(guò)觸摸屏、游標(biāo)控制設(shè)備,等等)。V.表格識(shí)別 本發(fā)明的一些實(shí)施例識(shí)別文檔中的表格。一些實(shí)施例識(shí)別表格的單元、行和列,并且使得這些表格能夠編輯、導(dǎo)出到電子數(shù)據(jù)表(spreadsheet),等等。在一些實(shí)施例的表格識(shí)別處理中采用來(lái)自以上在第II章中描述的處理的區(qū)信息以及來(lái)自以上在第IV章中描述的處理的布局和流信息。即使在將表格繪制成包括交疊形狀和圖像的圖形的非相關(guān)分組時(shí),一些實(shí)施例也能夠識(shí)別和重構(gòu)表格,例如這在表格包括諸如突起(extrusion)和陰影的效果時(shí)非常普遍。圖48概念性地例示了一些實(shí)施例的用于識(shí)別文檔一部分中的表格的處理4800。 如圖所示,該處理接收(在4805處)文檔部分的區(qū)和布局信息。在一些實(shí)施例中,區(qū)信息是以上在第II章中描述的處理的輸出,而布局信息是以上在第IV章中描述的處理的輸出。 在一些實(shí)施例中,文檔部分是文檔的頁(yè)面或者頁(yè)面的區(qū),等等。然后該處理識(shí)別(在4810處)具有完整邊界的表格。圖49例示了具有完整邊界的表格4900的示例。一些實(shí)施例分類任何作為島(如以上在第II章中定義)的區(qū),所述島由界線全是豎直矩形的兩個(gè)或更多個(gè)區(qū)完全分隔開(kāi)。這些分隔矩形由此是表格的單元。 下面將在第A節(jié)中進(jìn)一步詳細(xì)地描述對(duì)具有完整邊界的表格的識(shí)別。接著,處理4800識(shí)別(在4815處)具有連接的邊界的表格。圖50例示了具有連接的但不完整的邊界的表格5000的示例。在一些實(shí)施例中,當(dāng)實(shí)際上繪制的表格的所有邊界彼此相交使得任何邊界都連接到整個(gè)連接集合中的任何其他邊界時(shí),表格具有連接的邊界。表格5000具有不完整的邊界,這是因?yàn)闆](méi)有繪制表格的外邊界。下面將在第B節(jié)中進(jìn)一步詳細(xì)地描述對(duì)具有連接的但不完整的邊界的表格的識(shí)別。接著處理4800識(shí)別(在4820處)不具有邊界或者具有中斷邊界的表格。圖51 例示了沒(méi)有邊界的表格5100的示例。圖52例示了具有中斷邊界的表格5200。不像表格 5100,表格5200具有一些繪制的邊界,但是這些邊界不能形成連接集合。對(duì)于其邊界不能形成連接集合的表格,一些實(shí)施例要求采用布局信息以識(shí)別這些表格。下面將在第C節(jié)中進(jìn)一步詳細(xì)地描述對(duì)不具有邊界或者具有中斷邊界的表格的識(shí)別?!┳R(shí)別出文檔部分中的所有表格,處理就定義(在4825處)要通過(guò)編輯和其他軟件訪問(wèn)的表格。然后該處理結(jié)束。在一些實(shí)施例中,這使得用戶能夠編輯表格的單個(gè)單元、選擇表格的行和列、將表格信息智能地復(fù)制到電子數(shù)據(jù)表中,等等。A.具有完整邊界的表格本發(fā)明的一些實(shí)施例識(shí)別其中所有邊界利用邊界圖形(例如,行、窄矩形、窄圖像、填充矩形的邊界,等等)的某種組合來(lái)繪制的表格。以上在第II章中描述了一些實(shí)施例的用于識(shí)別這些邊界圖形并采用邊界圖形來(lái)識(shí)別區(qū)的處理。圖53概念性地例示了一些實(shí)施例的用于識(shí)別具有完整邊界集合的表格并定義所識(shí)別出的表格的單元、行和列的處理5300。在一些實(shí)施例中,一旦針對(duì)具有不完整邊界或者不具有邊界的表格識(shí)別出隱含的邊界,處理5300還用于識(shí)別和定義這些表格。在第B節(jié)和第C節(jié)中更詳細(xì)地描述這些處理。將結(jié)合圖54來(lái)描述處理5300。圖54例示了包括具有完整邊界的表格的頁(yè)面5400。
如圖53所示,該處理接收(在5305處)文檔一部分的區(qū)信息。在一些實(shí)施例中, 該文檔部分是整個(gè)文檔、文檔的章節(jié)或者文檔的頁(yè)面。在一些實(shí)施例中區(qū)信息是從以上在第II章中描述的處理輸出的信息,并且包括區(qū)邊界和相交部信息以及識(shí)別出的區(qū)和區(qū)圖 fn息ο然后該處理5300識(shí)別(在5310處)完整被兩個(gè)或更多個(gè)區(qū)(它們?nèi)际蔷匦蔚?分隔開(kāi)的島。如上所述,在一些實(shí)施例中,島是不與其父區(qū)共享邊界區(qū)間的區(qū)。圖M 例示了頁(yè)面M00,該頁(yè)面MOO包括由矩形分隔開(kāi)的一個(gè)島M01。如圖所示,十三個(gè)矩形完整地分隔出島5401,使得由十三個(gè)矩形區(qū)覆蓋的頁(yè)面的區(qū)域恰是島MOl的區(qū)域。因此,島 5401被識(shí)別為表格。接下來(lái),處理確定(在5311處)在5310處識(shí)別出的島中是否有任何未處理的島。 當(dāng)沒(méi)有識(shí)別出或者所有識(shí)別出的島都已經(jīng)被處理為表格時(shí),處理結(jié)束。否則,處理選擇(在 5314處)下一個(gè)識(shí)別出的島。在一些實(shí)施例中,對(duì)于識(shí)別出的島沒(méi)有特定順序,只要它們中的全部都被處理即可。然后處理5300從最高到最低來(lái)排序(在5315處)所選島中的水平邊界。一些實(shí)施例按照邊界的頂部界線來(lái)排序,使得具有最高頂部界線的邊界是第一個(gè)。在一些實(shí)施例中,水平邊界是被識(shí)別為表格的島內(nèi)的水平邊界區(qū)間,并且包括島的邊界。圖M例示了十六個(gè)水平邊界區(qū)間討05至M20。在一些實(shí)施例中,由諸如以上在第II章中描述的處理 900的處理來(lái)識(shí)別水平邊界區(qū)間。在按順序?qū)λ竭吔鐓^(qū)間進(jìn)行了排序的情況下,處理選擇(在5320處)第一個(gè)未評(píng)估水平邊界,并定義(在5325處)表格的下一個(gè)水平格線(gridline)。在圖M的示例中,邊界區(qū)間M05或M06都是第一個(gè)選擇的邊界,此時(shí)定義水平格線1。然后該處理將所選邊界分配(在5330處)給當(dāng)前的格線,并將格線的垂直范圍 (extent)設(shè)置為分配給格線的所有邊界的y區(qū)間的相交部。由此,在當(dāng)前所選邊界是要分配給當(dāng)前格線的第一個(gè)時(shí),格線的y區(qū)間僅僅是該邊界的y區(qū)間。然而,當(dāng)將多個(gè)邊界分配給格線時(shí),格線的y區(qū)間包括所有分配的邊界的y區(qū)間。然后該處理確定(在5335處)是否有更多的水平邊界還未分配給格線。當(dāng)沒(méi)有更多水平邊界時(shí),處理前進(jìn)到下面描述的5345。否則,當(dāng)還有更多邊界時(shí),處理確定(在5340 處)下一個(gè)邊界的y區(qū)間是否與當(dāng)前格線的y區(qū)間交疊。當(dāng)y區(qū)間不交疊時(shí),已經(jīng)定義了當(dāng)前格線中的所有邊界,并且處理前進(jìn)到5320以選擇下一個(gè)邊界并開(kāi)始一個(gè)新的格線。然而,當(dāng)y區(qū)間交疊時(shí),處理前進(jìn)到5330以將邊界分配給當(dāng)前格線,更新格線的y區(qū)間以及繼續(xù)到下一個(gè)邊界。如圖M所示,在選擇了邊界討05或討06作為島MOl的第一個(gè)邊界之后,兩者中的另一個(gè)將被選擇為下一個(gè),并添加到水平格線1。將接著定義水平格線2,其包括邊界 5407和M08,依此類推直到水平格線6 (邊界M18至5420)。一旦將所有水平邊界都分配到格線,處理5300考慮垂直邊界。處理5300從左向右來(lái)排序(在5345處)所選島中的垂直邊界。一些實(shí)施例按照邊界的左界線來(lái)排序,使得具有最左的左界線的邊界為第一個(gè)。在一些實(shí)施例中垂直邊界是被識(shí)別為表格的島內(nèi)的垂直邊界區(qū)間,并包括島的邊界。圖M例示了十八個(gè)垂直邊界區(qū)間M25至M42。在一些實(shí)施例中,通過(guò)諸如以上在第II章中描述的處理900的處理來(lái)識(shí)別垂直邊界區(qū)間。
在按順序排序了垂直邊界區(qū)間的情況下,處理選擇(在5350處)第一個(gè)未評(píng)估垂直邊界,并定義(在5355處)表格的下一個(gè)垂直格線。在圖54的示例中,邊界區(qū)間5426 至5428中的一個(gè)是第一個(gè)選擇的邊界,此時(shí)定義垂直格線1。然后該處理將所選邊界分配(在5360處)給當(dāng)前的格線,并將格線的水平范圍設(shè)置為分配給該格線的所有邊界的X區(qū)間的相交部。由此,如果當(dāng)前所選邊界是要分配給當(dāng)前格線的第一個(gè),則格線的X區(qū)間僅僅是邊界的X區(qū)間。然而,當(dāng)將多個(gè)邊界分配給格線時(shí), 格線的X區(qū)間包括所有分配的邊界的X區(qū)間。然后該處理確定(在5365處)是否有更多的垂直邊界還未分配給格線。當(dāng)沒(méi)有更多邊界時(shí),處理前進(jìn)到下面描述的5375。否則,當(dāng)還有更多邊界時(shí),處理確定(在5370處) 下一個(gè)邊界的χ區(qū)間是否與當(dāng)前格線的χ區(qū)間交疊。當(dāng)χ區(qū)間不交疊時(shí),已經(jīng)定義了當(dāng)前格線中的所有邊界,并且處理前進(jìn)到5350以選擇下一個(gè)邊界并開(kāi)始一個(gè)新的格線。然而, 當(dāng)χ區(qū)間交疊時(shí),處理前進(jìn)到5360以將邊界分配給當(dāng)前格線,更新格線的χ區(qū)間以及繼續(xù)到下一個(gè)邊界。在選擇了邊界5425至5428中的一個(gè)作為島5401的第一個(gè)邊界之后,其他三個(gè)中的一個(gè)被選擇并添加到垂直格線1。一旦將所有四個(gè)邊界添加到垂直格線1,將接著定義垂直格線2,其包括邊界5429至5433,依此類推直到垂直格線4 (邊界5438至5442)。一旦評(píng)估了所有的垂直邊界,已經(jīng)針對(duì)表格定義了所有的格線。本領(lǐng)域普通技術(shù)人員將認(rèn)識(shí)到,盡管處理5300在垂直格線之前定義水平格線,但是一些實(shí)施例先定義垂直格線。接著該處理將行和列的個(gè)數(shù)分配(在5375處)給表格的單元。在一些實(shí)施例中, 分隔出島的每個(gè)區(qū)是一個(gè)單元。在一些實(shí)施例中,單元跨從其上邊界的格線到比其下邊界的格線小一個(gè)的格線的行。例如,圖54中的單元5450跨行1和2,這是因?yàn)槠渖线吔缡撬礁窬€1的一部分而其下邊界是水平格線3的一部分。類似地,在一些實(shí)施例中,單元跨從其左邊界的格線到比其右邊界的格線少一個(gè)的格線的行。例如,單元5450跨列1,這是因?yàn)槠渥筮吔缡谴怪备窬€1的一部分,而其右邊界是垂直格線2的一部分。一旦已經(jīng)重構(gòu)了表格結(jié)構(gòu)(即,格線、單元、行和列),該處理確定(在5380處) 表格的樣式信息。然后該處理前進(jìn)到上面描述的5311,以確定是否有任何更多識(shí)別出的島要處理為表格。在一些實(shí)施例中,表格樣式信息來(lái)自構(gòu)成區(qū)邊界的邊界圖形以及背景圖形。 例如,當(dāng)有多個(gè)背景形狀覆蓋或穿過(guò)特定單元時(shí),一些實(shí)施例通過(guò)合成各種背景形狀并且如果必要的話將其固定到格線界線來(lái)確定得到的形狀顏色或圖像呈現(xiàn)。類似地,一些實(shí)施例基于顯露出來(lái)的形狀顏色的加權(quán)平均值來(lái)確定單元邊界顏色。在一些實(shí)施例中,加權(quán)平均值中的權(quán)重是基于顯示每個(gè)顏色的面積量。一些實(shí)施例還識(shí)別諸如陰影或突起的邊界樣式。在一些實(shí)施例中,識(shí)別表格和確定表格結(jié)構(gòu)使得表格能夠被使用,就像是由典型的字處理器生成的一樣,而不是非相關(guān)圖形的集合。例如,在一些實(shí)施例中,用戶能夠單獨(dú)地編輯表格單元、將信息導(dǎo)出到電子數(shù)據(jù)表、排序表格數(shù)據(jù),等等。一些實(shí)施例僅僅采用處理5300來(lái)識(shí)別表格。然而,這樣做將僅僅識(shí)別具 有完整邊界集合的表格。其他實(shí)施例采用在下面第B節(jié)和第C節(jié)中描述的處理,來(lái)識(shí)別不具有完整邊界圖形但是具有表格的結(jié)構(gòu)和布局的表格。B.具有連接的邊界的表格
除了具有完整邊界集合之外,一些實(shí)施例識(shí)別具有不完整但連接的邊界集合的表格。圖50例示了這種表格5000。一些實(shí)施例采用處理來(lái)定義可能是預(yù)期表格邊界的隱含邊界,然后應(yīng)用諸如以上描述的處理5300的處理來(lái)識(shí)別和重構(gòu)實(shí)際表格。圖55概念性地例示了一些實(shí)施例的用于識(shí)別和重構(gòu)具有連接邊界集合的表格的處理5500。將結(jié)合圖56來(lái)描述處理5500。圖56例示了識(shí)別頁(yè)面5600上的具有連接的但不完整邊界的表格的序列。如圖55所示,處理5500接收(在5505處)文檔一部分的潛在區(qū)邊界和邊界相交部的集合。在一些實(shí)施例中,潛在區(qū)邊界和相交部由以上在第II章中描述的處理900確定。 其他實(shí)施例采用其他處理來(lái)確定文檔部分的潛在區(qū)邊界。在一些實(shí)施例中,文檔部分是整個(gè)文檔、文檔的章節(jié)或者文檔的頁(yè)面。接著,處理5500定義(在5510處)包括在5505處接收到的所有潛在區(qū)邊界的集合U。然后該處理確定(在5515處)是否U為空。當(dāng)該集合為空時(shí),處理結(jié)束,因?yàn)闆](méi)有可能連接的區(qū)邊界。否則,當(dāng)集合U包括至少一個(gè)區(qū)邊界時(shí),處理從U中選擇(在5520處)一個(gè)邊界 b,并定義新的連接集合C。一些實(shí)施例從最上、最左、最靠近左上角的邊界開(kāi)始,或者采用一些其他啟發(fā)法來(lái)確定要首先選擇哪個(gè)邊界。其他實(shí)施例隨機(jī)選擇邊界b。然后從集合U中移除(在5525處)所選邊界b,并將其添加到集合C。在一些實(shí)施例中,連接集合C是全部連接通過(guò)相交部集合的邊界集合。然后該處理從集合U選擇(在5530處)一個(gè)針對(duì)當(dāng)前邊界b還未評(píng)估的邊界z, 并確定(在5535處)邊界ζ是否與邊界b相交。在一些實(shí)施例中,確定邊界ζ是否與邊界 b相交包括確定是否一個(gè)接收到的相交部將邊界ζ連接到邊界b。當(dāng)邊界不相交時(shí),處理前進(jìn)到下面描述的陽(yáng)45。否則,當(dāng)邊界相交時(shí),處理將邊界ζ添加(在5540處)到當(dāng)前連接集合C,并將ζ放置到隊(duì)列中。在向前移動(dòng)到下一個(gè)連接集合之前,一些實(shí)施例采用隊(duì)列來(lái)追蹤連接集合中需要被評(píng)估用于進(jìn)一步的連接的邊界。接著,該處理確定(在5545處)集合U中是否有任何邊界還未被評(píng)估用以與當(dāng)前邊界b相交。當(dāng)有更多邊界時(shí),處理前進(jìn)到5530以選擇另一個(gè)邊界ζ并確定新的邊界ζ是否與當(dāng)前邊界ζ相交。否則,當(dāng)U中的所有邊界已經(jīng)關(guān)于與當(dāng)前邊界b相交進(jìn)行了評(píng)估時(shí),該處理5500 確定(在5550處)隊(duì)列是否為空。當(dāng)隊(duì)列中有至少一個(gè)邊界時(shí),處理將隊(duì)列中的下一個(gè)邊界設(shè)置(在5555處)為新選擇的邊界b。然后該處理前進(jìn)到5525以評(píng)估U中是否還有邊界與新選擇的邊界b相交。否則,當(dāng)隊(duì)列為空時(shí),已經(jīng)分配了當(dāng)前連接集合C的所有元素,并且處理確定(在 5560處)集合U是否為空。當(dāng)U不為空時(shí),處理前進(jìn)到5520以選擇新的邊界b,并定義新的連接集合C。當(dāng)U為空時(shí),已經(jīng)處理了所有的邊界,并將它們放置到相應(yīng)的連接集合中。圖56 例示了具有七個(gè)邊界5605至5635的頁(yè)面5600。應(yīng)用處理5500,將這七個(gè)邊界分配給三個(gè)連接集合5640 (包括邊界560 ,5645 (包括邊界5610和5615)以及5650 (包括邊界5620 至563 。這些連接集合中的每一個(gè)包括與連接集合中的至少一個(gè)其他邊界相交且不與連接集合之外的任何邊界相交的邊界。
一旦因?yàn)榧蟄為空故而識(shí)別了所有連接集合,處理就選擇(在5565處)集合C, 并向集合C添加(在5570處)形成C的豎直界定框的四個(gè)邊界。在一些實(shí)施例中,豎直界定框是包括連接集合中的所有邊界的最小豎直矩形。例如,圖56例示了形成連接集合5650 的豎直界定框的四個(gè)邊界5655至5670。連接集合5640是單個(gè)行,因此其豎直界定框僅是該行的外邊緣。形成連接集合5645的豎直界定框的四個(gè)邊界中的兩個(gè)是邊界5610和5615, 而在一些實(shí)施例中通過(guò)操作5570來(lái)添加附加邊界5675和5680然后該處理確定(在5575處)是否有任何連接集合C。當(dāng)有至少一個(gè)集合時(shí),處理前進(jìn)到5565,以選擇另一個(gè)集合C。當(dāng)已經(jīng)評(píng)估了所有集合時(shí),處理利用來(lái)自所有連接集合的所有邊界來(lái)識(shí)別(在5580處)區(qū)。一些實(shí)施例應(yīng)用處理1200 (以上在第II章中描述的)或者類似的處理來(lái)識(shí)別區(qū)。一旦識(shí)別了區(qū),處理5500根據(jù)區(qū)來(lái)識(shí)別(在5585處)表格并重構(gòu)表格。然后處理結(jié)束。一旦利用從連接集合的豎直界定框的隱含邊界識(shí)別了區(qū),一些實(shí)施例應(yīng)用在如以上第A節(jié)中描述的處理5300來(lái)重構(gòu)表格。圖56例示了識(shí)別出頁(yè)面5600上的一個(gè)表格5685。 該表格具有三個(gè)列以及三個(gè)行,總共有九個(gè)單元。一些實(shí)施例然后移除該表格和單元區(qū)(以及構(gòu)成這些區(qū)的邊界圖形),并重新識(shí)別沒(méi)有任何隱含邊界的區(qū),從而在不應(yīng)當(dāng)有區(qū)的地方不定義區(qū)。然后一些實(shí)施例重新插入表格和單元區(qū),以如以上在第II章中描述地確定區(qū)圖。這種實(shí)施例生成包括對(duì)表格和單元區(qū)以及它們的結(jié)構(gòu)的識(shí)別的完整區(qū)圖。C.沒(méi)有邊界或者具有中斷邊界的表格除了具有完整或者至少連接的邊界集合之外,一些實(shí)施例還識(shí)別沒(méi)有邊界或者具有中斷邊界的表格。圖51例示了沒(méi)有邊界的表格5100,而圖52例示了具有中斷邊界的表格5200。一些實(shí)施例采用處理來(lái)定義可能是預(yù)期表格邊界的隱含邊界,然后應(yīng)用諸如處理 5300的處理來(lái)識(shí)別和重構(gòu)實(shí)際表格。對(duì)于其邊界不形成連接集合的表格,一些實(shí)施例除了區(qū)信息之外還要求采用布局信息來(lái)識(shí)別表格。圖57概念性地例示了用于識(shí)別和重構(gòu)沒(méi)有邊界或具有中斷邊界的表格的處理 5700。將結(jié)合圖58至60來(lái)描述處理5700。圖58至60例示了對(duì)頁(yè)面5800應(yīng)用處理5700 以識(shí)別具有中斷邊界的表格。如圖57所示,該處理接收(在5705處)初級(jí)區(qū)(primary zone)的布局信息。在一些實(shí)施例中,初級(jí)區(qū)是頁(yè)面,但是初級(jí)區(qū)也可以是任何其他區(qū)。一些實(shí)施例的布局信息是從諸如以上在第IV章中描述的4000和4200的處理輸出的信息。該信息包括對(duì)初級(jí)區(qū)中的段落、列和布局的識(shí)別。然后,處理5700確定(在5707處)初級(jí)區(qū)中是否有任何未處理的布局。當(dāng)初級(jí)區(qū)中沒(méi)有布局或者所有布局都已經(jīng)被處理時(shí),處理前進(jìn)到下面描述的5740。否則,該處理選擇(在5710處)初級(jí)區(qū)內(nèi)的一個(gè)布局。然后該處理定義(在5715處)在布局的豎直直線界線處的隱含區(qū)邊界。在一些實(shí)施例中,豎直直線界線是完全圍住布局中的所有段落的最小矩形。該處理還定義(在5720處)在列內(nèi)隔開(kāi)布局的列的垂直空白空間處以及隔開(kāi)布局的段落的水平空白空間處的隱含區(qū)邊界。圖58例示了頁(yè)面5800。該頁(yè)面包括三個(gè)更小的區(qū)左上角處的區(qū)5805、中央灰色陰影的區(qū)5810以及朝向底部的區(qū)5815。區(qū)5810和5815在一些實(shí)施例中是島。初級(jí)區(qū)(頁(yè)面5800)包括兩個(gè)布局5820和5825。如圖59所示,在選擇布局5820的情況下,該處理定義布局5820的界定框周圍以及布局5820的三個(gè)列之間的隱含邊界5905至5925。在一些實(shí)施例中,該布局的底部界線不需要隱含邊界,因?yàn)樵摬季质怯蓞^(qū)5810的頂部界定的。針對(duì)布局5825定義類似的隱含邊界5985至5997。接著,處理5700確定(在5725處)布局中是否有任何水平邊界(例如,隱含邊界)若向外延伸則與另一列的段落的界定框相交。該水平一致性測(cè)試確保布局實(shí)際上具有表格結(jié)構(gòu),而不僅僅是典型的斷成列的段落集合。當(dāng)布局沒(méi)有通過(guò)水平一致性測(cè)試時(shí),該處理前進(jìn)到以上描述的5707。否則,當(dāng)布局通過(guò)水平一致性測(cè)試時(shí),處理將布局添加(在5730 處)到追蹤可能是表格或表格的一部分的潛在布局的集合S。然后該處理前進(jìn)到5707。在處理確定(在5707處)初級(jí)區(qū)沒(méi)有包括更多布局時(shí),該處理確定(在5740處) 在初級(jí)區(qū)內(nèi)是否有任何未處理的區(qū)。當(dāng)初級(jí)區(qū)沒(méi)有包括其他區(qū)或者已經(jīng)處理了所有的區(qū)時(shí),該處理結(jié)束定義隱含邊界,并前進(jìn)到下面描述的5775。否則,當(dāng)初級(jí)區(qū)中有至少一個(gè)未處理區(qū)時(shí),該處理選擇(在5745處)一個(gè)較小的區(qū)。然后該處理確定(在5750處)是否該更小的區(qū)是僅具有一個(gè)布局的島。在頁(yè)面5800 上,區(qū)5810和5815是僅具有一個(gè)布局的島,而區(qū)5805包括僅一個(gè)布局但不是島,因?yàn)槠溥吔绨?yè)面邊界。當(dāng)所選區(qū)不是僅具有一個(gè)布局的島時(shí),處理5700前進(jìn)到以上描述的5740。否則, 當(dāng)所選區(qū)是具有僅一個(gè)布局的島時(shí),該處理定義(在5755處)在列內(nèi)隔開(kāi)布局的列的垂直空白空間處以及隔開(kāi)布局的段落的水平空白空間處的隱含區(qū)邊界。圖59例示了在區(qū)5810 的列之間定義的隱含區(qū)邊界5971和5972。然后該處理確定(在5760處)布局中是否有任何水平邊界(例如,隱含邊界)若向外延伸則與另一列的段落的界定框相交。該水平一致性測(cè)試確保布局實(shí)際上具有表格結(jié)構(gòu),而不僅僅是典型的斷成列的段落集合。當(dāng)布局沒(méi)有通過(guò)水平一致性測(cè)試時(shí),該處理前進(jìn)到以上描述的5740。否則,當(dāng)布局通過(guò)水平一致性測(cè)試時(shí),處理將布局添加(在5765處) 到追蹤可能是表格或表格的一部分的潛在布局的集合S,然后該處理前進(jìn)到5740。頁(yè)面5800包括區(qū)5815,在一些實(shí)施例中,區(qū)5815是僅具有一個(gè)布局的島。圖59 例示了針對(duì)區(qū)5815定義的隱含邊界5930至5980。然而,該布局沒(méi)有通過(guò)水平一致性測(cè)試, 因?yàn)樗竭吔?945至5980如果向外延伸的話將全部與布局中的其他段落的界定框相交。 因此,區(qū)5815的布局沒(méi)有添加到頁(yè)面5800的集合S,并且不保留隱含框5930至5980。一旦已經(jīng)評(píng)估了所有的區(qū),處理利用來(lái)自集合S的布局的隱含區(qū)邊界以及與這些隱含區(qū)邊界相交的任何區(qū)邊界圖形應(yīng)用(在5775處)區(qū)分析。一些實(shí)施例采用以上在第 II章中描述的處理,來(lái)識(shí)別區(qū)邊界區(qū)間、相交部以及區(qū)邊界。然后處理5700識(shí)別(在5780處)集合S中的布局中的潛在表格。一些實(shí)施例采用以上在第A節(jié)中描述的處理5300來(lái)識(shí)別潛在表格(并且重構(gòu)其結(jié)構(gòu))。接著,該處理取消(disqualify)(在5785處)不能滿足特定表格條件的潛在表格。然后該處理結(jié)束。一些實(shí)施例向潛在表格施加附件條件,來(lái)確保當(dāng)邊界圖形自己不足夠時(shí)存在強(qiáng)的用于識(shí)別表格的證據(jù)。例如,一些實(shí)施例要求所有單元精確地跨一行和一列,或者單元高度和寬度與頁(yè)面尺寸相比較小,或者每個(gè)邊界的厚度與表格的尺寸相比較小。一些實(shí)施例要求這些條件中的一個(gè)、一些或全部,以及其他要求。圖60例示了區(qū)5810以及布局5820和5825被組合成表格6000,而區(qū)5805和5815的內(nèi)容保持不變。一旦識(shí)別了文檔部分中的所有表格,在一些實(shí)施例中,用戶能夠編輯表格的單個(gè)單元、選擇表格的行和列、將表格信息智能地復(fù)制到電子數(shù)據(jù)表,等等。此外,在一些實(shí)施例中,可以通過(guò)如此識(shí)別表格并重構(gòu)它們來(lái)改善文本流、閱讀順序和顯示。D.軟件架構(gòu)在一些實(shí)施例中,將以上描述的表格識(shí)別實(shí)施為在特定機(jī)器(例如,計(jì)算機(jī)、媒體播放器、蜂窩式電話(例如,iPhone )或者其他手持式或資源受限設(shè)備)上運(yùn)行(或者存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)上)的軟件。圖61概念性地例示了一些實(shí)施例的用于識(shí)別文檔中的表格的表格識(shí)別應(yīng)用6100的軟件架構(gòu)。在一些實(shí)施例中,應(yīng)用是獨(dú)立應(yīng)用或者集成到另一應(yīng)用(例如,文檔重構(gòu)應(yīng)用)中,而在其他實(shí)施例中,應(yīng)用可能是在操作系統(tǒng)內(nèi)實(shí)現(xiàn)的。表格識(shí)別應(yīng)用6100包括區(qū)分析模塊6105、表格識(shí)別模塊6110、區(qū)邊界連接模塊 6115、隱含邊界定義模塊6120以及布局分析模塊6125。圖61還例示了文檔內(nèi)容6130。區(qū)分析模塊6105接收來(lái)自文檔內(nèi)容6130的信息 (例如,關(guān)于圖形的信息)。在一些實(shí)施例中,區(qū)分析模塊6105與圖17中的區(qū)分析模塊1700 相同。區(qū)分析模塊將區(qū)信息輸出到區(qū)邊界連接模塊6115和表格識(shí)別模塊6110。表格識(shí)別模塊6110接收來(lái)自區(qū)分析模塊6105的區(qū)信息。在一些情況下,有文檔的最終區(qū),而在其他情況下,區(qū)信息是包括專用于表格識(shí)別的隱含邊界的區(qū)。表格識(shí)別模塊 6110基于接收到的區(qū)信息識(shí)別表格,并將該信息傳遞到文檔內(nèi)容6145。在一些實(shí)施例中, 表格識(shí)別模塊6110執(zhí)行處理5300的一些或全部。區(qū)邊界連接模塊6115接收來(lái)自區(qū)分析模塊6105的區(qū)邊界信息,并基于該信息定義區(qū)邊界的連接集合。該連接集合被傳遞到隱含邊界定義模塊6120。在一些實(shí)施例中,區(qū)邊界連接模塊6115執(zhí)行處理5500中的一些或全部。布局分析模塊6125接收來(lái)自文檔內(nèi)容6130的信息(例如,布局信息)。布局分析模塊6125確定布局是否可能潛在地是表格的一部分,并且將適合的布局傳遞到隱含邊界定義模塊6120。在一些實(shí)施例中,布局分析模塊6125執(zhí)行處理5700的一些或全部。
隱含邊界定義模塊6120接收來(lái)自布局分析模塊6125的布局信息和來(lái)自區(qū)邊界連接模塊6115的區(qū)邊界連接集合。隱含邊界定義模塊6120基于它所接收到的信息來(lái)定義文檔的頁(yè)面的隱含邊界,并將該信息傳遞到區(qū)分析模塊6105。在一些實(shí)施例中,由以上描述的模塊或其他模塊執(zhí)行的處理的結(jié)果存儲(chǔ)在電子存儲(chǔ)設(shè)備中(例如,作為文檔對(duì)象模型的一部分)。文檔對(duì)象模型然后可以用于在電子顯示設(shè)備(例如,手持式設(shè)備、計(jì)算機(jī)屏幕,等等)上顯示文檔,使得用戶能夠?yàn)g覽文檔和/或與文檔交互(例如,通過(guò)觸摸屏、游標(biāo)控制設(shè)備,等等)。VI.連結(jié)圖在一些實(shí)施例中,未結(jié)構(gòu)化文檔將包括文檔中預(yù)期被處理為單個(gè)元素但沒(méi)有被定義如此的本原元素(例如,形狀和圖像)。當(dāng)這種本原元素占據(jù)文檔的緊湊且獨(dú)立的區(qū)域時(shí),它們可以利用被稱為界線集群的新穎的集群分析技術(shù)來(lái)關(guān)聯(lián)。在一些實(shí)施例中,界線集群的目的是最小化集群的展度(其中,展度是根據(jù)集群中的本原元素(例如,形狀)的集合的界線來(lái)計(jì)算的),同時(shí)最大化集群中本原元素的個(gè)數(shù)。在一些實(shí)施例中,界線是基于形狀或形狀集合的界定框。
本發(fā)明的一些實(shí)施例提供了用于識(shí)別區(qū)域中應(yīng)被連結(jié)的圖形(S卩,圖形對(duì)象)的方法。然后可以將這些連結(jié)圖處理為一個(gè)對(duì)象,用于進(jìn)一步的重構(gòu)。此外,它們?cè)诒粸g覽、 選擇、縮放、復(fù)制、移動(dòng)、編輯等時(shí)可以被處理為一個(gè)對(duì)象。一些實(shí)施例將連結(jié)圖處理為一個(gè)對(duì)象,用于下面在第VIII章和第IX章中描述的選擇、顯示和導(dǎo)航處理。圖62概念性地例示了一些實(shí)施例的用于將單獨(dú)的圖連結(jié)成連結(jié)圖的處理6200。 將結(jié)合圖63來(lái)描述處理6200。圖63例示了對(duì)頁(yè)面6300上的若干圖形中的一些但不是全部的連結(jié)。如圖62所示,處理6200接收(在6205處)文檔的一部分。在一些實(shí)施例中, 該文檔部分是整個(gè)文檔、文檔的章節(jié)、頁(yè)面或者區(qū)。一些實(shí)施例一起對(duì)整個(gè)文檔執(zhí)行圖連結(jié)處理,而一些實(shí)施例逐區(qū)或逐頁(yè)面地執(zhí)行處理。該處理識(shí)別(在6210處)文檔部分中的圖形。圖63例示了包括如下六個(gè)圖形的頁(yè)面6300 七角星6305、五邊形6310、八邊形6315、十字形6320、三角形6325和五角星 6330。然后該處理采用集群分析來(lái)連結(jié)(在6215處)一些識(shí)別出的圖形。然后處理結(jié)束。一些實(shí)施例采用一種形式的集群分析,其稱為界線集群并將在下面參照處理6400詳細(xì)地加以描述。一些實(shí)施例應(yīng)用在下面第X章中描述的效率技術(shù)來(lái)執(zhí)行集群分析。一些實(shí)施例僅僅在圖形緊密在一起且沒(méi)有占據(jù)頁(yè)面或區(qū)的太大部分時(shí)將它們相連結(jié)。圖63例示了七角星6305和五邊形6310連結(jié)成單個(gè)圖形6335,而三角形6325和五角星6330連結(jié)成單個(gè)圖形6340。由于八邊形6315和十字形6320在頁(yè)面6300上是獨(dú)立的,所以它們沒(méi)有被彼此連結(jié)或者連結(jié)到任何其他圖形。A.界線集群圖64概念性地例示了一些實(shí)施例的用于執(zhí)行界線集群以識(shí)別應(yīng)被連結(jié)的圖形并連結(jié)這些圖形的處理6400。在一些實(shí)施例中,處理6400采用下面在第X章中描述的存儲(chǔ)器和處理效率(例如,間接排序的陣列、快速分隔,等等)。如圖所示,該處理接收(在6405 處)文檔部分的圖形。在一些實(shí)施例中,該文檔部分是整個(gè)文檔、文檔的章節(jié)、頁(yè)面或區(qū)。然后,該處理確定(在6407處)文檔部分中是否有至少兩個(gè)圖形。當(dāng)有一個(gè)或沒(méi)有圖形時(shí),沒(méi)有理由執(zhí)行集群來(lái)試圖連結(jié)圖形,由此處理結(jié)束。否則,該處理按照繪制順序?qū)D形進(jìn)行排序(在6410處)。在一些實(shí)施例中,繪制順序是對(duì)象被繪制到頁(yè)面上的順序。 經(jīng)常,當(dāng)預(yù)期將多個(gè)對(duì)象處理為單個(gè)對(duì)象時(shí),它們將按序列繪制。然而,一些實(shí)施例基于其他啟發(fā)法(例如,對(duì)象在頁(yè)面上的定位)進(jìn)行排序。接著,該處理將繪制順序中的第一個(gè)圖形設(shè)置(在6415處)為當(dāng)前圖形g。然后該處理確定(在6420處)g是否為文檔部分中的最后一個(gè)圖形。當(dāng)g是最后一個(gè)圖形時(shí), 可以計(jì)算出圖形g與下一個(gè)圖形之間沒(méi)有展度,因此處理前進(jìn)到下面描述的6440。否則,當(dāng)圖形g不是最后一個(gè)圖形時(shí),該處理計(jì)算(在6425處)在圖形g與按照繪制順序的下一個(gè)圖形之間的展度,并將計(jì)算得到的展度存儲(chǔ)(在6430處)在陣列中。在一些實(shí)施例中,展度是兩個(gè)對(duì)象彼此如何緊密在一起的量度。一些實(shí)施例采用兩個(gè)對(duì)象的界定框來(lái)計(jì)算展度。例如,一些實(shí)施例將圖形對(duì)象集合的展度計(jì)算為該對(duì)象集合適合的最小豎直界定框的寬度和高度之和除以頁(yè)面的寬度和高度之和。圖65例示了兩個(gè)頁(yè)面6501和6502,其中每一個(gè)具有要針對(duì)其計(jì)算展度的兩個(gè)圖形對(duì)象。頁(yè)面6501包括兩個(gè)圖形對(duì)象6505和6510,而頁(yè)面6502也包括兩個(gè)圖形對(duì)象6515和6520,圖形對(duì)象6515和6520與對(duì)象6505和6510具有相同的形狀和尺寸,但是位于頁(yè)面上的不同位置處。圖65還例示了對(duì)象6505和6510的最小界定框6525以及對(duì)象6515 和6520的最小界定框6530。利用以上描述的計(jì)算展度的度量,對(duì)象6505和6510的展度是(Xsi+Ysi) / (Χρ+Χγ),而對(duì)象6515和6520的展度是(XS2+YS2) / (Χρ+Χγ)。一些實(shí)施例相反將展度計(jì)算為對(duì)象集合的界定框的面積除以頁(yè)面的面積。一些實(shí)施例采用與頁(yè)面尺寸無(wú)關(guān)的度量(例如,對(duì)象集合的界定框相比于對(duì)象本身的單獨(dú)界定框的尺寸)。接下來(lái),該處理將下一個(gè)圖形設(shè)置(在6435處)為當(dāng)前圖形g。然后該處理前進(jìn)到以上描述的6420。一旦已經(jīng)計(jì)算了所有的展度,該處理采用(在6440處)展度作為差值集群的一階差值,來(lái)定義圖形的集群。一些實(shí)施例執(zhí)行如在以上提及的美國(guó)公開(kāi) No. 2007/0250497中描述的差值集群。因?yàn)橐恍?shí)施例的差值集群僅僅要求輸入值之間的差值并且不要求輸入的實(shí)際值,所以展度可以用作一階差值,盡管不是提出作為實(shí)際差值。 在一些實(shí)施例中,得自差值集群的集群在同一集群中的連續(xù)圖形之間的展度將相對(duì)小于不同集群中的圖形之間的展度。本領(lǐng)域普通技術(shù)人員將認(rèn)識(shí)到,展度并由此界線集群的概念不限于頁(yè)面上的圖形對(duì)象。例如,可以在三維對(duì)象中計(jì)算展度(通過(guò)利用體積而非面積,或者通過(guò)在三個(gè)維度而非兩個(gè)維度中在界定框上進(jìn)行求和),并由此用于集群三維對(duì)象(例如,在三維媒體編輯應(yīng)用中,例如視頻合成應(yīng)用)。在采用差值集群之后,利用展度作為一階差值,定義圖形的集群。處理6400從未評(píng)估集群中選擇(在6445處)一個(gè)集群C。然后該處理將C處理(在6450處)成滿足特定約束的圖形子序列集合。不同的實(shí)施例采用不同的約束來(lái)定義連結(jié)圖。一些實(shí)施例應(yīng)用子序列中的對(duì)象按照繪制順序必須是連續(xù)的要求。一些實(shí)施例要求序列中的對(duì)象相互交疊,使得不能將集群分隔成兩個(gè)非空的子序列,其中每個(gè)子序列按照繪制順序是連續(xù)的,從而第一分隔中的對(duì)象分組的豎直界線與第二分隔中的對(duì)象分組的豎直界線不連結(jié)。一些實(shí)施例應(yīng)用的第三個(gè)要求是每個(gè)子序列滿足密度約束,這確保每個(gè)子序列包括具有足夠小的總展度的足夠個(gè)數(shù)(例如,兩個(gè))的圖形。一些實(shí)施例采用以上條件的修改版本。例如,代替豎直矩形界線,一些實(shí)施例采用更緊的界線,例如圖像的非透明像素周圍的路徑。在一些實(shí)施例中,每個(gè)這些子序列中的對(duì)象集合都被連結(jié)成單個(gè)圖形。接著,處理6400確定(在6455處)是否有更多集群要評(píng)估。當(dāng)有更多集群時(shí),該處理前進(jìn)到6445以選擇另一個(gè)集群,并將該集群處理成子序列。否則,當(dāng)已經(jīng)處理了全部集群時(shí),處理結(jié)束。既然連結(jié)了圖形,就可以在瀏覽、選擇、縮放、復(fù)制、移動(dòng)、編輯等時(shí)將它們處理為一個(gè)對(duì)象。一些實(shí)施例將連結(jié)圖處理為一個(gè)對(duì)象,用于下面在第VIII章中描述的選擇、顯示和導(dǎo)航處理。B.將集群處理成子序列如上所述,在已經(jīng)識(shí)別出圖形的集群之后,一些實(shí)施例將每個(gè)集群處理成子序列, 以識(shí)別最終的連結(jié)圖(并然后關(guān)聯(lián)構(gòu)成每個(gè)連結(jié)圖的本原元素)。圖66例示了一些實(shí)施例的用于將集群處理成子序列的處理6600。在一些實(shí)施例中,處理6600針對(duì)每個(gè)集群在處理 6400的操作6450處執(zhí)行。如圖所示,處理6600接收(在6605處)圖形集群。正如所述,在一些實(shí)施例中,該集群是針對(duì)按照繪制順序排序的圖形采用展度作為一階差值的界線集群的輸出。然后該處理確定(在6607處)該集群是否為空(即,不包括任何圖形)。當(dāng)該集群為空時(shí),該處理結(jié)束。否則,該處理選擇(在6610處)集群中還不在子序列中的第一個(gè)圖形。在一些實(shí)施例中,該集群是按照繪制順序排序的,使得第一次通過(guò)操作6610時(shí),所選的圖形是集群中被繪制在包括圖形的文檔中的第一個(gè)圖形。 然后該處理定義(在6615處)包括所選圖形(此時(shí),所選圖形為子序列中的唯一圖形)的新的子序列。該新子序列具有所選圖形的界線。在一些實(shí)施例中,所選圖形的界線是包括該圖形的最小豎直界定框。其他實(shí)施例不同地定義圖形的界線,例如,采用完全圍住圖形的所有非透明像素的最小面積的路徑。接著,該處理6600確定(在6620處)集群中是否有更多的圖形。當(dāng)集群中沒(méi)有更多圖形時(shí),該處理前進(jìn)到下面描述的6645。否則,該處理選擇(在6625處)集群中的下一個(gè)圖形。在一些實(shí)施例中,集群中的下一個(gè)圖形是集群中按照繪制順序的下一個(gè)圖形。該處理確定(在6630處)新圖形(即,在6625處選擇的圖形)的界線是否與當(dāng)前子序列的界線相交。如上所述,不同的實(shí)施例不同地定義圖形的界線。下面描述包括多個(gè)圖形的子序列的界線。當(dāng)新圖形的界線不與當(dāng)前子序列的界線相交時(shí),處理存儲(chǔ)(在6640 處)當(dāng)前子序列(例如,在子序列列表中),并前進(jìn)到以上描述的6610,以開(kāi)始下一個(gè)子序列。下一個(gè)子序列從6630處最近測(cè)試的圖形開(kāi)始,因?yàn)檫@是集群中還不在子序列中的第一個(gè)圖形。當(dāng)新圖形(其是在6625處選擇的)的界線與當(dāng)前子序列的界線相交時(shí),該處理向子序列添加(在6635處)新圖形,并將子序列的界線修改為先前子序列界線與新添加圖形的界線的相交部。然后該處理前進(jìn)到以上描述的6620,以繼續(xù)試圖向子序列添加圖形。在一些實(shí)施例中,包括多個(gè)圖形的子序列的界線是包括所有圖形的最小豎直界定框。在其他實(shí)施例中,界線是子序列中所有圖形的所有豎直界定框的并集(在這種實(shí)施例中,子序列的界線將不必是矩形的)。在一些實(shí)施例中,其中將圖形的界線定義為包括圖形的所有非透明像素的最小面積路徑,界線可以是子序列中的所有圖形周圍的路徑,或者可以是子序列中每個(gè)圖形的這種路徑的并集。一旦已經(jīng)將集群中的所有圖形放置到初始子序列中,則處理選擇(在6645處)第一個(gè)子序列Si。在一些實(shí)施例中,每個(gè)子序列包括按照繪制順序是鄰接的圖形,并且基于繪制順序來(lái)布置子序列,使得第一子序列具有按照繪制順序的第一個(gè)圖形。然后該處理確定(在6650處)是否有更多子序列(即,第一次通過(guò)該處理時(shí)確定是否僅有一個(gè)子序列)。當(dāng)沒(méi)有更多子序列時(shí),處理結(jié)束。否則,該處理選擇(在6655處) 下一個(gè)子序列S2。接著,處理6600確定(在6660處)Sl和S2的界線是否相交。如上所述,在不同的實(shí)施例中不同地定義子序列的界線(即,在一些實(shí)施例中,它們是基于豎直界定框,而在其他實(shí)施例中它們是基于非透明像素周圍的路徑,等等)。當(dāng)Sl和S2的界線不相交時(shí),處理定義(在6665處)S2為Si,并且前進(jìn)到6650以將下一個(gè)子序列相對(duì)于原始S2進(jìn)行測(cè)
試ο當(dāng)界線相交時(shí),處理合并(在6670處)兩個(gè)子序列,并前進(jìn)到6645以將第一個(gè)子序列選擇為Si。一些實(shí)施例返回到第一個(gè)子序列,并且不結(jié)束處理,直到從開(kāi)始經(jīng)過(guò)了以任意方式不能被合并的子序列集合。然而,其他實(shí)施例在返回到6645時(shí)將在最近合并的子序列之前的子序列選擇為Si,并從該點(diǎn)前進(jìn)而非在第一個(gè)子序列處開(kāi)始,從而節(jié)省處理時(shí)間。一旦已經(jīng)將集群處理為子序列,就可以相對(duì)于諸如以上描述的密度約束的約束來(lái)測(cè)試子序列。一些實(shí)施例針對(duì)要在連結(jié)圖中關(guān)聯(lián)的圖形要求子序列中特定最小個(gè)數(shù)的圖形 (例如,兩個(gè)、五個(gè),等等)。一些實(shí)施例要求展度(如上所述地計(jì)算)小于特定個(gè)數(shù)(例如, 0. 4,0. 5 等等)。 C.軟件架構(gòu)在一些實(shí)施例中,將以上描述的圖形連結(jié)處理實(shí)施為在特定機(jī)器(例如,計(jì)算機(jī)、 媒體播放器、蜂窩式電話(例如,iPhone )或者其他手持式或資源受限設(shè)備)上運(yùn)行(或者存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)上)的軟件。圖67概念性地例示了一些實(shí)施例的用于識(shí)別應(yīng)被連結(jié)的圖形并將這些圖形關(guān)聯(lián)為一個(gè)圖形的圖形連結(jié)應(yīng)用6700。在一些實(shí)施例中,應(yīng)用是獨(dú)立應(yīng)用或者集成到另一應(yīng)用(例如,文檔重構(gòu)應(yīng)用)中,而在其他實(shí)施例中,應(yīng)用可能是在操作系統(tǒng)內(nèi)實(shí)現(xiàn)的。圖67例示了圖形連結(jié)器6705、界線集群模塊6710和展度計(jì)算器6715以及文檔內(nèi)容6725。圖形連結(jié)器模塊接收來(lái)自文檔內(nèi)容6725的信息。在一些實(shí)施例中,該信息是關(guān)于每個(gè)圖形的定位以及圖形的繪制順序的信息。圖形連結(jié)器6705將信息(例如,圖形的定位和圖形在繪制順序中的位置)傳遞到展度計(jì)算器6715。一些實(shí)施例的展度計(jì)算器6715計(jì)算每對(duì)連續(xù)圖形的展度,并將該信息傳遞到界線集群模塊6710。界線集群模塊6710接收來(lái)自圖形連結(jié)器6705和展度計(jì)算器6715的信息(例如, 要被處理為一階差值的展度陣列),并對(duì)所接收到的信息執(zhí)行界線集群。該界線集群的結(jié)果被傳遞回到圖形連結(jié)器。在一些實(shí)施例中,圖形連結(jié)器6705對(duì)從界線集群模塊接收到的集群執(zhí)行進(jìn)一步的處理,以識(shí)別特定圖形集群是否應(yīng)被關(guān)聯(lián)為單個(gè)圖形,并將該關(guān)聯(lián)返回到文檔內(nèi)容6725。在一些實(shí)施例中,由以上描述的模塊或其他模塊執(zhí)行的處理的結(jié)果存儲(chǔ)在電子存儲(chǔ)設(shè)備中(例如,作為文檔對(duì)象模型的一部分)。文檔對(duì)象模型然后可以用于在電子顯示設(shè)備(例如,手持式設(shè)備、計(jì)算機(jī)屏幕,等等)上顯示文檔,使得用戶能夠?yàn)g覽文檔和/或與文檔交互(例如,通過(guò)觸摸屏、游標(biāo)控制設(shè)備,等等)。VII.用于控制處理的簡(jiǎn)檔對(duì)作為文檔中的結(jié)構(gòu)性元素的可視信息的解釋可以取決于在處理的文檔中的內(nèi)容的類型。語(yǔ)義重構(gòu)(以及其他內(nèi)容處理技術(shù))因此可以通過(guò)調(diào)整分析以適應(yīng)內(nèi)容的類型來(lái)改善。一些實(shí)施例提供用于識(shí)別要處理的內(nèi)容的類型并調(diào)整對(duì)內(nèi)容的處理以適應(yīng)內(nèi)容的識(shí)別出的類型的方法。一些實(shí)施例基于對(duì)內(nèi)容類型的識(shí)別向如以上在第II至VI章中描述的文檔重構(gòu)應(yīng)用對(duì)內(nèi)容處理的調(diào)整。一些實(shí)施例采用簡(jiǎn)檔來(lái)識(shí)別要處理的內(nèi)容的類型。簡(jiǎn)檔包括形式為(P1-P2-P3"-"PN)的邏輯命題,使得當(dāng)且僅當(dāng)所有的邏輯判定(predicate)Pn針對(duì)特定內(nèi)容都為真時(shí)簡(jiǎn)檔與特定內(nèi)容匹配。在一些實(shí)施例中,簡(jiǎn)檔集合是分級(jí)的。簡(jiǎn)檔的分級(jí)集合具有針對(duì)在處理的不同階段處達(dá)到的不同分級(jí)級(jí)別的簡(jiǎn)檔。在一些實(shí)施例中,來(lái)自更低級(jí)別的簡(jiǎn)檔的指令可以撤銷來(lái)自更高級(jí)別簡(jiǎn)檔的指令。
圖68概念性地例示了一些實(shí)施例的采用簡(jiǎn)檔來(lái)調(diào)整內(nèi)容處理以適應(yīng)內(nèi)容類型的處理6800。如圖所示,該處理接收(在6805處)內(nèi)容。該內(nèi)容在一些實(shí)施例中是要重構(gòu)的文檔。在其他實(shí)施例中,該內(nèi)容是文檔,但是要對(duì)文檔執(zhí)行的處理是除重構(gòu)之外的其他分析。在一些實(shí)施例中,該內(nèi)容還可以是其他類型的內(nèi)容(例如,音頻和/或視頻內(nèi)容)。例如,一些實(shí)施例可以分析視頻內(nèi)容,以將視頻內(nèi)容斷開(kāi)成場(chǎng)景、動(dòng)作等的分級(jí),并且基于更早階段的結(jié)果修改后面階段的分析。接下來(lái),該處理基于不同內(nèi)容類型的簡(jiǎn)檔識(shí)別(在6810處)接收到的內(nèi)容的類型。在一些實(shí)施例中,簡(jiǎn)檔包括邏輯命題,該邏輯命題由一個(gè)或多個(gè)邏輯判定構(gòu)成,并且針對(duì)該內(nèi)容當(dāng)且僅當(dāng)所有邏輯判定都為真時(shí)該邏輯命題與內(nèi)容匹配。在一些實(shí)施例中,簡(jiǎn)檔還規(guī)定如果簡(jiǎn)檔與內(nèi)容匹配則如何執(zhí)行內(nèi)容處理。在文檔處理的情況下,在一些實(shí)施例中, 簡(jiǎn)檔包括應(yīng)用于可視元素集合的屬性集合。例如,用于預(yù)期要印制在#10尺寸的封皮上的文檔的簡(jiǎn)化簡(jiǎn)檔可能是(頁(yè)面# = Γ段落# < = 2~寬度=9. 5” ~高度=4. 125”)。圖69例示了文檔6900。在識(shí)別文檔類型時(shí),一些實(shí)施例將測(cè)試多個(gè)簡(jiǎn)檔,直到達(dá)到其所有邏輯判定為真的簡(jiǎn)檔。在文檔6900的情況下,如果寬度χ為9. 5”且高度y為 4. 125”,則文檔6900將被識(shí)別為#10封皮,因?yàn)樗鼉H具有一個(gè)帶有兩個(gè)段落6905和6910 的頁(yè)面。一旦識(shí)別出內(nèi)容的類型,則處理6800執(zhí)行(在6815處)適于所識(shí)別出的內(nèi)容類型的內(nèi)容處理。然后該處理結(jié)束。在一些實(shí)施例中,調(diào)整處理以適應(yīng)識(shí)別出的內(nèi)容類型包括添加和移除處理、修改如何執(zhí)行處理、以及修改執(zhí)行處理的順序。例如,在文檔重構(gòu)的情況下, 當(dāng)確定文檔是沒(méi)有列、頁(yè)眉或頁(yè)腳的單頁(yè)文本行時(shí),文檔重構(gòu)處理可以被適當(dāng)?shù)卣{(diào)整。一些實(shí)施例將識(shí)別文本行、識(shí)別文本行中的字以及將文本行分組成段落,但是將不會(huì)執(zhí)行其他處理(例如,用于識(shí)別列和布局的處理4200或者表格識(shí)別處理),因?yàn)樗谖臋n類型識(shí)別出不要求這些。A.分級(jí)簡(jiǎn)檔化一些實(shí)施例采用分級(jí)的簡(jiǎn)檔集合來(lái)調(diào)整內(nèi)容處理以適應(yīng)內(nèi)容類型。圖70例示了一些實(shí)施例的用于文檔重構(gòu)的分級(jí)簡(jiǎn)檔集合7000。該分級(jí)簡(jiǎn)檔集合7000包括兩個(gè)文檔簡(jiǎn)檔7001和7002、三個(gè)章節(jié)簡(jiǎn)檔7005至7007、八個(gè)頁(yè)面簡(jiǎn)檔7010至7017以及四個(gè)區(qū)簡(jiǎn)檔 7020 至 7023。如圖所示,每個(gè)文檔簡(jiǎn)檔具有其自己的簡(jiǎn)檔樹(shù)。在一些實(shí)施例中,一旦識(shí)別出文檔簡(jiǎn)檔,則將僅測(cè)試其分級(jí)樹(shù)中的章節(jié)簡(jiǎn)檔。例如,當(dāng)將文檔識(shí)別為文檔簡(jiǎn)檔A 7001時(shí),將僅測(cè)試章節(jié)簡(jiǎn)檔A 7005和章節(jié)簡(jiǎn)檔B 7006。類似地,一旦識(shí)別出章節(jié)簡(jiǎn)檔(或者任何其他更低級(jí)別的簡(jiǎn)檔),則將僅測(cè)試該特定簡(jiǎn)檔的樹(shù)中的簡(jiǎn)檔。在一些實(shí)施例中,在分級(jí)的更高級(jí)別的多個(gè)簡(jiǎn)檔之間共享一些簡(jiǎn)檔。例如,頁(yè)面簡(jiǎn)檔C 7012在所有三個(gè)章節(jié)簡(jiǎn)檔7005至7007之間共享。由此,無(wú)論將文檔的章節(jié)識(shí)別為章節(jié)簡(jiǎn)檔A 7005、章節(jié)簡(jiǎn)檔B 7006或章節(jié)簡(jiǎn)檔C 7007,都將測(cè)試頁(yè)面簡(jiǎn)檔C 7012作為該章節(jié)中的每個(gè)頁(yè)面的一個(gè)可能頁(yè)面簡(jiǎn)檔。圖71概念性地例示了一些實(shí)施例的用于將簡(jiǎn)檔與內(nèi)容匹配并根據(jù)匹配的簡(jiǎn)檔動(dòng)態(tài)地配置內(nèi)容處理的處理7100。如圖所示,該處理接收(在7105處)要被處理的內(nèi)容。在一些實(shí)施例中,該內(nèi)容是要根據(jù)以上在第II至VI章中描述的處理被重構(gòu)的文檔。在其他實(shí)施例中,該內(nèi)容是音頻和/或視頻內(nèi)容,或者其他類型的要分析的內(nèi)容。接下來(lái),該處理選擇(在7110處)分級(jí)中的頂部級(jí)別的簡(jiǎn)檔。在一些實(shí)施例中, 選擇特定簡(jiǎn)檔包括評(píng)估該內(nèi)容的特定簡(jiǎn)檔的邏輯命題,并識(shí)別該簡(jiǎn)檔與內(nèi)容匹配。在一些實(shí)施例中,首先必須執(zhí)行一定量的處理,來(lái)從分級(jí)的頂部級(jí)別中選擇一個(gè)簡(jiǎn)檔。在一些實(shí)施例中,可以一次在分級(jí)的頂部級(jí)別處選擇僅一個(gè)簡(jiǎn)檔,盡管在找到匹配簡(jiǎn)檔之前可以測(cè)試多個(gè)簡(jiǎn)檔。例如,關(guān)于圖70中的簡(jiǎn)檔分級(jí)集合7000,文檔可以與文檔簡(jiǎn)檔A 7001或者文檔簡(jiǎn)檔B 7002匹配,但是一旦一個(gè)匹配,則選擇匹配的簡(jiǎn)檔。在從分級(jí)選擇了簡(jiǎn)檔之后,該處理針對(duì)所選的簡(jiǎn)檔應(yīng)用(在7115處)應(yīng)用處理。 例如,關(guān)于文檔重構(gòu),當(dāng)內(nèi)容是僅單頁(yè)文檔時(shí),應(yīng)用一組重構(gòu)方法。另一方面,當(dāng)文檔是具有插圖的多頁(yè)書(shū)籍時(shí),應(yīng)用一組不同的重構(gòu)方法。一些實(shí)施例不是一起應(yīng)用所有方法,而是相反在確定是否可以選擇更低級(jí)別處的一個(gè)新簡(jiǎn)檔之前按照簡(jiǎn)檔指定的順序一次應(yīng)用一種方法。接著,該處理確定(在7120處)處理是否足夠遠(yuǎn)伸以處理到分級(jí)的下一個(gè)級(jí)別。 在一些實(shí)施例中,這涉及確定是否已經(jīng)完成了足夠的處理方法,并且關(guān)于分級(jí)的下一個(gè)級(jí)別可獲得足夠的信息,使得可以針對(duì)匹配測(cè)試下一個(gè)級(jí)別處的簡(jiǎn)檔。當(dāng)處理不夠遠(yuǎn)伸時(shí),該處理前進(jìn)到7115以繼續(xù)應(yīng)用如上所述的處理。一旦處理針對(duì)分級(jí)的下一個(gè)級(jí)別足夠遠(yuǎn)伸,該處理選擇(在7125處)分級(jí)的下一個(gè)級(jí)別處的簡(jiǎn)檔。在一些實(shí)施例中,針對(duì)特定分級(jí)級(jí)別處的每個(gè)內(nèi)容實(shí)體(例如,章節(jié)、頁(yè)面、區(qū),等等),可以一次針對(duì)特定級(jí)別選擇僅一個(gè)簡(jiǎn)檔。例如,關(guān)于圖70中的簡(jiǎn)檔分級(jí)集合 7000,文檔中與文檔簡(jiǎn)檔A 7001匹配的章節(jié)可以與章節(jié)簡(jiǎn)檔A 7005或者章節(jié)簡(jiǎn)檔B 7006 匹配,但是不會(huì)與兩者都匹配。此外,在一些實(shí)施例中,基于對(duì)以上的內(nèi)容實(shí)體的簡(jiǎn)檔的選擇來(lái)限制對(duì)一個(gè)內(nèi)容實(shí)體的一個(gè)簡(jiǎn)檔的選擇。例如,在以上示例中,由于文檔與文檔簡(jiǎn)檔A 7001匹配,所以將不會(huì)把特定章節(jié)與章節(jié)簡(jiǎn)檔C 7007測(cè)試,并由此不會(huì)與章節(jié)簡(jiǎn)檔C 7007 匹配。接著,該處理基于新選擇的簡(jiǎn)檔修改(在7130處)分級(jí)的先前級(jí)別的處理方法。 在一些實(shí)施例中,任何更低級(jí)別的簡(jiǎn)檔可以撤銷更高級(jí)別簡(jiǎn)檔的任何已經(jīng)定義的處理方法。修改可以包括移除處理方法、修改執(zhí)行特定方法的方式、添加方法、改變執(zhí)行方法的順序,等等。例如,當(dāng)已經(jīng)采用處理(例如,以上在第IV章中描述的處理3800)來(lái)拆分文檔中的行時(shí),關(guān)于是否針對(duì)列有足夠的證據(jù)的確定可以確定頁(yè)面是否被分類為復(fù)雜的或簡(jiǎn)單的。當(dāng)頁(yè)面是簡(jiǎn)單的(即,列的最少證據(jù))時(shí),在一些實(shí)施例中將修改行拆分方法,來(lái)將制表位插入在行的間隔中,而不是實(shí)際地拆分行。類似地,當(dāng)頁(yè)面是沒(méi)有區(qū)邊界圖形的簡(jiǎn)單頁(yè)面時(shí),在一些實(shí)施例中移除區(qū)分析方法。作為添加方法的示例,在一些實(shí)施例中,將特定文檔識(shí)別為報(bào)紙的簡(jiǎn)檔可以添加用以搜索布局的結(jié)尾處的文本的方法,其指定文章在具有特定題目的特定頁(yè)面上繼續(xù)。這種方法然后將搜索指定的頁(yè)面以尋找題目,從而定義文檔中的兩個(gè)布局(或區(qū))之間的鏈接,來(lái)指示兩個(gè)布局(或區(qū))形成一個(gè)文章。接著,在修改了處理方法的情況下,處理7100針對(duì)所選簡(jiǎn)檔應(yīng)用(在7135處)處理方法。在一些實(shí)施例中,這包括用于在分級(jí)的比最近選擇的簡(jiǎn)檔更高的級(jí)別處的簡(jiǎn)檔的方法。例如,當(dāng)在文檔簡(jiǎn)檔中指定特定方法并且所選的章節(jié)簡(jiǎn)檔沒(méi)有修改特定方法或者是否執(zhí)行特定方法時(shí),將根據(jù)文檔簡(jiǎn)檔執(zhí)行特定方法(如果它還沒(méi)有已經(jīng)執(zhí)行的話)。一些實(shí)施例沒(méi)有一起應(yīng)用所有方法,而是相反在確定可以選擇更低級(jí)別處的新簡(jiǎn)檔之前按照簡(jiǎn)檔規(guī)定的順序一次應(yīng)用一個(gè)方法。接著,該處理確定(在7140處)在簡(jiǎn)檔分級(jí)中是否有任何更低級(jí)別要測(cè)試。當(dāng)分級(jí)中沒(méi)有更多更低級(jí)別時(shí),該處理前進(jìn)到以下描述的7150。否則,該處理確定(在7145處) 是否處理足夠遠(yuǎn)伸以前進(jìn)到分級(jí)的下一個(gè)級(jí)別。在一些實(shí)施例中,這涉及確定是否已經(jīng)完成足夠的處理方法,并且關(guān)于分級(jí)的下一個(gè)級(jí)別可獲得足夠的信息,使得可以針對(duì)匹配測(cè)試下一個(gè)級(jí)別處的簡(jiǎn)檔。當(dāng)處理不夠遠(yuǎn)伸時(shí),該處理前進(jìn)到7135以繼續(xù)應(yīng)用如上所述的處理。如上所述,一旦處理針對(duì)分級(jí)的下一個(gè)級(jí)別足夠遠(yuǎn)伸,該處理就前進(jìn)到7125以針對(duì)分級(jí)的下一個(gè)級(jí)別選擇一個(gè)或多個(gè)簡(jiǎn)檔。當(dāng)處理確定(在7140處)沒(méi)有更多更低的分級(jí)級(jí)別時(shí),該處理確定(在7150處) 內(nèi)容處理是否完成。在一些實(shí)施例中,當(dāng)已經(jīng)針對(duì)最低級(jí)別的簡(jiǎn)檔應(yīng)用了所有的處理方法時(shí),內(nèi)容處理完成。當(dāng)處理完成時(shí),該處理結(jié)束。否則,該處理前進(jìn)到以上描述的7135來(lái)繼續(xù)處理內(nèi)容。B.采用分級(jí)簡(jiǎn)檔化來(lái)實(shí)施語(yǔ)義重構(gòu)方法一些實(shí)施例采用分級(jí)簡(jiǎn)檔來(lái)更高效且準(zhǔn)確地實(shí)施以上在第II至VI章中描述的語(yǔ)義重構(gòu)方法。在一些實(shí)施例中,分級(jí)簡(jiǎn)檔用于添加、移除、修改或重新執(zhí)行方法。一些實(shí)施例包括缺省簡(jiǎn)檔,在缺少任何簡(jiǎn)檔匹配的情況下,該缺省簡(jiǎn)檔實(shí)施所有可能的重構(gòu)方法。然而,當(dāng)選擇了分級(jí)更低的簡(jiǎn)檔時(shí),關(guān)于是否執(zhí)行特定方法和/或如何實(shí)施特定方法,所選簡(jiǎn)檔能夠撤銷缺省簡(jiǎn)檔。在一些實(shí)施例中,簡(jiǎn)檔匹配發(fā)生在處理中的不同階段。因此,在任何給定時(shí)間處激活的簡(jiǎn)檔集合可以在整個(gè)處理中改變,并且在激活了每個(gè)新的簡(jiǎn)檔之后不得不重新評(píng)估對(duì)方法的繼承(inheritance)。由于新激活的簡(jiǎn)檔能夠重新排序、添加或者移除處理方法,所以一些實(shí)施例也在內(nèi)容處理期間改變繼承的效果。圖72概念性地例示了一些實(shí)施例的用于采用分級(jí)簡(jiǎn)檔來(lái)執(zhí)行文檔重構(gòu)的處理 7200。如圖所示,處理接收(在7205處)文檔。在一些實(shí)施例中,該文檔是要利用語(yǔ)義重構(gòu)技術(shù)重構(gòu)的矢量圖形文檔(例如,PDF文檔)。接著,處理7200識(shí)別(在7210處)文檔的簡(jiǎn)檔。在一些實(shí)施例中,初始地分配實(shí)施所有可能重構(gòu)方法的缺省簡(jiǎn)檔。然而,一些實(shí)施例可以在不應(yīng)用任何重構(gòu)方法的情況下基于文檔的內(nèi)在性質(zhì)(例如,頁(yè)數(shù)、頁(yè)面尺寸,等等)來(lái)識(shí)別文檔簡(jiǎn)檔?!┳R(shí)別出初始簡(jiǎn)檔,該處理識(shí)別(在7215處)與所識(shí)別的簡(jiǎn)檔相關(guān)聯(lián)的重構(gòu)方法。當(dāng)初始簡(jiǎn)檔僅是缺省簡(jiǎn)檔時(shí),將識(shí)別出所有可能方法。然而,當(dāng)簡(jiǎn)檔是識(shí)別出的文檔簡(jiǎn)檔或者分級(jí)中更低級(jí)別處的簡(jiǎn)檔時(shí),在一些情況下,將僅識(shí)別一些重構(gòu)方法。例如,一些簡(jiǎn)檔不明確地定義用于執(zhí)行特定處理的實(shí)施,但是也不規(guī)定不執(zhí)行該處理。然后該處理選擇(在7220處)一個(gè)識(shí)別出的方法。在一些實(shí)施例中,所選的方法是基于用于執(zhí)行重構(gòu)方法的規(guī)定順序。例如,一些實(shí)施例的缺省簡(jiǎn)檔規(guī)定用于實(shí)施重構(gòu)方法的缺省順序。缺省順序例如可以規(guī)定先執(zhí)行區(qū)分析方法,然后識(shí)別文本行,然后執(zhí)行導(dǎo)引和裝訂線分析,等等。在一些實(shí)施例中,識(shí)別方法包括識(shí)別由當(dāng)前簡(jiǎn)檔排除的方法。例如,重構(gòu)處理可能已經(jīng)識(shí)別出頁(yè)面的潛在區(qū)邊界。在一些實(shí)施例中,當(dāng)至少有特定密度的區(qū)邊界并且文本圖案適當(dāng)?shù)仄ヅ鋾r(shí),頁(yè)面被識(shí)別為街區(qū)圖。因此,將不再執(zhí)行剩余的區(qū)分析(例如,識(shí)別區(qū)), 因?yàn)檫@會(huì)將頁(yè)面斷開(kāi)成不合理個(gè)數(shù)的小區(qū),這些小區(qū)不會(huì)被文檔的作者預(yù)期為頁(yè)面的單獨(dú)區(qū)域。類似地,在一些實(shí)施例中,指定文檔是字處理文檔的文檔簡(jiǎn)檔包括用于列識(shí)別的方法。然而,當(dāng)文檔中的特定頁(yè)面具有嵌入的內(nèi)容時(shí),用于特定頁(yè)面的簡(jiǎn)檔可能以不執(zhí)行該方法的指令撤銷列識(shí)別步驟。一旦選擇了一個(gè)方法,處理7200選擇用于該方法的實(shí)施。在一些實(shí)施例中,活動(dòng) (即,選擇的)簡(jiǎn)檔可以實(shí)施方法,或者可以從分級(jí)中更高的活動(dòng)簡(jiǎn)檔繼承對(duì)該方法的實(shí)施。該處理確定(在7225處)所選方法是否是針對(duì)當(dāng)前(即,最低活動(dòng)級(jí)別)簡(jiǎn)檔明確地定義的。當(dāng)所選方法是明確地定義的時(shí),該處理選擇(在7230處)針對(duì)當(dāng)前簡(jiǎn)檔的方法的實(shí)施。然后該處理前進(jìn)到下面描述的7250。否則,該處理確定(在7235處)所選方法是否是針對(duì)更高分級(jí)級(jí)別處的活動(dòng)簡(jiǎn)檔定義的。當(dāng)該處理是針對(duì)更高分級(jí)的活動(dòng)簡(jiǎn)檔定義的時(shí),該處理從更高級(jí)別的活動(dòng)簡(jiǎn)檔選擇(在7240處)對(duì)方法的實(shí)施。然后該處理前進(jìn)到下面描述的7250。否則,該方法選擇 (在7245處)對(duì)方法的缺省實(shí)施。圖73例示了一些實(shí)施例如何繼承實(shí)施特定方法的最低級(jí)別的活動(dòng)簡(jiǎn)檔。該圖示出了文檔重構(gòu)簡(jiǎn)檔的分級(jí)7300。該分級(jí)包括針對(duì)所有方法的缺省實(shí)施的集合7305、針對(duì)各種文檔簡(jiǎn)檔的實(shí)施的集合7310、針對(duì)各種章節(jié)簡(jiǎn)檔的實(shí)施的集合7315、針對(duì)各種頁(yè)面簡(jiǎn)檔的實(shí)施的集合7320以及針對(duì)各種區(qū)簡(jiǎn)檔的實(shí)施的集合7325。如虛線所示,區(qū)簡(jiǎn)檔1 7330 是當(dāng)前(最低級(jí)別)的活動(dòng)簡(jiǎn)檔,而頁(yè)面簡(jiǎn)檔1 7335、章節(jié)簡(jiǎn)檔X 7340和文檔簡(jiǎn)檔2 7345 也是活動(dòng)的。因?yàn)閰^(qū)簡(jiǎn)檔1 7330是當(dāng)前活動(dòng)簡(jiǎn)檔,所以對(duì)實(shí)施特定方法(例如,導(dǎo)引識(shí)別)的嘗試查看對(duì)區(qū)簡(jiǎn)檔1 7330的實(shí)施的集合,來(lái)確定是否它明確地定義了針對(duì)該特定方法的實(shí)施。當(dāng)區(qū)簡(jiǎn)檔1 7330明確地定義了實(shí)施時(shí),選擇該實(shí)施。否則,檢查活動(dòng)的頁(yè)面簡(jiǎn)檔1 7335。沿分級(jí)提升地檢查活動(dòng)簡(jiǎn)檔,直到定義了特定方法的實(shí)施,或者達(dá)到了針對(duì)所有方法的缺省實(shí)施的集合7305。當(dāng)識(shí)別出實(shí)施方法的最低級(jí)別的活動(dòng)簡(jiǎn)檔時(shí),該實(shí)施由當(dāng)前活動(dòng)簡(jiǎn)檔繼承。在沒(méi)有活動(dòng)簡(jiǎn)檔實(shí)施方法時(shí),當(dāng)前活動(dòng)簡(jiǎn)檔從缺省簡(jiǎn)檔繼承該實(shí)施。在處理7200選擇方法的實(shí)施之后,該處理利用所選實(shí)施執(zhí)行(在7250處)重構(gòu)。 在一些實(shí)施例中,所執(zhí)行的重構(gòu)包括以上在第II至VI章中描述的一個(gè)或多個(gè)處理。接著,該處理確定(在7255處)是否識(shí)別出新的簡(jiǎn)檔。一些實(shí)施例在執(zhí)行了每個(gè)方法之后發(fā)送簡(jiǎn)檔匹配引擎可用的所有重構(gòu)數(shù)據(jù)。一些實(shí)施例的簡(jiǎn)檔匹配引擎基于接收到的信息確定是否有足夠的信息來(lái)測(cè)試特定簡(jiǎn)檔(例如,在當(dāng)前活動(dòng)簡(jiǎn)檔下面的下一個(gè)分級(jí)級(jí)別處的簡(jiǎn)檔)。如果有足夠的信息,則簡(jiǎn)檔匹配引擎相對(duì)于簡(jiǎn)檔中的各種邏輯判定測(cè)試信息。一些實(shí)施例對(duì)簡(jiǎn)檔進(jìn)行排序使得它們最可能匹配,或者要求將先測(cè)試最少量的工作。 下面將在第C節(jié)中進(jìn)一步詳細(xì)地描述簡(jiǎn)檔匹配。當(dāng)沒(méi)有識(shí)別出新的簡(jiǎn)檔時(shí),處理確定(在7265處)對(duì)文檔的重構(gòu)是否完成。在一些實(shí)施例中,當(dāng)完成了由活動(dòng)簡(jiǎn)檔集合規(guī)定的(并且沒(méi)有被更低級(jí)別的活動(dòng)簡(jiǎn)檔移除的) 所有方法時(shí),重構(gòu)完成。當(dāng)重構(gòu)完成時(shí),處理結(jié)束。否則,該處理前進(jìn)到7220以如上所述地選擇下一個(gè)識(shí)別出的方法。當(dāng)識(shí)別出新的簡(jiǎn)檔時(shí),處理7200移除(在7260處)由新簡(jiǎn)檔規(guī)定的任何重構(gòu)結(jié)果。具體地,除了規(guī)定應(yīng)當(dāng)被執(zhí)行或不執(zhí)行的特定方法之外,一些實(shí)施例中的簡(jiǎn)檔規(guī)定應(yīng)當(dāng)撤銷特定方法的結(jié)果。例如,即使在已經(jīng)執(zhí)行了區(qū)分析方法之后,簡(jiǎn)檔可以規(guī)定區(qū)信息(邊界、相交部、區(qū),等等)應(yīng)當(dāng)從結(jié)果中被移除,并且應(yīng)當(dāng)在執(zhí)行了若干其他方法之后再次執(zhí)行區(qū)分析。然后該處理前進(jìn)到以上描述的7215,并前進(jìn)直到重構(gòu)完成。C.簡(jiǎn)檔匹配如上所述,在一些實(shí)施例中,簡(jiǎn)檔是針對(duì)該簡(jiǎn)檔必須全部為真的邏輯判定的集合。 一些實(shí)施例采用簡(jiǎn)檔匹配引擎,該簡(jiǎn)檔匹配引擎接收內(nèi)容處理結(jié)果、確定是否有足夠的信息來(lái)針對(duì)當(dāng)前活動(dòng)簡(jiǎn)檔測(cè)試下一個(gè)級(jí)別的簡(jiǎn)檔、然后相對(duì)于簡(jiǎn)檔測(cè)試內(nèi)容處理結(jié)果。一些實(shí)施例基于結(jié)果可能到達(dá)的順序以及基于哪個(gè)簡(jiǎn)檔最可能匹配來(lái)規(guī)定用于測(cè)試簡(jiǎn)檔的特定順序。圖74至77例示了一些實(shí)施例的針對(duì)四個(gè)不同頁(yè)面的示例頁(yè)面簡(jiǎn)檔匹配處理。 圖74例示了四個(gè)頁(yè)面簡(jiǎn)檔簡(jiǎn)單頁(yè)面7401、標(biāo)準(zhǔn)頁(yè)面7402、豐富頁(yè)面7403以及布局頁(yè)面 7404。每個(gè)簡(jiǎn)檔包括至少一個(gè)邏輯判定具體地,簡(jiǎn)檔7401包括三個(gè)判定7411至7413,簡(jiǎn)檔7402包括四個(gè)判定7421至7似4,簡(jiǎn)檔7403包括兩個(gè)判定7431和7432,并且簡(jiǎn)檔7404 包括僅一個(gè)判定。圖74還例示了相對(duì)于按照所示順序的頁(yè)面簡(jiǎn)檔進(jìn)行測(cè)試的頁(yè)面7400。頁(yè)面7400 僅包括圖形對(duì)象7450和文本行7460。頁(yè)面7400的主體僅具有一個(gè)子輩(頁(yè)面邊界,其本身沒(méi)有子輩),并且用于該區(qū)的簡(jiǎn)檔是簡(jiǎn)單的,因?yàn)橐粋€(gè)布局中僅有一列文本。在一些實(shí)施例中,一旦匹配了一個(gè)簡(jiǎn)檔,就不測(cè)試其他的簡(jiǎn)檔了。圖74中的虛線例示了通過(guò)由簡(jiǎn)檔匹配引擎采用的判定的路徑,以確定頁(yè)面7400的頁(yè)面簡(jiǎn)檔。首先,引擎確定頁(yè)面的主體是否有僅一個(gè)子輩(判定7411)。因?yàn)樵撆卸ū辉u(píng)估為真,所以引擎確定該子輩是否沒(méi)有區(qū)子輩(判定7412,其也為真)。最后,引擎確定是否區(qū)簡(jiǎn)檔為簡(jiǎn)單的(即,在一個(gè)布局中僅有一列文本)(判定7413,其也為真)。因?yàn)樗腥齻€(gè)判定針對(duì)頁(yè)面7400都為真,所以簡(jiǎn)檔匹配引擎確定該頁(yè)面7400為簡(jiǎn)單頁(yè)面。因此,可以針對(duì)頁(yè)面7400移除一定的方法(例如,列識(shí)別)。圖75例示了相對(duì)于頁(yè)面簡(jiǎn)檔7401至7404測(cè)試的第二頁(yè)面7500。頁(yè)面7500包括圖形對(duì)象7540、標(biāo)題行7545和兩列文本行7550。頁(yè)面7500的主體僅具有一個(gè)子輩(頁(yè)面邊界,其本身沒(méi)有子輩),并且區(qū)中的文本是標(biāo)題,然后是兩列文本。圖75中的虛線例示了通過(guò)由簡(jiǎn)檔匹配引擎采用的判定的路徑,來(lái)確定頁(yè)面7500的頁(yè)面簡(jiǎn)檔。首先,該引擎確定頁(yè)面主體是否僅具有一個(gè)子輩(判定7411)。因?yàn)樵撆卸ū辉u(píng)估為真,所以該引擎確定子輩是否不具有區(qū)子輩(判定7412,其也為真)。然后該引擎確定區(qū)簡(jiǎn)檔是否為簡(jiǎn)單的(判定 7413為假)。由于存在標(biāo)題和兩個(gè)列,所以區(qū)簡(jiǎn)檔不是簡(jiǎn)單的,并由此判定7413為假,且匹配引擎檢查下一個(gè)簡(jiǎn)檔。判定7421至74 針對(duì)頁(yè)面7500全部為真,因此簡(jiǎn)檔匹配引擎確定頁(yè)面7500為標(biāo)準(zhǔn)頁(yè)面。盡管這些針對(duì)圖74中的頁(yè)面7400也全都為真,但是由于簡(jiǎn)單頁(yè)面簡(jiǎn)檔7401首先被評(píng)估(并且匹配),所以再不會(huì)針對(duì)頁(yè)面7400檢查標(biāo)準(zhǔn)頁(yè)面簡(jiǎn)檔7402。圖76例示了相對(duì)于頁(yè)面簡(jiǎn)檔7401至7404測(cè)試的第三個(gè)頁(yè)面7600。頁(yè)面7600 包括具有若干子輩的主要區(qū),所述子輩包括具有文本的標(biāo)題區(qū)、邊條、居中調(diào)出部周圍的主布局以及具有文本的底部區(qū)。圖76中的虛線例示了通過(guò)由簡(jiǎn)檔匹配引擎采用的判定的路徑,以確定頁(yè)面7600的頁(yè)面簡(jiǎn)檔。首先,該引擎確定頁(yè)面的主體是否僅具有一個(gè)子輩(判定7411)。因?yàn)樵撆卸ū辉u(píng)估為真,所以引擎確定該子輩是否不具有區(qū)子輩(判定7412為假)。因?yàn)槌跫?jí)區(qū)具有眾多子輩,所以判定7412為假,并且匹配引擎檢查下一個(gè)簡(jiǎn)檔。基于相同的理由判定7422也為假,所以匹配引擎移動(dòng)到第三個(gè)簡(jiǎn)檔,并且因?yàn)椴季值臄?shù)量很小且頁(yè)面具有主流布局(圍繞同心方形的布局),所以判定7431和7432被評(píng)估為真。因此, 頁(yè)面7500被分類為豐富頁(yè)面。圖77例示了相對(duì)于頁(yè)面簡(jiǎn)檔7401至7404測(cè)試的第四個(gè)頁(yè)面7700。頁(yè)面7700包括具有圖形的大區(qū)和具有文本的島,以及具有文本的較小區(qū)。圖77中的虛線例示了通過(guò)由簡(jiǎn)檔匹配引擎采用的判定的路徑,以確定頁(yè)面7400的頁(yè)面簡(jiǎn)檔。首先,該引擎確定頁(yè)面的主體是否僅具有一個(gè)子輩(判定7411)。因?yàn)樵撆卸ū辉u(píng)估為假,所以匹配引擎檢查下一個(gè)簡(jiǎn)檔(其因相同的理由為假)。在第三個(gè)簡(jiǎn)檔處,判定7432為假,這是因?yàn)轫?yè)面7700沒(méi)有主流布局。判定7441總是為真,并由此將頁(yè)面7700分類為布局頁(yè)面。判定7441總是為真,因?yàn)橐坏╉?yè)面不能與任何先前簡(jiǎn)檔匹配,則它自動(dòng)地被分類為布局頁(yè)面。一旦匹配了簡(jiǎn)檔,則可以根據(jù)簡(jiǎn)檔中的指令對(duì)重構(gòu)方法進(jìn)行執(zhí)行、移除等。VIII.對(duì)感興趣區(qū)域的識(shí)別和選擇,以及對(duì)文檔的導(dǎo)航和顯示諸如電子圖書(shū)閱讀器的文檔瀏覽應(yīng)用通常將需要了解如何最好地顯示文檔和在文檔內(nèi)導(dǎo)航。這在不能一起易讀地顯示文檔的整個(gè)頁(yè)面的小屏幕設(shè)備上尤為重要。例如,在一些情況下,文檔瀏覽器應(yīng)當(dāng)能夠識(shí)別出內(nèi)容表格中的一個(gè)條目鏈接到文檔的特定章節(jié), 或者文檔的兩個(gè)章節(jié)相關(guān)(例如,調(diào)出部是特定文章的一部分,或者一列流入下一個(gè)中)。本發(fā)明一些實(shí)施例采用從文檔重構(gòu)獲得的信息(例如,段落和列信息、表格信息, 等等),用于顯示和導(dǎo)航文檔。具體而言,一些實(shí)施例調(diào)整對(duì)語(yǔ)義地重構(gòu)的文檔的顯示和導(dǎo)航,用以在小屏幕設(shè)備(例如,媒體播放器、蜂窩式電話,等等)上的顯示和導(dǎo)航。A.對(duì)感興趣區(qū)域的識(shí)別和選擇一些實(shí)施例提供了用于識(shí)別和選擇語(yǔ)義地重構(gòu)的文檔中的感興趣區(qū)域,然后基于對(duì)感興趣區(qū)域的選擇來(lái)修改對(duì)文檔的顯示的方法。圖78概念性地例示了在一些實(shí)施例中用于基于對(duì)感興趣的位置的識(shí)別來(lái)顯示文檔的處理7800。將結(jié)合圖79來(lái)描述處理7800。 圖79例示了根據(jù)本發(fā)明一些實(shí)施例的在小屏幕設(shè)備上的序列7900(7905至7920),其中選擇了感興趣的位置并修改了顯示。如圖78所示,處理7800接收(在7805處)對(duì)語(yǔ)義地重構(gòu)的文檔中感興趣的位置的指示。在一些實(shí)施例中,該語(yǔ)義地重構(gòu)的文檔包括文檔對(duì)象模型,該文檔對(duì)象模型是如以上在第II至VI章中描述的文檔重構(gòu)的結(jié)果。在一些實(shí)施例中,文檔對(duì)象模型包括如以上在第II章中描述的區(qū)圖,其中該區(qū)圖已經(jīng)被整個(gè)文檔重構(gòu)處理中的內(nèi)容信息填充。一些實(shí)施例的文檔對(duì)象模型還指示內(nèi)容(例如,列、段落、圖像等等)的閱讀順序。一些實(shí)施例接收對(duì)感興趣的位置的指示作為對(duì)顯示器上的點(diǎn)的選擇。例如,選擇可以利用游標(biāo)控制設(shè)備(例如,鼠標(biāo)、觸摸板,等等)來(lái)進(jìn)行。在觸摸屏顯示器上,也可以通過(guò)用戶輕敲屏幕(例如,單敲、雙敲、收聚運(yùn)動(dòng),等等)來(lái)指示感興趣的位置。參照?qǐng)D79,序列7900示出(在7905處)用戶7925選擇顯示器7930上的點(diǎn),顯示器7930正在顯示文檔的一部分。感興趣的位置7935例示(在7910)在顯示器7930中的用戶觸摸屏幕以進(jìn)行選
76擇的點(diǎn)處。接著,處理7800識(shí)別(在7810處)在語(yǔ)義地重構(gòu)的文檔中的感興趣區(qū)域。序列 7900示出(在7915處)了已經(jīng)基于對(duì)感興趣位置7935的選擇將段落7940識(shí)別為感興趣的區(qū)域。一些實(shí)施例在感興趣位置處于段落的界定框內(nèi)時(shí)將段落識(shí)別為感興趣區(qū)域,就像針對(duì)感興趣位置7935的情況一樣。在識(shí)別出感興趣區(qū)域之后,處理7800應(yīng)用(在7815處)所要求的轉(zhuǎn)換以將感興趣區(qū)域放置在顯示設(shè)備的瀏覽區(qū)中。在一些實(shí)施例中,轉(zhuǎn)換包括旋轉(zhuǎn)、縮放和平移的組合, 如下面關(guān)于處理8000和8100所描述的。接著,該處理基于所應(yīng)用的轉(zhuǎn)換來(lái)繪制(在7820 處)文檔。然后該處理結(jié)束。序列7900示出(在7920處)了根據(jù)規(guī)定的轉(zhuǎn)換,段落7940 已經(jīng)被放大并且垂直地且水平地置中。在一些實(shí)施例中,該處理顯示原始(即,未結(jié)構(gòu)化) 的文檔,但是采用對(duì)結(jié)構(gòu)性元素的位置的了解(例如,來(lái)自結(jié)構(gòu)化文檔)來(lái)?yè)u動(dòng)(pan)和縮放文檔。圖80概念性地例示了一些實(shí)施例的用于識(shí)別感興趣區(qū)域并應(yīng)用轉(zhuǎn)換以在顯示設(shè)備上繪制感興趣區(qū)域的具體處理8000。如圖所示,處理8000接收(在8005處)感興趣位置。在一些實(shí)施例中,基于用戶的選擇(例如,利用游標(biāo)控制設(shè)備或者通過(guò)觸摸屏來(lái)選擇) 來(lái)采用感興趣的位置?;诟信d趣的位置,然后該處理基于接收到的感興趣位置確定(在8010處)語(yǔ)義地重構(gòu)的文檔中的所選對(duì)象。在一些實(shí)施例中,所選對(duì)象可以是字符、字、文本行、圖像,等等。在一些實(shí)施例中,語(yǔ)義地重構(gòu)的文檔包括文檔對(duì)象模型,其是如以上在第II至VI章中描述的文檔重構(gòu)的結(jié)果。在一些實(shí)施例中,文檔對(duì)象模型包括如以上在第II章中描述的區(qū)圖,其中該區(qū)圖已經(jīng)被整個(gè)文檔重構(gòu)處理中的內(nèi)容信息填充。接著該處理沿文檔分級(jí)提升(在8015處),直到達(dá)到段落或圖形對(duì)象。在一些實(shí)施例中,文檔分級(jí)是填充有內(nèi)容信息的區(qū)圖(即,D0M)。當(dāng)所選對(duì)象是字時(shí),在一些實(shí)施例中,處理沿分級(jí)從字提升到包括該字的文本行,到包括該文本行的段落。然后該處理確定(在8020處)識(shí)別出的對(duì)象是否是段落。當(dāng)識(shí)別出的對(duì)象不是段落時(shí),它是圖形對(duì)象。在一些實(shí)施例中,該圖形對(duì)象可以是形狀、圖像或者連結(jié)圖(即,復(fù)合圖形對(duì)象)中的任一個(gè)。當(dāng)所識(shí)別出的對(duì)象是圖形對(duì)象時(shí),該處理將感興趣矩形(ROI) 定義(在8025處)為所識(shí)別出對(duì)象的豎直界定框。然后該處理進(jìn)行縮放(在8030處),使得ROI的寬度和高度不大于顯示區(qū)的寬度和高度。然后該處理前進(jìn)到下面描述的8060。當(dāng)所識(shí)別出的對(duì)象是段落時(shí),該處理定義(在8035處)具有段落的父列的寬度和該段落的高度的矩形。然后該處理針對(duì)所述矩形應(yīng)用(在8040處)段落的任何旋轉(zhuǎn),并將 ROI定義為經(jīng)旋轉(zhuǎn)矩形的豎直界定框。在一些實(shí)施例中,如果段落處在文檔對(duì)象模型的旋轉(zhuǎn)分組中,則旋轉(zhuǎn)該段落。一些實(shí)施例如以上在第II章中描述地定義旋轉(zhuǎn)分組。然后該處理確定(在8045處)段落基線(在旋轉(zhuǎn)之前)是否比顯示區(qū)的對(duì)角線更陡。例如,當(dāng)顯示區(qū)是方形時(shí),該確定是基線是比45度更陡還是更不陡。當(dāng)段落基線比顯示區(qū)的對(duì)角線更陡時(shí),該處理進(jìn)行縮放(在8050處),使得ROI不大于顯示區(qū)的高度。然后該處理前進(jìn)到下面描述的8060。另一方面,當(dāng)段落基線不比顯示區(qū)的對(duì)角線更陡時(shí),該處理進(jìn)行縮放(在8055處),使得ROI不大于顯示區(qū)的寬度。接著,處理8000確定(在8060處)ROI (如在以上操作中定義的)是否水平地適合在顯示區(qū)中。當(dāng)ROI水平地適合時(shí),該處理水平地置中(在8065處)R0I。然后該處理前進(jìn)到下面描述的8075。否則,該處理水平地置中(在8070處)感興趣位置。然后該處理確定(在8075處)ROI是否垂直地適合在顯示區(qū)中。當(dāng)ROI垂直地適合時(shí),該處理垂直地置中(在8080處)R0I。然后該處理前進(jìn)到下面描述的8087。否則,該處理垂直地置中(在 8085處)感興趣位置。接著,該處理確定(在8087處)包括感興趣位置的頁(yè)面的底部邊緣或頂部邊緣是否是在顯示區(qū)中。如果是的話,該處理將可視頁(yè)面邊緣移動(dòng)(在8090處)到顯示區(qū)的對(duì)應(yīng) (即,頂部或底部)邊緣,使得僅顯示一個(gè)頁(yè)面,并且垂直地占據(jù)整個(gè)顯示區(qū)。然后該處理確定(在8092處)包括感興趣位置的頁(yè)面的右邊緣或左邊緣是否是在顯示區(qū)中。如果是的話,該處理將可視頁(yè)面邊緣移動(dòng)(在8095處)到顯示區(qū)的對(duì)應(yīng)(即,右或左)邊緣,使得僅顯示一個(gè)頁(yè)面,并且垂直地占據(jù)整個(gè)顯示區(qū)。最后,該處理利用所應(yīng)用的以上所有轉(zhuǎn)換來(lái)重新繪制(在8197處)顯示區(qū)。然后該處理結(jié)束。一些實(shí)施例利用其他轉(zhuǎn)換(例如,縮放、平移、旋轉(zhuǎn),等等)的組合來(lái)顯示所選的感興趣區(qū)域。例如,盡管處理8000確定與作為圖形對(duì)象的感興趣區(qū)域相比如何不同地縮放作為段落的感興趣區(qū)域,但是其他實(shí)施例定義感興趣區(qū)域,使得縮放針對(duì)所有感興趣區(qū)域是相同的。例如,下面描述的處理8100按照這種方式在感興趣區(qū)域上進(jìn)行縮放。圖81概念性地例示了一些實(shí)施例的用于識(shí)別感興趣區(qū)域和應(yīng)用轉(zhuǎn)換以在顯示設(shè)備上繪制感興趣區(qū)域的具體處理8100。處理8100類似于以上描述的處理8000。在一些實(shí)施例中,用戶可以選擇他們優(yōu)選處理8000中的縮放轉(zhuǎn)換還是處理8100中的縮放轉(zhuǎn)換。其他實(shí)施例實(shí)施兩個(gè)處理之一。如圖所示,處理8100接收(在8105處)感興趣位置。在一些實(shí)施例中,基于用戶的選擇(例如,利用游標(biāo)控制設(shè)備或者通過(guò)觸摸屏進(jìn)行選擇)來(lái)采用感興趣位置。然后基于感興趣位置,該處理基于接收到的感興趣位置確定(在8110處)語(yǔ)義地重構(gòu)的文檔中的所選對(duì)象。在一些實(shí)施例中,所選對(duì)象可以是字符、字、文本行、圖像,等等。 在一些實(shí)施例中,語(yǔ)義地重構(gòu)的文檔包括文檔對(duì)象模型,其是如以上在第II至VI章中描述的文檔重構(gòu)的結(jié)果。在一些實(shí)施例中,文檔對(duì)象模型包括如以上在第II章中描述的區(qū)圖, 其中該區(qū)圖已經(jīng)被整個(gè)文檔重構(gòu)處理中的內(nèi)容信息填充。接著處理8115沿文檔分級(jí)提升(在8115處),直到達(dá)到段落或圖形對(duì)象。在一些實(shí)施例中,文檔分級(jí)是填充有內(nèi)容信息的區(qū)圖。如果所選對(duì)象是字,則在一些實(shí)施例中,處理沿分級(jí)從字提升到包括該字的文本行,到包括該文本行的段落。然后該處理確定(在8120處)識(shí)別出的對(duì)象是否是段落。如果識(shí)別出的對(duì)象不是段落,則它是圖形對(duì)象。在一些實(shí)施例中,該圖形對(duì)象可以是形狀、圖像或者連結(jié)圖(即, 復(fù)合圖形對(duì)象)中的任一個(gè)。當(dāng)所識(shí)別出的對(duì)象是圖形對(duì)象時(shí),該處理將感興趣矩形(ROI) 定義(在8125處)為所識(shí)別出對(duì)象的豎直界定框,然后該處理前進(jìn)到下面描述的8150。當(dāng)所識(shí)別出的對(duì)象是段落時(shí),該處理定義(在8135處)具有段落的父列的寬度和該段落的高度的矩形。然后該處理針對(duì)所述矩形應(yīng)用(在8140處)段落的任何旋轉(zhuǎn)。在一些實(shí)施例中,如果段落處在文檔對(duì)象模型的旋轉(zhuǎn)分組中,則旋轉(zhuǎn)該段落。一些實(shí)施例如以上在第II章中描述地定義旋轉(zhuǎn)分組。然后該處理將ROI定義(在814 為豎直界定框,該豎直界定框包括在感興趣位置上面的第一特定個(gè)數(shù)的行以及在該感興趣位置下面的第二特定個(gè)數(shù)的行。該定義是基于用戶對(duì)感興趣位置感興趣并將希望查看感興趣位置下面和上面的一定個(gè)數(shù)的文本行的假設(shè)。在定義了 ROI之后,處理8100然后進(jìn)行縮放(在8150處),使得ROI的寬度和高度不大于瀏覽區(qū)的寬度和高度。接著,處理8100確定(在8160處)ROI (如在以上操作中定義的)是否水平地適合在顯示區(qū)中。當(dāng)ROI水平地適合時(shí),該處理水平地置中(在8165處)ROI。否則,該處理水平地置中(在8170處)感興趣位置。然后該處理確定(在8175處)ROI是否垂直地適合在顯示區(qū)中。當(dāng)ROI垂直地適合時(shí),該處理垂直地置中(在8180處)ROI。否則,該處理垂直地置中(在8185處)感興趣位置。在置中了感興趣位置和/或區(qū)域之后,該處理確定(在8187處)包括感興趣位置的頁(yè)面的底部邊緣或頂部邊緣是否是在顯示區(qū)中。如果是的話,該處理將可視頁(yè)面邊緣移動(dòng)(在8190處)到顯示區(qū)的對(duì)應(yīng)(即,頂部或底部)邊緣,使得僅顯示一個(gè)頁(yè)面,并且垂直地占據(jù)整個(gè)顯示區(qū)。然后該處理確定(在8192處)包括感興趣位置的頁(yè)面的右邊緣或左邊緣是否是在顯示區(qū)中。如果是的話,該處理將可視頁(yè)面邊緣移動(dòng)(在8195處)到顯示區(qū)的對(duì)應(yīng)(即,右或左)邊緣,使得僅顯示一個(gè)頁(yè)面,并且垂直地占據(jù)整個(gè)顯示區(qū)。最后,該處理利用所應(yīng)用的以上所有轉(zhuǎn)換來(lái)重新繪制(在8197處)顯示區(qū),然后該處理結(jié)束。B.對(duì)語(yǔ)義地重構(gòu)的文檔的顯示和導(dǎo)航一些實(shí)施例提供了各種用于優(yōu)化對(duì)語(yǔ)義重構(gòu)文檔的顯示和導(dǎo)航的方法。在一些實(shí)施例中,針對(duì)小屏幕設(shè)備(例如,媒體播放器、蜂窩式電話,等等)優(yōu)化顯示和導(dǎo)航。圖82概念性地例示了一些實(shí)施例的用于顯示語(yǔ)義重構(gòu)文檔的處理8200。如圖所示,該處理接收(在8205處)語(yǔ)義重構(gòu)文檔。在一些實(shí)施例中,該語(yǔ)義重構(gòu)文檔包括文檔對(duì)象模型,該文檔對(duì)象模型是如以上在第II至VI章中描述的文檔重構(gòu)的結(jié)果。在一些實(shí)施例中的文檔對(duì)象模型包括如以上在第II章中描述的區(qū)圖,其中該區(qū)圖已經(jīng)被在整個(gè)文檔重構(gòu)處理中的內(nèi)容信息所填充。然后該處理將語(yǔ)義重構(gòu)文檔分割(在8205處)成多個(gè)章節(jié)。在一些實(shí)施例中,該分割是基于針對(duì)文檔的文檔對(duì)象模型中的信息。在一些實(shí)施例中,每個(gè)章節(jié)是字、相關(guān)聯(lián)的圖形對(duì)象和其他嵌套章節(jié)的有序序列。例如,嵌套可以表現(xiàn)為加框示例或注釋或者作為表格的單元。接著處理8215調(diào)整重構(gòu)文檔的瀏覽以適應(yīng)通過(guò)章節(jié)的自然流。然后該處理結(jié)束。 在一些實(shí)施例中,該調(diào)整可以按照多種方式展現(xiàn)自己。圖83例示了一些實(shí)施例的一個(gè)這種調(diào)整。圖83例示了設(shè)備8305,其正初始地按照兩列8310和8315來(lái)顯示語(yǔ)義重構(gòu)文檔的一部分。在一些實(shí)施例中,該文檔初始地具有兩列,而在其他情況下該文檔已經(jīng)針對(duì)在設(shè)備 8305上瀏覽而進(jìn)行了調(diào)整。圖83例示了設(shè)備8305側(cè)邊轉(zhuǎn)動(dòng)。該設(shè)備包括加速計(jì)或其他這種設(shè)備來(lái)識(shí)別出它側(cè)邊轉(zhuǎn)動(dòng)。因此,視圖旋轉(zhuǎn)90度,使得文本水平地走向。然而,不能顯示同樣的兩列8310 和8315。相反,這些列的文本被斷開(kāi)成三列8320至8330,使得所有文本仍都顯示在相同的尺寸下,并且保持可讀性。這是可以的,因?yàn)橥ㄟ^(guò)語(yǔ)義重構(gòu)處理放在一起的文檔對(duì)象模型指示文本的閱讀順序是從第一列的頂部到底部,然后再返回到第一列的頂部。
圖84概念性地例示了一些實(shí)施例的用于在語(yǔ)義重構(gòu)文檔的區(qū)域之間進(jìn)行導(dǎo)航的處理8400。如圖所示,處理8400顯示(在8405處)語(yǔ)義重構(gòu)文檔中的區(qū)域。在一些實(shí)施例中,語(yǔ)義重構(gòu)文檔包括文檔對(duì)象模型,該文檔對(duì)象模型是如以上在第II至VI章中描述的文檔重構(gòu)的結(jié)果。在一些實(shí)施例中的文檔對(duì)象模型包括如以上在第II章中描述的區(qū)圖,其中該區(qū)圖已經(jīng)被在整個(gè)文檔重構(gòu)處理中的內(nèi)容信息所填充。在一些實(shí)施例中,語(yǔ)義重構(gòu)文檔的區(qū)域由文檔對(duì)象模型定義,并且可以包括文本區(qū)域、圖形,等等。處理8400接收(在8410處)滾動(dòng)經(jīng)過(guò)顯示區(qū)域的端部的輸入。在一些實(shí)施例中,該端部可以是區(qū)域的底部(向下滾動(dòng))或頂部(向上滾動(dòng))。例如,當(dāng)顯示文本列的一部分時(shí),該處理接收向上滾動(dòng)到列的頂部或者向下滾動(dòng)到列的末端的輸入。然后該處理采用文檔的語(yǔ)義重構(gòu)分級(jí)模型(即,文檔對(duì)象模型)將文檔的流中的下一個(gè)區(qū)域自動(dòng)地移動(dòng)(在8415處)到顯示中。如上所述,采用文檔對(duì)象模型,該處理可以識(shí)別出通過(guò)文本的流以及文檔中的相關(guān)聯(lián)圖形。為了繼續(xù)列示例,當(dāng)用戶向下滾動(dòng)經(jīng)過(guò)列的端部時(shí),一些實(shí)施例跳到下一列的頂部。一些實(shí)施例相反將第二列的頂部的文本附于第一列的底部,并且繼續(xù)滾動(dòng),就像文本全都是一列似的。圖85概念性地例示了一些實(shí)施例的用于針對(duì)小屏幕設(shè)備修改語(yǔ)義重構(gòu)文檔的布局的處理8500。如圖所示,該處理接收(在8505處)具有特定布局的語(yǔ)義重構(gòu)文檔。在一些實(shí)施例中,該語(yǔ)義重構(gòu)文檔包括文檔對(duì)象模型,該文檔對(duì)象模型是如以上在第II至VI章中描述的文檔重構(gòu)的結(jié)果。在一些實(shí)施例中的文檔對(duì)象模型包括如以上在第II章中描述的區(qū)圖,其中該區(qū)圖已經(jīng)被在整個(gè)文檔重構(gòu)處理中的內(nèi)容信息所填充。圖86例示了文檔的頁(yè)面8600,就像它在大屏幕上或者沒(méi)有語(yǔ)義重構(gòu)地那樣顯示, 其具有特定兩列布局,其中每列包括若干文本行。頁(yè)面8600上的第一列包括跨六個(gè)完整文本行和部分第七行的字集合8605。處理8500通過(guò)采用文檔的分級(jí)模型(即,文檔對(duì)象模型)修改(在8510處)在保持文檔的流的同時(shí)在小屏幕設(shè)備上瀏覽的布局。該處理在小屏幕設(shè)備上顯示(在8515 處)修改布局的一部分。然后該處理結(jié)束。圖86例示了顯示來(lái)自頁(yè)面8600的第一列的文本8605的小屏幕設(shè)備8610。然而,文本已經(jīng)針對(duì)在小屏幕設(shè)備上的理想瀏覽進(jìn)行了調(diào)整。 不是將文本顯示得非常小以致于用戶不得不瞇眼看,而是增大文本尺寸并且減少每行的字?jǐn)?shù)。在一些實(shí)施例中,向下滾動(dòng)將使得用戶能夠繼續(xù)按順序閱讀文本。在一些實(shí)施例中,文檔的文檔對(duì)象模型包括關(guān)于如何針對(duì)各種情況適應(yīng)性地顯示布局、顯示區(qū)域尺寸以及顯示區(qū)域縱橫比的建議。在一些實(shí)施例中,這些建議可以在文檔重構(gòu)處理期間基于重構(gòu)的結(jié)果生成,可以根據(jù)用戶偏好設(shè)置,或者可以由文檔的初始作者設(shè)置。一些實(shí)施例將重構(gòu)文檔信息(例如,文檔對(duì)象模型)與文檔一起存儲(chǔ),以及可以將這種用戶偏好與重構(gòu)文檔一起存儲(chǔ)。一些實(shí)施例將文檔信息存儲(chǔ)為XML格式,或者作為PDF (或者類似格式)文檔的元數(shù)據(jù)。IX.跨布局對(duì)文本的選擇除了顯示和導(dǎo)航文檔之外,能夠選擇文本可能對(duì)于用戶來(lái)說(shuō)也是非常重要的。具有多個(gè)不同文本流(例如,多個(gè)文章)的復(fù)雜頁(yè)面可能會(huì)對(duì)試圖智能地按順序選擇文本的應(yīng)用制造困難,其中多個(gè)不同文本流繼而又?jǐn)嚅_(kāi)成多個(gè)布局。當(dāng)選擇文本(例如,用于復(fù)制和粘貼)時(shí),保留字符、字、文本行等的順序是關(guān)鍵的。這包括不僅僅在列內(nèi)進(jìn)行選擇,而且
80包括跨多個(gè)列、布局、區(qū)或頁(yè)面進(jìn)行選擇?!?shí)施例提供了用于在語(yǔ)義重構(gòu)文檔中選擇文本的方法。在一些實(shí)施例中,語(yǔ)義重構(gòu)文檔包括文檔對(duì)象模型,該文檔對(duì)象模型是如以上在第II至VI章中描述的文檔重構(gòu)的結(jié)果。在一些實(shí)施例中的文檔對(duì)象模型包括如以上在第II章中描述的區(qū)圖,其中該區(qū)圖已經(jīng)被在整個(gè)文檔重構(gòu)處理中的內(nèi)容信息所填充。一些實(shí)施例的文檔對(duì)象模型包括布局和流信息,例如對(duì)布局內(nèi)的列的閱讀順序以及從一個(gè)布局到下一個(gè)布局的流。圖87概念性地例示了一些實(shí)施例的用于確定對(duì)語(yǔ)義重構(gòu)文檔中的文本的選擇的處理8700。如圖所示,處理8700接收(在8705處)文檔的區(qū)和布局信息。在一些實(shí)施例中,區(qū)信息包括填充有文檔的內(nèi)容的區(qū)圖,如以上在第II章中所描述的。在一些實(shí)施例中, 布局信息包括如以上在第IV章中描述的列和布局,以及通過(guò)布局以及在布局之間閱讀的流。然后該處理顯示(在8710處)文檔的一部分。在一些實(shí)施例中,該文檔在標(biāo)準(zhǔn)屏幕上按照其初始瀏覽尺寸顯示。然而,一些實(shí)施例利用以上在第VIII章中描述的處理之一按照適應(yīng)性方式顯示文檔(例如,如果在小屏幕設(shè)備上顯示文檔的話)。處理8700接收(在8715處)選擇的起始點(diǎn)。該處理還接收(在8720處)選擇的終止點(diǎn)。一些實(shí)施例通過(guò)游標(biāo)控制設(shè)備(例如,鼠標(biāo))、鍵盤或者其組合接收起始點(diǎn)和終止點(diǎn)。例如,可以通過(guò)用戶利用鼠標(biāo)點(diǎn)擊文本中的起始點(diǎn)、保持鼠標(biāo)按鈕向下、拖拽到文本中的終止點(diǎn)并釋放鼠標(biāo)按鈕來(lái)定義選擇。類似的處理可以利用其他游標(biāo)控制設(shè)備執(zhí)行。一些實(shí)施例還允許利用游標(biāo)控制設(shè)備進(jìn)行其他類型的選擇——例如,雙擊以選擇一個(gè)字,或者三擊以選擇一個(gè)文本行。在一些實(shí)施例中,用戶還可以采用鍵盤上的選擇鍵(例如,切換鍵和箭頭鍵)來(lái)選擇語(yǔ)義重構(gòu)文檔中的文本。在拖拽選擇的情況下,一些實(shí)施例將起始點(diǎn)定義為鼠標(biāo)首先點(diǎn)擊的點(diǎn),并在鼠標(biāo)按鈕保持向下時(shí)將終止點(diǎn)定義為游標(biāo)的當(dāng)前點(diǎn),或者在鼠標(biāo)按鈕被釋放時(shí)將終止點(diǎn)定義為鼠標(biāo)按鈕的釋放點(diǎn)。對(duì)于雙擊和三擊或者選擇結(jié)構(gòu)性元素(例如,段落、列等)的其他這種選擇機(jī)制,一些實(shí)施例將起始點(diǎn)定義為結(jié)構(gòu)性元素的界定框的左側(cè)底部并且將終止點(diǎn)定義為其右側(cè)頂部。在一些實(shí)施例中,結(jié)構(gòu)性元素的界定框是該印刷界線并集的界定框。在一些實(shí)施例中,字符的印刷界線從其左側(cè)的錨點(diǎn)延伸到該錨點(diǎn)加右側(cè)的寬度(可能通過(guò)與后面的字符緊排而調(diào)整),并且從錨點(diǎn)上的冒進(jìn)延伸到錨點(diǎn)下面的縮進(jìn)。然后該處理利用文檔的起始點(diǎn)、終止點(diǎn)以及布局和流性質(zhì)確定(在8725處)文本的所選章節(jié)。然后該處理結(jié)束。各種實(shí)施例提供了用于在給定語(yǔ)義重構(gòu)文檔的起始點(diǎn)和終止點(diǎn)的情況下精確地確定從該文檔的哪個(gè)布局選擇哪個(gè)文本的不同具體處理,下面將描述這些處理中的一些。圖88例示了對(duì)語(yǔ)義重構(gòu)文檔的頁(yè)面8801上的文本的選擇的序列8800。頁(yè)面8801 包括兩個(gè)主要的列8805和8810以及頁(yè)面中央的小調(diào)出部8815 (其為不同的布局)。序列 8800也示出了用于選擇的起始點(diǎn)8820和終止點(diǎn)8825。對(duì)從起始點(diǎn)到終止點(diǎn)所得的文本的選擇8830是從起始點(diǎn)到第一列的底部,然后從第二列的頂部直到終止點(diǎn)。在所示實(shí)施例中沒(méi)有選擇中央調(diào)出部8815中的文本。本領(lǐng)域普通技術(shù)人員將認(rèn)識(shí)到,可以改變選擇處理, 使得將中央調(diào)出部8815包括到選擇8830中。圖89概念性地例示了一些實(shí)施例的用于定義對(duì)語(yǔ)義重構(gòu)文檔中的文本的選擇的具體處理8900。如圖所示,處理8900接收(在8905處)文檔的區(qū)和布局信息。在一些實(shí)施例中,區(qū)信息包括填充有文檔的內(nèi)容的區(qū)圖,如以上在第II章中所描述的。在一些實(shí)施例中,布局信息包括如以上在第IV章中描述的列和布局,以及通過(guò)布局以及在布局之間閱讀的流。接著,該處理向文檔中的每個(gè)列分配(在8910處)一個(gè)閱讀順序。一些實(shí)施例在每個(gè)頁(yè)面的閱讀順序?yàn)榱闾庨_(kāi)始(即,將閱讀的第一列被分配以零閱讀順序)。一些實(shí)施例應(yīng)用如下要求,即在特定布局內(nèi),分配給每個(gè)列的閱讀順序必須與布局內(nèi)的列的順序一致, 并且沒(méi)有特定布局之外的列可以具有在特定布局的起始列和終止列的閱讀順序之間的閱讀順序。在一些實(shí)施例中,關(guān)于在閱讀順序上哪個(gè)布局是在前的,判定可以是任意的。其他實(shí)施例基于頁(yè)面的設(shè)計(jì)來(lái)逐布局地辨識(shí)閱讀順序。然后該處理顯示(在8915處)文檔的一部分。在一些實(shí)施例中,該文檔按照其在標(biāo)準(zhǔn)屏幕上的原始瀏覽尺寸顯示。然而,一些實(shí)施例利用以上在第VIII章中描述的處理之一按照適應(yīng)性方式顯示文檔(例如,當(dāng)在小屏幕設(shè)備上顯示文檔的時(shí)候)。然后處理接收(在8920處)文本選擇的起始點(diǎn)和終止點(diǎn)。一些實(shí)施例通過(guò)游標(biāo)控制設(shè)備(例如,鼠標(biāo))、鍵盤或者其組合接收起始點(diǎn)和終止點(diǎn)。例如,可以通過(guò)用戶利用鼠標(biāo)點(diǎn)擊文本中的起始點(diǎn)、保持鼠標(biāo)按鈕向下、拖拽到文本中的終止點(diǎn)并釋放鼠標(biāo)按鈕來(lái)定義選擇??梢岳闷渌螛?biāo)控制設(shè)備執(zhí)行類似的處理。一些實(shí)施例還允許利用游標(biāo)控制設(shè)備進(jìn)行其他類型的選擇——例如,雙擊以選擇一個(gè)字,或者三擊以選擇一個(gè)文本行。在一些實(shí)施例中,用戶還可以采用鍵盤上的選擇鍵(例如,切換鍵和箭頭鍵)來(lái)選擇語(yǔ)義重構(gòu)文檔中的文本。接著,該處理確定(在8925處)起始點(diǎn)和終止點(diǎn)是否在同一布局內(nèi)。當(dāng)起始點(diǎn)和終止點(diǎn)不在同一布局內(nèi)時(shí),該處理將同一布局中的新終止點(diǎn)確定(在8930處)為起始點(diǎn)。 基于用戶可能意外地將選擇設(shè)備移到第二布局中的假設(shè),并且由于與跨布局相比在單個(gè)布局內(nèi)可以更可靠地確定選擇,所以一些實(shí)施例將終止點(diǎn)移動(dòng)到與起始點(diǎn)相同的布局。一些實(shí)施例定義從起始點(diǎn)到終止點(diǎn)的線,并且將該線離開(kāi)起始點(diǎn)的布局的定位定義為新終止點(diǎn)。其他實(shí)施例將終止點(diǎn)水平地或垂直地平移到起始點(diǎn)的布局中。然后該處理確定(在8935處)起始點(diǎn)在閱讀順序中是否是在終止點(diǎn)之前。在一些實(shí)施例中,當(dāng)起始點(diǎn)和終止點(diǎn)處于同一列中時(shí),將閱讀順序確定為使得兩個(gè)點(diǎn)中更高的一個(gè)(并且相同的話,則為最左邊的一個(gè))是閱讀順序中的較早點(diǎn)。當(dāng)起始點(diǎn)在閱讀順序中是在終止點(diǎn)之后時(shí),該處理切換(在8940處)選擇的起始點(diǎn)和終止點(diǎn),使得在閱讀順序中起始點(diǎn)始終早于終止點(diǎn)。接著,處理8900確定(在8945處)起始點(diǎn)和終止點(diǎn)是否在同一列中。當(dāng)兩個(gè)點(diǎn)處于同一列時(shí),該處理選擇(在8950處)該列中從起始點(diǎn)到終止點(diǎn)的文本。然后該處理結(jié)束。否則,當(dāng)兩個(gè)點(diǎn)不在同一列中時(shí),處理選擇(在8955處)從起始點(diǎn)到包括該起始點(diǎn)的列的底部、從包括終止點(diǎn)的列的頂部到終止點(diǎn)以及所有中間列的文本。然后該處理結(jié)束。在一些實(shí)施例中,第一個(gè)選擇的字符是在起始點(diǎn)處或起始點(diǎn)右側(cè)的字符,而最后選擇的字符是在終止點(diǎn)處或者終止點(diǎn)左側(cè)的字符。在一些實(shí)施例中,如果終止點(diǎn)在兩行之間,則選擇以上的所有行并且不選擇下面的行。一旦選擇了文本,該處理結(jié)束。圖90例示了語(yǔ)義重構(gòu)文檔的頁(yè)面9000。頁(yè)面9000包括兩個(gè)主要的列9005和9010以及居中的文本框9015。如圖所示,它們每一個(gè)都被分配以一個(gè)閱讀順序(列9005具有閱讀順序1,列9010具有閱讀順序2,而文本框9015具有閱讀順序3)。圖90還例示了選擇的起始點(diǎn)9020和終止點(diǎn)9025,以及由起始點(diǎn)和終止點(diǎn)定義的線9030。圖91例示了根據(jù)處理8900由起始點(diǎn)9020和終止點(diǎn)9025定義的選擇9100。即使線9030包括文本框9015的一部分,但是由于它是不同的布局,所以根據(jù)處理8900不選擇該文本。相反,選擇9100從起始點(diǎn)直到終止點(diǎn),選擇列9005中起始點(diǎn)下面的所有行,以及列9015中起始點(diǎn)以上的所有行。圖92還例示了頁(yè)面9000,以及不同選擇的起始點(diǎn)9220和終止點(diǎn)9225,和由起始點(diǎn)和終止點(diǎn)定義的線9230。圖93例示了根據(jù)處理8900的一些實(shí)施例由起始點(diǎn)9220和終止點(diǎn)9225定義的選擇9300。由于終止點(diǎn)9225與起始點(diǎn)9220不在同一布局中,所以終止點(diǎn)移動(dòng)到與起始點(diǎn)9220相同的布局中的點(diǎn)。圖93中所示的實(shí)施例繪制了起始點(diǎn)與終止點(diǎn)之間的線,并將終止點(diǎn)移動(dòng)到該線離開(kāi)起始點(diǎn)布局的定位處。選擇9300是終止點(diǎn)9225被移動(dòng)到點(diǎn)9305后的結(jié)果。圖94例示了一些實(shí)施例的用于定義對(duì)語(yǔ)義重構(gòu)文檔中的文本的選擇的另一具體處理9400。一些實(shí)施例實(shí)施處理8900或處理9400。其他實(shí)施例允許用戶選擇(例如,通過(guò)菜單選項(xiàng))采用處理8900 (其將選擇限制到僅一個(gè)布局)還是處理9400 (其允許跨多個(gè)布局進(jìn)行選擇)進(jìn)行文本選擇。如圖所示,處理9400接收(在9405處)文檔的區(qū)和布局信息。在一些實(shí)施例中, 區(qū)信息包括包括填充有文檔的內(nèi)容的區(qū)圖,如以上在第II章中所描述的。在一些實(shí)施例中,布局信息包括如以上在第IV章中描述的列和布局,以及通過(guò)布局以及在布局之間閱讀的流。接著,該處理向文檔中的每個(gè)列分配(在9410處)一個(gè)閱讀順序。一些實(shí)施例在每個(gè)頁(yè)面上的零處開(kāi)始。一些實(shí)施例應(yīng)用如下要求,即在特定布局內(nèi),分配給每個(gè)列的閱讀順序必須與布局內(nèi)的列的順序一致,并且沒(méi)有特定布局之外的列可以具有在特定布局的起始列和終止列的閱讀順序之間的閱讀順序。在一些實(shí)施例中,關(guān)于在閱讀順序上哪個(gè)布局是在前的,判定可以是任意的。其他實(shí)施例試圖基于頁(yè)面的設(shè)計(jì)來(lái)逐布局地辨識(shí)閱讀順序。然后處理9400顯示(在9415處)文檔的一部分。在一些實(shí)施例中,該文檔按照其在標(biāo)準(zhǔn)屏幕上的原始瀏覽尺寸顯示。然而,一些實(shí)施例利用以上在第VIII章中描述的處理之一按照適應(yīng)性方式顯示文檔(例如,如果在小屏幕設(shè)備上顯示文檔的話)。然后處理接收(在9420處)文本選擇的起始點(diǎn)和終止點(diǎn)。一些實(shí)施例通過(guò)游標(biāo)控制設(shè)備(例如,鼠標(biāo))、鍵盤或者其組合接收起始點(diǎn)和終止點(diǎn)。例如,可以通過(guò)用戶利用鼠標(biāo)點(diǎn)擊文本中的起始點(diǎn)、保持鼠標(biāo)按鈕向下、拖拽到文本中的終止點(diǎn)并釋放鼠標(biāo)按鈕來(lái)定義選擇。可以利用其他游標(biāo)控制設(shè)備執(zhí)行類似的處理。一些實(shí)施例還允許利用游標(biāo)控制設(shè)備進(jìn)行其他類型的選擇——例如,雙擊以選擇一個(gè)字,或者三擊以選擇一個(gè)文本行。在一些實(shí)施例中,用戶還可以采用鍵盤上的選擇鍵(例如,切換鍵和箭頭鍵)來(lái)選擇語(yǔ)義重構(gòu)文檔中的文本。然后處理9400定義(在9425處)起始點(diǎn)與終止點(diǎn)之間的線。如果起始點(diǎn)或終止點(diǎn)(或兩者)不在一列中(即,在空白空間、圖形等等中),則處理將新起始點(diǎn)或終止點(diǎn)(或兩者)定義(在9430處)在該線通過(guò)的最后一列的邊緣處。一些實(shí)施例將該點(diǎn)定義在該線通過(guò)邊緣處的列的邊緣處。其他實(shí)施例將起始點(diǎn)或終止點(diǎn)水平地平移到列中以定義新起始點(diǎn)或終止點(diǎn)。然后該處理確定(在9435處)起始點(diǎn)在閱讀順序中是否是在終止點(diǎn)之前。在一些實(shí)施例中,當(dāng)起始點(diǎn)和終止點(diǎn)處在同一列中時(shí),閱讀順序被確定為使得兩個(gè)點(diǎn)中更高的一個(gè)(并且相同的話,則為最左邊的一個(gè))是閱讀順序中的較早點(diǎn)。當(dāng)起始點(diǎn)是在終止點(diǎn)之前時(shí),該處理前進(jìn)到下面描述的9445。當(dāng)起始點(diǎn)在閱讀順序中是在終止點(diǎn)之后時(shí),該處理切換(在9440處)選擇的起始點(diǎn)和終止點(diǎn),使得在閱讀順序中起始點(diǎn)始終早于終止點(diǎn)。接著,該處理選擇(在9445處)從起始點(diǎn)到包括該起始點(diǎn)的列的末端、從包括終止點(diǎn)的列的開(kāi)頭到終止點(diǎn)以及閱讀順序中在起始列與終止列之間的所有列的文本。然后該處理結(jié)束。在一些實(shí)施例中,第一個(gè)選擇的字符是在起始點(diǎn)處或起始點(diǎn)右側(cè)的字符,而最后選擇的字符是在終止點(diǎn)處或者終止點(diǎn)左側(cè)的字符。在一些實(shí)施例中,如果終止點(diǎn)在兩行之間,則選擇以上的所有行并且不選擇下面的行。圖95例示了根據(jù)處理9400由起始點(diǎn)9020和終止點(diǎn)9025 (在圖90的頁(yè)面9000 上)定義的選擇9500。因?yàn)槠鹗键c(diǎn)9020與終止點(diǎn)9025(圖90中所示)處在同一布局中, 所以由于居中文本框9015在閱讀順序中處在終止點(diǎn)的列之后,故而不選擇該居中文本框 9015。用戶沿著線9015拖拽時(shí)將通過(guò)框9015,并且此時(shí)將選擇所有列9010和部分文本框 9015 (參照以下圖96)。然而,在光標(biāo)離開(kāi)框9015時(shí),將僅選擇列9010的一部分直到游標(biāo)的位置(終止點(diǎn))。類似地,圖96例示了根據(jù)處理9400由起始點(diǎn)9220和終止點(diǎn)9225 (在圖92的頁(yè)面9000上)定義的選擇9600。由于終止點(diǎn)9225處于與起始點(diǎn)9220不同的布局中,所以選擇起始點(diǎn)的整個(gè)布局,包括列9005的大部分以及列9010的全部。另外,選擇框9015中的文本直到終止點(diǎn)9225。圖91和93以及圖95和96例示了通過(guò)利用處理8900或處理9400可獲得的不同選擇選項(xiàng)。本領(lǐng)域普通技術(shù)人員將認(rèn)識(shí)到,可以采用其他選擇處理,以利用文檔的布局和流來(lái)達(dá)到其他可能的有益結(jié)果。X.高效集群分析如以上在各章節(jié)中所述,本發(fā)明一些實(shí)施例采用集群分析來(lái)執(zhí)行文檔重構(gòu)。例如, 利用密度集群識(shí)別對(duì)準(zhǔn)導(dǎo)引,利用界線集群識(shí)別連結(jié)圖,以及利用字符之間的間隔來(lái)采用差值集群以識(shí)別字和段間隔。然而,集群分析可能是非常存儲(chǔ)密集的,使得資源受限的設(shè)備 (例如,蜂窩式電話或媒體播放器)可能難以執(zhí)行集群分析。因此,本發(fā)明的一些實(shí)施例提供了用于執(zhí)行高效集群分析的方法。在一些實(shí)施例中,高效集群分析使得能夠在資源受限設(shè)備(例如,手持式設(shè)備)上執(zhí)行集群分析。資源受限設(shè)備可能在可用存儲(chǔ)器、處理能力以及兩者或者其他計(jì)算資源方面受限。在一些實(shí)施例中,集群分析采用存儲(chǔ)未排序陣列的索引的間接排序陣列。一些實(shí)施例采用間接排序陣列來(lái)同時(shí)以多個(gè)不同的距離尺度分隔數(shù)據(jù),以更快速地找到數(shù)據(jù)的最優(yōu)分隔,而不是在每個(gè)不同的距離尺度處重復(fù)集群分析并比較結(jié)果。圖97概念性地例示了一些實(shí)施例的用于采用集群分析來(lái)語(yǔ)義地重構(gòu)文檔的處理 9700。如圖所示,處理9700在資源受限設(shè)備上接收(在9705處)文檔。在一些實(shí)施例中, 該設(shè)備是媒體播放器、蜂窩式電話(例如,iPhone )或者其他手持式設(shè)備。在一些實(shí)施例中,該文檔是不包括結(jié)構(gòu)性信息的矢量圖形文檔。然后該處理在資源受限設(shè)備上對(duì)文檔數(shù)據(jù)執(zhí)行(在9710處)高效集群分析。例如,一些實(shí)施例執(zhí)行差值集群來(lái)識(shí)別字和段間隔,執(zhí)行密度集群來(lái)識(shí)別對(duì)準(zhǔn)導(dǎo)引,以及執(zhí)行界線集群來(lái)識(shí)別復(fù)合圖形。最后,該處理基于集群分析的結(jié)果在資源受限設(shè)備上語(yǔ)義地重構(gòu)(在9715處)文檔。然后該處理結(jié)束。圖98例示了一些實(shí)施例的在資源受限設(shè)備9810上語(yǔ)義地重構(gòu)文檔 9805的序列9800。文檔9805初始地被解析(在9801處)成具有坐標(biāo)的字符集合9815。 例如,字符9820( “r”)具有坐標(biāo)(X25Y2)0 一些實(shí)施例還解析圖形對(duì)象(例如,圖像、形狀,等等。接著,對(duì)文檔數(shù)據(jù)應(yīng)用(在9802處)高效集群分析。在一些實(shí)施例中,這包括采用差值集群來(lái)識(shí)別字、采用密度集群來(lái)識(shí)別導(dǎo)引以及采用界線集群來(lái)識(shí)別要連結(jié)的圖。也執(zhí)行其他重構(gòu)處理(在9803處)。例如,在一些實(shí)施例中,識(shí)別段落和列。本領(lǐng)域普通技術(shù)人員將認(rèn)識(shí)到,在一些實(shí)施例中集群分析處理和其他重構(gòu)處理不必按它們執(zhí)行的順序分開(kāi)。高效集群分析和其他重構(gòu)處理的結(jié)果是可以顯示、導(dǎo)航等的語(yǔ)義重構(gòu)文檔9825。A.作為運(yùn)算符集的集群分析一些實(shí)施例基于應(yīng)用于實(shí)數(shù)序列Ov r2,…,rN)的若干運(yùn)算符來(lái)執(zhí)行集群分析 (無(wú)論是差值集群、密度集群還是界線集群)。一些實(shí)施例包括如下運(yùn)算符 求差值運(yùn)算符 D((ri,r2,-,rN)) = ^2TijT3T2,…,I^-Iv1)。在一些實(shí)施例中,求差值運(yùn)算符D定義了元素ι·Ν的成對(duì)分組(即,定義對(duì)值{r2,ri},{r3,r2},等等)。 排序運(yùn)算符 S((r1; r2,-,rN)) = (si; s2,…,,其中(s1; &,...,sN)是(r1; r2,…,rN)的排列,使得S1 ( s2 sNO參分隔運(yùn)算符P(g,(ri;r2, -,rN)) = ((r1 ...,rK1),(rK1+1,-,rK2), ...,(rKp+1,..., rH), (rH+1,…,ι·Ν),其中當(dāng)且僅當(dāng)J是在集合IK1,…Km)中時(shí)有巧+1-巧彡g。在一些實(shí)施例中,變量g被稱為間隔最小值,而運(yùn)算符P將序列Ovr2,…,ι·Ν)分隔成非交疊子序列, 其中任何地方兩個(gè)子序列值之間的差值超過(guò)間隔最小值。 聯(lián)合(coalesce)運(yùn)算符C,其任意次數(shù)遞歸地對(duì)分隔的序列(例如,運(yùn)算符P的輸出)進(jìn)行運(yùn)算,以將相鄰對(duì)子序列連結(jié)成單個(gè)子序列。在一些實(shí)施例中,確定何時(shí)連結(jié)相鄰對(duì)的測(cè)試是域獨(dú)立的。 過(guò)濾運(yùn)算符F,其基于域獨(dú)立的測(cè)試在分隔的序列上運(yùn)算以移除一些集群。以上在第III章中討論的密度約束是采用F的例示。一些實(shí)施例的差值集群是關(guān)于以上運(yùn)算符執(zhí)行的。類似地,因?yàn)榻缇€集群采用展度值替代一階差值來(lái)采用差值集群,所以一些實(shí)施例的界線集群是關(guān)于以上運(yùn)算符執(zhí)行的。例如,一些實(shí)施例將排序運(yùn)算符S應(yīng)用于輸入數(shù)據(jù),隨后應(yīng)用差值運(yùn)算符D以生成一階差值。S和D然后被應(yīng)用于結(jié)果數(shù)據(jù)以生成二階差值(差值之間的差值)。利用S對(duì)二階差值排序,然后將二階差值拆分成兩個(gè)不連結(jié)子序列(級(jí)別內(nèi)差值和更大的級(jí)別間差值)。在一些實(shí)施例中,拆分包括對(duì)二階差值進(jìn)一步應(yīng)用D,以獲得三階差值,隨后應(yīng)用 S以排序三階差值。對(duì)二階差值的拆分通常發(fā)生在有一個(gè)三階差值顯著大于其他三階差值
85的情況下。一些實(shí)施例還評(píng)估域特定因子。一旦建立了拆分,一些實(shí)施例采用等于最小級(jí)別間第二差值的間隔最小值來(lái)應(yīng)用 P,以分隔有序一階差值,使得每個(gè)分隔表示一級(jí)集群。一些實(shí)施例對(duì)該分隔應(yīng)用C,而一些實(shí)施例不這樣做。為了將數(shù)據(jù)分隔成特定級(jí)別的集群,一些實(shí)施例采用等于特定級(jí)別處的最小差值的間隔最小值來(lái)對(duì)(排序的)輸入數(shù)據(jù)應(yīng)用P。一些實(shí)施例此時(shí)還應(yīng)用C,但是通常采用與級(jí)別分隔不同的準(zhǔn)則來(lái)聯(lián)合集群分隔。最后,一些實(shí)施例應(yīng)用F來(lái)取消一些集群。還關(guān)于以上運(yùn)算符來(lái)執(zhí)行一些實(shí)施例的密度集群。例如,一些實(shí)施例對(duì)輸入數(shù)據(jù)應(yīng)用S,隨后應(yīng)用D,以生成一階差值,并且應(yīng)用S以排序差值。對(duì)于每個(gè)差值d,一些實(shí)施例采用間隔最小值d利用運(yùn)算符P來(lái)分隔有序輸入數(shù)據(jù),然后利用密度約束來(lái)過(guò)濾分隔。通過(guò)優(yōu)化度量來(lái)測(cè)量每個(gè)過(guò)濾后的分隔,并且將最優(yōu)分隔選擇為最終集群。一些實(shí)施例環(huán)繞通過(guò)一階差值(作為間隔最小值),其從排序序列中最大的值開(kāi)始并移動(dòng)到依次較小的值。在一些實(shí)施例中,如果有足夠的信息,則為了效率可以早點(diǎn)結(jié)束該環(huán)繞。具體而言,一些實(shí)施例識(shí)別到每個(gè)連續(xù)分隔將是一個(gè)集群被拆分成兩個(gè)集群的先前分隔。一些實(shí)施例還識(shí)別出,不滿足最小尺寸密度約束的集群未來(lái)將始終不滿足這種約束,因此這些集群可以被丟棄。在一些實(shí)施例中,一旦分隔中的所有集群都落到最小尺寸之下,則較早地結(jié)束該環(huán)繞。B.用于集群分析的高效數(shù)據(jù)結(jié)構(gòu)一些實(shí)施例通過(guò)采用高效數(shù)據(jù)結(jié)構(gòu)來(lái)執(zhí)行高效集群分析,所述數(shù)據(jù)結(jié)構(gòu)允許節(jié)省存儲(chǔ)器和處理。例如,當(dāng)排序數(shù)據(jù)(例如,對(duì)輸入數(shù)據(jù)應(yīng)用運(yùn)算符幻時(shí),不是生成數(shù)據(jù)的新陣列,一些實(shí)施例而是將索引陣列定義到未排序數(shù)據(jù)的陣列中,其中索引按照它們引用的值的順序排序。在一些實(shí)施例中,這被稱作間接排序陣列。本領(lǐng)域普通技術(shù)人員將理解,盡管示例采用陣列,但是也可以采用任何其他適合的數(shù)據(jù)結(jié)構(gòu)。圖99概念性地例示了一些實(shí)施例的用于通過(guò)采用間接排序陣列分隔數(shù)據(jù)集的處理9900。將結(jié)合圖100來(lái)描述處理9900。圖100例示了對(duì)具有九個(gè)數(shù)據(jù)項(xiàng)(0. 00,7. 43, 17. 14,25. 46,26. 60,30. 35,34. 25,39 和 46. 97)的數(shù)據(jù)集的分隔。如圖 99 所示,處理 9900 接收(在9905處)具有要集群的數(shù)據(jù)值的排序陣列A。在一些實(shí)施例中,該數(shù)據(jù)是用于識(shí)別文檔中的字或識(shí)別對(duì)準(zhǔn)導(dǎo)引的字符定位數(shù)據(jù)。參照?qǐng)D100,利用索引A
-A[8],將數(shù)據(jù)集存儲(chǔ)在排序陣列A 10010中。接著,處理9900接著通過(guò)比較陣列A的后續(xù)值對(duì)來(lái)定義和存儲(chǔ)(在9910處)陣列 A的一階差值的陣列D(A)。在一些實(shí)施例中,通過(guò)采用以上在第A節(jié)中描述的運(yùn)算符D來(lái)生成陣列D(A)。圖100例示了存儲(chǔ)數(shù)據(jù)之間的一階差值的陣列D 10015。例如,索引D[3] 中的值是從陣列A 10010的索引A[4]中的值中減去索引A[3]中的值。接著,該處理通過(guò)對(duì)陣列D(A)應(yīng)用排序函數(shù)來(lái)定義并存儲(chǔ)(在9915處)D (A)的索引的間接排序陣列S(D(A))。在一些實(shí)施例中,排序函數(shù)是以上在第A節(jié)中描述的運(yùn)算符S。圖100例示了對(duì)陣列D 10015的值排序的間接排序陣列S(D) 10020。陣列10020中的第一個(gè)值(“3”)引用陣列D 10015中的索引3,這是最小的一階差值(“1. 14”)。陣列 10020中的第二個(gè)值引用陣列D 10015中的索引4,這是第二小的一階差值,依此類推。然后該處理確定(在9920處)要用在分隔數(shù)據(jù)中的集群之間的間隔的最小尺寸。 在一些實(shí)施例中,這是與以上在第A節(jié)中描述的分隔運(yùn)算符P—起使用的間隔最小值g。最小間隔尺寸在一些實(shí)施例中是由用戶規(guī)定的,或者在其他實(shí)施例中是要求解的問(wèn)題固有的值。一些實(shí)施例采用多個(gè)分隔(例如,在密度集群的情況下),使得采用基于數(shù)據(jù)的不同間隔最小值。接著,處理9900利用存儲(chǔ)在陣列S (D(A))中的連續(xù)索引將數(shù)據(jù)分隔(在9925處) 成集群。然后該處理存儲(chǔ)(在9930處)該分隔。然后該處理結(jié)束。一些實(shí)施例采用存儲(chǔ)在間接排序陣列中的索引來(lái)分隔數(shù)據(jù)。在一些實(shí)施例中,存儲(chǔ)在S (D(A))中與大于間隔最小值(即,有效間隔最小值)的最小一階差值相對(duì)應(yīng)的索引將與排序數(shù)據(jù)陣列中的如下索引相對(duì)應(yīng),在該索引之后數(shù)據(jù)應(yīng)被拆分。存儲(chǔ)在陣列S(D(A))中的在有效間隔最小值之后的所有索引還將指示在哪里拆分排序數(shù)據(jù),這是因?yàn)樗鼈兇泶笥陂g隔最小值的間隔。圖100例示了本例中的有效間隔最小值為7. 97,這是在陣列D 10015中的索引7 中。因此,數(shù)據(jù)的分隔10025具有四個(gè)集群,因?yàn)樗谌齻€(gè)地方被拆分(在索引7、2和1之后)。一些實(shí)施例將分隔存儲(chǔ)為陣列S (D(A))的單個(gè)索引。分隔10025被存儲(chǔ)為索引10030, 該索引10030具有為5的值。這指示與有效間隔最小值相對(duì)應(yīng)的索引被存儲(chǔ)在陣列10020 的索引5處,并由此將分隔數(shù)據(jù)的索引存儲(chǔ)在陣列10020的索引5及以上處。以上處理9900使得能夠針對(duì)集群分析有多個(gè)處理和存儲(chǔ)器效率。首先,存儲(chǔ)索引 (其為整數(shù))而非差值排序陣列中實(shí)際數(shù)據(jù)的十進(jìn)制值節(jié)省了存儲(chǔ)器空間。其次,代替實(shí)際地將分隔存儲(chǔ)為多個(gè)分立陣列,它被存儲(chǔ)為引用間接索引陣列的索引的單個(gè)整數(shù)值,這在針對(duì)大的數(shù)據(jù)陣列要評(píng)估眾多分隔時(shí)可以帶來(lái)顯著的存儲(chǔ)器節(jié)省。第三,可以從間接排序陣列快速地讀出用以分隔數(shù)據(jù)的索引,這顯著地節(jié)省了處理時(shí)間。可以按照多種方式來(lái)平衡這些效率從而執(zhí)行集群分析。圖101概念性地例示了一些實(shí)施例的用于同時(shí)以多個(gè)距離尺度執(zhí)行集群分析的處理10100。在一些實(shí)施例中,處理 10100利用處理9900提供的效率。如圖所示,處理10100定義(在10105處)要集群的數(shù)據(jù)值的差值的間接排序陣列。這是諸如圖100的陣列10020的陣列,并且在一些實(shí)施例中通過(guò)排序輸入數(shù)據(jù)值、取一階差值然后對(duì)它們進(jìn)行排序來(lái)獲得。然后處理10100同時(shí)以若干不同距離尺度分隔(在10110處)數(shù)據(jù)值。在一些實(shí)施例中,這意味著采用不同的間隔最小值針對(duì)數(shù)據(jù)生成多個(gè)分隔。例如,在密度集群的情況下,在一些實(shí)施例中生成每個(gè)可能的分隔。在一些實(shí)施例中,由于利用間接排序陣列來(lái)排序一階差值,所以數(shù)據(jù)的分隔定位可以被快速地讀出為存儲(chǔ)在間接排序陣列中的索引。接著,該處理將每個(gè)分隔存儲(chǔ)(在10115處)為引用間接排序陣列的索引的整數(shù)值。圖100的整數(shù)值10030是將分隔存儲(chǔ)為單個(gè)整數(shù)值的示例。然后該處理確定(在10120 處)最優(yōu)距離尺度(以及由此確定最優(yōu)分隔)。例如,一些實(shí)施例采用優(yōu)化量度,例如以上在第III章中針對(duì)密度集群所描述的。此外,一些實(shí)施例通過(guò)在相對(duì)于優(yōu)化量度測(cè)試分隔之前采用約束來(lái)消除分隔中的一些集群。最后,一旦確定了最優(yōu)距離尺度,該處理將從最優(yōu)距離尺度得到的數(shù)據(jù)的分隔存儲(chǔ)(在10125處)為要求解的問(wèn)題的集群集合。然后該處理結(jié)束。在一些實(shí)施例中,一旦確定了該集群集合為最優(yōu)集合,則將該集群集合存儲(chǔ)為新的陣列。盡管以上描述指示針對(duì)重復(fù)采用分隔運(yùn)算符而得到的效率,但是針對(duì)其他方面的集群分析也可應(yīng)用來(lái)自間接排序陣列和將分隔存儲(chǔ)為單個(gè)值的存儲(chǔ)器和處理效率。例如, 在一些實(shí)施例中,聯(lián)合運(yùn)算符可以利用相同的效率。
如上所述,一些實(shí)施例的聯(lián)合運(yùn)算符C可能重復(fù)地連結(jié)分隔中的相鄰集群。對(duì)相鄰集群的連結(jié)可以被表示為移除分隔中的拆分。因?yàn)槊總€(gè)這些拆分對(duì)應(yīng)于間接排序陣列中連續(xù)索引之一,所以聯(lián)合集群可以被定義為從序列中取消特定索引。因此,對(duì)分隔應(yīng)用聯(lián)合運(yùn)算符的結(jié)果可以是適合索引(即,拆分新分隔的索引)的序列(例如,陣列)。在一些實(shí)施例中,排序這種子序列要比在要聯(lián)合的集群中直接在數(shù)據(jù)周圍移動(dòng)快得多。此外,差值的聯(lián)合集群(其有效地是多級(jí)別差值的組合)沒(méi)有不利地影響針對(duì)特定選擇的級(jí)別可以快速地讀出數(shù)據(jù)集群(與差值集群不同)的效率。即使在聯(lián)合差值集群之后,第L個(gè)間接排序差值集群及以上的索引是針對(duì)級(jí)別L處的數(shù)據(jù)集群的拆分點(diǎn)。由于聯(lián)合造成的變化是將有更少的間接排序二階差值,該二階差值確定每個(gè)間接排序一階差值集群從哪里開(kāi)始。由于僅針對(duì)數(shù)據(jù)集群(而非針對(duì)差值集群)應(yīng)用過(guò)濾運(yùn)算符(其基于約束消除了數(shù)據(jù)的集群),所以當(dāng)應(yīng)用過(guò)濾運(yùn)算符時(shí)已經(jīng)確定數(shù)據(jù)集群,由此這不會(huì)干擾在以上實(shí)施分隔和聯(lián)合運(yùn)算符的過(guò)程實(shí)現(xiàn)的效率。還可以在于如以上在第IV章中描述的差值集群中執(zhí)行的將二階差值拆分為級(jí)別內(nèi)和級(jí)別間二階差值中實(shí)現(xiàn)效率。在一些實(shí)施例中,用于確定拆分點(diǎn)的條件可以取決于對(duì)將得到的一階差值和數(shù)據(jù)的集群。由此,對(duì)這些條件的評(píng)估將直接受益于確定對(duì)差值的分隔(并由此對(duì)數(shù)據(jù)的分隔)中的效率。例如,在差值集群應(yīng)用到文檔重構(gòu)的情況下,采用對(duì)二階差值的拆分來(lái)確定文本行中的字中斷和段中斷(例如,列、制表位等間隔),其對(duì)應(yīng)于一階差值并分別大于一階差值。在一些實(shí)施例中,目的在于拆分二階差值,使得一階差值的第二集群的最小值沒(méi)有比可應(yīng)用字體的期望間距字符寬度小很多。此外,次要目的將是,數(shù)據(jù)集群(其中每一個(gè)是一個(gè)字)具有針對(duì)可應(yīng)用語(yǔ)言中的字來(lái)說(shuō)典型的平均尺寸。潛在的拆分點(diǎn)可以取決于一階差值的所得集群和數(shù)據(jù)集群與它們的期望值相距有多遠(yuǎn)而被評(píng)估為相對(duì)較低。在一些實(shí)施例中,在確定最優(yōu)拆分點(diǎn)的原則下,這種評(píng)估可以與直接應(yīng)用于二階差值的其他量度(例如, 拆分的相對(duì)尺寸、拆分位置的百分?jǐn)?shù)以及在拆分處的百分比增大量)相結(jié)合??梢酝ㄟ^(guò)以上描述的處理顯著更高效地重復(fù)測(cè)試二階差值中的不同拆分。本領(lǐng)域普通技術(shù)人員將認(rèn)識(shí)到,盡管已經(jīng)主要關(guān)于在文檔重構(gòu)中的使用描述了以上所述的集群分析和特定效率技術(shù),但是它們也可以應(yīng)用于如下任何問(wèn)題,即其中有集合、 集合的元素對(duì)上的距離函數(shù)以及對(duì)識(shí)別由相對(duì)于集合較小的距離分開(kāi)的元素的子集的需要。例如,可以應(yīng)用集群分析,以通過(guò)集群由測(cè)量眼睛移動(dòng)、鼠標(biāo)移動(dòng)或者觸摸屏交互所獲得的位置數(shù)據(jù),來(lái)分析與應(yīng)用、網(wǎng)頁(yè)或視頻的用戶交互。作為另一示例,可以通過(guò)減小用于解碼柵格圖像(即,位圖)的顏色個(gè)數(shù)來(lái)壓縮該柵格圖像。集群分析還可以用于原始的顏色集合,以選擇減小的顏色集合,使得利用單個(gè)顏色(通常等于其成員的平均值)替代每個(gè)顏色集群。另一個(gè)示例是一些圖像識(shí)別技術(shù)(例如,生物測(cè)量學(xué)、光學(xué)字符識(shí)別、貨幣驗(yàn)證, 等等)以及柵格圖像的矢量化取決于對(duì)由空間和顏色坐標(biāo)軸定義的度量空間中的像素的集群。作為最后的示例,通常通過(guò)在軸為感興趣參數(shù)的空間中繪制數(shù)據(jù)點(diǎn)來(lái)找到實(shí)驗(yàn)數(shù)據(jù) (例如,科學(xué)數(shù)據(jù)或商業(yè)數(shù)據(jù))中的模式。集群分析可以應(yīng)用于該數(shù)據(jù),注意給定集群中的所有點(diǎn)具有所有感興趣參數(shù)的大致相同的值。C.軟件架構(gòu)
在一些實(shí)施例中,將以上描述的集群分析實(shí)施為在特定機(jī)器(例如,計(jì)算機(jī)、媒體播放器、蜂窩式電話(例如,iPhone )或者其他手持式或資源受限設(shè)備)上運(yùn)行(或者存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)上)的軟件。圖102概念性地例示了一些實(shí)施例的用于執(zhí)行集群分析的集群分析應(yīng)用10200的軟件架構(gòu)。在一些實(shí)施例中,應(yīng)用是獨(dú)立應(yīng)用或者集成到另一應(yīng)用(例如,文檔重構(gòu)應(yīng)用)中,而在其他實(shí)施例中,應(yīng)用可能是在操作系統(tǒng)內(nèi)實(shí)現(xiàn)的。集群分析應(yīng)用10200包括密度集群模塊10205、差值集群模塊10210以及界線集群模塊10215。該應(yīng)用還包括排序模塊10220、求差值模塊10225、分隔模塊10230、聯(lián)合模塊 10235以及過(guò)濾模塊10240還有集群分析存儲(chǔ)設(shè)備10M5。圖102還例示了文檔內(nèi)容10250。本領(lǐng)域普通技術(shù)人員將認(rèn)識(shí)到,集群分析應(yīng)用 10200還可以用于采用集群分析的其他處理,其與文檔重構(gòu)無(wú)關(guān)。密度集群模塊10205、求差值集群模塊10210以及界線集群模塊10215都接收來(lái)自文檔內(nèi)容10250的信息(例如,本原元素位置數(shù)據(jù))。密度集群模塊10205部分地通過(guò)利用模塊10220至10240執(zhí)行如以上在第III章中描述的密度集群。差值集群模塊10210部分地通過(guò)利用模塊10220至10240來(lái)執(zhí)行如以上在第IV章中描述的差值集群。界線集群模塊10215部分地通過(guò)利用模塊10220 至10240來(lái)執(zhí)行如以上在第VI章中描述的界線集群。模塊10205至10215的輸出被返回到文檔內(nèi)容10250。在一些實(shí)施例中,五個(gè)模塊10220至10240執(zhí)行與以上在第A節(jié)中描述的五個(gè)運(yùn)算符相關(guān)聯(lián)的操作。一些實(shí)施例的排序模塊10220從模塊10205至10215之一接收數(shù)據(jù), 并對(duì)該數(shù)據(jù)進(jìn)行排序(例如,從最低值到最高值)。一些實(shí)施例的求差值模塊10225從模塊10205至10215之一接收數(shù)據(jù),并確定相鄰條數(shù)據(jù)之間的差值。一些實(shí)施例的分隔模塊 10235從模塊10205至10215之一接收數(shù)據(jù),并將該數(shù)據(jù)分隔成多個(gè)子集。一些實(shí)施例的聯(lián)合模塊10235從模塊10205至10215之一接收數(shù)據(jù)作為多個(gè)子集,并根據(jù)各種條件連結(jié)相鄰子集。一些實(shí)施例的過(guò)濾模塊10240在一些實(shí)施例中接收數(shù)據(jù)的分隔序列,并基于各種約束來(lái)濾除分隔。模塊10220至10240將數(shù)據(jù)存儲(chǔ)在集群分析存儲(chǔ)設(shè)備10M5中,以及將數(shù)據(jù)傳遞回到模塊10205至10215。在一些實(shí)施例中,排序模塊10220將其結(jié)果存儲(chǔ)在集群分析存儲(chǔ)設(shè)備10M5中作為索引的排序陣列(即,間接排序陣列)。在一些實(shí)施例中,分隔模塊將分隔存儲(chǔ)在集群分析存儲(chǔ)設(shè)備10M5中作為引用間接排序陣列中的索引的單個(gè)整數(shù)值。XI.用于解析和分析文檔的高效數(shù)據(jù)結(jié)構(gòu)本發(fā)明的一些實(shí)施例提供了使得能夠更高效地解析和分析文檔的新穎方法和數(shù)據(jù)結(jié)構(gòu)。一些實(shí)施例提供了應(yīng)用編程接口(API),該API在操縱數(shù)據(jù)時(shí)最小化對(duì)數(shù)據(jù)的冗余復(fù)制。在一些實(shí)施例中,API是操作系統(tǒng)、庫(kù)、服務(wù)或者框架提供用以支持計(jì)算機(jī)軟件作出的請(qǐng)求的函數(shù)、過(guò)程、方法、類或協(xié)議的集合。在一些實(shí)施例中API是靜態(tài)鏈接的,而在其他實(shí)施例中API是動(dòng)態(tài)鏈接的。通常,API返回對(duì)內(nèi)部數(shù)據(jù)的復(fù)制,或者給出對(duì)內(nèi)部數(shù)據(jù)的只讀訪問(wèn),該內(nèi)部數(shù)據(jù)在按照任何方式被操縱之前必須被復(fù)制。這生成了很多層冗余數(shù)據(jù),從而減慢了處理并消耗多余存儲(chǔ)器。一些實(shí)施例通過(guò)如下方式來(lái)解決這一問(wèn)題,即,將對(duì)象與它們的數(shù)據(jù)去耦合,使得在關(guān)于性能和存儲(chǔ)器消耗作出最優(yōu)數(shù)據(jù)結(jié)構(gòu)的同時(shí)針對(duì)程序員作出最優(yōu)對(duì)象API。 一些實(shí)施例采用這種API來(lái)如以上在第II至X章中描述地重構(gòu)文檔。然而,本領(lǐng)域普通技術(shù)人員將認(rèn)識(shí)到,這種API可以用于對(duì)解析輸入數(shù)據(jù)的任何類型的分析。一些實(shí)施例提供了如下的API,該API呈現(xiàn)給用戶(例如,采用API的程序員或軟件應(yīng)用),就像該用戶具有其自己的API的類成員的獨(dú)立、可修改副本,且沒(méi)有明確限制。換言之,它呈現(xiàn)給用戶,就像用戶可以完全修改通過(guò)API返回的任何對(duì)象。然而,在一些實(shí)施例中,對(duì)象在絕對(duì)必要時(shí)將實(shí)際上僅僅復(fù)制它們自己,并且在大部分情況下將按照最小化實(shí)際上所使用的存儲(chǔ)器量的方式來(lái)管理存儲(chǔ)器。一些實(shí)施例的存儲(chǔ)器管理是通過(guò)采用具有共享存儲(chǔ)器對(duì)象(其追蹤其他對(duì)象對(duì)指示符的使用)的指示符的排序陣列來(lái)實(shí)現(xiàn)的。在一些實(shí)施例中,眾多對(duì)象能夠全部應(yīng)用通過(guò)共享存儲(chǔ)器對(duì)象的同一指示符陣列,從而使得與在每個(gè)分析階段復(fù)制數(shù)據(jù)相比能夠顯著地節(jié)省存儲(chǔ)器。本領(lǐng)域普通技術(shù)人員將認(rèn)識(shí)到,盡管采用指示符來(lái)描述下面的特定特征,但是也可以采用任何類型的引用數(shù)據(jù)結(jié)構(gòu)。A.具有共享指示符的文檔重構(gòu)一些實(shí)施例采用諸如以上描述的API來(lái)重構(gòu)文檔。圖103概念性地例示了一些實(shí)施例的用于高效地重構(gòu)文檔的處理10300。將結(jié)合圖104來(lái)描述處理10300。圖104例示了文檔10400根據(jù)處理10300被解析和分析的序列。如圖103所示,處理10300接收(在10305處)文檔的一部分。在一些實(shí)施例中, 文檔部分是頁(yè)面,并且該處理逐頁(yè)面地操作。在其他實(shí)施例中,該文檔部分是整個(gè)文檔、文檔的章節(jié)或頁(yè)面上的區(qū)。然后該處理解析(在10310處)文檔,以確定文檔部分中的字符, 并且存儲(chǔ)(在10315處)解析數(shù)據(jù)的字符陣列。圖104例示了文檔10400被解析為字符的隨機(jī)排序陣列10405。盡管這些示例采用陣列,但是本領(lǐng)域普通技術(shù)人員將理解,可以采用任何其他適合的數(shù)據(jù)結(jié)構(gòu)。在一些實(shí)施例中,解析文檔包括讀取表示文檔的字節(jié)流,并且將該字節(jié)流轉(zhuǎn)換成對(duì)流中的信息的可用表示(例如,字符陣列)。在一些實(shí)施例中,按照隨機(jī)順序讀取流中的字符,這是陣列10405 的順序是隨機(jī)的原因。一些實(shí)施例的字符具有坐標(biāo)和/或頁(yè)面號(hào)。在一些實(shí)施例中,每個(gè)字符被存儲(chǔ)為包括相關(guān)聯(lián)的坐標(biāo)或頁(yè)面號(hào)值的對(duì)象。處理10300定義(在10320處)用以排序文檔部分的字符的排序指示符陣列。在一些實(shí)施例中,頁(yè)面的字符以從上到下的初級(jí)排序以及從左到右的次級(jí)排序來(lái)排序。一些實(shí)施例首先按頁(yè)面將多個(gè)頁(yè)面存儲(chǔ)在字符陣列排序中。圖104例示了針對(duì)排序字符定義的指示符陣列10410。第一個(gè)指示符10411指向陣列10405中的字母“L”,第二個(gè)指示符10412 指向字母“0”,依此類推。在一些實(shí)施例中,定義對(duì)初始字符陣列的指示符陣列而不是定義和存儲(chǔ)單獨(dú)的新陣列會(huì)節(jié)省存儲(chǔ)器。接著,該處理接收(在10325處)操縱串對(duì)象的指令。一些實(shí)施例將串對(duì)象定義為對(duì)指示符有序陣列中的定位的指示符和串中有多少字符的計(jì)數(shù)。例如,整個(gè)頁(yè)面的串對(duì)象將指向有序指示符陣列(最左上的字符)中的第一個(gè)指示符,并給出頁(yè)面上的字符個(gè)數(shù)的計(jì)數(shù)。 在一些實(shí)施例中,指令包括拆分串、連結(jié)串、添加字符、移除字符和重新排序字符。 在一些實(shí)施例中,這些操作被調(diào)用為如以上在第II至X章中描述的重構(gòu)文檔和采用重構(gòu)文檔的處理的一部分。例如,在一些情況下,當(dāng)合并行時(shí),必須修改字符的順序。當(dāng)定義區(qū)時(shí), 一些實(shí)施例定義每個(gè)區(qū)的串,這在很多情況下包括拆分串、連結(jié)串或者兩者都有。
在接收了指令之后,該處理確定(在10330處)是否可以僅采用已經(jīng)分配的指示符(例如,在10320處定義的排序的指示符陣列)來(lái)執(zhí)行指令。在一些實(shí)施例中,拆分串包括僅采用已經(jīng)分配的指示符。在文檔重構(gòu)的情況下,一些處理僅僅包括拆分串(例如,行識(shí)別、行拆分,等等)。此外,在一些實(shí)施例中,連結(jié)在排序的指示符陣列中彼此緊鄰的串將包括僅采用已經(jīng)分配的指示符。圖104例示了識(shí)別文檔10400中的兩個(gè)行如何得到引用陣列10410中的已經(jīng)分配的指示符的兩個(gè)串對(duì)象10415和10420。第一行由串對(duì)象10415定義,該串對(duì)象10415指向到L的指示符10411并且計(jì)數(shù)為15 (第一行的字符個(gè)數(shù))。第二行由串對(duì)象10420定義,該串對(duì)象10420指向到s的指示符10413并且計(jì)數(shù)為7 (第二行的字符個(gè)數(shù))。為了定義這些行,不需要分配新的指示符。通過(guò)重構(gòu)文檔中可能包括的成百上千的操作,這可能導(dǎo)致大的存儲(chǔ)器和處理時(shí)間(因?yàn)椴恍枰阉麝嚵?效率。然后在識(shí)別出字時(shí)可以采用相同的指示符10410。例如,串對(duì)象10425和10430定義文檔10400中的兩個(gè)字。這些字指向與串對(duì)象10415和10420相同的起始指示符,但是具有不同的計(jì)數(shù),這是因?yàn)樽直刃卸?。然而,不需要分配新的指示符?lái)定義這些字,只有新的串對(duì)象。對(duì)于整個(gè)文檔,成百上千的不同串對(duì)象可以全部引用同一指示符陣列(例如,指示符10410),從而與針對(duì)新的指示符陣列重復(fù)地分配存儲(chǔ)器相比帶來(lái)大的存儲(chǔ)器節(jié)省。當(dāng)可以僅采用已經(jīng)分配的指示符來(lái)執(zhí)行接收到的指令時(shí),處理10300利用在存儲(chǔ)器中已經(jīng)分配的共享指示符來(lái)執(zhí)行(在10335處)指令。然后該處理前進(jìn)到下面描述的 10355。否則,該處理確定(在10340處)是否可以利用新的指示符集合來(lái)執(zhí)行指令。一些實(shí)施例在不能僅利用已經(jīng)分配的指示符執(zhí)行指令時(shí)分配新的指示符,但是指令不要求對(duì)字符陣列的直接數(shù)據(jù)操縱。在一些實(shí)施例中,連結(jié)在指示符的共享陣列中彼此不緊鄰的串要求新的指示符分配,這是因?yàn)檫B結(jié)串的串對(duì)象不能通過(guò)指向排序陣列中的一個(gè)指示符并在陣列中向前移動(dòng)來(lái)表示。例如,參照?qǐng)D104,如果操作要求將第一行附接到第二行的末尾,則被附接行的串對(duì)象不能指向陣列10410。相反,新的指示符陣列將不得不按要求的順序分配。當(dāng)可以利用新的指示符分配執(zhí)行接收到的指令時(shí),該處理通過(guò)利用對(duì)字符陣列的新指示符分配來(lái)執(zhí)行(在10345處)指令。然后該處理前進(jìn)到下面描述的10355。否則,該處理通過(guò)采用對(duì)部分或整個(gè)字符陣列的新副本來(lái)執(zhí)行(在10350處)指令。在一些實(shí)施例中,直接編輯文檔數(shù)據(jù)(即,用戶向文檔添加字)是不能在不操縱實(shí)際字符陣列的情況下執(zhí)行的指令的示例。然而,用戶向文檔添加字將不要求完全新的副本,而是能夠通過(guò)向陣列添加字符并然后定義對(duì)字符的新指示符陣列來(lái)處理。類似地,合并文本行通常要求新的指示符陣列,因?yàn)閬?lái)自一個(gè)文本行的字符可以被插入到下一個(gè)文本行中,由此改變字符相對(duì)于彼此的順序。接著,該處理確定(在10355處)是否已經(jīng)接收到更多的要操縱串對(duì)象的指令。當(dāng)已經(jīng)接收到更多指令時(shí),該處理前進(jìn)到以上描述的10330,以確定執(zhí)行指令的最高效方式。 否則,該處理結(jié)束。該處理例示了通過(guò)采用共享數(shù)據(jù)引入的存儲(chǔ)器和處理節(jié)省的分級(jí)。原始數(shù)據(jù)在多個(gè)指示符陣列間共享,并且每個(gè)指示符陣列在很多串對(duì)象間共享。對(duì)于接收到的每個(gè)指令集(例如,每個(gè)產(chǎn)生(call into) 一個(gè)API),采用最高效的執(zhí)行指令的方式。理想地,該指令將不要求生成任何新的指示符,并且僅需要生成新的串對(duì)象。如果這是不可能的,則與生成新的字符陣列相比,仍將通過(guò)生成共享原始數(shù)據(jù)的新指示符來(lái)獲得存儲(chǔ)器節(jié)省。盡管已經(jīng)關(guān)于串對(duì)象并尤其是用于文檔重構(gòu)的串對(duì)象描述了處理10300,但是本領(lǐng)域普通技術(shù)人員將認(rèn)識(shí)到,相對(duì)于復(fù)制數(shù)據(jù)而言,通過(guò)展示采用已經(jīng)分配的指示符的偏好以及然后分配新指示符獲得的效率可應(yīng)用于其中存儲(chǔ)器和處理時(shí)間非常寶貴的廣范圍的問(wèn)題。B.共享存儲(chǔ)器對(duì)象在一些實(shí)施例中,每個(gè)指示符陣列具有管理陣列中指示符的使用的共享存儲(chǔ)器對(duì)象。在一些實(shí)施例中,用于特定指示符陣列的共享存儲(chǔ)器對(duì)象追蹤引用特定陣列的數(shù)據(jù)對(duì)象(例如,串對(duì)象)。在一些實(shí)施例中,共享存儲(chǔ)器對(duì)象還追蹤指示符陣列從存儲(chǔ)器中的哪里開(kāi)始。圖105例示了根據(jù)本發(fā)明一些實(shí)施例的存儲(chǔ)數(shù)據(jù)的方式。圖105例示了數(shù)據(jù)陣列 10505、排序指示符陣列10510、共享存儲(chǔ)器對(duì)象10515以及數(shù)據(jù)對(duì)象10520。在一些實(shí)施例中,數(shù)據(jù)陣列10505是隨機(jī)排序的解析數(shù)據(jù)(例如,來(lái)自解析文檔的字符數(shù)據(jù))。排序指示符陣列10510是對(duì)數(shù)據(jù)陣列10505的指示符陣列。在一些實(shí)施例中,每個(gè)指示符指向陣列10505中的數(shù)據(jù)項(xiàng)。指示符是基于數(shù)據(jù)類型按順序布置的。例如,在文檔的情況下,在一些實(shí)施例中,指示符按照指示符指向的字符的閱讀順序布置的。每個(gè)數(shù)據(jù)對(duì)象10520包括對(duì)指示符陣列10510中的定位的引用和計(jì)數(shù)。指示符陣列10510中對(duì)于特定數(shù)據(jù)對(duì)象的定位是指向數(shù)據(jù)對(duì)象引用的第一條數(shù)據(jù)的指示符。例如, 當(dāng)數(shù)據(jù)對(duì)象是用于字“Array”的串對(duì)象時(shí),數(shù)據(jù)對(duì)象將規(guī)定指示符陣列中找到指向“Α”的指示符的定位。數(shù)據(jù)對(duì)象還將包括為5的計(jì)數(shù)。圖105還例示了共享存儲(chǔ)器對(duì)象10515。在一些實(shí)施例中,共享存儲(chǔ)器對(duì)象管理數(shù)據(jù)對(duì)象10520對(duì)排序陣列10510的使用。共享存儲(chǔ)器對(duì)象10515保持引用陣列10510的數(shù)據(jù)對(duì)象10520的個(gè)數(shù)的計(jì)數(shù)。當(dāng)定義了第一個(gè)數(shù)據(jù)對(duì)象(即指向陣列的開(kāi)始且具有整個(gè)陣列的計(jì)數(shù))時(shí),一些實(shí)施例不定義共享存儲(chǔ)器對(duì)象10515。然而,一旦第二個(gè)數(shù)據(jù)對(duì)象指向陣列,則該陣列現(xiàn)在被共享,并且共享存儲(chǔ)器對(duì)象10515被定義為追蹤有多少數(shù)據(jù)對(duì)象共享該陣列以及陣列在哪里開(kāi)始,因?yàn)槊繂蝹€(gè)對(duì)象不具有該信息。因此,在一些實(shí)施例中,數(shù)據(jù)對(duì)象10520可以調(diào)用如下函數(shù),該函數(shù)用以如果在數(shù)據(jù)對(duì)象被設(shè)置為指向指示符陣列時(shí)不存在共享存儲(chǔ)器對(duì)象的話則針對(duì)指示符陣列實(shí)例化共享存儲(chǔ)器對(duì)象。當(dāng)對(duì)象10520的個(gè)數(shù)降到零時(shí),共享存儲(chǔ)器對(duì)象10515去分配指示符10510,然后從存儲(chǔ)器中移除自己。在一些實(shí)施例中,共享指示符陣列10510的每個(gè)數(shù)據(jù)對(duì)象10520不了解其他對(duì)象 10520也正在使用陣列10510中的指示符。此外,對(duì)象10520不了解陣列10510的開(kāi)始或結(jié)尾,僅僅引用陣列10510中的某個(gè)點(diǎn)。然而,一些實(shí)施例的共享存儲(chǔ)器對(duì)象10520 了解陣列的開(kāi)始是在存儲(chǔ)器中的什么地方。C.軟件架構(gòu)在一些實(shí)施例中,將以上描述的API實(shí)施為在特定機(jī)器(例如,計(jì)算機(jī)、媒體播放器、蜂窩式電話(例如,iPhone )或者其他手持式或資源受限設(shè)備)上運(yùn)行(或者存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)上)的軟件。圖106概念性地例示了在采用以上在第A節(jié)和第B節(jié)中描述的效率技術(shù)的同時(shí)執(zhí)行文檔重構(gòu)處理的API 10600。
API 10600包括幾何分析模塊10610、文檔重構(gòu)模塊10615以及顯示和交互模塊 10620。在一些實(shí)施例中,API 10600是提供用以由外部應(yīng)用10605采用的函數(shù)、過(guò)程、方法、 類和/或協(xié)議的集合。API 10600接收由外部應(yīng)用10605對(duì)公共方法的請(qǐng)求(例如,函數(shù)調(diào)用)。在一些實(shí)施例中,有眾多外部應(yīng)用。例如,在API提供在手持式設(shè)備(例如,iWione )上的情況下,外部應(yīng)用可以是PDF瀏覽器(例如,電子圖書(shū)閱讀器)、字處理器(例如,Microsoft Word、Apple Pages,等等)、網(wǎng)絡(luò)瀏覽器(例如,Microsoft Internet Explorer、Apple Safari、Mozilla Firefox 等等),等等。由API 10600提供的各種公共方法調(diào)用各種私有方法,其執(zhí)行幾何分析和文檔重構(gòu)、訪問(wèn)文檔對(duì)象模型等等。數(shù)據(jù)(例如,初始地由解析器識(shí)別出的本原元素)存儲(chǔ)在文檔重構(gòu)數(shù)據(jù)10625中。盡管可能呈現(xiàn)給外部應(yīng)用的是它們能夠訪問(wèn)數(shù)據(jù)(例如,同時(shí)操縱字符來(lái)識(shí)別字、文本行,等等),但實(shí)際上如以上在第A節(jié)和第B節(jié)中所描述的,通過(guò)將由外部應(yīng)用通過(guò)API操縱的類成員定義為僅存儲(chǔ)對(duì)數(shù)據(jù)的引用而將類成員與實(shí)際數(shù)據(jù)分離。XII.整體軟件架構(gòu)在一些實(shí)施例中,將以上描述的處理實(shí)施為在特定機(jī)器(例如,計(jì)算機(jī)、媒體播放器、蜂窩式電話(例如,iPhone )或者其他手持式或資源受限設(shè)備)上運(yùn)行(或者存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)上)的軟件。圖107概念性地例示了一些實(shí)施例的用于重構(gòu)文檔、顯示文檔以及與文檔交互的應(yīng)用10700的軟件架構(gòu)。在一些實(shí)施例中,應(yīng)用是獨(dú)立應(yīng)用或者集成到另一應(yīng)用中,而在其他實(shí)施例中,應(yīng)用可能是在操作系統(tǒng)內(nèi)實(shí)現(xiàn)的。在還有其他實(shí)施例中,圖107中例示的模塊在多個(gè)應(yīng)用間被拆分。例如,在一些實(shí)施例中,一個(gè)應(yīng)用生成文檔對(duì)象模型,而另一個(gè)應(yīng)用顯示文檔并與文檔對(duì)象模型交互(參見(jiàn)以下全面描述)。應(yīng)用10700包括解析器10710、簡(jiǎn)檔化模塊10720、語(yǔ)義重構(gòu)模塊10730、集群分析模塊10740、用戶交互模塊10750以及顯示調(diào)整模塊10760。應(yīng)用10700還包括文檔數(shù)據(jù)存儲(chǔ)設(shè)備10715、簡(jiǎn)檔存儲(chǔ)設(shè)備10725、集群分析存儲(chǔ)設(shè)備10735以及文檔對(duì)象模塊存儲(chǔ)設(shè)備 10745。圖107還例示了操作系統(tǒng)10770,該操作系統(tǒng)10770包括游標(biāo)控制器驅(qū)動(dòng)器10775、 鍵盤驅(qū)動(dòng)器10780以及顯示模塊10785。在一些實(shí)施例中,如所例示的,即使在混合應(yīng)用是與操作系統(tǒng)分開(kāi)的獨(dú)立應(yīng)用時(shí),游標(biāo)控制器驅(qū)動(dòng)器10775、鍵盤驅(qū)動(dòng)器10780和/或顯示模塊10785也是操作系統(tǒng)10770的一部分。如圖所示,解析器10710接收文檔10705。在一些實(shí)施例中,文檔是包括矢量圖形的未格式化文檔(例如,PDF)。解析器10710解析文檔信息,并將解析的數(shù)據(jù)存儲(chǔ)在文檔數(shù)據(jù)存儲(chǔ)設(shè)備10715中。在一些實(shí)施例中,解析的文本數(shù)據(jù)被存儲(chǔ)為如以上在第XI章中描述的字符陣列。語(yǔ)義重構(gòu)模塊10730重構(gòu)文檔以從文檔數(shù)據(jù)10715生成文檔對(duì)象模型10745。語(yǔ)義重構(gòu)模塊10730執(zhí)行諸如區(qū)分析、導(dǎo)引和裝訂線識(shí)別、布局和流識(shí)別、表格識(shí)別以及連結(jié)圖識(shí)別的處理。語(yǔ)義重構(gòu)模塊的輸出還被發(fā)送到簡(jiǎn)檔化模塊10720。簡(jiǎn)檔化模塊10720包括簡(jiǎn)檔匹配引擎,該簡(jiǎn)檔匹配引擎匹配分級(jí)簡(jiǎn)檔,并通知語(yǔ)義重構(gòu)模塊關(guān)于執(zhí)行重構(gòu)如何進(jìn)行,如以上在第VII章中所描述的。語(yǔ)義重構(gòu)模塊10710還將信息傳遞到集群分析模塊10740。在一些實(shí)施例中,集群分析模塊10740執(zhí)行密度集群用于導(dǎo)引識(shí)別、執(zhí)行差值集群用于字和段間隔信息以及執(zhí)行界線集群用于識(shí)別應(yīng)被連結(jié)的圖形。集群分析模塊采用集群分析存儲(chǔ)設(shè)備10735來(lái)存儲(chǔ)如在第X章中描述的陣列和索引。然后將集群分析的結(jié)果傳遞回到語(yǔ)義重構(gòu)模塊10730。一旦語(yǔ)義重構(gòu)模塊10730已經(jīng)重構(gòu)了文檔,它們就存儲(chǔ)文檔對(duì)象模型10745。文檔對(duì)象模型10745存儲(chǔ)所有關(guān)于語(yǔ)義重構(gòu)文檔的信息,例如以上在第II章中描述的填充有內(nèi)容的區(qū)圖。顯示調(diào)整模塊10760采用文檔對(duì)象模型10745來(lái)確定如何顯示文檔。例如,一些實(shí)施例的顯示調(diào)整模塊執(zhí)行以上在第VIII章中描述的處理,來(lái)在小屏幕設(shè)備上顯示文檔。 顯示調(diào)整模塊10760將顯示信息傳遞到顯示模塊10785,顯示模塊10785控制在屏幕上的實(shí)
際顯不。用戶交互模塊10750接收來(lái)自游標(biāo)控制器驅(qū)動(dòng)器10775和鍵盤驅(qū)動(dòng)器10780的輸入信息。該輸入信息指示用戶交互模塊10750對(duì)文檔執(zhí)行操作,例如以上在第IX章中描述的選擇,以及對(duì)文檔的編輯。如果編輯文檔,則文檔對(duì)象模型10745必須被修改以反映該編輯。在一些實(shí)施例中,由以上描述的模塊中的一些或其他模塊執(zhí)行的處理的結(jié)果存儲(chǔ)在電子存儲(chǔ)設(shè)備中(例如,作為文檔對(duì)象模型的一部分)。文檔對(duì)象模型然后可以用于在電子顯示設(shè)備(例如,手持式設(shè)備、計(jì)算機(jī)屏幕,等等)上顯示文檔,使得用戶能夠?yàn)g覽文檔和 /或與文檔交互(例如,通過(guò)觸摸屏、游標(biāo)控制設(shè)備,等等)。圖108概念性地例示了一些實(shí)施例的用于制造存儲(chǔ)諸如以上描述的應(yīng)用10700的計(jì)算機(jī)程序的計(jì)算機(jī)可讀介質(zhì)的處理10800。在一些實(shí)施例中,計(jì)算機(jī)可讀介質(zhì)是可分布的非易失性電子存儲(chǔ)介質(zhì)(例如,CD-ROM、硬盤、設(shè)備固件,等等)。如圖所示,處理10800從定義(在10805處)諸如圖1的模塊110的幾何分析模塊開(kāi)始。這種模塊的更具體示例包括圖17中的邊界識(shí)別模塊1705、區(qū)間和相交部識(shí)別模塊 1710、區(qū)識(shí)別模塊1715以及區(qū)圖構(gòu)建器1720。在一些實(shí)施例中,這些模塊識(shí)別本原元素集之間的邊界并識(shí)別由這些邊界界定的區(qū)域。在一些實(shí)施例中,模塊將圖形本原元素識(shí)別為潛在邊界,將潛在邊界的一部分識(shí)別為實(shí)際邊界,遍歷實(shí)際邊界以識(shí)別區(qū),并利用識(shí)別出的區(qū)定義分級(jí)文檔模塊。然后該處理定義(在10810處)諸如圖1的模塊120的文檔重構(gòu)模塊。在一些實(shí)施例中,圖107的語(yǔ)義重構(gòu)模塊10730包括幾何分析模塊和文檔重構(gòu)模塊兩者,但是其他實(shí)施例僅包括一個(gè)或另一個(gè)。然后處理10800定義(在10815處)諸如簡(jiǎn)檔10725的分級(jí)簡(jiǎn)檔集合。接著,該處理定義(在10820)用于執(zhí)行集群分析的模塊集。集群分析模塊10740是這種模塊的示例。 然后該處理定義(在10825處)用于適應(yīng)性地顯示文檔的模塊,例如顯示調(diào)整模塊10760。 接著,處理10800定義(在10830處)用于接收與文檔的用戶交互的模塊,例如模塊10750。該處理還定義(在10835處)其他模塊。例如,一些實(shí)施例包括用于解析進(jìn)入的文檔(例如,由應(yīng)用接收到的文檔)或者在執(zhí)行各種文檔重構(gòu)操作時(shí)高效地利用存儲(chǔ)器和處理時(shí)間的模塊。然后處理10800將應(yīng)用存儲(chǔ)(在10840處)在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上。如上所示, 在一些實(shí)施例中,計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)是可分布的CD-ROM。在一些實(shí)施例中,介質(zhì)是固態(tài)設(shè)備、硬盤、CD-ROM或其他非易失性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中的一種或多種。在一些實(shí)施例中, 介質(zhì)可以是手持式設(shè)備(例如,iPhone )的固件。本領(lǐng)域普通技術(shù)人員將認(rèn)識(shí)到,由處理10800定義的各種元素不是對(duì)能夠定義且存儲(chǔ)在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上用于并有本發(fā)明一些實(shí)施例的應(yīng)用的模塊、規(guī)則以及處理的窮舉。此外,一些實(shí)施例將僅包括由處理10800定義的元素的子集而非它們?nèi)恳彩峭瑯涌梢缘?。另外,處?0800是概念性處理,并且實(shí)際實(shí)施可以改變。例如,不同的實(shí)施例可以按照不同的順序定義各種元素,可以定義一個(gè)操作中的若干元素,可以將單個(gè)元素的定義分解為多個(gè)操作,等等。此外,處理10800可以實(shí)施為若干子處理,或者在宏處理中與其他操作組合。XIII.計(jì)算機(jī)系統(tǒng)很多上述特征和應(yīng)用被實(shí)施為軟件處理,所述軟件處理被規(guī)定為記錄在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)(也稱作計(jì)算機(jī)可讀介質(zhì))上的指令集。當(dāng)由一個(gè)或多個(gè)計(jì)算元件(例如,處理器或其他計(jì)算元件,象ASIC和FPGA)執(zhí)行這些指令時(shí),它們使得計(jì)算元件執(zhí)行指令中表示的動(dòng)作。計(jì)算機(jī)意指其最廣義含義,并且可以包括具有處理器的任何電子設(shè)備。計(jì)算機(jī)可讀介質(zhì)的示例包括但不限于CD-ROM、閃存驅(qū)動(dòng)器、RAM芯片、硬盤驅(qū)動(dòng)器、EPR0M,等等。計(jì)算機(jī)可讀介質(zhì)不包括無(wú)線地或者通過(guò)有線連接傳遞的載波和電子信號(hào)。本說(shuō)明書(shū)中的術(shù)語(yǔ)“軟件”是指包括駐留在只讀存儲(chǔ)器上的固件或者存儲(chǔ)在磁存儲(chǔ)設(shè)備上的應(yīng)用,其可以被讀入到存儲(chǔ)器中用以由處理器進(jìn)行處理。而且,在一些實(shí)施例中,多個(gè)軟件發(fā)明可以被實(shí)施為更大程序的子部分,同時(shí)保留不同的軟件發(fā)明。在一些實(shí)施例中,多個(gè)軟件發(fā)明還可以被實(shí)施為單獨(dú)的程序。最后,一起實(shí)施本文描述的軟件發(fā)明的單獨(dú)程序的任何組合都在本發(fā)明的范圍內(nèi)。在一些實(shí)施例中,軟件程序在被安裝以在一個(gè)或多個(gè)計(jì)算機(jī)系統(tǒng)上運(yùn)行時(shí)定義運(yùn)行和執(zhí)行軟件程序的操作的一個(gè)或多個(gè)具體機(jī)器實(shí)施。圖109例示了實(shí)現(xiàn)本發(fā)明的一些實(shí)施例的計(jì)算機(jī)系統(tǒng)。這種計(jì)算機(jī)系統(tǒng)包括各種類型的計(jì)算機(jī)可讀介質(zhì)和用于各種其他類型的計(jì)算機(jī)可讀介質(zhì)的接口。計(jì)算機(jī)系統(tǒng)10900 包括總線10905、處理器10910、圖形處理單元(GPU) 10920、系統(tǒng)存儲(chǔ)器10925、只讀存儲(chǔ)器 10930、永久存儲(chǔ)設(shè)備10935、輸入設(shè)備10940以及輸出設(shè)備10945??偩€10905總體地代表通信地連接計(jì)算機(jī)系統(tǒng)10900的眾多內(nèi)部設(shè)備的所有系統(tǒng)、外圍和芯片集總線。例如,總線10905將處理器10910與只讀存儲(chǔ)器10930、GPU 10920、 系統(tǒng)存儲(chǔ)器10925以及永久存儲(chǔ)設(shè)備10935通信地連接。從這些各種存儲(chǔ)器單元,處理器10910檢索要執(zhí)行的指令和要處理的數(shù)據(jù)以執(zhí)行本發(fā)明的處理。在一些實(shí)施例中,處理器包括現(xiàn)場(chǎng)可編程門陣列(FPGA)、ASIC或者用于執(zhí)行指令的各種其他電子部件。一些指令被傳遞到GPU 10920并由其執(zhí)行。GPU 10920可以卸載各種計(jì)算或補(bǔ)充處理器10910提供的圖像處理。在一些實(shí)施例中,這種功能性可以利用CoreImage的內(nèi)核遮蔽語(yǔ)言來(lái)提供。只讀存儲(chǔ)器(ROM) 10930存儲(chǔ)處理器10910以及計(jì)算機(jī)系統(tǒng)的其他模塊需要的靜態(tài)數(shù)據(jù)和指令。另一方面,永久存儲(chǔ)設(shè)備10935是讀寫存儲(chǔ)器設(shè)備。該設(shè)備是即使在計(jì)算機(jī)系統(tǒng)10900關(guān)閉時(shí)也存儲(chǔ)指令和數(shù)據(jù)的非易失性存儲(chǔ)器。本發(fā)明的一些實(shí)施例采用大容量存儲(chǔ)設(shè)備(例如,磁盤或光盤及其對(duì)應(yīng)的盤驅(qū)動(dòng)器)作為永久存儲(chǔ)設(shè)備10935。
其他實(shí)施例采用可移除存儲(chǔ)設(shè)備(例如,軟盤、閃存驅(qū)動(dòng)器或者ZIP 盤,及其對(duì)應(yīng)的盤驅(qū)動(dòng)器)作為永久存儲(chǔ)設(shè)備。象永久存儲(chǔ)設(shè)備10935 —樣,系統(tǒng)存儲(chǔ)器10925是讀寫存儲(chǔ)器設(shè)備。然而,不象存儲(chǔ)設(shè)備10935,系統(tǒng)存儲(chǔ)器是易失性讀寫存儲(chǔ)器,例如隨機(jī)存取存儲(chǔ)器。該系統(tǒng)存儲(chǔ)器存儲(chǔ)處理器在運(yùn)行時(shí)需要的一些指令和數(shù)據(jù)。在一些實(shí)施例中, 本發(fā)明的處理存儲(chǔ)在系統(tǒng)存儲(chǔ)器10925、永久存儲(chǔ)設(shè)備10935和/或只讀存儲(chǔ)器10930中。 例如,各種存儲(chǔ)器單元包括用于根據(jù)一些實(shí)施例處理多媒體項(xiàng)的指令。從這些各種存儲(chǔ)器單元,處理器10910檢索要執(zhí)行的指令和要處理的數(shù)據(jù),以執(zhí)行一些實(shí)施例的處理??偩€10905還連接到輸入設(shè)備10940和輸出設(shè)備10945。輸入設(shè)備還使得用戶能夠向計(jì)算機(jī)系統(tǒng)傳送信息并選擇命令。輸入設(shè)備10940包括字母數(shù)字鍵盤和指向設(shè)備(也稱作“游標(biāo)控制設(shè)備”)。輸出設(shè)備10945顯示計(jì)算機(jī)系統(tǒng)生成的圖像。輸出設(shè)備包括打印機(jī)和顯示設(shè)備,例如陰極射線管(CRT)或者液晶顯示器(IXD)。最后,如圖109所示,總線10905還將計(jì)算機(jī)10900通過(guò)網(wǎng)絡(luò)適配器(未示出)耦接到網(wǎng)絡(luò)10965。按照這種方式,計(jì)算機(jī)可以是計(jì)算機(jī)網(wǎng)絡(luò)(例如,局域網(wǎng)(“LAN”)、廣域網(wǎng)(“WAN”)或者內(nèi)聯(lián)網(wǎng))或者網(wǎng)絡(luò)的網(wǎng)絡(luò)(例如,互聯(lián)網(wǎng))的一部分??梢越Y(jié)合本發(fā)明采用計(jì)算機(jī)系統(tǒng)10900的任意或全部部件。一些實(shí)施例包括電子部件,例如微處理器、將計(jì)算機(jī)程序指令存儲(chǔ)在機(jī)器可讀或計(jì)算機(jī)可讀介質(zhì)(另選地也稱為計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)、機(jī)器可讀介質(zhì)或者機(jī)器可讀存儲(chǔ)介質(zhì))中的存儲(chǔ)設(shè)備和存儲(chǔ)器。這種計(jì)算機(jī)可讀介質(zhì)的一些示例包括RAM、ROM、只讀緊湊盤(CD-ROM)、可記錄緊湊盤(CD-R)、可重寫緊湊盤(CD-RW)、只讀數(shù)字多功能盤(例如, DVD-ROM、雙層 DVD-ROM)、各種可記錄 / 可重寫 DVD (例如,DVD-RAM、DVD-RW、DVD+RW,等等)、 閃速存儲(chǔ)器(例如,SD卡、小型SD卡、微型SD卡,等等),磁性和/或固態(tài)硬驅(qū)動(dòng)器、只讀和可記錄藍(lán)光盤、超密度光盤、任何其他光學(xué)或磁性介質(zhì)以及軟盤。計(jì)算機(jī)可讀介質(zhì)可以存儲(chǔ)可由至少一個(gè)處理器執(zhí)行的計(jì)算機(jī)程序,并且包括用于執(zhí)行各種操作的指令集。配置為存儲(chǔ)和執(zhí)行指令集的硬件設(shè)備的示例包括但不限于專用集成電路(ASIC)、現(xiàn)場(chǎng)可編程門陣列 (FPGA)、可編程邏輯器件(PLD)、ROM以及RAM器件。計(jì)算機(jī)程序或計(jì)算機(jī)代碼的示例包括機(jī)器碼,例如由編譯器生成的碼,以及包括由計(jì)算機(jī)、電子部件或微處理器利用解釋器執(zhí)行的更高級(jí)別代碼的文件。本說(shuō)明書(shū)以及本申請(qǐng)的任何權(quán)利要求中采用的術(shù)語(yǔ)“計(jì)算機(jī)”、“服務(wù)器”、“處理器”和“存儲(chǔ)器”全部是指電子或其他技術(shù)性設(shè)備。這些術(shù)語(yǔ)排除人或人的組。出于本說(shuō)明書(shū)的目的,術(shù)語(yǔ)顯示是指在電子設(shè)備上顯示。本說(shuō)明書(shū)以及本申請(qǐng)的任何權(quán)利要求中采用的術(shù)語(yǔ)“計(jì)算機(jī)可讀介質(zhì)”完全限于有形的物體對(duì)象,其存儲(chǔ)可由計(jì)算機(jī)讀取的形式的信息。這些術(shù)語(yǔ)排除了任何無(wú)線信號(hào)、有線下載信號(hào)以及任何其他瞬息信號(hào)。盡管參照眾多具體細(xì)節(jié)描述了本發(fā)明,但是本領(lǐng)域普通技術(shù)人員將認(rèn)識(shí)到,在不脫離本發(fā)明精神的情況下,本發(fā)明可以按照其他具體形式實(shí)現(xiàn)。例如,一些實(shí)施例接收文檔,在文檔中每個(gè)頁(yè)面被定義為單個(gè)圖像。然而,一些實(shí)施例可以對(duì)文檔執(zhí)行光學(xué)字符識(shí)別以識(shí)別圖示符,而在一些情況中識(shí)別形狀(例如,線條、矩形,等等),之后可以重構(gòu)文檔。 而且,以上已經(jīng)關(guān)于在特定本原元素上執(zhí)行特定幾何分析和文檔重構(gòu)操作描述了一些實(shí)施例。然而,本領(lǐng)域普通技術(shù)人員將認(rèn)識(shí)到,可以將操作應(yīng)用到其他類型的本原元素。例如,導(dǎo)引識(shí)別被描述為包括采用密度集群來(lái)識(shí)別形成垂直邊界的圖示符的關(guān)聯(lián)(例如,進(jìn)行關(guān)聯(lián)或者定義其關(guān)聯(lián))。然而,可以應(yīng)用類似的操作來(lái)尋找形成邊界的本原形狀(例如,虛線) 的集群。此外,多個(gè)附圖(包括圖 3、8、9、12、15、18、20、21、25、26、31、33、36、38、40、42、48、 53、55、57、62、64、66、68、71、72、78、80-82、84、85、87、89、94、97、99、101、103 和 108)概念性地例示了處理。這些處理的具體操作可能不會(huì)按照所示和所描述的具體順序執(zhí)行。具體操作可能不會(huì)在一個(gè)連續(xù)的操作系列中執(zhí)行,并且不同的具體操作可能是在不同的實(shí)施例中執(zhí)行的。此外,可以利用若干子處理實(shí)施處理,或者將處理實(shí)施為更大宏處理的一部分。因此,本領(lǐng)域普通技術(shù)人員將理解,本發(fā)明不受限于以上例示的細(xì)節(jié),而是由所附權(quán)利要求來(lái)限定。
權(quán)利要求
1.一種存儲(chǔ)計(jì)算機(jī)程序的計(jì)算機(jī)可讀介質(zhì),所述計(jì)算機(jī)程序在由至少一個(gè)處理器執(zhí)行時(shí)分析包括多個(gè)本原元素的文檔,所述計(jì)算機(jī)程序包括用于執(zhí)行以下操作的指令集識(shí)別本原元素的集合之間的邊界; 識(shí)別由所述邊界界定的區(qū)域;以及基于所述區(qū)域和本原元素定義結(jié)構(gòu)化文檔。
2.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)可讀介質(zhì),其中,所述用于定義結(jié)構(gòu)化文檔的指令集包括用于識(shí)別至少兩個(gè)識(shí)別出的區(qū)域之間的分級(jí)關(guān)系的指令集。
3.根據(jù)權(quán)利要求2所述的計(jì)算機(jī)可讀介質(zhì),其中,完全處于第二區(qū)域內(nèi)的第一區(qū)域是所述第二區(qū)域的子輩。
4.根據(jù)權(quán)利要求2所述的計(jì)算機(jī)可讀介質(zhì),其中,所述用于識(shí)別兩個(gè)識(shí)別出的區(qū)域之間的分級(jí)關(guān)系的指令集包括用于定義分級(jí)文檔對(duì)象模型的指令集,其中每個(gè)識(shí)別出的區(qū)域是所述文檔對(duì)象模型的一個(gè)節(jié)點(diǎn)。
5.根據(jù)權(quán)利要求4所述的計(jì)算機(jī)可讀介質(zhì),其中,所述用于定義結(jié)構(gòu)化文檔的指令集還包括用于利用從本原元素定義的至少一個(gè)結(jié)構(gòu)性元素填充所述文檔對(duì)象模型的指令集。
6.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)可讀介質(zhì),其中,基于特定本原元素在所述文檔中的定位來(lái)識(shí)別邊界。
7.根據(jù)權(quán)利要求6所述的計(jì)算機(jī)可讀介質(zhì),其中,所述特定本原元素是直線或近似直線的形狀。
8.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)可讀介質(zhì),其中,所述用于識(shí)別區(qū)域的指令集包括用于執(zhí)行以下操作的指令集基于實(shí)際地界定區(qū)域的邊界是否與其他邊界相交來(lái)選擇所述邊界的集合;和遍歷所述邊界的子集來(lái)識(shí)別區(qū)域。
9.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)可讀介質(zhì),其中,所述用于識(shí)別本原元素的集合之間的邊界的指令集包括用于執(zhí)行以下操作的指令集將作為直線或者近似直線的形狀的本原元素和本原元素分組識(shí)別為潛在邊界; 識(shí)別所述潛在邊界之間的相交部;以及移除不與至少兩個(gè)其他潛在邊界相交的潛在邊界。
10.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)可讀介質(zhì),其中,所述用于識(shí)別由所述邊界界定的區(qū)域的指令集包括用于遍歷所識(shí)別出的邊界以識(shí)別邊界的閉環(huán)的指令集,其中,每個(gè)閉環(huán)是一個(gè)區(qū)域。
11.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)可讀介質(zhì),其中,所述計(jì)算機(jī)程序還包括用于采用識(shí)別出的區(qū)域來(lái)定義所述文檔的結(jié)構(gòu)性元素的指令集,其中,所述結(jié)構(gòu)化文檔還基于所述結(jié)構(gòu)性元素。
12.根據(jù)權(quán)利要求11所述的計(jì)算機(jī)可讀介質(zhì),其中,所述用于采用識(shí)別出的區(qū)域來(lái)定義結(jié)構(gòu)性元素的指令集包括用于單獨(dú)地分析每個(gè)特定區(qū)域以生成所述特定區(qū)域中的本原元素集合之間的關(guān)聯(lián)的指令集。
13.一種定義程序的方法,所述程序用于(i)分析包括多個(gè)本原元素的文檔,以及(ii) 基于所述分析生成定義所述文檔中的結(jié)構(gòu)的結(jié)構(gòu)性元素,所述方法包括定義用于識(shí)別本原元素的集合之間的邊界的模塊;定義用于識(shí)別由所述邊界界定的區(qū)域的模塊;定義用于采用識(shí)別出的邊界和區(qū)域來(lái)規(guī)定所述結(jié)構(gòu)性元素的模塊。
14.根據(jù)權(quán)利要求13所述的方法,還包括定義用于基于所述區(qū)域、本原元素和結(jié)構(gòu)性元素來(lái)定義結(jié)構(gòu)化文檔的模塊。
15.根據(jù)權(quán)利要求13所述的方法,其中,所述文檔是未結(jié)構(gòu)化文檔。
16.一種存儲(chǔ)計(jì)算機(jī)程序的計(jì)算機(jī)可讀介質(zhì),所述計(jì)算機(jī)程序在由至少一個(gè)處理器執(zhí)行時(shí)分析包括多個(gè)本原元素的文檔,所述本原元素包括多個(gè)圖示符和多個(gè)圖形元素,所述計(jì)算機(jī)程序包括用于執(zhí)行以下操作的指令集將多個(gè)所述圖形元素識(shí)別為潛在邊界; 將一部分所述潛在邊界識(shí)別為實(shí)際邊界; 遍歷所述實(shí)際邊界以識(shí)別一個(gè)或多個(gè)區(qū);以及利用識(shí)別出的區(qū)來(lái)定義分級(jí)文檔模型。
17.根據(jù)權(quán)利要求16所述的計(jì)算機(jī)可讀介質(zhì),其中,將多個(gè)所述圖形元素識(shí)別為潛在邊界包括用于執(zhí)行以下操作的指令集識(shí)別作為至多具有特定厚度的垂直直線和水平直線的圖形元素; 識(shí)別與至多具有特定厚度的垂直直線和水平直線近似的圖形元素;以及識(shí)別豎直矩形圖形元素的外邊緣。
18.根據(jù)權(quán)利要求16所述的計(jì)算機(jī)可讀介質(zhì),其中,所述用于將一部分所述潛在邊界識(shí)別為實(shí)際邊界的指令集包括用于以下操作的指令集識(shí)別所述潛在邊界之間的相交部;和迭代地移除沒(méi)有與至少兩個(gè)其他潛在邊界相交的潛在邊界,直到所有剩余潛在邊界都與至少兩個(gè)其他潛在邊界相交;以及將所述剩余潛在邊界識(shí)別為實(shí)際邊界。
19.根據(jù)權(quán)利要求16所述的計(jì)算機(jī)可讀介質(zhì),其中,所述用于遍歷所述實(shí)際邊界以識(shí)別一個(gè)或多個(gè)區(qū)的指令集包括用于執(zhí)行以下操作的指令集針對(duì)每個(gè)所述實(shí)際邊界,定義包括沿相反方向?qū)?zhǔn)的兩個(gè)區(qū)間的定向?qū)?zhǔn)區(qū)間的集合;選擇相交部和遠(yuǎn)離所述相交部的方向;沿著所選方向從所選相交部開(kāi)始遍歷所述區(qū)間的集合中的區(qū)間,直到返回到所選相交部;將由所遍歷的區(qū)間包圍的區(qū)域定義為區(qū);以及從所述區(qū)間的集合中移除所遍歷的區(qū)間。
20.根據(jù)權(quán)利要求19所述的計(jì)算機(jī)可讀介質(zhì),其中,所述定向?qū)?zhǔn)區(qū)間是矢量。
21.根據(jù)權(quán)利要求19所述的計(jì)算機(jī)可讀介質(zhì),其中,所述用于遍歷所述實(shí)際邊界以識(shí)別一個(gè)或多個(gè)區(qū)的指令集包括用于重復(fù)地執(zhí)行以下操作直到所述定向?qū)?zhǔn)區(qū)間的集合為空的指令集選擇相交部和從所述相交部起的方向;沿著所選方向從所選相交部開(kāi)始遍歷所述區(qū)間的集合中的區(qū)間,直到返回到所選相交部;將由所遍歷的區(qū)間包圍的區(qū)域定義為區(qū);以及從所述區(qū)間的集合中移除所遍歷的區(qū)間。
22.根據(jù)權(quán)利要求16所述的計(jì)算機(jī)可讀介質(zhì),還包括當(dāng)特定區(qū)沿特定方向被遍歷時(shí)將該特定區(qū)定義為島。
23.根據(jù)權(quán)利要求16所述的計(jì)算機(jī)可讀介質(zhì),其中,當(dāng)?shù)诙^(qū)被第一區(qū)完全包圍時(shí),所述第一區(qū)為所述第二區(qū)的父輩。
24.根據(jù)權(quán)利要求23所述的計(jì)算機(jī)可讀介質(zhì),其中,當(dāng)所述第一區(qū)和第二區(qū)不共享邊界時(shí),該第二區(qū)為島。
25.根據(jù)權(quán)利要求16所述的計(jì)算機(jī)可讀介質(zhì),其中,所述計(jì)算機(jī)程序還包括用于基于圖示符和不是實(shí)際邊界的圖形元素來(lái)定義結(jié)構(gòu)性元素的指令集。
26.根據(jù)權(quán)利要求25所述的計(jì)算機(jī)可讀介質(zhì),其中,所述計(jì)算機(jī)程序還包括用于利用至少一個(gè)結(jié)構(gòu)性元素填充所述分級(jí)文檔模型的區(qū)的指令集。
27.根據(jù)權(quán)利要求25所述的計(jì)算機(jī)可讀介質(zhì),其中,所述計(jì)算機(jī)程序還包括用于識(shí)別旋轉(zhuǎn)區(qū)的指令集。
28.根據(jù)權(quán)利要求27所述的計(jì)算機(jī)可讀介質(zhì),其中,旋轉(zhuǎn)區(qū)是沒(méi)有與包括該旋轉(zhuǎn)區(qū)的頁(yè)面對(duì)準(zhǔn)的區(qū)。
29.根據(jù)權(quán)利要求28所述的計(jì)算機(jī)可讀介質(zhì),其中,當(dāng)區(qū)偏離頁(yè)面的邊緣至少達(dá)特定角度時(shí),該區(qū)沒(méi)有與所述頁(yè)面對(duì)準(zhǔn)。
30.一種存儲(chǔ)計(jì)算機(jī)程序的計(jì)算機(jī)可讀介質(zhì),所述計(jì)算機(jī)程序在由至少一個(gè)處理器執(zhí)行時(shí)分析包括多個(gè)字的文檔,每個(gè)字包括相關(guān)聯(lián)的圖示符的集合,每個(gè)圖示符具有定位坐標(biāo),所述計(jì)算機(jī)程序包括用于執(zhí)行以下操作的指令集基于所述圖示符的定位坐標(biāo)來(lái)識(shí)別字分組;基于所識(shí)別出的字分組,定義所述圖示符的邊界元素集合;基于所述圖示符和所定義的邊界元素集合,定義結(jié)構(gòu)化文檔。
31.根據(jù)權(quán)利要求30所述的計(jì)算機(jī)可讀介質(zhì),其中,所述計(jì)算機(jī)程序還包括用于定義一對(duì)邊界元素之間的空白空間的至少一個(gè)區(qū)域的指令集,其中,所述結(jié)構(gòu)化文檔還基于所述空白空間的區(qū)域來(lái)定義。
32.根據(jù)權(quán)利要求30所述的計(jì)算機(jī)可讀介質(zhì),其中,所述用于識(shí)別字分組的指令集包括用于沿一個(gè)軸對(duì)從所述字的坐標(biāo)得出的數(shù)據(jù)執(zhí)行集群分析的指令集。
33.根據(jù)權(quán)利要求32所述的計(jì)算機(jī)可讀介質(zhì),其中,所述集群分析包括密度集群,以識(shí)別大的具有類似值的數(shù)據(jù)的分組。
34.根據(jù)權(quán)利要求30所述的計(jì)算機(jī)可讀介質(zhì),其中,所述邊界元素是圖示符的右對(duì)準(zhǔn)導(dǎo)引和左對(duì)準(zhǔn)導(dǎo)引。
35.根據(jù)權(quán)利要求30所述的計(jì)算機(jī)可讀介質(zhì),其中,所述用于定義邊界元素集合的指令集包括用于執(zhí)行以下操作的指令集針對(duì)每個(gè)集群,基于集群中的字定義沿第一軸具有寬度的條;以及消除沿所述第一軸在如下坐標(biāo)處的條,即在所述坐標(biāo)處字沿第二軸從特定方向穿入到所述條中
36.根據(jù)權(quán)利要求30所述的計(jì)算機(jī)可讀介質(zhì),其中,所述用于定義結(jié)構(gòu)化文檔的指令集包括用于利用所述圖示符和所定義的邊界元素來(lái)識(shí)別文本列的指令集。
37.一種定義程序的方法,所述程序用于(i)分析包括多個(gè)字的文檔,每個(gè)字包括相關(guān)聯(lián)的圖示符的集合,每個(gè)圖示符具有定位坐標(biāo),以及(ii)基于所述分析生成定義所述文檔中的結(jié)構(gòu)的結(jié)構(gòu)性元素,所述方法包括定義用于基于所述圖示符的定位坐標(biāo)來(lái)識(shí)別字分組的模塊;定義用于基于所識(shí)別出的字分組來(lái)定義所述圖示符的邊界元素集合的模塊,所述邊界元素識(shí)別所述圖示符的邊界集合;以及定義用于采用識(shí)別出的邊界元素來(lái)規(guī)定所述結(jié)構(gòu)性元素的模塊。
38.根據(jù)權(quán)利要求37所述的方法,還包括定義用于基于所述圖示符、所定義的邊界元素以及結(jié)構(gòu)性元素來(lái)定義結(jié)構(gòu)化文檔的模塊。
39.一種存儲(chǔ)計(jì)算機(jī)程序的計(jì)算機(jī)可讀介質(zhì),所述計(jì)算機(jī)程序在由至少一個(gè)處理器執(zhí)行時(shí)分析包括多個(gè)字的文檔,每個(gè)字包括多個(gè)圖示符,每個(gè)字具有特定定位值,所述計(jì)算機(jī)程序包括用于執(zhí)行以下操作的指令集對(duì)所述字的定位值進(jìn)行排序;將所述定位值的多個(gè)不同分組識(shí)別成子集;針對(duì)每個(gè)不同的分組,識(shí)別滿足特定約束集合的定位值的子集的集合;確定所述定位值的子集集合中優(yōu)化特定量度的特定的子集集合;以及基于優(yōu)化所述特定量度的特定的子集集合來(lái)定義所述圖示符的邊界元素。
40.根據(jù)權(quán)利要求39所述的計(jì)算機(jī)可讀介質(zhì),其中,所述約束集合包括定位值的子集至少具有特定數(shù)量的值的要求。
41.根據(jù)權(quán)利要求39所述的計(jì)算機(jī)可讀介質(zhì),其中,所述約束集合包括所述子集中的最大值與最小值之間的差值不大于特定閾值的要求。
42.根據(jù)權(quán)利要求39所述的計(jì)算機(jī)可讀介質(zhì),其中,所述特定定位值表示字的右邊緣, 其中采用優(yōu)化所述特定量度的子集集合來(lái)識(shí)別右對(duì)準(zhǔn)導(dǎo)引。
43.根據(jù)權(quán)利要求39所述的計(jì)算機(jī)可讀介質(zhì),其中,所述特定定位值表示字的左邊緣, 其中采用優(yōu)化所述特定量度的子集集合來(lái)識(shí)別左對(duì)準(zhǔn)導(dǎo)引。
44.一種存儲(chǔ)計(jì)算機(jī)程序的計(jì)算機(jī)可讀介質(zhì),所述計(jì)算機(jī)程序在由至少一個(gè)處理器執(zhí)行時(shí)識(shí)別數(shù)據(jù)的集群,所述計(jì)算機(jī)程序包括用于執(zhí)行以下操作的指令集接收要被集群的數(shù)據(jù)值的集合;識(shí)別對(duì)所述數(shù)據(jù)值的多個(gè)分隔,每個(gè)不同分隔將所述數(shù)據(jù)值的不同分組規(guī)定成子集;針對(duì)數(shù)據(jù)值的子集的每個(gè)分組,識(shí)別滿足特定約束集合的子集的集合;以及確定優(yōu)化特定量度的子集集合。
45.根據(jù)權(quán)利要求44所述的計(jì)算機(jī)可讀介質(zhì),其中,所述數(shù)據(jù)值是圖示符在文檔中的位置,其中所述優(yōu)化特定量度的子集集合識(shí)別所述文檔的對(duì)準(zhǔn)導(dǎo)引。
46.一種存儲(chǔ)計(jì)算機(jī)程序的計(jì)算機(jī)可讀介質(zhì),所述計(jì)算機(jī)程序在由至少一個(gè)處理器執(zhí)行時(shí)分析包括多個(gè)字的文檔,每個(gè)字具有相關(guān)聯(lián)的圖示符的集合,所述計(jì)算機(jī)程序包括用于執(zhí)行以下操作的指令集識(shí)別所述文檔中的左對(duì)準(zhǔn)點(diǎn)集合和右對(duì)準(zhǔn)點(diǎn)集合;識(shí)別所述文檔中在左對(duì)準(zhǔn)點(diǎn)與右對(duì)準(zhǔn)點(diǎn)之間滿足特定準(zhǔn)則的空白空間;以及采用識(shí)別出的空白空間定義結(jié)構(gòu)化文檔。
47.根據(jù)權(quán)利要求46所述的計(jì)算機(jī)可讀介質(zhì),其中,所述左對(duì)準(zhǔn)點(diǎn)集合和右對(duì)準(zhǔn)點(diǎn)集合包括由對(duì)字的密度集群確定的對(duì)準(zhǔn)導(dǎo)引。
48.根據(jù)權(quán)利要求46所述的計(jì)算機(jī)可讀介質(zhì),其中,所述用于識(shí)別所述文檔中的空白空間的指令集包括用于執(zhí)行以下操作的指令集從所述右對(duì)準(zhǔn)點(diǎn)集合中選擇一個(gè)右對(duì)準(zhǔn)點(diǎn);識(shí)別所述左對(duì)準(zhǔn)點(diǎn)集合中的一個(gè)左對(duì)準(zhǔn)點(diǎn),該左對(duì)準(zhǔn)點(diǎn)是在所選右對(duì)準(zhǔn)點(diǎn)右側(cè)的最靠近所選右對(duì)準(zhǔn)點(diǎn)的左對(duì)準(zhǔn)點(diǎn);定義所選右對(duì)準(zhǔn)點(diǎn)與所識(shí)別出的左對(duì)準(zhǔn)點(diǎn)之間的垂直條;以及消除在字穿入到所述垂直條中的坐標(biāo)處的垂直條。
49.根據(jù)權(quán)利要求44所述的計(jì)算機(jī)可讀介質(zhì),其中,所述用于采用識(shí)別出的空白空間定義結(jié)構(gòu)化文檔的指令集包括用于拆分字的行的指令集。
50.一種存儲(chǔ)計(jì)算機(jī)程序的計(jì)算機(jī)可讀介質(zhì),所述計(jì)算機(jī)程序在由至少一個(gè)處理器執(zhí)行時(shí)分析包括多個(gè)圖示符的文檔,每個(gè)圖示符在所述文檔中具有一個(gè)位置,所述計(jì)算機(jī)程序包括用于執(zhí)行以下操作的指令集基于圖示符在所述文檔中的位置,生成圖示符之間的關(guān)聯(lián)以將不同的圖示符集合識(shí)別為不同的字;生成字之間的關(guān)聯(lián)以將不同的字集合識(shí)別為不同的段落;以及定義不鄰接的至少兩個(gè)段落之間的關(guān)聯(lián)以定義段落的閱讀順序。
51.根據(jù)權(quán)利要求50所述的計(jì)算機(jī)可讀介質(zhì),其中,所述用于生成字之間的關(guān)聯(lián)的指令集包括用于基于(i)形成字的圖示符的垂直間距性質(zhì)和(ii)形成字的圖示符的水平對(duì)準(zhǔn)性質(zhì)來(lái)識(shí)別要關(guān)聯(lián)的字集合的指令集。
52.根據(jù)權(quán)利要求50所述的計(jì)算機(jī)可讀介質(zhì),其中,所述用于生成字之間的關(guān)聯(lián)以將不同的字集合識(shí)別為不同的段落的指令集包括用于執(zhí)行以下操作的指令集生成字之間的關(guān)聯(lián)以將字集合識(shí)別為文本行;以及生成文本行之間的關(guān)聯(lián)以將文本行集合識(shí)別為段落。
53.根據(jù)權(quán)利要求52所述的計(jì)算機(jī)可讀介質(zhì),其中,所述用于生成字之間的關(guān)聯(lián)以將字集合識(shí)別為文本行的指令集包括用于執(zhí)行以下操作的指令集識(shí)別水平對(duì)準(zhǔn)字的集合,其中,該集合中的所有字具有在彼此的特定閾值內(nèi)的基線;以及基于至少一個(gè)水平間隔的存在,拆分所述水平對(duì)準(zhǔn)字的集合;以及生成每個(gè)剩余集合中的字之間的關(guān)聯(lián)。
54.根據(jù)權(quán)利要求53所述的計(jì)算機(jī)可讀介質(zhì),其中,所述用于拆分所述水平對(duì)準(zhǔn)字的集合的指令集包括用于執(zhí)行以下操作的指令集將水平間隔識(shí)別為水平對(duì)準(zhǔn)字之間至少具有閾值寬度的間隔;識(shí)別垂直對(duì)準(zhǔn)的水平間隔集合;移除不滿足特定準(zhǔn)則集合的水平間隔集合;以及在未移除的間隔處拆分水平對(duì)準(zhǔn)字的集合。
55.根據(jù)權(quán)利要求52所述的計(jì)算機(jī)可讀介質(zhì),其中,所述用于生成文本行之間的關(guān)聯(lián)以將文本行集合識(shí)別為段落的指令集包括用于比較相鄰文本行的垂直間距性質(zhì)的指令集。
56.根據(jù)權(quán)利要求52所述的計(jì)算機(jī)可讀介質(zhì),其中,所述用于生成文本行之間的關(guān)聯(lián)以將文本行集合識(shí)別為段落的指令集包括用于比較相鄰文本行的水平對(duì)準(zhǔn)性質(zhì)的指令集。
57.根據(jù)權(quán)利要求50所述的計(jì)算機(jī)可讀介質(zhì),其中,所述計(jì)算機(jī)程序還包括用于生成段落之間的關(guān)聯(lián)以將段落集合識(shí)別為列的指令集。
58.一種定義程序的方法,所述程序用于分析包括多個(gè)圖示符的文檔,每個(gè)圖示符在所述文檔中具有一個(gè)位置,所述方法包括定義用于基于圖示符在所述文檔中的位置,生成圖示符之間的關(guān)聯(lián)以將不同的圖示符集合識(shí)別為不同的字的模塊;定義用于生成字之間的關(guān)聯(lián)以將不同的字集合識(shí)別為不同的段落的模塊;以及定義用于定義不鄰接的至少兩個(gè)段落之間的關(guān)聯(lián)以定義段落的閱讀順序的模塊。
59.根據(jù)權(quán)利要求58所述的方法,其中,定義用于生成圖示符之間的關(guān)聯(lián)的模塊包括定義用于對(duì)所述圖示符的位置執(zhí)行集群分析以識(shí)別圖示符之間的水平間距的模塊。
60.根據(jù)權(quán)利要求59所述的方法,其中,所述集群分析識(shí)別水平間距尺寸的集群,以識(shí)別字之間的間距和字內(nèi)的間距。
61.一種存儲(chǔ)計(jì)算機(jī)程序的計(jì)算機(jī)可讀介質(zhì),所述計(jì)算機(jī)程序在由至少一個(gè)處理器執(zhí)行時(shí)分析包括多個(gè)圖示符的文檔,每個(gè)圖示符在所述文檔中具有一個(gè)位置,所述計(jì)算機(jī)程序包括用于執(zhí)行以下操作的指令集基于圖示符的位置,將不同的圖示符集合識(shí)別為不同的字;將不同的字集合識(shí)別為不同的段落;定義通過(guò)段落的閱讀順序,所述閱讀順序規(guī)定通過(guò)所述文檔中不鄰接的至少兩個(gè)段落的流;以及基于所述字、段落和定義的閱讀順序來(lái)定義結(jié)構(gòu)化文檔。
62.根據(jù)權(quán)利要求61所述的計(jì)算機(jī)可讀介質(zhì),其中,將特定的圖示符集合識(shí)別為字包括關(guān)聯(lián)所述圖示符。
63.根據(jù)權(quán)利要求61所述的計(jì)算機(jī)可讀介質(zhì),其中,將特定的圖示符集合識(shí)別為字包括生成圖示符之間的關(guān)聯(lián)。
64.根據(jù)權(quán)利要求61所述的計(jì)算機(jī)可讀介質(zhì),其中,不鄰接的兩個(gè)段落包括位于第一列底部的第一段落和位于第二列頂部的第二段落,其中,所述閱讀順序規(guī)定從所述第一段落直接到所述第二段落的流。
65.根據(jù)權(quán)利要求61所述的計(jì)算機(jī)可讀介質(zhì),其中,不鄰接的兩個(gè)段落包括位于第一頁(yè)面末端的第一段落和位于第二頁(yè)面開(kāi)頭的第二段落,其中,所述閱讀順序規(guī)定從所述第一段落直接到所述第二段落的流。
66.根據(jù)權(quán)利要求65所述的計(jì)算機(jī)可讀介質(zhì),其中,所述第一頁(yè)面和所述第二頁(yè)面在所述文檔中不鄰接。
67.一種存儲(chǔ)計(jì)算機(jī)程序的計(jì)算機(jī)可讀介質(zhì),所述計(jì)算機(jī)程序在由至少一個(gè)處理器執(zhí)行時(shí)分析包括多個(gè)本原元素的文檔,每個(gè)本原元素具有多個(gè)性質(zhì),所述計(jì)算機(jī)程序包括用于執(zhí)行以下操作的指令集基于本原元素的性質(zhì),將本原元素的集合關(guān)聯(lián)為結(jié)構(gòu)性元素;定義所述結(jié)構(gòu)性元素之間的關(guān)系;基于關(guān)聯(lián)和關(guān)系規(guī)定通過(guò)所有所述本原元素的流;以及通過(guò)采用所述通過(guò)本原元素的規(guī)定流來(lái)優(yōu)化與所述文檔的用戶交互。
68.根據(jù)權(quán)利要求67所述的計(jì)算機(jī)可讀介質(zhì),其中,所述用戶交互包括選擇操作。
69.根據(jù)權(quán)利要求67所述的計(jì)算機(jī)可讀介質(zhì),其中,所述用戶交互包括顯示操作。
70.根據(jù)權(quán)利要求67所述的計(jì)算機(jī)可讀介質(zhì),其中,所述用戶交互包括導(dǎo)航操作。
71.一種存儲(chǔ)計(jì)算機(jī)程序的計(jì)算機(jī)可讀介質(zhì),所述計(jì)算機(jī)程序在由至少一個(gè)處理器執(zhí)行時(shí)分析包括多個(gè)本原元素的文檔,所述計(jì)算機(jī)程序包括用于執(zhí)行以下操作的指令集識(shí)別本原元素的集合之間的邊界;識(shí)別出多個(gè)所述邊界形成表格;以及定義針對(duì)所述表格的表格結(jié)構(gòu)性元素,所述表格結(jié)構(gòu)性元素包括按照多個(gè)行和列布置的多個(gè)單元,每個(gè)單元包括相關(guān)聯(lián)的本原元素集合。
72.根據(jù)權(quán)利要求71所述的計(jì)算機(jī)可讀介質(zhì),還包括用于基于所述表格結(jié)構(gòu)性元素定義結(jié)構(gòu)化文檔的指令集。
73.根據(jù)權(quán)利要求72所述的計(jì)算機(jī)可讀介質(zhì),其中,所述用于定義結(jié)構(gòu)化文檔的指令集包括用于定義未結(jié)構(gòu)化文檔的分級(jí)模型的指令集。
74.根據(jù)權(quán)利要求73所述的計(jì)算機(jī)可讀介質(zhì),其中,所述表格結(jié)構(gòu)性元素的單元包括在所述分級(jí)模型中的節(jié)點(diǎn)。
75.根據(jù)權(quán)利要求73所述的計(jì)算機(jī)可讀介質(zhì),其中,所述表格結(jié)構(gòu)性元素包括在所述分級(jí)模型中的節(jié)點(diǎn)。
76.根據(jù)權(quán)利要求71所述的計(jì)算機(jī)可讀介質(zhì),其中,所述用于識(shí)別出多個(gè)所述邊界形成表格的指令集包括用于識(shí)別出(i)形成更大矩形形狀的邊界集合和(ii)包含在所述更大矩形形狀內(nèi)的多個(gè)矩形形狀的指令集。
77.根據(jù)權(quán)利要求71所述的計(jì)算機(jī)可讀介質(zhì),其中,所述文檔包括多個(gè)圖形本原元素, 其中所述用于識(shí)別本原元素集合之間的邊界的指令集包括識(shí)別作為垂直線或水平線的圖形本原元素和與垂直線或水平線近似的圖形本原元素。
78.根據(jù)權(quán)利要求77所述的計(jì)算機(jī)可讀介質(zhì),其中,所述計(jì)算機(jī)程序還包括用于基于所述識(shí)別出的圖形本原元素來(lái)識(shí)別多個(gè)分級(jí)區(qū)域的指令集。
79.根據(jù)權(quán)利要求78所述的計(jì)算機(jī)可讀介質(zhì),其中,所述用于識(shí)別出多個(gè)所述邊界形成表格的指令集包括用于識(shí)別滿足特定特性集合的分級(jí)區(qū)域集合的指令集。
80.根據(jù)權(quán)利要求79所述的計(jì)算機(jī)可讀介質(zhì),其中,所述用于識(shí)別出多個(gè)所述邊界形成表格的指令集包括用于識(shí)別(i)不與父區(qū)域共享任何邊界的矩形的第一區(qū)域和(ii)所述第一區(qū)域的至少兩個(gè)子區(qū)域的集合的指令集,其中,所述子區(qū)域的集合完全分隔所述第一區(qū)域,其中所述集合中的每個(gè)子區(qū)域是矩形的。
81.根據(jù)權(quán)利要求80所述的計(jì)算機(jī)可讀介質(zhì),其中,所述第一區(qū)域是表格的外界線,所述第一區(qū)域的子區(qū)域是表格的單元。
82.根據(jù)權(quán)利要求71所述的計(jì)算機(jī)可讀介質(zhì),其中,基于形成單元的相關(guān)聯(lián)的圖示符集合的位置來(lái)推斷多個(gè)識(shí)別出的邊界。
83.根據(jù)權(quán)利要求82所述的計(jì)算機(jī)可讀介質(zhì),其中,所述計(jì)算機(jī)程序還包括用于將圖示符集合關(guān)聯(lián)為段落的指令集,其中基于段落的位置來(lái)推斷所述邊界。
84.根據(jù)權(quán)利要求82所述的計(jì)算機(jī)可讀介質(zhì),其中,所述用于識(shí)別圖示符集合之間的邊界的指令集包括用于識(shí)別垂直地或水平地對(duì)準(zhǔn)的至少兩個(gè)圖示符集合的指令集。
85.根據(jù)權(quán)利要求71所述的計(jì)算機(jī)可讀介質(zhì),其中,所述用于定義表格結(jié)構(gòu)性元素的指令集包括用于識(shí)別形成鄰接矩形的識(shí)別出的邊界的集合的指令集。
86.根據(jù)權(quán)利要求85所述的計(jì)算機(jī)可讀介質(zhì),其中,所述鄰接矩形是所述表格結(jié)構(gòu)性元素的單元。
87.一種定義程序的方法,所述程序用于(i)分析包括多個(gè)本原元素的文檔,并且(ii) 基于所述分析生成定義所述文檔的結(jié)構(gòu)的結(jié)構(gòu)性元素,所述方法包括定義用于識(shí)別本原元素集合之間的邊界的模塊; 定義用于識(shí)別出多個(gè)所述邊界形成表格的模塊;以及定義用于基于所述表格定義表格結(jié)構(gòu)性元素的模塊,所述表格結(jié)構(gòu)性元素包括按照多個(gè)行和列布置的多個(gè)單元,每個(gè)單元包括相關(guān)聯(lián)的本原元素集合。
88.一種存儲(chǔ)計(jì)算機(jī)程序的計(jì)算機(jī)可讀介質(zhì),所述計(jì)算機(jī)程序在由至少一個(gè)處理器執(zhí)行時(shí)分析包括多個(gè)本原元素的文檔,所述計(jì)算機(jī)程序包括用于執(zhí)行以下操作的指令集識(shí)別包括表格的本原元素的第一集合;針對(duì)所述本原元素的第一集合定義表格結(jié)構(gòu)性元素;識(shí)別不包括表格的本原元素的第二集合;針對(duì)所述本原元素的第二集合定義非表格結(jié)構(gòu)性元素的集合;定義包括所述表格結(jié)構(gòu)性元素和所述非表格結(jié)構(gòu)性元素的集合的結(jié)構(gòu)化文檔。
89.根據(jù)權(quán)利要求88所述的計(jì)算機(jī)可讀介質(zhì),其中,所述用于定義結(jié)構(gòu)化文檔的指令集包括用于定義通過(guò)所述結(jié)構(gòu)性元素的閱讀順序的指令集,其中,所述閱讀順序是從來(lái)自結(jié)構(gòu)性元素集合的第一結(jié)構(gòu)性元素到所述表格結(jié)構(gòu)性元素、再到來(lái)自所述結(jié)構(gòu)性元素集合的第二結(jié)構(gòu)性元素。
90.根據(jù)權(quán)利要求88所述的計(jì)算機(jī)可讀介質(zhì),其中,所述計(jì)算機(jī)程序包括用于執(zhí)行以下操作的指令集識(shí)別不同的本原元素集合,其中該不同的集合中的每一個(gè)包括不同的表格;以及針對(duì)所述不同的集合中的每一個(gè)定義不同的表格結(jié)構(gòu)性元素。
91.根據(jù)權(quán)利要求90所述的計(jì)算機(jī)可讀介質(zhì),其中,所述不同的集合中的第一個(gè)包括圖形本原元素和圖示符兩者,而所述不同的集合中的第二個(gè)僅包括圖示符。
92.一種存儲(chǔ)計(jì)算機(jī)程序的計(jì)算機(jī)可讀介質(zhì),所述計(jì)算機(jī)程序在由至少一個(gè)處理器執(zhí)行時(shí)分析文檔,所述計(jì)算機(jī)程序包括用于執(zhí)行以下操作的指令集接收包括多個(gè)本原圖形元素的文檔,每個(gè)本原圖形元素被定義為所述文檔中的單個(gè)對(duì)象,所述文檔具有繪制順序,該繪制順序指示當(dāng)顯示所述文檔時(shí)繪制本原圖形元素的順序;識(shí)別在所述繪制順序中接連的本原圖形元素之間的位置關(guān)系;以及基于所述位置關(guān)系,從至少兩個(gè)所述本原圖形元素定義單個(gè)結(jié)構(gòu)性圖形元素。
93.根據(jù)權(quán)利要求92所述的計(jì)算機(jī)可讀介質(zhì),其中,所述文檔還包括多個(gè)圖示符,其中所述繪制順序不指示所述圖示符繪制在頁(yè)面上的順序。
94.根據(jù)權(quán)利要求92所述的計(jì)算機(jī)可讀介質(zhì),其中,所述文檔是矢量圖形文檔,其中所述本原圖形元素是矢量圖形。
95.根據(jù)權(quán)利要求92所述的計(jì)算機(jī)可讀介質(zhì),其中,所述用于識(shí)別接連的本原圖形元素之間的位置關(guān)系的指令集包括用于針對(duì)在所述閱讀順序中相繼的第一本原圖形元素和第二本原圖形元素,計(jì)算包括所述第一本原圖形元素和第二本原圖形元素的結(jié)構(gòu)性圖形元素的尺寸的指令集。
96.根據(jù)權(quán)利要求95所述的計(jì)算機(jī)可讀介質(zhì),其中,所述尺寸與包圍所述第一本原圖形元素和第二本原圖形元素的豎直界定框的面積成比例。
97.根據(jù)權(quán)利要求95所述的計(jì)算機(jī)可讀介質(zhì),其中,所述尺寸與包圍所述第一本原圖形元素和第二本原圖形元素的豎直界定框的長(zhǎng)度和高度之和成比例。
98.根據(jù)權(quán)利要求95所述的計(jì)算機(jī)可讀介質(zhì),其中,所述用于識(shí)別接連的本原圖形元素之間的位置關(guān)系的指令集還包括用于執(zhí)行以下操作的指令集針對(duì)所述第二本原圖形元素和在所述閱讀順序中與所述第二本原圖形元素相繼的第三本原圖形元素,計(jì)算包括所述第二本原圖形元素和第三本原圖形元素的結(jié)構(gòu)性圖形元素的尺寸;將包括所述第一和第二本原圖形元素的結(jié)構(gòu)性圖形元素的尺寸與包括所述第二和第三本原圖形元素的結(jié)構(gòu)性圖形元素的尺寸進(jìn)行比較。
99.根據(jù)權(quán)利要求92所述的計(jì)算機(jī)可讀介質(zhì),其中,所述用于識(shí)別接連的本原圖形元素之間的位置關(guān)系的指令集包括用于執(zhí)行以下操作的指令集識(shí)別在所述繪制順序中接連的每對(duì)本原圖形元素;和對(duì)于識(shí)別出的每對(duì)本原圖形元素,計(jì)算該對(duì)的展度值。
100.根據(jù)權(quán)利要求99所述的計(jì)算機(jī)可讀介質(zhì),其中,對(duì)的展度值描述該對(duì)中的兩個(gè)本原圖形元素的尺寸和相鄰度。
101.根據(jù)權(quán)利要求99所述的計(jì)算機(jī)可讀介質(zhì),其中,所述用于從本原圖形元素集合定義單個(gè)結(jié)構(gòu)性圖形元素的指令集包括用于執(zhí)行以下操作的指令集基于所計(jì)算的展度值識(shí)別彼此相鄰的本原圖形元素的集群,其中在所述集群內(nèi)所有的本原圖形元素在所述繪制順序中是連續(xù)的;識(shí)別所述集群中滿足特定約束集合的連續(xù)本原圖形元素的子分組;以及針對(duì)每個(gè)子分組,定義包括該子分組中的所有本原圖形元素的結(jié)構(gòu)性圖形元素。
102.根據(jù)權(quán)利要求101所述的計(jì)算機(jī)可讀介質(zhì),其中,所述用于識(shí)別本原圖形元素的集群的指令集包括用于以所計(jì)算的展度值作為一階差值對(duì)本原圖形元素執(zhí)行差值集群的指令集。
103.根據(jù)權(quán)利要求101所述的計(jì)算機(jī)可讀介質(zhì),其中,所述特定約束集合包括如下要求所述子分組中的每個(gè)特定本原元素的界線與該子分組中按照繪制順序在所述特定本原元素之前的所有本原元素的集體界線相交。
104.根據(jù)權(quán)利要求103所述的計(jì)算機(jī)可讀介質(zhì),其中,每個(gè)本原元素的界線是包括該本原元素的最小豎直界定框。
105.根據(jù)權(quán)利要求103所述的計(jì)算機(jī)可讀介質(zhì),其中,每個(gè)本原元素的界線是完全包圍該本原元素的最小面積路徑。
106.根據(jù)權(quán)利要求92所述的計(jì)算機(jī)可讀介質(zhì),其中,所述用于從所述多個(gè)本原圖形元素定義單個(gè)結(jié)構(gòu)性圖形元素的指令集包括用于生成用以定義結(jié)構(gòu)性圖形元素的本原圖形元素集合之間的至少一個(gè)關(guān)聯(lián)的指令集。
107.根據(jù)權(quán)利要求92所述的計(jì)算機(jī)可讀介質(zhì),其中,所述計(jì)算機(jī)程序還包括用于基于所述結(jié)構(gòu)性圖形元素定義結(jié)構(gòu)化文檔的指令集。
108.根據(jù)權(quán)利要求107所述的計(jì)算機(jī)可讀介質(zhì),其中,所述結(jié)構(gòu)化文檔包括文檔的分級(jí)模型,該分級(jí)模型包括多個(gè)節(jié)點(diǎn),其中一個(gè)節(jié)點(diǎn)由所述結(jié)構(gòu)性圖形元素填充。
109.一種用于定義程序的方法,該程序用于分析文檔并基于所述分析生成定義文檔中的結(jié)構(gòu)的結(jié)構(gòu)性元素,該方法包括定義用于接收包括多個(gè)本原圖形元素的文檔的模塊,每個(gè)本原圖形元素被定義為所述文檔中的單個(gè)對(duì)象,所述文檔具有繪制順序,該繪制順序指示當(dāng)顯示所述文檔時(shí)繪制本原圖形元素的順序;定義用于識(shí)別在所述繪制順序中接連的本原圖形元素之間的位置關(guān)系的模塊;以及定義用于基于所述位置關(guān)系,從至少兩個(gè)所述本原圖形元素定義單個(gè)結(jié)構(gòu)性圖形元素的模塊。
110.根據(jù)權(quán)利要求109所述的方法,還包括定義用于定義包括結(jié)構(gòu)性圖形元素的結(jié)構(gòu)化文檔的模塊。
111.根據(jù)權(quán)利要求110所述的方法,其中,所述結(jié)構(gòu)化文檔包括文檔的分級(jí)模型,該分級(jí)模型包括多個(gè)節(jié)點(diǎn),其中一個(gè)節(jié)點(diǎn)被所述結(jié)構(gòu)性圖形元素填充。
112.—種存儲(chǔ)計(jì)算機(jī)程序的計(jì)算機(jī)可讀介質(zhì),所述計(jì)算機(jī)程序在由至少一個(gè)處理器執(zhí)行時(shí)分析文檔,所述計(jì)算機(jī)程序包括用于執(zhí)行以下操作的指令集接收包括多個(gè)本原圖形元素的文檔,每個(gè)本原圖形元素被定義為所述文檔中的單個(gè)對(duì)象,所述文檔具有繪制順序,該繪制順序指示當(dāng)顯示所述文檔時(shí)繪制本原圖形元素的順序;計(jì)算每對(duì)在所述繪制順序中接連的本原圖形元素的值,其中,所計(jì)算的值與該對(duì)中的本原圖形元素的尺寸相關(guān);基于所計(jì)算的值,定義接連的本原圖形元素的集群;以及識(shí)別所述集群中滿足特定約束的本原圖形元素的子集群的集合;以及將每個(gè)特定子集群定義為包括所述特定子集群中的本原圖形元素的單個(gè)結(jié)構(gòu)性圖形元素。
113.根據(jù)權(quán)利要求112所述的計(jì)算機(jī)可讀介質(zhì),其中,所計(jì)算的值還與所述對(duì)中的本原圖形元素彼此的相鄰度相關(guān)。
114.一種用于定義用以重構(gòu)文檔的程序的方法,該方法包括定義文檔重構(gòu)操作的缺省集合,所述文檔重構(gòu)操作用以從包括多個(gè)本原元素的文檔定義結(jié)構(gòu)化文檔;定義簡(jiǎn)檔分級(jí)集合,每個(gè)簡(jiǎn)檔包括(i)潛在文檔重構(gòu)結(jié)果集合,以及(ii)用于在中間文檔重構(gòu)結(jié)果與簡(jiǎn)檔的潛在文檔重構(gòu)結(jié)果匹配時(shí)修改文檔重構(gòu)操作的指令,其中來(lái)自分級(jí)中較低級(jí)別處的簡(jiǎn)檔的指令撤銷來(lái)自較高級(jí)別處的簡(jiǎn)檔的指令;以及定義用于將中間文檔重構(gòu)結(jié)果與簡(jiǎn)檔匹配的模塊。
115.根據(jù)權(quán)利要求114所述的方法,其中,所述結(jié)構(gòu)化文檔包括文檔的分級(jí)模型。
116.根據(jù)權(quán)利要求114所述的方法,其中,所述簡(jiǎn)檔分級(jí)集合包括針對(duì)文檔、章節(jié)、頁(yè)面和區(qū)中的至少兩個(gè)的簡(jiǎn)檔。
117.根據(jù)權(quán)利要求116所述的方法,其中,每個(gè)文檔簡(jiǎn)檔規(guī)定可能頁(yè)面簡(jiǎn)檔的特定集合,并且每個(gè)頁(yè)面簡(jiǎn)檔規(guī)定可能區(qū)簡(jiǎn)檔的特定集合。
118.根據(jù)權(quán)利要求117所述的方法,其中,第一文檔簡(jiǎn)檔的頁(yè)面簡(jiǎn)檔集合包括特定頁(yè)面簡(jiǎn)檔,并且第二文檔簡(jiǎn)檔的頁(yè)面簡(jiǎn)檔集合也包括所述特定頁(yè)面簡(jiǎn)檔。
119.根據(jù)權(quán)利要求114所述的方法,特定簡(jiǎn)檔的指令包括當(dāng)中間文檔重構(gòu)結(jié)果與針對(duì)所述特定簡(jiǎn)檔的潛在文檔重構(gòu)結(jié)果匹配時(shí)應(yīng)當(dāng)被測(cè)試的所述簡(jiǎn)檔分級(jí)集合中的較低級(jí)別處的簡(jiǎn)檔的子集。
120.根據(jù)權(quán)利要求114所述的方法,其中,特定簡(jiǎn)檔的指令包括不執(zhí)行特定文檔重構(gòu)操作的指令。
121.根據(jù)權(quán)利要求120所述的方法,其中,所述特定簡(jiǎn)檔是頁(yè)面的簡(jiǎn)檔,并且所述特定簡(jiǎn)檔的潛在文檔重構(gòu)結(jié)果的集合包括頁(yè)面僅具有一列文本的結(jié)果,其中所述特定簡(jiǎn)檔的指令包括不執(zhí)行拆分文本行的操作的指令。
122.根據(jù)權(quán)利要求114所述的方法,其中,特定簡(jiǎn)檔的指令包括關(guān)于如何執(zhí)行特定文檔重構(gòu)操作的指令。
123.根據(jù)權(quán)利要求114所述的方法,其中,特定簡(jiǎn)檔的指令包括規(guī)定特定重構(gòu)處理的指令,該特定重構(gòu)處理的結(jié)果應(yīng)從中間重構(gòu)結(jié)果中移除。
124.—種存儲(chǔ)計(jì)算機(jī)程序的計(jì)算機(jī)可讀介質(zhì),所述計(jì)算機(jī)程序由至少一個(gè)處理器執(zhí)行,所述計(jì)算機(jī)程序包括用于執(zhí)行以下操作的指令集接收包括多個(gè)本原元素的文檔;識(shí)別文檔重構(gòu)操作的缺省集合,所述文檔重構(gòu)操作用于重構(gòu)所述文檔以定義結(jié)構(gòu)化文檔;執(zhí)行來(lái)自所述缺省集合的一個(gè)或多個(gè)文檔重構(gòu)操作;基于所執(zhí)行的文檔重構(gòu)操作的結(jié)果,識(shí)別所述文檔的簡(jiǎn)檔;以及根據(jù)所識(shí)別的簡(jiǎn)檔修改用于重構(gòu)文檔的文檔重構(gòu)操作的集合。
125.根據(jù)權(quán)利要求IM所述的計(jì)算機(jī)可讀介質(zhì),其中,所述計(jì)算機(jī)程序還包括用于在修改所述集合之后執(zhí)行來(lái)自修改后的集合的至少一個(gè)文檔重構(gòu)操作的指令集。
126.根據(jù)權(quán)利要求IM所述的計(jì)算機(jī)可讀介質(zhì),其中,所述用于修改文檔重構(gòu)操作集合的指令集包括用于從要執(zhí)行的重構(gòu)操作的集合中移除特定重構(gòu)操作的指令集。
127.根據(jù)權(quán)利要求IM所述的計(jì)算機(jī)可讀介質(zhì),其中,所述用于修改文檔重構(gòu)操作集合的指令集包括用于向要執(zhí)行的重構(gòu)操作的集合添加特定重構(gòu)操作的指令集。
128.根據(jù)權(quán)利要求IM所述的計(jì)算機(jī)可讀介質(zhì),其中,重構(gòu)操作的缺省集合規(guī)定要執(zhí)行重構(gòu)操作的順序。
129.根據(jù)權(quán)利要求1 所述的計(jì)算機(jī)可讀介質(zhì),其中,所述用于修改文檔重構(gòu)操作集合的指令集包括用于修改要執(zhí)行重構(gòu)操作的順序的指令集。
130.根據(jù)權(quán)利要求IM所述的計(jì)算機(jī)可讀介質(zhì),其中,所述簡(jiǎn)檔是基于執(zhí)行的文檔重構(gòu)操作的結(jié)果識(shí)別文檔的文檔類型的文檔簡(jiǎn)檔。
131.根據(jù)權(quán)利要求130所述的計(jì)算機(jī)可讀介質(zhì),其中,所述計(jì)算機(jī)程序還包括用于執(zhí)行以下操作的指令集在修改所述集合之后執(zhí)行來(lái)自所修改的集合的至少一個(gè)文檔重構(gòu)操作;基于所執(zhí)行的文檔重構(gòu)操作的結(jié)果,識(shí)別針對(duì)文檔的特定章節(jié)的章節(jié)簡(jiǎn)檔;以及根據(jù)識(shí)別出的章節(jié)簡(jiǎn)檔修改用于重構(gòu)文檔的特定章節(jié)的文檔重構(gòu)操作的集合。
132.根據(jù)權(quán)利要求131所述的計(jì)算機(jī)可讀介質(zhì),其中,所述特定章節(jié)是特定頁(yè)面。
133.根據(jù)權(quán)利要求131所述的計(jì)算機(jī)可讀介質(zhì),其中,所述章節(jié)簡(jiǎn)檔中的指令撤銷所述文檔簡(jiǎn)檔中用于重構(gòu)所述特定章節(jié)的沖突指令。
134.根據(jù)權(quán)利要求131所述的計(jì)算機(jī)可讀介質(zhì),其中,在識(shí)別所述章節(jié)簡(jiǎn)檔之后,所述文檔簡(jiǎn)檔中沒(méi)有與所述章節(jié)簡(jiǎn)檔中的指令抵觸的指令仍然在運(yùn)行。
135.一種存儲(chǔ)計(jì)算機(jī)程序的計(jì)算機(jī)可讀介質(zhì),所述計(jì)算機(jī)程序在由至少一個(gè)處理器執(zhí)行時(shí)顯示文檔,所述計(jì)算機(jī)程序包括用于執(zhí)行以下操作的指令集定義包括結(jié)構(gòu)性元素的分級(jí)的結(jié)構(gòu)化文檔,所述分級(jí)是通過(guò)分析未結(jié)構(gòu)化文檔而構(gòu)建的;在設(shè)備上顯示所述文檔;接收對(duì)所述文檔中感興趣位置的選擇;基于所述感興趣位置,將所述分級(jí)中的結(jié)構(gòu)性元素識(shí)別為感興趣區(qū)域;以及修改對(duì)所述文檔的顯示,以突出顯示所識(shí)別出的感興趣區(qū)域。
136.根據(jù)權(quán)利要求135所述的計(jì)算機(jī)可讀介質(zhì),其中,所述設(shè)備是小屏幕設(shè)備。
137.根據(jù)權(quán)利要求136所述的計(jì)算機(jī)可讀介質(zhì),其中,所述設(shè)備是手持式設(shè)備。
138.根據(jù)權(quán)利要求136所述的計(jì)算機(jī)可讀介質(zhì),其中,所述未結(jié)構(gòu)化文檔包括多個(gè)未關(guān)聯(lián)的本原元素,其中,所述用于定義結(jié)構(gòu)化文檔的指令集包括用于執(zhí)行以下操作的指令集生成所述本原元素之間的關(guān)聯(lián)以定義結(jié)構(gòu)性元素;以及定義結(jié)構(gòu)性元素的分級(jí)。
139.根據(jù)權(quán)利要求135所述的計(jì)算機(jī)可讀介質(zhì),其中,所述用于識(shí)別結(jié)構(gòu)性元素的指令集包括用于執(zhí)行以下操作的指令集識(shí)別包括所述感興趣位置的所述分級(jí)中最低級(jí)別處的結(jié)構(gòu)性元素;以及識(shí)別包括在所述分級(jí)的最低級(jí)別處識(shí)別出的結(jié)構(gòu)性元素的所述分級(jí)中較高級(jí)別處的結(jié)構(gòu)性元素,直到到達(dá)適合作為感興趣區(qū)域的結(jié)構(gòu)性元素。
140.根據(jù)權(quán)利要求139所述的計(jì)算機(jī)可讀介質(zhì),其中,所述分級(jí)的最低級(jí)別處的結(jié)構(gòu)性元素是關(guān)聯(lián)為字的圖示符集,并且適合作為感興趣區(qū)域的結(jié)構(gòu)性元素是包括該字的段落。
141.根據(jù)權(quán)利要求139所述的計(jì)算機(jī)可讀介質(zhì),其中,所述感興趣位置在圖形元素內(nèi), 并且所述感興趣區(qū)域是所述圖形元素。
142.根據(jù)權(quán)利要求135所述的計(jì)算機(jī)可讀介質(zhì),其中,所述用于接收對(duì)感興趣位置的選擇的指令集包括用于接收在觸摸屏設(shè)備上的特定位置處的雙敲的指令集。
143.根據(jù)權(quán)利要求135所述的計(jì)算機(jī)可讀介質(zhì),其中,所述用于修改對(duì)文檔的顯示的指令集包括用于組合對(duì)文檔的縮放、旋轉(zhuǎn)和平移以置中所述感興趣區(qū)域的指令集。
144.根據(jù)權(quán)利要求135所述的計(jì)算機(jī)可讀介質(zhì),其中,所述用于修改對(duì)文檔的顯示的指令集包括用于執(zhí)行以下操作的指令集基于作為感興趣區(qū)域的結(jié)構(gòu)性元素定義感興趣矩形;以及縮放所述顯示以在顯示整個(gè)所述感興趣矩形的同時(shí)最大化所述感興趣矩形的尺寸。
145.根據(jù)權(quán)利要求144所述的計(jì)算機(jī)可讀介質(zhì),其中,所述感興趣矩形被縮放,使得該矩形在第一方向上的長(zhǎng)度等于在所述設(shè)備上的顯示在所述第一方向上的長(zhǎng)度,其中所述用于修改對(duì)文檔的顯示的指令集還包括用于在第二方向上將所述感興趣矩形置中在所述顯示中的指令集。
146.根據(jù)權(quán)利要求145所述的計(jì)算機(jī)可讀介質(zhì),其中,所述第一方向是水平的,而所述第二方向是垂直的。
147.根據(jù)權(quán)利要求145所述的計(jì)算機(jī)可讀介質(zhì),其中,所述第一方向是垂直的,而所述第二方向是水平的。
148.根據(jù)權(quán)利要求135所述的計(jì)算機(jī)可讀介質(zhì),其中,所述計(jì)算機(jī)程序還包括用于執(zhí)行以下操作的指令集接收用以從所述感興趣區(qū)域移動(dòng)的輸入;以及修改對(duì)所述文檔的顯示,以突出顯示感興趣的結(jié)構(gòu)性相關(guān)區(qū)域。
149.根據(jù)權(quán)利要求148所述的計(jì)算機(jī)可讀介質(zhì),其中,所述感興趣的結(jié)構(gòu)性相關(guān)區(qū)域是按照閱讀順序在所識(shí)別出的結(jié)構(gòu)性元素之前的結(jié)構(gòu)性元素。
150.根據(jù)權(quán)利要求148所述的計(jì)算機(jī)可讀介質(zhì),其中,所述感興趣的結(jié)構(gòu)性相關(guān)區(qū)域是按照閱讀順序在所識(shí)別出的結(jié)構(gòu)性元素之后的結(jié)構(gòu)性元素。
151.根據(jù)權(quán)利要求148所述的計(jì)算機(jī)可讀介質(zhì),其中,所述感興趣的結(jié)構(gòu)性相關(guān)區(qū)域是所述文檔中與初始感興趣區(qū)域不同的頁(yè)面上的結(jié)構(gòu)性元素,其中,所述結(jié)構(gòu)化文檔包括所述感興趣區(qū)域與所述感興趣的結(jié)構(gòu)性相關(guān)區(qū)域之間的鏈接。
152.一種存儲(chǔ)用于手持式顯示設(shè)備的計(jì)算機(jī)程序的計(jì)算機(jī)可讀介質(zhì),所述計(jì)算機(jī)程序由至少一個(gè)處理器執(zhí)行,所述計(jì)算機(jī)程序包括用于執(zhí)行以下操作的指令集分析包括多個(gè)未關(guān)聯(lián)的本原元素的未結(jié)構(gòu)化文檔,以定義包括結(jié)構(gòu)性元素的分級(jí)的結(jié)構(gòu)化文檔,所述結(jié)構(gòu)性元素是通過(guò)關(guān)聯(lián)本原元素集合來(lái)定義的;當(dāng)所述手持式顯示設(shè)備處于第一朝向時(shí),在所述手持式顯示設(shè)備上在第一布局中顯示所述結(jié)構(gòu)化文檔的特定部分;當(dāng)所述手持式顯示設(shè)備處于第二朝向時(shí),在所述手持式顯示設(shè)備上在與所述第一布局不同的第二布局中顯示所述結(jié)構(gòu)化文檔的所述特定部分。
153.根據(jù)權(quán)利要求152所述的計(jì)算機(jī)可讀介質(zhì),其中,所述第一朝向是水平朝向,而所述第二朝向是垂直朝向。
154.根據(jù)權(quán)利要求153所述的計(jì)算機(jī)可讀介質(zhì),其中,所述結(jié)構(gòu)化文檔的部分包括布置在一列中的文本,其中所述第一布局在三列中顯示所述文本,而所述第二布局在兩列中顯示所述文本。
155.根據(jù)權(quán)利要求152所述的計(jì)算機(jī)可讀介質(zhì),其中,所述手持式顯示設(shè)備包括用于確定該顯示設(shè)備的朝向的加速計(jì)。
156.根據(jù)權(quán)利要求152所述的計(jì)算機(jī)可讀介質(zhì),其中,所述手持式顯示設(shè)備是 iPhone 0
157.一種定義用于顯示文檔的程序的方法,該方法包括定義用于定義包括結(jié)構(gòu)性元素的分級(jí)的結(jié)構(gòu)化文檔的模塊,所述分級(jí)是通過(guò)分析未結(jié)構(gòu)化文檔而構(gòu)建的;定義用于在設(shè)備上顯示所述文檔的模塊;定義用于接收對(duì)所述文檔中感興趣位置的選擇的模塊;定義用于基于所述感興趣位置,將所述分級(jí)中的結(jié)構(gòu)性元素識(shí)別為感興趣區(qū)域的模塊;以及定義用于修改對(duì)所述文檔的顯示,以突出顯示所識(shí)別出的感興趣區(qū)域的模塊。
158.根據(jù)權(quán)利要求157所述的方法,其中,所述程序是針對(duì)手持式設(shè)備的固件定義的。
159.—種存儲(chǔ)計(jì)算機(jī)程序的計(jì)算機(jī)可讀介質(zhì),所述計(jì)算機(jī)程序在由至少一個(gè)處理器執(zhí)行時(shí)定義對(duì)文檔中的文本的選擇,所述計(jì)算機(jī)程序包括用于執(zhí)行以下操作的指令集接收包括多個(gè)未關(guān)聯(lián)的圖示符的未結(jié)構(gòu)化文檔;關(guān)聯(lián)圖示符集;識(shí)別規(guī)定通過(guò)所述圖示符的閱讀流的閱讀順序;顯示所述文檔;接收用于對(duì)所顯示的文檔內(nèi)的文本的選擇的起始點(diǎn)和終止點(diǎn);以及通過(guò)采用識(shí)別出的圖示符集和預(yù)期的閱讀流來(lái)定義從所述起始點(diǎn)到所述終止點(diǎn)對(duì)文本的選擇。
160.根據(jù)權(quán)利要求159所述的計(jì)算機(jī)可讀介質(zhì),其中,所關(guān)聯(lián)的圖示符集包括多個(gè)段落,所述閱讀順序規(guī)定從第一段落到不鄰接的第二段落的閱讀流。
161.根據(jù)權(quán)利要求159所述的計(jì)算機(jī)可讀介質(zhì),其中,所關(guān)聯(lián)的圖示符集包括多個(gè)列, 所述起始點(diǎn)和終止點(diǎn)在不同的列中。
162.根據(jù)權(quán)利要求161所述的計(jì)算機(jī)可讀介質(zhì),其中,所述閱讀順序針對(duì)每個(gè)列規(guī)定一個(gè)順序值,其中,對(duì)文本的選擇包括順序值在包括所述起始點(diǎn)的列的順序值與包括所述終止點(diǎn)的列的順序值之間的所有列。
163.根據(jù)權(quán)利要求159所述的計(jì)算機(jī)可讀介質(zhì),其中,所述計(jì)算機(jī)程序還包括用于執(zhí)行以下操作的指令集確定在所述閱讀順序中所述起始點(diǎn)是否是在所述終止點(diǎn)之后;當(dāng)所述起始點(diǎn)在所述終止點(diǎn)之后時(shí),切換用于選擇的起始點(diǎn)和終止點(diǎn),使得在所述閱讀順序中起始點(diǎn)在終止點(diǎn)之前。
164.根據(jù)權(quán)利要求159所述的計(jì)算機(jī)可讀介質(zhì),其中,通過(guò)利用游標(biāo)控制器的點(diǎn)擊和拖拽選擇來(lái)接收用于文本選擇的起始點(diǎn)和終止點(diǎn)。
165.根據(jù)權(quán)利要求159所述的計(jì)算機(jī)可讀介質(zhì),其中,當(dāng)按壓游標(biāo)控制器按鈕時(shí)所述起始點(diǎn)是游標(biāo)的定位,并且在游標(biāo)從所述起始點(diǎn)移動(dòng)之后所述終止點(diǎn)是游標(biāo)的定位。
166.根據(jù)權(quán)利要求159所述的計(jì)算機(jī)可讀介質(zhì),其中,通過(guò)觸摸屏姿態(tài)來(lái)接收用于文本選擇的起始點(diǎn)和終止點(diǎn)。
167.根據(jù)權(quán)利要求166所述的計(jì)算機(jī)可讀介質(zhì),其中,所述起始點(diǎn)是用戶用物體初始地觸摸觸摸屏的定位,所述終止點(diǎn)是用戶將所述物體拖拽到的定位。
168.根據(jù)權(quán)利要求167所述的計(jì)算機(jī)可讀介質(zhì),其中,所述物體是用戶的手指。
169.根據(jù)權(quán)利要求159所述的計(jì)算機(jī)可讀介質(zhì),其中,所述用于識(shí)別關(guān)聯(lián)的圖示符集和閱讀順序的指令集包括用于從所述未結(jié)構(gòu)化文檔定義結(jié)構(gòu)化文檔的指令集,其中所述關(guān)聯(lián)的圖示符集是所述結(jié)構(gòu)化文檔中的結(jié)構(gòu)性元素。
170.根據(jù)權(quán)利要求169所述的計(jì)算機(jī)可讀介質(zhì),其中,所述結(jié)構(gòu)化文檔包括多個(gè)布局, 每個(gè)布局包括一個(gè)或多個(gè)關(guān)聯(lián)的圖示符集。
171.根據(jù)權(quán)利要求170所述的計(jì)算機(jī)可讀介質(zhì),其中,所述計(jì)算機(jī)程序還包括用于執(zhí)行以下操作的指令集確定所述起始點(diǎn)和終止點(diǎn)是否是在同一布局內(nèi);以及當(dāng)所述起始點(diǎn)和終止點(diǎn)不在同一布局內(nèi)時(shí),定義與所述起始點(diǎn)在同一布局內(nèi)的新終止點(diǎn)ο
172.根據(jù)權(quán)利要求171所述的計(jì)算機(jī)可讀介質(zhì),其中,所述用于定義新終止點(diǎn)的指令集包括識(shí)別從所述起始點(diǎn)到所述終止點(diǎn)的直線;以及將所述直線離開(kāi)所述起始點(diǎn)的布局的點(diǎn)定義為所述新終止點(diǎn)。
173.根據(jù)權(quán)利要求170所述的計(jì)算機(jī)可讀介質(zhì),其中,所述用于定義對(duì)文本的選擇的指令集包括用于執(zhí)行以下操作的指令集確定所述起始點(diǎn)和所述終止點(diǎn)是否處于同一布局中;以及當(dāng)所述起始點(diǎn)和所述終止點(diǎn)處在不同的布局中時(shí),定義所述選擇以包括在所述起始點(diǎn)的布局中位于該布局中的所述起始點(diǎn)之后的所有文本。
174.根據(jù)權(quán)利要求173所述的計(jì)算機(jī)可讀介質(zhì),其中,所述用于定義對(duì)文本的選擇的指令集還包括用于定義所述選擇以包括所述起始點(diǎn)的布局與所述終止點(diǎn)的布局之間的任何布局內(nèi)的所有文本。
175.根據(jù)權(quán)利要求159所述的計(jì)算機(jī)可讀介質(zhì),其中,所述對(duì)文本的選擇是進(jìn)行復(fù)制并粘貼到第二文檔,其中,所述文本在保持所述閱讀順序的情況下被粘貼到所述第二文檔。
176.—種存儲(chǔ)計(jì)算機(jī)程序的計(jì)算機(jī)可讀介質(zhì),所述計(jì)算機(jī)程序由至少一個(gè)處理器執(zhí)行,所述計(jì)算機(jī)程序包括用于執(zhí)行以下操作的指令集分析包括多個(gè)本原元素的未結(jié)構(gòu)化文檔,以將結(jié)構(gòu)化文檔定義為所述未結(jié)構(gòu)化文檔的分級(jí)模型,所述結(jié)構(gòu)化文檔包括多個(gè)結(jié)構(gòu)性元素和通過(guò)所述結(jié)構(gòu)性元素的閱讀順序;顯示所述文檔;接收用于對(duì)所述文檔中的文本的選擇的起始點(diǎn)和終止點(diǎn);以及通過(guò)采用所述結(jié)構(gòu)性元素和通過(guò)所述結(jié)構(gòu)性元素的閱讀順序來(lái)選擇所述文檔中從所述起始點(diǎn)到所述終止點(diǎn)的文本。
177.根據(jù)權(quán)利要求176所述的計(jì)算機(jī)可讀介質(zhì),其中,所述文檔被顯示在手持式顯示設(shè)備上。
178.根據(jù)權(quán)利要求176所述的計(jì)算機(jī)可讀介質(zhì),其中,所述起始點(diǎn)在文章內(nèi)的文本列中,所述終止點(diǎn)在所述文章的調(diào)出部?jī)?nèi)。
179.根據(jù)權(quán)利要求178所述的計(jì)算機(jī)可讀介質(zhì),其中,所述計(jì)算機(jī)程序還包括用于將所述終止點(diǎn)移動(dòng)到所述文章中的文本列的指令集。
180.根據(jù)權(quán)利要求178所述的計(jì)算機(jī)可讀介質(zhì),其中,所述用于選擇文本的指令集包括用于選擇所述文章的列中的所有文本的指令集。
181.一種定義用于定義對(duì)文檔中的文本的選擇的程序的方法,該方法包括 定義用于接收包括多個(gè)未關(guān)聯(lián)的圖示符的未結(jié)構(gòu)化文檔的模塊;定義用于關(guān)聯(lián)圖示符集的模塊;定義用于識(shí)別規(guī)定通過(guò)所述圖示符的閱讀流的閱讀順序的模塊; 定義用于顯示所述文檔的模塊;定義用于接收用于對(duì)所顯示的文檔內(nèi)的文本的選擇的起始點(diǎn)和終止點(diǎn)的模塊;以及定義用于通過(guò)采用識(shí)別出的圖示符集和預(yù)期的閱讀流來(lái)定義從所述起始點(diǎn)到所述終止點(diǎn)對(duì)文本的選擇的模塊。
182.—種存儲(chǔ)計(jì)算機(jī)程序的計(jì)算機(jī)可讀介質(zhì),所述計(jì)算機(jī)程序在由至少一個(gè)處理器執(zhí)行時(shí)定義用于文檔的結(jié)構(gòu),所述文檔包括多個(gè)本原元素,所述多個(gè)本原元素是按照它們?cè)谒鑫臋n中的位置而定義的,所述計(jì)算機(jī)程序包括用于執(zhí)行以下操作的指令集針對(duì)本原元素的特定集合,識(shí)別多對(duì)最近本原元素之間的距離; 對(duì)識(shí)別出的距離進(jìn)行排序;存儲(chǔ)識(shí)別出哪些所述識(shí)別出的距離大于分隔的給定閾值的單個(gè)值;以及采用存儲(chǔ)的單個(gè)值來(lái)識(shí)別和分析所述分隔,從而定義所述文檔的結(jié)構(gòu)性元素。
183.根據(jù)權(quán)利要求182所述的計(jì)算機(jī)可讀介質(zhì),其中,所述用于分隔的給定閾值識(shí)別一對(duì)本原元素之間的最小距離。
184.根據(jù)權(quán)利要求183所述的計(jì)算機(jī)可讀介質(zhì),其中,更靠近所述最小距離的多對(duì)本原元素在同一個(gè)本原元素集群中。
185.—種存儲(chǔ)計(jì)算機(jī)程序的計(jì)算機(jī)可讀介質(zhì),所述計(jì)算機(jī)程序在由至少一個(gè)處理器執(zhí)行時(shí)定義用于文檔的結(jié)構(gòu),所述文檔包括多個(gè)本原元素,所述多個(gè)本原元素是按照它們?cè)谒鑫臋n中的位置而定義的,所述計(jì)算機(jī)程序包括用于執(zhí)行以下操作的指令集針對(duì)本原元素的特定集合,識(shí)別該集合中的最近本原元素的成對(duì)分組; 基于從最近對(duì)到最遠(yuǎn)對(duì)的順序來(lái)排序所述本原元素的成對(duì)分組; 存儲(chǔ)識(shí)別出哪些本原元素的成對(duì)分組足夠遠(yuǎn)離以形成分隔的單個(gè)值;以及采用存儲(chǔ)的單個(gè)值來(lái)識(shí)別和分析所述分隔,從而定義所述文檔的結(jié)構(gòu)性元素。
186.根據(jù)權(quán)利要求185所述的計(jì)算機(jī)可讀介質(zhì),其中,所述計(jì)算機(jī)可讀介質(zhì)是手持式設(shè)備的固件。
187.根據(jù)權(quán)利要求186所述的計(jì)算機(jī)可讀介質(zhì),其中,所述設(shè)備是蜂窩式電話。
188.根據(jù)權(quán)利要求186所述的計(jì)算機(jī)可讀介質(zhì),其中,所述設(shè)備是媒體播放器。
189.根據(jù)權(quán)利要求185所述的計(jì)算機(jī)可讀介質(zhì),其中,所述計(jì)算機(jī)程序還包括用于定義結(jié)構(gòu)化文檔的指令集,所述結(jié)構(gòu)化文檔包括所述結(jié)構(gòu)性元素和本原元素。
190.根據(jù)權(quán)利要求185所述的計(jì)算機(jī)可讀介質(zhì),其中 所述文檔包括多個(gè)圖示符;所述計(jì)算機(jī)程序還包括用于將圖示符集關(guān)聯(lián)為字的指令集; 所述本原元素的特定集合是字的最左圖示符;以及所述用于采用存儲(chǔ)的單個(gè)值來(lái)識(shí)別和分析所述分隔以定義結(jié)構(gòu)性元素的指令集包括用于定義對(duì)準(zhǔn)字集合的左對(duì)準(zhǔn)導(dǎo)引的指令集。
191.根據(jù)權(quán)利要求185所述的計(jì)算機(jī)可讀介質(zhì),其中 所述文檔包括多個(gè)圖示符;所述計(jì)算機(jī)程序還包括用于將圖示符集關(guān)聯(lián)為字的指令集; 所述本原元素的特定集合是字的最右圖示符;以及所述用于采用存儲(chǔ)的單個(gè)值來(lái)識(shí)別和分析所述分隔以定義結(jié)構(gòu)性元素的指令集包括用于定義對(duì)準(zhǔn)字集合的右對(duì)準(zhǔn)導(dǎo)引的指令集。
192.根據(jù)權(quán)利要求185所述的計(jì)算機(jī)可讀介質(zhì),其中,所述本原元素的特定集合是本原圖形元素,并且所述用于采用存儲(chǔ)的單個(gè)值來(lái)識(shí)別和分析所述分隔以定義結(jié)構(gòu)性元素的指令集包括用于將周圍的本原圖形元素關(guān)聯(lián)為結(jié)構(gòu)性圖形元素的指令集。
193.根據(jù)權(quán)利要求185所述的計(jì)算機(jī)可讀介質(zhì),其中,所述本原元素是圖示符,并且所述用于定義結(jié)構(gòu)性元素的指令集包括用于將周圍圖示符集關(guān)聯(lián)為字的指令集。
194.根據(jù)權(quán)利要求193所述的計(jì)算機(jī)可讀介質(zhì),其中,所述用于識(shí)別最近本原元素的成對(duì)分組的指令集包括用于執(zhí)行以下操作的指令集識(shí)別具有公共基線的圖示符集;基于圖示符在第一方向上的坐標(biāo)來(lái)排序所述圖示符集;針對(duì)所排序集合中的每對(duì)連續(xù)圖示符,計(jì)算該對(duì)中的圖示符之間的坐標(biāo)值的差值;以及在第一陣列中排序所計(jì)算的差值。
195.根據(jù)權(quán)利要求194所述的計(jì)算機(jī)可讀介質(zhì),其中,所述用于基于從最近對(duì)到最遠(yuǎn)對(duì)的順序來(lái)排序所述成對(duì)本原元素的指令集包括用于執(zhí)行以下操作的指令集排序所計(jì)算的差值;以及在第二陣列中排序與所排序的差值對(duì)應(yīng)的第一陣列中的索引。
196.根據(jù)權(quán)利要求195所述的計(jì)算機(jī)可讀介質(zhì),其中,將存儲(chǔ)最小差值的第一陣列的索引存儲(chǔ)為第二陣列的第一索引處的值。
197.根據(jù)權(quán)利要求195所述的計(jì)算機(jī)可讀介質(zhì),其中,所述計(jì)算機(jī)程序還包括用于確定圖示符之間的最小差值的指令集,其中,所存儲(chǔ)的單個(gè)值是所述第二陣列中的索引,在該索引處存儲(chǔ)所述第一陣列的用于存儲(chǔ)所述最小差值的索引。
198.根據(jù)權(quán)利要求197所述的計(jì)算機(jī)可讀介質(zhì),其中,所述最小差值代表字之間的間隔。
199.根據(jù)權(quán)利要求197所述的計(jì)算機(jī)可讀介質(zhì),其中,所述用于采用存儲(chǔ)的值來(lái)識(shí)別和分析所述分隔的指令集包括用于拆分第三陣列的指令集,所述第三陣列在其索引處存儲(chǔ)排序的χ坐標(biāo)值,其被存儲(chǔ)為在被存儲(chǔ)為所述單個(gè)值的索引處以及之后的第二陣列的所有索引處的第二陣列中的值。
200.根據(jù)權(quán)利要求185所述的計(jì)算機(jī)可讀介質(zhì),其中,所述用于存儲(chǔ)單個(gè)值的指令集包括用于存儲(chǔ)多個(gè)各自識(shí)別本原元素的不同分隔的單個(gè)值的指令集。
201.根據(jù)權(quán)利要求200所述的計(jì)算機(jī)可讀介質(zhì),其中,所述計(jì)算機(jī)程序還包括分析所述本原元素的不同分隔,以識(shí)別表示最優(yōu)距離尺度的理想最優(yōu)分隔。
202.一種定義用于定義文檔的結(jié)構(gòu)的程序的方法,該方法包括定義用于識(shí)別文檔中最近本原元素的成對(duì)分組的模塊,所述文檔包括多個(gè)本原元素, 所述多個(gè)本原元素按照它們?cè)谒鑫臋n中的位置來(lái)定義;定義用于基于從最近對(duì)到最遠(yuǎn)對(duì)的順序來(lái)排序所述本原元素的成對(duì)分組的模塊;定義用于存儲(chǔ)識(shí)別出哪些成對(duì)分組的本原元素足夠遠(yuǎn)離以形成分隔的單個(gè)值的模塊;以及定義用于采用存儲(chǔ)的值來(lái)識(shí)別和分析所述分隔以定義所述文檔的結(jié)構(gòu)性元素的模塊。
203.根據(jù)權(quán)利要求202所述的方法,還包括定義用于基于所述結(jié)構(gòu)性元素和本原元素來(lái)定義結(jié)構(gòu)化文檔的模塊。
204.根據(jù)權(quán)利要求203所述的方法,其中,所述結(jié)構(gòu)化文檔是其中所述結(jié)構(gòu)性元素是節(jié)點(diǎn)的分級(jí)結(jié)構(gòu)。
205.—種方法,包括定義用于分析和操縱文檔的多個(gè)不同處理,所述文檔包括多個(gè)本原元素;以及定義用于與所述本原元素相關(guān)聯(lián)的數(shù)據(jù)的存儲(chǔ)設(shè)備,其中,至少一些所述數(shù)據(jù)存儲(chǔ)在與所述處理分開(kāi)的存儲(chǔ)器空間中,并且由至少兩個(gè)不同的處理共享,其中所述處理通過(guò)利用對(duì)數(shù)據(jù)的引用來(lái)訪問(wèn)所述數(shù)據(jù),其中所述數(shù)據(jù)不被所述處理復(fù)制。
206.根據(jù)權(quán)利要求205所述的方法,其中,用于與所述本原元素相關(guān)聯(lián)的數(shù)據(jù)的存儲(chǔ)設(shè)備是第一存儲(chǔ)設(shè)備,該方法還包括定義解析器,該解析器用于(i)解析所述文檔以識(shí)別出所述本原元素,以及(ii)將所述本原元素存儲(chǔ)在第二存儲(chǔ)設(shè)備中。
207.根據(jù)權(quán)利要求206所述的方法,其中,與所述本原元素相關(guān)聯(lián)的數(shù)據(jù)包括對(duì)所述第二存儲(chǔ)設(shè)備中的本原元素的引用。
208.根據(jù)權(quán)利要求206所述的方法,其中,所述解析器用于(i)解析所述文檔以識(shí)別按照隨機(jī)順序的本原元素,以及(ii)將按照所述隨機(jī)順序的本原元素存儲(chǔ)在所述第二存儲(chǔ)設(shè)備中。
209.根據(jù)權(quán)利要求206所述的方法,其中,所述隨機(jī)順序是其中本原元素在所述文檔的位流表示中定義的順序。
210.根據(jù)權(quán)利要求206所述的方法,還包括定義如下模塊,該模塊用于(i)根據(jù)特定準(zhǔn)則來(lái)排序所述本原元素,以及(ii)按照排序順序在所述第一存儲(chǔ)設(shè)備中存儲(chǔ)與本原元素相關(guān)聯(lián)的數(shù)據(jù)。
211.根據(jù)權(quán)利要求210所述的方法,其中,所述本原元素包括關(guān)于它們?cè)谒鑫臋n中的定位的信息,其中所述特定準(zhǔn)則是基于所述本原元素的定位。
212.根據(jù)權(quán)利要求210所述的方法,其中,在所述文檔的特定頁(yè)面內(nèi),所述特定準(zhǔn)則以從上到下作為初級(jí)準(zhǔn)則并以從左到右作為次級(jí)準(zhǔn)則來(lái)排序所述本原元素。
213.根據(jù)權(quán)利要求205所述的方法,其中,所述本原元素包括多個(gè)圖示符。
214.根據(jù)權(quán)利要求213所述的方法,其中,所述多個(gè)不同的處理包括用于將圖示符集關(guān)聯(lián)為文本行的處理;以及用于將圖示符集關(guān)聯(lián)為字的處理。
215.根據(jù)權(quán)利要求214所述的方法,其中所述用于將圖示符集關(guān)聯(lián)為文本行的處理將特定文本行存儲(chǔ)為引用與所述本原元素相關(guān)聯(lián)的數(shù)據(jù)的第一串;以及所述用于將圖示符集關(guān)聯(lián)為字的處理將特定字存儲(chǔ)為引用與所述本原元素相關(guān)聯(lián)的同一數(shù)據(jù)的第二串。
216.根據(jù)權(quán)利要求215所述的方法,其中,同一數(shù)據(jù)在不被復(fù)制的情況下由兩個(gè)處理使用。
217.根據(jù)權(quán)利要求215所述的方法,其中,所述第一串和第二串中的每一個(gè)通過(guò)僅存儲(chǔ)兩個(gè)值來(lái)引用所述數(shù)據(jù)。
218.根據(jù)權(quán)利要求217所述的方法,其中,所述兩個(gè)值是對(duì)第一條數(shù)據(jù)的引用和串中的數(shù)據(jù)的條數(shù)的計(jì)數(shù)。
219.根據(jù)權(quán)利要求217所述的方法,其中,所述第一串和第二串引用相同的第一條數(shù)據(jù)并存儲(chǔ)不同的計(jì)數(shù)。
220.根據(jù)權(quán)利要求205所述的方法,還包括定義共享存儲(chǔ)器數(shù)據(jù)結(jié)構(gòu),該共享存儲(chǔ)器數(shù)據(jù)結(jié)構(gòu)用于管理對(duì)與本原元素相關(guān)聯(lián)的數(shù)據(jù)的存儲(chǔ)設(shè)備。
221.根據(jù)權(quán)利要求220所述的方法,其中,所述共享存儲(chǔ)器數(shù)據(jù)結(jié)構(gòu)用于在單獨(dú)的存儲(chǔ)器空間中存儲(chǔ)與本原元素相關(guān)聯(lián)的數(shù)據(jù)被存儲(chǔ)的定位。
222.根據(jù)權(quán)利要求220所述的方法,其中,所述共享存儲(chǔ)器數(shù)據(jù)結(jié)構(gòu)在至少兩個(gè)其他數(shù)據(jù)結(jié)構(gòu)引用與本原元素相關(guān)聯(lián)的數(shù)據(jù)時(shí)使用。
223.根據(jù)權(quán)利要求222所述的方法,其中,所述至少兩個(gè)其他數(shù)據(jù)結(jié)構(gòu)共享與本原元素相關(guān)聯(lián)的數(shù)據(jù)的所有。
224.根據(jù)權(quán)利要求220所述的方法,其中,所述共享存儲(chǔ)器數(shù)據(jù)結(jié)構(gòu)用于存儲(chǔ)引用與本原元素相關(guān)聯(lián)的數(shù)據(jù)的其他數(shù)據(jù)結(jié)構(gòu)的個(gè)數(shù)。
225.—種存儲(chǔ)計(jì)算機(jī)程序的計(jì)算機(jī)可讀介質(zhì),所述計(jì)算機(jī)程序由至少一個(gè)處理器執(zhí)行,所述計(jì)算機(jī)程序包括用于執(zhí)行以下操作的指令集解析包括多個(gè)本原元素的文檔; 將按照隨機(jī)順序的本原元素存儲(chǔ)在第一存儲(chǔ)設(shè)備中;按照基于本原元素在文檔中的定位的順序?qū)?duì)本原元素的引用存儲(chǔ)在第二存儲(chǔ)設(shè)備中;接收用于執(zhí)行文檔重構(gòu)操作的指令;以及在不存儲(chǔ)任何新的對(duì)本原元素的引用的情況下,執(zhí)行接收到的指令。
226.根據(jù)權(quán)利要求225所述的計(jì)算機(jī)可讀介質(zhì),其中,所述計(jì)算機(jī)程序還包括用于執(zhí)行以下操作的指令集接收第二指令集來(lái)執(zhí)行第二文檔重構(gòu)操作; 確定執(zhí)行所述第二文檔重構(gòu)操作要求對(duì)本原元素的新引用;以及按照與所述第二存儲(chǔ)設(shè)備的順序不同的順序在第三存儲(chǔ)設(shè)備中存儲(chǔ)對(duì)本原元素的新引用。
227.根據(jù)權(quán)利要求2 所述的計(jì)算機(jī)可讀介質(zhì),其中,所述第二存儲(chǔ)設(shè)備和第三存儲(chǔ)設(shè)備在同一物理存儲(chǔ)設(shè)備中。
228.—種方法,包括定義第一模塊,該第一模塊用于(i)解析包括多個(gè)本原元素的文檔,以及(ii)將按照隨機(jī)順序的本原元素存儲(chǔ)在第一存儲(chǔ)設(shè)備中;定義第二模塊,該第二模塊用于(i)分配第二存儲(chǔ)設(shè)備中用于存儲(chǔ)對(duì)隨機(jī)排序的本原元素的引用的存儲(chǔ)器,以及(ii)在所分配的存儲(chǔ)器中按照特定順序存儲(chǔ)所述引用;定義第三模塊,該第三模塊用于存儲(chǔ)引用所排序引用的一部分的數(shù)據(jù)結(jié)構(gòu),該數(shù)據(jù)結(jié)構(gòu)僅包括對(duì)排序引用中第一個(gè)的引用以及計(jì)數(shù)值;以及定義第四模塊,該第四模塊用于(i)接收用以執(zhí)行文檔重構(gòu)操作的指令,以及(ii)識(shí)別出需要所述第一模塊、第二模塊和第三模塊中的哪個(gè)來(lái)執(zhí)行文檔重構(gòu)操作,同時(shí)最小化存儲(chǔ)器和計(jì)算使用。
229.根據(jù)權(quán)利要求228所述的方法,其中,當(dāng)僅需要所述第三模塊來(lái)執(zhí)行特定文檔重構(gòu)操作時(shí),對(duì)于本原元素的副本或者對(duì)本原元素的新引用不分配新存儲(chǔ)器。
230.根據(jù)權(quán)利要求1、22、30、39、44、46、50、61、67、71、88、92、112、124、182、185 和 225 之一所述的計(jì)算機(jī)可讀介質(zhì),其中,所述文檔是未結(jié)構(gòu)化文檔。
231.根據(jù)權(quán)利要求1、22、30、39、44、46、50、61、67、71、88、92、112、124、182、185 和 225 之一所述的計(jì)算機(jī)可讀介質(zhì),其中,所述文檔是矢量圖形文檔。
232.根據(jù)權(quán)利要求1、22、30、39、44、46、50、61、67、71、88、92、112、124、182、185 和 225 之一所述的計(jì)算機(jī)可讀介質(zhì),其中,所述文檔是便攜式文檔格式(PDF)文檔。
233.根據(jù)權(quán)利要求1、22、30、39、44、46、50、61、67、71、88、92、112、124、135、152、159、 176、182、185和225之一所述的計(jì)算機(jī)可讀介質(zhì),其中,所述計(jì)算機(jī)程序是用于手持式設(shè)備的應(yīng)用。
234.根據(jù)權(quán)利要求1、22、30、39、44、46、50、61、67、71、88、92、112、124、135、152、159、 176、182、185和225之一所述的計(jì)算機(jī)可讀介質(zhì),其中,所述計(jì)算機(jī)程序是操作系統(tǒng)的一部分。
235.根據(jù)權(quán)利要求1、22、30、39、44、46、50、61、67、71、88、92、112、124、135、152、159、 176、182、185和225之一所述的計(jì)算機(jī)可讀介質(zhì),其中,所述計(jì)算機(jī)程序是在操作系統(tǒng)之上運(yùn)行的應(yīng)用。
236.根據(jù)權(quán)利要求135、152、159和176之一所述的計(jì)算機(jī)可讀介質(zhì),其中,所述未結(jié)構(gòu)化文檔是矢量圖形文檔。
237.根據(jù)權(quán)利要求135、152、159和176之一所述的計(jì)算機(jī)可讀介質(zhì),其中,所述未結(jié)構(gòu)化文檔是便攜式文檔格式(PDF)文檔。
全文摘要
本發(fā)明不同的實(shí)施例采用不同的分析未結(jié)構(gòu)化文檔以定義結(jié)構(gòu)化文檔的技術(shù)。所述未結(jié)構(gòu)化文檔包括眾多本原元素,但是不包括結(jié)構(gòu)性元素,該結(jié)構(gòu)性元素規(guī)定本原元素之間的結(jié)構(gòu)性關(guān)系和/或基于這些本原元素的文檔的結(jié)構(gòu)性屬性。為了定義結(jié)構(gòu)化文檔,采用未結(jié)構(gòu)化文檔的本原元素來(lái)識(shí)別未結(jié)構(gòu)化文檔的各種幾何屬性。采用識(shí)別出的幾何屬性和本原元素的其他屬性來(lái)定義結(jié)構(gòu)性元素,例如相關(guān)聯(lián)的本原元素(例如,字、段落、連結(jié)圖,等等)、表格、導(dǎo)引、裝訂線等,以及定義通過(guò)本原元素和結(jié)構(gòu)性元素的閱讀流。提供了各種提高幾何分析和文檔重構(gòu)處理的效率的方法(例如,分級(jí)簡(jiǎn)檔化、高效集群分析技術(shù)、高效數(shù)據(jù)結(jié)構(gòu))。
文檔編號(hào)G06F17/27GK102317933SQ200980156784
公開(kāi)日2012年1月11日 申請(qǐng)日期2009年12月31日 優(yōu)先權(quán)日2009年1月2日
發(fā)明者D·B·科勒格, M·R·勒維, P·A·曼斯菲爾德 申請(qǐng)人:蘋果公司