專利名稱::一種基于xml的pdf文檔信息抽取系統(tǒng)的方法
技術(shù)領(lǐng)域:
:本發(fā)明是一種信息轉(zhuǎn)化的方法,屬于信息技術(shù)類,確切地說,它是一種基于XML的PDF文檔信息抽取系統(tǒng)的方法。
背景技術(shù):
:結(jié)構(gòu)化的文檔格式PDF是由美國的Adobe公司提出的。PDF文件格式以其卓越的特性成為在Internet上進(jìn)行電子文檔發(fā)行和格式化信息傳播的理想文檔格式。當(dāng)前,在Internet中的科技論文以PDF格式提交變得越來越流行。如萬方數(shù)據(jù)庫等。但是,PDF重在描述文檔的打印格式,并沒有描述原始文檔內(nèi)容的數(shù)據(jù)結(jié)構(gòu)。這成為制約人們信息檢索的瓶頸。因此,對PDF進(jìn)行信息抽取的研究顯得十分重要。XML是W3C推薦的數(shù)據(jù)交換的標(biāo)準(zhǔn)。它的出現(xiàn)推進(jìn)了網(wǎng)絡(luò)表達(dá)的語言集合。XML是Internet環(huán)境中跨平臺的,依賴于內(nèi)容的技術(shù),是這個(gè)時(shí)代中處理分布式結(jié)構(gòu)信息的選擇工具。XML是面向內(nèi)容的,因此它能夠彌補(bǔ)PDF文件格式在語義描述方面的不足。經(jīng)檢索還沒有見到一種基于XML的PDF文檔信息抽取系統(tǒng)的方法方面的文獻(xiàn)報(bào)道。
發(fā)明內(nèi)容本發(fā)明的目的在于發(fā)明一種基于XML的PDF文檔信息抽取系統(tǒng)的方法。本發(fā)明是這樣實(shí)現(xiàn)的其步驟為(1)DTD的設(shè)計(jì),分析并選擇出外部信息元數(shù)據(jù)和內(nèi)部信息元數(shù)據(jù);(2)實(shí)現(xiàn)對PDF文檔的語義信息的抽取,先將提取存放PDF文檔中各頁的內(nèi)容流,并進(jìn)行解碼,然后將PDF文檔的物理結(jié)構(gòu)轉(zhuǎn)化為邏輯結(jié)構(gòu),外部信息元數(shù)據(jù)的提取,內(nèi)部信息元數(shù)據(jù)的提??;(3)生成XML文檔。本發(fā)明可以對轉(zhuǎn)換后的XML文檔做進(jìn)一步的操作,從而提高文檔自動分類和用戶信息檢索的效率。圖1為本發(fā)明的PDF的物理結(jié)構(gòu)圖;圖2為本發(fā)明的頁面樹結(jié)構(gòu)示意圖;圖3為本發(fā)明的目錄樹管理書簽結(jié)構(gòu)示意圖;圖中1為文件頭(head);2為文件體(body);3為交叉引用表(crosstable);4為文件尾(tailer)。以下將結(jié)合實(shí)施例對本發(fā)明進(jìn)行進(jìn)一步的描述具體實(shí)施例方式PDF文檔信息抽取系統(tǒng)設(shè)計(jì)的工作流程DTD(文檔類型定義)的設(shè)計(jì)要將PDF文檔中的語義信息較好地表現(xiàn)出來,首要的一步是制定規(guī)范XML文檔中元素和標(biāo)志的規(guī)則及相互關(guān)系的DTD文檔。我們參考了廣受歡迎的DocBook元素的子集SimplifiedDocBook,根據(jù)科技論文具有篇章結(jié)構(gòu)和用語規(guī)范的特點(diǎn),分析并選擇出以下兩類基本的信息(1)外部信息元數(shù)據(jù)(Articleinfo)描述科技論文外部特征的元數(shù)據(jù),包括author(作者),address(作者地址),edition(出版),bibliography(參考文獻(xiàn))等。外部信息元數(shù)據(jù)是用戶進(jìn)行信息檢索的重要依據(jù)。<!ELEMENTArticleinfo(authorgroup,edition,bibiography)><!ELEMENTauthorgroup(address,author+)><!ELEMENTaddress(department,city,zip,email)><!ELEMENTauthor(name,birth,sex,degree,research)><!ELEMENTedition(ediname,pagenums,volumenum,issuenum,pubdate)><!ELEMENTbibliography(bibliodiv+)><!ELEMENTbibliodiv(title,biblioentry)><!ELEMENTbiblioentry((authorgroup,title,publisher,date)|ulink)><!ELEMENTauthorgroup(author_name+)><!ELEMENTpublisher(publishername,address)><!ELEMENTdepartment(#PCDATA)><!ELEMENTcity(#PCDATA)>......<!ELEMENTulink(#PCDATA)><!ATTLISTulinkurlCDATA>(2)內(nèi)部信息元數(shù)據(jù)描述文章語義信息的元數(shù)據(jù),包括Title,Abstract,Keywordset,Section,Para等。利用文章的語義信息進(jìn)行檢索,能在很大程度上提高用戶信息檢索的效率。①Title(文章標(biāo)題)最直接地反映了文章的核心內(nèi)容。<!ELEMENTTitle(#PCDATA)>②Abstract論文的摘要<!ELEMENTAbstract(#PCDATA)>③Keywordset論文關(guān)鍵詞的集合<!ELEMENTKeywordset(keyword+)><!ELEMENTkeyword(#PCDATA)>④Section文章的章節(jié)。為了更好地實(shí)現(xiàn)文章信息的分類和檢索,我們有必要對文章的篇章結(jié)構(gòu)進(jìn)行分析。文章由章節(jié)Section組成,Section中包含段落Para子元素,并且可以嵌套Section。我們工作中很重要的一項(xiàng)任務(wù)是完成對章節(jié)主題以及段落主題的判斷。<!ELEMENTSection(sect_theme,(Section|para+)*)><!ELEMENTsect_theme(#PCDATA)><!ELEMENTpara(para_theme*)><!ELEMENTpara_theme(#PCDATA)><!ATTLISTparaidID#REQUIRED>PDF的文件格式要實(shí)現(xiàn)對PDF文檔的語義信息的抽取,必須十分清楚PDF的文件格式。PDF的對象組成PDF文檔的基本元素是PDF對象(PDFObject)。PDF支持七種基本的對象類型Boolean(布爾型),String(字符串型),Name(名字型),Dictionary(字典型),Number(數(shù)值型),Array(數(shù)組型),Null(空對象),Stream(流對象)。其中,字典對象是PDF文檔的主要構(gòu)成部分。PDF文檔中的頁面,字庫等部分都用字典對象表示。PDF對象可以分成直接對象(directobject)和間接對象(indirectobject)。其中,PDF間接對象是一個(gè)被標(biāo)志過的對象。它由對象標(biāo)志符,直接對象和關(guān)鍵字endobj組成。PDF文檔中使用了大量的間接對象和間接引用。PDF的物理結(jié)構(gòu)PDF的物理結(jié)構(gòu)(文件結(jié)構(gòu))由四個(gè)部分組成。從圖1可知(1)文件尾中主要包含了交叉引用表的地址,文件體的根對象Catalog的地址及加密等信息。(2)交叉引用表是為了實(shí)現(xiàn)對間接對象的隨機(jī)存取而特設(shè)的地址索引表。(3)文件體是由大量的PDF間接對象組成。間接對象構(gòu)成了PDF文檔中的諸如字體,頁面,表格,圖像等具體內(nèi)容。對文件體中的間接對象進(jìn)行處理是我們信息抽取工作的主要工作量。(4)文件頭指明了PDF文檔所遵從的PDF規(guī)范的版本號。如%PDF-1.4表示該文檔格式符合PDF1.4規(guī)范。PDF的邏輯結(jié)構(gòu)PDF的邏輯結(jié)構(gòu)反映了文件體中的間接對象之間的層次關(guān)系。它是一種樹型結(jié)構(gòu)。樹的根節(jié)點(diǎn)是PDF文件的根對象Catalog。根節(jié)點(diǎn)下有四棵子樹,分別介紹如下(1)頁面樹(pagestree)所有的頁面對象都是樹的葉節(jié)點(diǎn)。每一頁包含了對該頁的內(nèi)容(content),注釋,縮略圖的引用。其中,contentstream(內(nèi)容流)描述的是該頁的文本內(nèi)容(參見圖2)。(2)目錄樹管理書簽(bookmark)PDF文檔中的OutlineTree是一個(gè)樹型層次結(jié)構(gòu)。其中每一個(gè)節(jié)點(diǎn)都是一個(gè)書簽Bookmark。書簽在一個(gè)書簽名和具體頁面位置的之間建立了關(guān)聯(lián)。應(yīng)用程序可以按照書簽名訪問文檔的內(nèi)容(參見圖3)。線索樹(threads)按樹型結(jié)構(gòu)組織文章線索和線索下的文章塊?!衩謽?Name)建立了一個(gè)字符串和頁面區(qū)域之間的關(guān)聯(lián)。PDF文本信息提取的實(shí)現(xiàn)提取存放PDF文檔中各頁的內(nèi)容流,并進(jìn)行解碼。應(yīng)用程序首先訪問文件尾,從文件尾中讀取交叉引用表的地址和PDF文件的Catalog根節(jié)點(diǎn)。根據(jù)交叉引用表進(jìn)而訪問PDF文檔中的間接對象,從而控制整個(gè)PDF文檔。具體實(shí)現(xiàn)流程如下a從文件尾trail中找到PDF根對象。該對象的類型type為catalog。b通過catalog根節(jié)點(diǎn)找到頁樹節(jié)點(diǎn)對象。該對象的type為pages。c通過pages子節(jié)點(diǎn)找到頁對象。該對象的type為page。d訪問頁對象Page中的內(nèi)容。如果找不到Contents入口,則說明此頁內(nèi)容為空,不予處理;如果找到Contents入口,轉(zhuǎn)下一步進(jìn)行處理。e從Contents入口得到Contents后的所有對象號,并依次將該對象號記錄到該頁內(nèi)容對象號數(shù)組Con_objNo[]中。f根據(jù)數(shù)組Con_objNo[]中每一個(gè)對象號,轉(zhuǎn)到相應(yīng)的對象位置,提取Filter后的解碼名,并將stream與endstream之間的所有內(nèi)容放入一個(gè)con_byte[]數(shù)組中。g調(diào)用Java的iText軟件包的PdfReader類中的Filter解碼方法對Con_objNo[]數(shù)組中的對象的內(nèi)容流進(jìn)行解碼h將Con_objNo[]數(shù)組中的所有對象解碼后的字符串用指針連接起來,組成該頁內(nèi)容流解碼后的字符串TextStr。i重復(fù)以上工作,將各頁內(nèi)容流解碼后的字符串用指針連接起來,組成單向鏈表,寫入中間文件中。注意1.頁樹中各節(jié)點(diǎn)的組織具有先序深度優(yōu)先的性質(zhì)。我們采用先序遍歷算法讀出所有的頁面對象和屬性,再將這些內(nèi)容依次寫入中間文件中。這樣,訪問頁面節(jié)點(diǎn)的次序與頁面的實(shí)際頁碼是一致的。2.如果PDF文檔是英文文檔,中間文件中解碼后的字符串就是原文;而對于中文,中間文件中給出的是漢字的編碼,需要經(jīng)過編碼的轉(zhuǎn)化才能還原為原文內(nèi)容。將PDF文檔的物理結(jié)構(gòu)轉(zhuǎn)化為邏輯結(jié)構(gòu)從中間文件中,我們可以得到以下幾項(xiàng)重要信息(1)content每個(gè)頁面中每一行的文本內(nèi)容;(2)position每行的位置(x,y);(3)page該行所處的頁面;(4)fonttype描述該行中多數(shù)文本內(nèi)容采用的字體類型;(5)fontsize描述該行中多數(shù)文本內(nèi)容采用的字體大小。由于中間文件描述的只是文檔的物理結(jié)構(gòu),并不具有任何的語義信息。我們這一步的工作便是從中間文件中獲取信息,生成按照人們閱讀習(xí)慣組織的文章的邏輯結(jié)構(gòu)。具體實(shí)現(xiàn)分為兩步(1)排版分析該步的目的是將以物理行為單位的中間文件轉(zhuǎn)化為以邏輯行為單位的文件。對單欄排版的文章,邏輯行在一定意義上等同于物理行。而對于多欄排版的文章,要按欄為單位的方式對行進(jìn)行重組。該步的核心是區(qū)分不同欄但同行的字符串。(2)邏輯轉(zhuǎn)換經(jīng)過排版分析的處理,我們得到了按照文章的物理順序組織的字符串鏈表。邏輯轉(zhuǎn)換所做的工作就是將字符串鏈表改成按照人們閱讀文章時(shí)的順序組織的文章的邏輯鏈表。系統(tǒng)使用聚類算法,依據(jù)各字符串之間的對齊方式,將屬于同一欄的內(nèi)容聚集在一起。外部信息元數(shù)據(jù)的提取經(jīng)過上面幾步的預(yù)處理,我們得到了描述文章的邏輯鏈表。接下來,我們要做的工作是對應(yīng)DTD文檔中的定義,判斷PDF文檔的外部信息元數(shù)據(jù)。對于第一作者的提取,我們制定的規(guī)則如下(1)該字符串的position的y值與已提取出的title的position的y值最接近;(2)該字符串的fontsize小于title的fontsize。對于非第一作者的提取,我們參照如下規(guī)則(1)該字符串的position的y值等于第一作者的position的y值;(2)該字符串的fontsize和fonttype與第一作者的相同。其余的為作者對應(yīng)的單位的地址,名稱,郵政編碼等信息。內(nèi)部信息元數(shù)據(jù)的提取遍歷整個(gè)邏輯結(jié)構(gòu)鏈表,抽取出文檔的內(nèi)容信息。(1)title文章標(biāo)題的提取對于標(biāo)題的提取,我們參照如下規(guī)則①該字符串的Page為第一頁;②該字符串的position的y值最大;③該字符串的fontsize最大。同時(shí)符合上述條件的字符串,應(yīng)用程序都認(rèn)為是標(biāo)題的一部分。(2)section章節(jié)信息的提取如前所述,PDF文檔中的OutlineTree是一個(gè)樹型層次結(jié)構(gòu)。其中每一個(gè)節(jié)點(diǎn)都是一個(gè)書簽Bookmark。系統(tǒng)使用書簽Bookmark提取section章節(jié)的信息。具體的實(shí)現(xiàn)方法如下①Bookmark節(jié)點(diǎn)在OutlineTree中的深度對應(yīng)轉(zhuǎn)換成XML文檔中章節(jié)的層次結(jié)構(gòu);②章節(jié)的主題theme的內(nèi)容為Bookmark的文本內(nèi)容;③章節(jié)中包含的段落以Bookmark指向文檔中的具體位置為依據(jù)。(3)Para段落信息的提取對于段落的判斷,我們制定的規(guī)則如下①如果兩行文本之間的間距大于平均的行距,則得出“這兩行文本分屬兩個(gè)段落”的結(jié)論。②如果行首文本的橫坐標(biāo)大于前一文本行的行首橫坐標(biāo),則判斷該行是一個(gè)新段落的開始。段落中最重要的信息是主題的表示。主題表示的方法常用的有兩種一是摘要形式;二是關(guān)鍵字形式。在系統(tǒng)中,我們采用關(guān)鍵字來表示段落的主題。系統(tǒng)使用了中文信息處理手段提取段落主題。具體步驟如下①漢語分詞漢語分詞是由計(jì)算機(jī)自動識別文本中的詞邊界的過程,可用處理函數(shù)a=F(b)表示。其中,b為漢字字符序列(b1b2…bn),a為漢語詞串的組合序列(a1a2…am)。不同的F(b),有不同的a。經(jīng)過分析和比較,我們采用最大正向匹配算法作為F(b)。該算法依據(jù)一個(gè)分詞詞表和“長詞優(yōu)先”的原則,進(jìn)行分詞。它的基本思想如下設(shè)分詞詞表中的詞由i個(gè)漢字組成,取漢字字符串序列中的前i個(gè)漢字作為匹配字段,查分詞詞表。若能匹配,則將這個(gè)匹配字段切分出來,填入數(shù)組a[]中;若不能匹配,則將匹配字段的最后一個(gè)字去掉,重復(fù)以上過程,直到匹配為止。②詞性標(biāo)注使用專門的工具對分詞后的結(jié)果a[]中的詞進(jìn)行詞性的標(biāo)注。③選擇關(guān)鍵字根據(jù)詞性標(biāo)注后的結(jié)果,判斷每個(gè)段落中的所有的名詞。對于這些名詞,求出它們的詞頻。根據(jù)香農(nóng)信息論,區(qū)別段落中最有意義的詞語應(yīng)該是那些在段落中出現(xiàn)頻率足夠高,但在段落集合(文章)的其他段落中出現(xiàn)頻率足夠少的詞語。我們參考了TFIDF(TermFrequencyInverseDocumentFrequency)向量表示法,定義的計(jì)算詞頻的公式為xi=freq(wi)log(N/DF(wi))其中,freq(wi)表示wi在段落中出現(xiàn)的次數(shù);DF(wi)是擁有詞語wi的段落數(shù)目,N表示目標(biāo)文章中的段落總數(shù)。然后,選擇詞頻最高的若干個(gè)名詞作為該段的關(guān)鍵字,寫入元素theme中。生成XML文檔。PDF文檔經(jīng)過解碼,章節(jié)劃分,自動分詞等處理后,最終的結(jié)果就是建立了文本結(jié)構(gòu)樹。在此基礎(chǔ)上,我們可以實(shí)現(xiàn)面向內(nèi)容的滿足已定義好的DTD的validXML文檔的生成了。權(quán)利要求1.一種基于XML的PDF文檔信息抽取系統(tǒng)的方法,其特征在于其步驟為(1)DTD的設(shè)計(jì),分析并選擇出外部信息元數(shù)據(jù)和內(nèi)部信息元數(shù)據(jù);(2)實(shí)現(xiàn)對PDF文檔的語義信息的抽取,先將提取存放PDF文檔中各頁的內(nèi)容流,并進(jìn)行解碼,然后將PDF文檔的物理結(jié)構(gòu)轉(zhuǎn)化為邏輯結(jié)構(gòu),外部信息元數(shù)據(jù)的提取,內(nèi)部信息元數(shù)據(jù)的提取;(3)生成XML文檔。2.根據(jù)權(quán)利要求1所述的一種基于XML的PDF文檔信息抽取系統(tǒng)的方法,其特征在于其步驟(2)外部信息元數(shù)據(jù),包括作者,作者地址,版本,參考文獻(xiàn)。3.根據(jù)權(quán)利要求1所述的一種基于XML的PDF文檔信息抽取系統(tǒng)的方法,其特征在于其步驟(2)內(nèi)部信息元數(shù)據(jù),包括文章標(biāo)題,論文的摘要,關(guān)鍵詞,文章的章節(jié)。4.根據(jù)權(quán)利要求1所述的一種基于XML的PDF文檔信息抽取系統(tǒng)的方法,其特征在于其步驟(2)提取存放PDF文檔中各頁的內(nèi)容流,并進(jìn)行解碼,其具體實(shí)現(xiàn)的流程為a、從文件尾trail中找到PDF根對象;b、通過catalog根節(jié)點(diǎn)找到頁樹節(jié)點(diǎn)對象;c、通過pages子節(jié)點(diǎn)找到頁對象;d、訪問頁對象Page中的內(nèi)容;e、從Contents入口得到Contents后的所有對象號,并依次將該對象號記錄到該頁內(nèi)容對象號數(shù)組Con_objNo[]中;f、根據(jù)數(shù)組Con_objNo[]中每一個(gè)對象號,轉(zhuǎn)到相應(yīng)的對象位置,提取Filter后的解碼名,并將stream與endstream之間的所有內(nèi)容放入一個(gè)con_byte[]數(shù)組中;g、調(diào)用Java的iText軟件包的PdfReader類中的Filter解碼方法對Con_objNo[]數(shù)組中的對象的內(nèi)容流進(jìn)行解碼;h、將Con_objNo[]數(shù)組中的所有對象解碼后的字符串用指針連接起來,組成該頁內(nèi)容流解碼后的字符串TextStr;i、重復(fù)以上工作,將各頁內(nèi)容流解碼后的字符串用指針連接起來,組成單向鏈表,寫入中間文件中。全文摘要本發(fā)明公開了一種基于XML的PDF文檔信息抽取系統(tǒng)的方法,它是一種信息轉(zhuǎn)化的方法,屬于信息技術(shù)類,其步驟為(1)DTD的設(shè)計(jì),分析并選擇出外部信息元數(shù)據(jù)和內(nèi)部信息元數(shù)據(jù);(2)實(shí)現(xiàn)對PDF文檔的語義信息的抽取,先將提取存放PDF文檔中各頁的內(nèi)容流,并進(jìn)行解碼,然后將PDF文檔的物理結(jié)構(gòu)轉(zhuǎn)化為邏輯結(jié)構(gòu),外部信息元數(shù)據(jù)的提取,內(nèi)部信息元數(shù)據(jù)的提?。?3)生成XML文檔。本發(fā)明可以對轉(zhuǎn)換后的XML文檔做進(jìn)一步的操作,從而提高文檔自動分類和用戶信息檢索的效率。文檔編號G06F17/30GK1687926SQ20051003901公開日2005年10月26日申請日期2005年4月18日優(yōu)先權(quán)日2005年4月18日發(fā)明者張文德,宋艷娟,楊傳耀,朱丹紅,陳俊林申請人:福州大學(xué)