本發(fā)明屬于pdf文件內(nèi)容處理與分析的
技術(shù)領(lǐng)域:
:,本發(fā)明涉及一種識別pdf文件中水印的方法。
背景技術(shù):
::pdf文檔中經(jīng)常出現(xiàn)水印用于標(biāo)識該文檔的版權(quán)、狀態(tài)或其他附加信息,比如頁面背景帶“草稿”字樣,提示文檔未正式發(fā)表。pdf內(nèi)容提取場景,如轉(zhuǎn)換為其他格式(word文檔)或針對文字內(nèi)容進(jìn)行分析處理等,都需要識別水印信息,以免將它們混入正文干擾內(nèi)容解析。pdf格式標(biāo)準(zhǔn)中并沒有獨(dú)立的“水印”概念,水印內(nèi)容同樣是通過pdf命令繪制,即將文檔記錄的顏色、字體、大小、位置、透明度等指令顯示在頁面上,與正文數(shù)據(jù)操作完全相同,所以無法直接通過程序解讀和區(qū)分水印信息。然而,人眼卻可以很容易辨別出水?。簭臉?gòu)成角度看,水印可分為文字和圖片(pdf格式中的位圖bitmap,下面不再贅述)兩種;一般會顯示相同或有規(guī)律的內(nèi)容,并與正文有明顯的風(fēng)格(字體、字號等)差別;出現(xiàn)位置可以是正文下方作為內(nèi)容背景,也可以是半透明狀態(tài)覆蓋在正文之上;另外水印通常都在頁面特定位置出現(xiàn),每頁或至少正文頁面都有?;谶@些觀察,本發(fā)明提出一種方法,利用水印顯示規(guī)律自動識別pdf文檔頁面上的水印。技術(shù)實(shí)現(xiàn)要素:本發(fā)明所要解決的技術(shù)問題是提供一種識別pdf文件中的水印的方法,能夠解析頁面上的水印內(nèi)容并標(biāo)識其所在位置。本發(fā)明解決上述技術(shù)問題的技術(shù)方案如下。步驟1:提取pdf文字、位圖元素內(nèi)容及位置信息,根據(jù)位置計(jì)算指紋并計(jì)數(shù)。指紋是從內(nèi)容中(此處即是位置)提取的關(guān)鍵信息,可以代表所指向的內(nèi)容,相同指紋可以統(tǒng)計(jì)出現(xiàn)次。步驟2:篩選(計(jì)數(shù)>頁數(shù)/2)的指紋集合,查找相應(yīng)指紋位置的元素。步驟3:遍歷備選指紋,如果指紋對應(yīng)的都是文字元素,則進(jìn)行步驟4處理;對應(yīng)均為位圖元素則進(jìn)入步驟5。步驟4:提取該指紋對應(yīng)的文字,如果相同或滿足遞增、遞減規(guī)律則判定為文字水印。步驟5:提取指紋對應(yīng)的位圖,如果相同則判定為圖片水印。在以上處理流程中,還涉及通過元素位置坐標(biāo)參數(shù),生成文本指紋方法;文字元素相同通過字體、字號、顏色、旋轉(zhuǎn)參數(shù)綜合對比判斷;文字內(nèi)容遞增遞減規(guī)律通過差分方法判斷;相同圖片對比位圖md5哈希值方法判斷等實(shí)施細(xì)節(jié)。本發(fā)明的有益效果是:通過遍歷pdf文件提取文本和位圖元素,利用位置信息生成指紋。指紋生成方法在后面介紹。由于pdf文檔按頁顯示內(nèi)容,不同頁面但同一位置的頁面元素,可以通過條件(計(jì)數(shù)>頁數(shù)/2)篩選出來,它們是潛在的水印。然后,針對備選指紋及指紋對應(yīng)的內(nèi)容判斷,如果是文本內(nèi)容,需要判斷是否相同,或者滿足某種變化規(guī)律,這是因?yàn)槟承┪谋舅綆ы摯a、日期、項(xiàng)目編號等規(guī)律信息,滿足條件則判定為水?。环駝t是圖片內(nèi)容,則直接判斷位圖數(shù)據(jù)是否相同,是則判定為圖片水印。本發(fā)明利用指紋(計(jì)數(shù))處理,避免存儲、計(jì)算圖文內(nèi)容信息本身,節(jié)省分析開銷。此外,針對文本、圖片水印分別進(jìn)行內(nèi)容判斷,可以大大拓展識別算法的適用性,提高識別率。在上述處理流程中,本發(fā)明還闡述了位置指紋生成方法,相同/規(guī)律文字及相同圖片判斷條件等細(xì)節(jié),綜合解決pdf文檔水印識別問題。附圖說明圖1為本發(fā)明提出的識別pdf文件中水印的方法的流程圖。具體實(shí)施方式以下結(jié)合附圖對本發(fā)明的原理和特征進(jìn)行描述,所舉實(shí)例只用于解釋本發(fā)明,并非用于限定本發(fā)明的范圍。圖1為本發(fā)明提出的識別pdf文件中的水印的方法的流程圖。這里pdf是portabledocumentformat的縮寫,意為便攜文件格式,是一種電子文件格式,pdf文件指的是采用pdf格式的電子文件。該格式常用于保存和分發(fā)復(fù)雜排版的文檔,名稱中的便攜(portable)是指在各種硬件設(shè)備和軟件平臺上都可以獲得相同的排版效果,因此特別適合用于要求準(zhǔn)確顯示、不可修改的文檔。正因?yàn)檫@種不可修改的特性,生成文檔時常常會添加水印,作用與紙質(zhì)水印類似。本發(fā)明中,pdf文件中的水印可以是文字或圖片(位圖),出現(xiàn)在文檔頁面的固定位置,標(biāo)識文檔的版權(quán)、狀態(tài)或其他附加信息。如圖1所示,該方法包括。步驟101:提取pdf文字、位圖元素內(nèi)容及位置信息,根據(jù)位置計(jì)算指紋并計(jì)數(shù)。指紋是從內(nèi)容中(此處即是位置)提取的關(guān)鍵信息,可以代表所指向的內(nèi)容,相同指紋可以統(tǒng)計(jì)出現(xiàn)次。每個對象都包含顯示的位置信息,可以表示為矩形,通過右下角位置坐標(biāo)(x,y)和寬高(w,h)參數(shù)確定。然后將位置轉(zhuǎn)換為指紋字符串“x,y,w,h”,其中每項(xiàng)數(shù)字都轉(zhuǎn)為字符串,截?cái)嗳舾尚?shù)位降低匹配敏感度。舉例說明,某坐標(biāo)為(12.3212,20.6833),寬高分別為(45.5000,100.7300)的文字元素,得到指紋:“12.3,20.6,45.5,100.7”,這里保留一位小數(shù)。提取過程中,如果指紋再次出現(xiàn)則計(jì)數(shù)累加。最后,計(jì)數(shù)代表某個位置上元素出現(xiàn)了幾次。通過指紋轉(zhuǎn)換和截?cái)嘈?shù)點(diǎn)的方法,可以節(jié)約比較計(jì)算開銷,同時忽略特別小的位置偏移,因?yàn)樵搭^上計(jì)算機(jī)無法精確存儲浮點(diǎn)型數(shù)據(jù),所以引入截?cái)鄼C(jī)制可以提高本步驟的容錯性。步驟102:篩選(計(jì)數(shù)>頁數(shù)/2)的指紋集合,查找相應(yīng)指紋位置的元素。本步驟篩選計(jì)數(shù)大于一半文檔頁數(shù)的指紋集合。步驟101已經(jīng)解釋過計(jì)數(shù)的含義,多個頁面同一位置出現(xiàn)元素是水印的特征。設(shè)定數(shù)量大于一半頁數(shù),是因?yàn)槟承┚哂醒b訂線的文檔,相鄰頁水印位置對稱分布(隔頁相同);另一方面,通常封面和底頁不帶有水印。實(shí)踐中還可以人工指定該閾值以更適合識別場景。查找相應(yīng)指紋位置的元素,同一指紋一般對應(yīng)多個元素,在后續(xù)步驟中進(jìn)一步判斷。步驟103:遍歷備選指紋,如果指紋對應(yīng)得都是文字元素,則進(jìn)行步驟105處理,否則進(jìn)入步驟104。本步驟中的"遍歷"是一種計(jì)算機(jī)運(yùn)算形式,指的是沿著某條搜索路線,依次對集合中每個結(jié)點(diǎn)均做一次且僅做一次訪問。遍歷的方法以及上述的集合的概念屬于計(jì)算機(jī)領(lǐng)域的公知常識,在此不做贅述。由于文本和位圖處理方式不同,我們將滿足位置條件的元素分為兩類處理。指紋對應(yīng)計(jì)數(shù)的內(nèi)容均為文字元素,則滿足條件,轉(zhuǎn)入105繼續(xù)進(jìn)行內(nèi)容檢測。步驟104:如果指紋對應(yīng)得都是位圖元素,則進(jìn)行步驟106。本步驟是103的后繼判斷,如果同一指紋對應(yīng)元素既有文本又有位圖也說明不是水印,盡管這種情況非常少見。步驟105:提取該指紋對應(yīng)的文字,如果相同或滿足遞增、遞減規(guī)律則判斷為文字水印。步驟101至103主要著眼于元素位置,縮小判斷范圍,本步驟判斷對應(yīng)文字元素本身信息。首先,檢查文字風(fēng)格,包括文本字體,字號,顏色、旋轉(zhuǎn)參數(shù)相同則繼續(xù)判斷。而后針對文字內(nèi)容,如果完全相同,則判定為水印,如果不同,但是存在滿足遞增、遞減規(guī)律的數(shù)字則判定為水印。其中,文字風(fēng)格和內(nèi)容是pdf格式固有信息,正是依賴這些指令,文檔才得以精確顯示。數(shù)字判斷可以使用正則表達(dá)式,該算法是計(jì)算機(jī)領(lǐng)域的廣泛使用的字符串處理方案,不再詳細(xì)解釋。遞增、遞減數(shù)字判斷是通過差分計(jì)算獲得,原理是數(shù)學(xué)中的等差數(shù)列。步驟106:提取指紋對應(yīng)的位圖,如果相同則判斷為圖片水印。pdf格式中的位圖是以原始數(shù)據(jù)(二進(jìn)制)方式存儲,無論是文檔多處引用,還是將同一位圖多次存儲(較少見),總能提取圖片數(shù)據(jù)。為了比較圖片數(shù)據(jù)相同,我們對圖片數(shù)據(jù)做md5運(yùn)算,計(jì)算該數(shù)據(jù)的摘要,摘要相同則說明是相同位圖,判定為水印。其中,md5算法可以對數(shù)據(jù)生成一組128位的哈希值,用來確保信息傳輸完整性,接受消息(數(shù)據(jù))時,驗(yàn)證附帶md5哈希值即可判斷是否與發(fā)送消息相同。我們分別計(jì)算圖片的md5值,用來判斷數(shù)據(jù)是否相同,避免直接比較二進(jìn)制數(shù)據(jù)。步驟107:記錄水印信息。在105、106步驟基礎(chǔ)上,對判定為水印的指紋逆向轉(zhuǎn)換:通過逗號(,)分割字符串,然后將四部分字符串轉(zhuǎn)為數(shù)字,就可以得到相應(yīng)的位置坐標(biāo)。結(jié)合之前的類型型信息,得到一個文檔的水印信息。本發(fā)明具有以下優(yōu)點(diǎn):通過遍歷pdf文件,利用水印的一般特點(diǎn),首先針對頁間位置固定,設(shè)計(jì)了一種簡單指紋,縮小查找范圍,提高搜索效率。然后,分別定義文本水印和圖片水印相同或相似的規(guī)則,進(jìn)一步判斷滿足位置條件元素是否為水印。這樣獲得了文檔的水印信息,便于后續(xù)對內(nèi)容精確處理和分析。以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。當(dāng)前第1頁12當(dāng)前第1頁12