本發(fā)明涉及一種版式文檔正文碎片化的方法,屬于版式電子文檔的版面分析和版面理解范疇。
背景技術(shù):
文獻(xiàn)資源碎片化是實(shí)現(xiàn)文獻(xiàn)資源重組和深度知識(shí)挖掘的基礎(chǔ)。文獻(xiàn)資源碎片化既包含元數(shù)據(jù)標(biāo)引,如篇名、作者、關(guān)鍵詞、參考文獻(xiàn)等元數(shù)據(jù)標(biāo)引,也包含正文內(nèi)容碎片化。正文內(nèi)容碎片化是指在對(duì)文獻(xiàn)自動(dòng)分篇獲得每篇文章,確定每篇文章具體正文范圍的基礎(chǔ)上,識(shí)別正文內(nèi)的圖、表、公式、段落等基本元素,提取正文閱讀順序并對(duì)正文元素進(jìn)行層次分析,將正文內(nèi)容分解成一個(gè)有層次、有邏輯的有機(jī)體。
版式文檔正文碎片化技術(shù)依賴于版式文檔的排版特點(diǎn),不同資源的排版存在共性特征也存在明顯的個(gè)性特征。本文提出的一種版式文檔正文碎片化的方法涉及的文獻(xiàn)資源類型包括期刊、會(huì)議、圖書(shū)、年鑒、學(xué)位論文等。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明根據(jù)版式文檔的版面共性特征,提出了一種版式文檔正文碎片化的方法。所述技術(shù)方案包括:
版面預(yù)處理;
識(shí)別正文基本元素;
提取正文閱讀順序;
正文層次分析;
正文后處理;
輸出正文碎片化結(jié)果。
上述技術(shù)方案中,所述版面預(yù)處理包括:在正文區(qū)域內(nèi)提取行建立行集合;提取水平線和垂直線,建立線集合;統(tǒng)計(jì)行集合獲取相關(guān)參數(shù):主體字體、主體語(yǔ)種、主體行間距和分欄特征。
上述技術(shù)方案中,所述識(shí)別正文基本元素包括:表格識(shí)別、邏輯圖識(shí)別、公式識(shí)別和段落識(shí)別。
上述技術(shù)方案中,所述提取正文閱讀順序包括:頁(yè)內(nèi)閱讀順序和頁(yè)間閱讀順序。
上述技術(shù)方案中,所述正文層次分析是指,識(shí)別正文內(nèi)各級(jí)標(biāo)題將正文分解成一個(gè)有層次、有邏輯的有機(jī)體。正文標(biāo)題層次關(guān)系包括同級(jí)關(guān)系和上下級(jí)關(guān)系,是一種樹(shù)形結(jié)構(gòu)。
上述技術(shù)方案中,所述正文后處理包括:跨欄、跨頁(yè)的段落銜接和段落字符規(guī)范化(角標(biāo)字符檢測(cè)、規(guī)范全/半角字符和英文行的連接處理)。
上述技術(shù)方案中,所述輸出正文碎片化結(jié)果是指,將正文碎片化結(jié)果保存為XML文檔。
本方法不僅給出了版式文檔正文碎片化的整體框架,還對(duì)正文碎片化過(guò)程中的關(guān)鍵環(huán)節(jié)給出了具體解決方案。
附圖說(shuō)明
圖1是本發(fā)明實(shí)施方法流程圖
圖2是分欄算法流程圖
圖3是欄支架示意圖
圖4是正文層次分析方法流程圖
具體實(shí)施方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面結(jié)合附圖對(duì)本發(fā)明實(shí)施方式進(jìn)一步地詳細(xì)說(shuō)明。
一種版式文檔正文碎片化的方法,如圖1所示,所述方法包括:
1.版面預(yù)處理
版面預(yù)處理包括:在正文區(qū)域內(nèi)提取行建立行集合;提取水平線和垂直線,建立線集合;統(tǒng)計(jì)行集合獲取相關(guān)參數(shù):主體字體、主體語(yǔ)種、主體行間距和分欄特征。
在正文區(qū)域內(nèi)提取行建立行集合時(shí),由于大量版式文檔字符按行整齊有序排列,可以先將字符集按照字符流順序和字符空間排布特點(diǎn)快速合并成行,再進(jìn)行行與行之間水平合并以處理字符流順序與閱讀順序不一致的情況。
為了識(shí)別表格,需在正文區(qū)域內(nèi)提取水平線和垂直線建立線集合。提取線集合的方法參見(jiàn)《一種PDF文檔表格識(shí)別的方法》(CN105589841A)。
統(tǒng)計(jì)行集合獲取相關(guān)參數(shù)(主體字體、主體語(yǔ)種、主體行間距和分欄特征)的具體方法,下文將展開(kāi)闡述。
主體字體是指一個(gè)文字區(qū)(行、段、頁(yè))內(nèi)最主要的字體類型。本文采用字體大小描述字體,采用分類方法計(jì)算主體字體,將文字區(qū)內(nèi)所有字符按字體大小差異分類,差異小先合并差異大后合并。衡量字體差異采用如下公式:FontDif=2×|F1-F2|/(F1+F2),其中,F(xiàn)1與F2分別代表兩種字體大小,當(dāng)FontDif>0.05時(shí),表明這兩種字體差異過(guò)大不可歸為一類。每個(gè)類中心用類內(nèi)字體均值描述,字符個(gè)數(shù)最多、字符面積最大的類對(duì)應(yīng)的類中心就是該文字區(qū)的主體字體。
主體語(yǔ)種是指一個(gè)文字區(qū)內(nèi)最主要的語(yǔ)種類型,通過(guò)統(tǒng)計(jì)字符的語(yǔ)種類型獲得。
主體行間距是指一頁(yè)內(nèi)最主要的行間距,本文采用C均值算法估算。分別提取每一欄行子集,計(jì)算上下相鄰兩行的行間距,獲得行間距集合。選擇5種常見(jiàn)行間距作為初始類中心(0.5倍、1倍、1.5倍、2倍和2.5倍主體字體大小),每個(gè)類中心用類內(nèi)行間距均值描述。選元素最多的那個(gè)類的類中心作為主體行間距。為了準(zhǔn)確獲取上下相鄰兩行的行間距,計(jì)算主體行間距應(yīng)在提取分欄特征后進(jìn)行。
分欄是版面主要的視覺(jué)特征之一,常見(jiàn)分欄類型可歸納為以下幾種:?jiǎn)螜?、兩欄、三欄、混合?例如單欄和兩欄混合、單欄和三欄混合)和無(wú)明顯分欄(例如純表格版面,圖表混和版面)。作者認(rèn)為構(gòu)成欄的主要成分是版面中富含文字的區(qū)域,因此本文根據(jù)行集合的空間排布特點(diǎn)來(lái)提取欄特征,如圖2所示主要步驟如下:
(1)初估版面初始分欄類型。假設(shè)版面核心區(qū)域的水平寬度為w,將行的寬度分為如下四個(gè)等級(jí):[0.5w,w]、(0.333w,0.5w]、(0.25w,0.333w]和(0,0.25w],對(duì)應(yīng)分欄類型分別為:?jiǎn)螜凇蓹?、三欄和其他類型。統(tǒng)計(jì)落入每個(gè)等級(jí)的行面積,取總面積最大的等級(jí)對(duì)應(yīng)的分欄類型作為該頁(yè)的初始分欄類型。
(2)估算各欄位置,是指用初始分欄類型對(duì)應(yīng)等級(jí)下的行集合估算欄的水平位置。假設(shè)欄寬相等,首先根據(jù)初始分欄類型和頁(yè)面寬度粗略估計(jì)各欄的初始位置;其次,用欄初始位置劃分行集合,獲取欄內(nèi)行子集合;再次,若欄內(nèi)存在行子集則用行子集估算欄位置。若估算成功將此欄標(biāo)記為核心欄;若估算失敗則用其他核心欄估算該欄位置,標(biāo)記為非核心欄。若各欄位置均估算失敗則下轉(zhuǎn)步驟(3),否則下轉(zhuǎn)步驟(4)。
(3)采用垂直投影法再次嘗試分欄。垂直投影法是指將每一行按垂直方向投影,累計(jì)投影量尋找欄與欄之間的空白間隔,根據(jù)空白間隔計(jì)算各欄的水平位置。投影法是一種簡(jiǎn)單的分欄方法,但是魯棒性較差易受跨欄元素干擾。
(4)檢驗(yàn)并確定最終分欄類型,是指用版面中所有行元素構(gòu)成的行集合檢驗(yàn)并確定最終分欄類型。首先,將所有行元素按步驟(2)估算的欄的水平位置歸類,有三種類型:欄內(nèi)行、跨欄行和未知行。欄內(nèi)行是指行水平位置在某一欄內(nèi),跨欄行是指行水平位置橫跨多欄,未知行是指該行水平位置不屬于任何一欄。其次,統(tǒng)計(jì)未知行判斷該頁(yè)是否要增欄,并做增欄處理;再次,利用欄內(nèi)行集合優(yōu)化欄位置;最后,確定最終分欄類型(單欄、兩欄、三欄、其他),并對(duì)每一行賦予所屬欄標(biāo)識(shí),記錄該行是否跨欄、橫跨哪幾欄等信息。
(5)在核心欄內(nèi)提取欄支架。只用分欄類型和欄位置不能充分描述和使用欄特征,為此引入了欄支架的概念作為欄的另一維特征。欄支架是一組相鄰行構(gòu)成的行集合,是欄穩(wěn)定、可靠的支撐。圖3黑框標(biāo)記的便是欄支架,欄支架通常是段落的一部分。提取欄支架時(shí)可參考如下指標(biāo):行寬與欄寬比值、相鄰行的兩端是否對(duì)齊、相鄰行的行間隔是否為主體行間隔、行字體是否與該頁(yè)主體字體相同、最少行數(shù)限制等。
準(zhǔn)確獲取分欄特征有利于提取欄內(nèi)文本行和復(fù)雜公式行,提高段落識(shí)別和公式識(shí)別正確率,分欄特征也能輔助估算正文閱讀順序。此外,欄支架作為欄穩(wěn)定可靠的支撐,能有效地限制表格和邏輯圖的生長(zhǎng)區(qū)域,提高表格和邏輯圖識(shí)別的正確率。
2.識(shí)別頁(yè)內(nèi)基本元素
識(shí)別頁(yè)內(nèi)基本元素包括:表格識(shí)別、邏輯圖識(shí)別、公式識(shí)別和段落識(shí)別。
表格識(shí)別中,首先對(duì)不同類型表格的識(shí)別難度進(jìn)行分級(jí),由易到難分別是:含表標(biāo)題和表格線表格、無(wú)表標(biāo)題全線表、無(wú)表標(biāo)題三線表、含表標(biāo)題的無(wú)線表、無(wú)表標(biāo)題的無(wú)線表。表格識(shí)別按照先易后難順序,結(jié)合三種方法(基于表標(biāo)題和線集合的區(qū)域生長(zhǎng)法、基于表標(biāo)題和行集合的區(qū)域生長(zhǎng)法和無(wú)標(biāo)題的全線表、三線表識(shí)別法)進(jìn)行,具體論述參見(jiàn)《一種PDF文檔表格識(shí)別的方法》(CN105589841A)。
邏輯圖識(shí)別采用了基于圖標(biāo)題的區(qū)域生長(zhǎng)法,以疑似圖標(biāo)題為種子,在種子鄰域生長(zhǎng)定位邏輯圖主體位置。同時(shí),一頁(yè)中多個(gè)種子并行地競(jìng)爭(zhēng)地生長(zhǎng),能在圖文混排的復(fù)雜版面中準(zhǔn)確估算每個(gè)邏輯圖的有效區(qū)域。邏輯圖識(shí)別不僅自動(dòng)識(shí)別邏輯圖,還同時(shí)識(shí)別了圖標(biāo)題,并將圖標(biāo)題與對(duì)應(yīng)的邏輯圖匹配關(guān)聯(lián),保持同步。具體論述參見(jiàn)《一種PDF文檔邏輯圖識(shí)別的方法》。
公式識(shí)別側(cè)重于獨(dú)立公式區(qū)域識(shí)別。先以行為基本單位,利用獨(dú)立公式行與普通文本行的差異性,將版面中的行分成獨(dú)立公式行和非獨(dú)立公式行;再處理獨(dú)立公式行,合并殘塊、合并多行公式獲得獨(dú)立公式區(qū)域。公式識(shí)別使用的特征包括:公式符號(hào)比例、中文字符比例、行內(nèi)字符字體大小和高度的方差、行內(nèi)字符稀疏度等。具體論述參見(jiàn)《一種版式文件中識(shí)別科學(xué)公式的方法》(CN104751148A)。
段落是正文主要組成部分,段落識(shí)別的準(zhǔn)確率直接決定了正文碎片化的質(zhì)量。段落識(shí)別主要過(guò)程如下:
將頁(yè)內(nèi)所有行和欄支架按從上至下的順序排列;
上文所謂元素是指一行或一個(gè)欄支架。判斷元素j是否能與當(dāng)前段合并時(shí)考慮了兩者之間的字體相似性、行間隔相似性、水平位置是否相交、兩端是否對(duì)齊等因素。元素并入段落時(shí)要及時(shí)更新段落的位置、字體、語(yǔ)種、段內(nèi)元素集合、段首段尾標(biāo)識(shí)等信息。
判斷段落結(jié)束增長(zhǎng)的條件是,若該段與元素j成功合并后出現(xiàn)了段尾特征(如末行右側(cè)內(nèi)凹,找到結(jié)束標(biāo)點(diǎn))則該段結(jié)束增長(zhǎng);若該段與元素j未成功合并,失敗的原因是下述任意一種情況時(shí),如字體差異性過(guò)大、行間隔過(guò)大、行兩端不對(duì)齊(左側(cè)內(nèi)凹、右側(cè)外凸),判定該段結(jié)束增長(zhǎng)。
3.提取正文閱讀順序
提取正文閱讀順序是指將正文基本元素(表格、邏輯圖、公式、段落)按閱讀先后順序排列,包含兩種順序:頁(yè)內(nèi)閱讀順序和頁(yè)間閱讀順序。通常人們閱讀時(shí)按頁(yè)碼遞增順序進(jìn)行,因此頁(yè)間閱讀順序可以由頁(yè)碼的先后順序給定。對(duì)于頁(yè)內(nèi)閱讀順序人眼根據(jù)上下文內(nèi)容的連貫性(語(yǔ)義特征)判斷,本文主要使用一般的排版規(guī)則進(jìn)行估算。
通常頁(yè)面內(nèi)容按從上到下、從左到右的方式排列,本文結(jié)合頁(yè)內(nèi)分欄情況,按從上到下、從左到右的方式給出頁(yè)內(nèi)閱讀順序。具體說(shuō)來(lái):
若為單欄版面,則頁(yè)內(nèi)閱讀順序按從上到下排列;
若為多欄版面且無(wú)跨欄元素,則正文元素按從左欄至右欄,一欄內(nèi)按從上到下的順序排列;
若兩欄版面包含跨欄元素,則閱讀順序估算規(guī)則為:跨欄元素上方左側(cè)欄從上至下排列——>跨欄元素上方右側(cè)欄從上至下排列——>跨欄元素——>跨欄元素下方左側(cè)欄從上至下排列——>跨欄元素下方右側(cè)欄從上至下排列;
若版面過(guò)于復(fù)雜(如多欄版面包含復(fù)雜的跨欄元素)則用原始字符流順序估算每一個(gè)正文元素的先后位置,獲得頁(yè)內(nèi)閱讀順序。
4.正文層次分析
正文層次分析是指從段落集合中檢測(cè)出正文標(biāo)題并估算標(biāo)題間的層次關(guān)系。標(biāo)題的層次關(guān)系包括同級(jí)關(guān)系和上下級(jí)關(guān)系,是一種樹(shù)形結(jié)構(gòu)。標(biāo)題是正文的骨架,通常包含如下幾種特征:
(1)字?jǐn)?shù)限制:正文標(biāo)題在文內(nèi)具有高度概括性是一種特殊段落,行數(shù)字?jǐn)?shù)比一般段落少;
(2)關(guān)鍵詞:正文標(biāo)題常在段首出現(xiàn)“一、”“(一)”“1”“1.1”“1.2.1”等一類關(guān)鍵詞;
(3)字體特征:同一級(jí)標(biāo)題字體相似;
(4)順序特征:標(biāo)題關(guān)鍵詞通常按閱讀順序從小到大排列;
(5)包含特征:兩相鄰?fù)?jí)標(biāo)題之間囊括所有下級(jí)標(biāo)題,不可能出現(xiàn)上級(jí)標(biāo)題。所有同級(jí)標(biāo)題囊括的正文范圍內(nèi)包含其他級(jí)別標(biāo)題的個(gè)數(shù)越多,其為高級(jí)標(biāo)題的可能性越大。因此可使用包含特征來(lái)輔助確定標(biāo)題的層級(jí)關(guān)系;
(6)跨度特征:所有標(biāo)題應(yīng)囊括大部分正文內(nèi)容。
正文層次分析的大致過(guò)程如圖4所示:
(1)從段落集中提取疑似標(biāo)題集合。此步利用了關(guān)鍵詞特征和字?jǐn)?shù)限制,若在段首處檢測(cè)到關(guān)鍵詞且段落字?jǐn)?shù)限制滿足要求,將此段標(biāo)記為疑似標(biāo)題。段首關(guān)鍵詞隱含了部分標(biāo)題層次關(guān)系,例如,段首關(guān)鍵詞為“(一)”“(二)”“(三)”表明這三個(gè)疑似標(biāo)題可能屬于同一級(jí)標(biāo)題。再如,段首關(guān)鍵詞為“1”“1.1”“1.2.1”,表明這三個(gè)疑似標(biāo)題可能存在上下級(jí)關(guān)系。
(2)初次剔除偽標(biāo)題元素,是指從疑似標(biāo)題集合中抽取關(guān)鍵詞提示同級(jí)標(biāo)題的元素子集,利用同一級(jí)標(biāo)題字體大小相似,將字體差異性過(guò)大的偽標(biāo)題剔除。
(3)確定標(biāo)題的層次關(guān)系。層次信息來(lái)源于兩方面:關(guān)鍵詞和包含特征。觀察大量期刊型版式文檔的正文標(biāo)題后,本文歸納了兩種層次關(guān)系模型:形如“一、(一)、1”的稱為模型1,形如“1、1.1、1.2.1”稱為模型2。模型1中關(guān)鍵詞并未指明標(biāo)題上下級(jí)關(guān)系,而模型2的關(guān)鍵詞明確表達(dá)了標(biāo)題的同級(jí)關(guān)系和上下級(jí)關(guān)系。因此,模型2只需使用關(guān)鍵詞就可確定標(biāo)題層次關(guān)系,模型1要同時(shí)使用關(guān)鍵詞和包含特征確定標(biāo)題層次關(guān)系。
(4)再次剔除偽標(biāo)題元素,是利用順序特征進(jìn)一步在疑似標(biāo)題集合中檢測(cè)個(gè)別逆序的偽標(biāo)題,剔除之。
(5)檢驗(yàn)并確定最終標(biāo)題集合。此步采用了跨度特征,計(jì)算疑似標(biāo)題集合囊括的正文范圍占正文全長(zhǎng)的比值。若比值>50%,判定疑似標(biāo)題集合有效,作為正文最終標(biāo)題集合輸出。否則判定疑似標(biāo)題集合無(wú)效,正文區(qū)域未檢測(cè)到標(biāo)題。
5.正文后處理
正文后處理包括:跨欄、跨頁(yè)的段落銜接和段落字符的規(guī)范化(角標(biāo)字符檢測(cè)、規(guī)范全/半角字符和英文行的連接處理)。
實(shí)踐中我們常??吹酵瑢儆谝欢蔚膬?nèi)容因排版被分割在多欄或多頁(yè)中,跨欄跨頁(yè)的段落銜接就是用于處理此類問(wèn)題,將分布在多欄或多頁(yè)的同屬于一段的內(nèi)容自動(dòng)聚合、銜接在一起。當(dāng)相鄰兩段屬于不同欄或不同頁(yè),前一段未檢測(cè)到段尾特征(未出現(xiàn)末行右側(cè)內(nèi)凹,結(jié)束標(biāo)點(diǎn)等),后一段沒(méi)有明顯的段首特征(未出現(xiàn)首行縮進(jìn)、首字下沉等),且兩段主體字體、主體語(yǔ)種、行間隔相似,判定兩段內(nèi)容可銜接。由于同一段落可能橫跨多欄多頁(yè),因此判定兩段銜接后應(yīng)繼續(xù)判斷直至相鄰兩段不可銜接為止。
角標(biāo)字符具有豐富的含義,例如,文內(nèi)注釋和參考文獻(xiàn)標(biāo)號(hào)一般用上角標(biāo)表示,化學(xué)分子式中的元素含量常用下角標(biāo)表示。檢測(cè)角標(biāo)字符是正確提取正文內(nèi)容的必要步驟。本文的角標(biāo)檢測(cè)采用以字符位置特征為主,字體特征為輔的方法。大致過(guò)程是:先提取文本行的上下基線,利用上下基線將行區(qū)分為上、中、下三區(qū);再利用字符垂直位置在行的上、中、下三區(qū)內(nèi)各占的比例關(guān)系,判斷字符是否為疑似上角標(biāo)或疑似下角標(biāo);最后,檢測(cè)疑似角標(biāo)字符的字體大小是否滿足角標(biāo)字體限制,若滿足則判定為角標(biāo)字符。
前文所述文本行的上下基線計(jì)算方法如下,其中BaseTop代表上基線,BaseBottom代表下基線,Topi、Bottomi和Widthi分別代表行內(nèi)第i個(gè)字符的上坐標(biāo)、下坐標(biāo)和寬度。
上述英文行的連接問(wèn)題常出現(xiàn)在相鄰兩英文行的首尾連接上。當(dāng)上一行行末出現(xiàn)一個(gè)完整單詞同時(shí)下一行行首出現(xiàn)新單詞時(shí),若不添加空格鍵將兩單詞分開(kāi),那么首尾兩個(gè)單詞將黏連在一起影響段落內(nèi)容的準(zhǔn)確性。因此,在段落字符的規(guī)范化中要針對(duì)此類問(wèn)題進(jìn)行自動(dòng)檢測(cè),自動(dòng)添加空格鍵。
6.輸出正文碎片化結(jié)果
輸出正文碎片化結(jié)果是指將分析結(jié)果保存為XML文檔。正文碎片化結(jié)果包括表格、邏輯圖、公式、段落等正文的基本元素,以及基本元素之間的閱讀順序和層次關(guān)系。
雖然本發(fā)明所揭露的實(shí)施方式如上,但所述的內(nèi)容只是為了便于理解本發(fā)明而采用的實(shí)施方式,并非用以限定本發(fā)明。任何本發(fā)明所屬技術(shù)領(lǐng)域內(nèi)的技術(shù)人員,在不脫離本發(fā)明所揭露的精神和范圍的前提下,可以在實(shí)施的形式上及細(xì)節(jié)上作任何的修改與變化,但本發(fā)明的專利保護(hù)范圍,仍須以所附的權(quán)利要求書(shū)所界定的范圍為準(zhǔn)。
此外,應(yīng)當(dāng)理解,雖然本說(shuō)明書(shū)按照實(shí)施方式加以描述,但并非每個(gè)實(shí)施方式僅包含一個(gè)獨(dú)立的技術(shù)方案,說(shuō)明書(shū)的這種敘述方式僅僅是為清楚起見(jiàn),本領(lǐng)域技術(shù)人員應(yīng)當(dāng)將說(shuō)明書(shū)作為一個(gè)整體,各實(shí)施例中的技術(shù)方案也可以經(jīng)適當(dāng)組合,形成本領(lǐng)域技術(shù)人員可以理解的其他實(shí)施方式。