專利名稱::去除從雙層電子文件中復(fù)制的文本中的空格的方法與系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及一種去除從雙層電子文件中復(fù)制的文本中的空格的方法與系統(tǒng)。
背景技術(shù):
:可移植文檔格式(PortableDocumentFormat,PDF)的雙層電子文件例如書籍、文件,是有圖像層與文字層的PDF文件,圖像層上顯示原書例如紙書的版面,上面每一個字實際上是一個字形圖像;文字層在圖像層下面,并不顯示出來,文字層中包含文件的電子版文本,通常是使用光學(xué)字符識別(OpticalCharacterRecognition,OCR)的方式獲得。文字層的文本與圖像層的字形圖像按字對位,通常字符的左側(cè)為對位基準側(cè)。由于Acrobat或者Adobereader在處理文本復(fù)制功能時,字符之間的間隔并不是按照一行中是否真實存在空格符來生成復(fù)制的數(shù)據(jù),而是根據(jù)字符的坐標確定字符間距,按照該間距判斷字符間是否“需要”空格;即如果兩個字在同一行,并且按照Acorbat的判斷準則,這兩個字之間的水平位置距離較遠,這個時候選中本行文本,復(fù)制到剪貼板,查看剪貼板的文本,則在水平位置較遠的相鄰兩個字符之間多出了原文沒有的空格。這個空格就是由Acrobat或者Adobereader根據(jù)文字位置插入的多余空格。在插入了多余空格的情況下,字符組成的文本會失去原有的文字意義。圖1是根據(jù)現(xiàn)有技術(shù)的從雙層電子文件中復(fù)制的文本中存在多余空格以及該文本的原始狀態(tài)的示意圖。如圖1所示,文本區(qū)域11的文本中包含若干單詞,在插入了多余空格的情況下成為文本區(qū)域12所示的一個個離散的字母,這樣會給使用者帶來很多不便,例如影響閱讀;又如無法利用計算機檢索其中的單詞?,F(xiàn)有技術(shù)中,從雙層電子文件中復(fù)制的文本中存在多余空格,對于該問題,目前尚未提出有效解決方案。
發(fā)明內(nèi)容本發(fā)明的主要目的是提供一種去除從雙層電子文件中復(fù)制的文本中的空格的方法與系統(tǒng),用以解決現(xiàn)有技術(shù)中從雙層電子文件中復(fù)制的文本中存在多余空格的問題。為解決上述問題,根據(jù)本發(fā)明的一個方面,提供了一種去除從雙層電子文件中復(fù)制的文本中的空格的方法。本發(fā)明的去除從雙層電子文件中復(fù)制的文本中的空格的方法包括從雙層電子文件中復(fù)制相鄰的兩個字符,然后判斷所述兩個字符是否為空格符;在所述相鄰的兩個字符都不是空格符的情況下,檢查復(fù)制得到的所述兩個字符之間是否存在空格,若存在空格,則對所述雙層電子文件文字層的所述兩個字符中的至少一個字符向另一字符的方向拉伸。進一步地,從雙層電子文件中復(fù)制相鄰的兩個字符之前還包括從所述雙層電子文件的當前頁中復(fù)制文本塊;在所述文本塊中的非空格符的字符一側(cè)或兩側(cè)出現(xiàn)空格的情況下,在輸出的所述文本塊中標示出該空格。進一步地,從雙層電子文件中復(fù)制相鄰的兩個字符包括根據(jù)所述雙層電子文件的內(nèi)核數(shù)據(jù)確定針對相鄰兩個字符的選擇區(qū)域;從所述確定的選擇區(qū)域中復(fù)制字符。進一步地,對所述兩個字符中的至少一個字符向另一字符的方向拉伸之后還包括判斷所述兩個字符之間是否存在空格,若存在則在輸出的這兩個字符之間標示出該空格。進一步地,在輸出的這兩個字符之間標示出該空格之后,所述方法還包括對拉伸后的字符再次進行已執(zhí)行的拉伸的操作。進一步地,所述雙層電子文件的圖像層與文字層的對位基準側(cè)是字符第一側(cè);對所述雙層電子文件文字層的所述兩個字符中的至少一個字符向另一字符的方向拉伸包括將所述雙層電子文件文字層的所述兩個字符中的第一側(cè)字符向第二側(cè)拉伸。進一步地,在所述相鄰的兩個字符中的至少一個為空格符的情況下,重復(fù)執(zhí)行從雙層電子文件中復(fù)制相鄰的兩個字符及其后的步驟,并且對當前版面中的同一位置的兩個字符不重復(fù)進行復(fù)制。進一步地,所述雙層電子文件為可移植文檔格式(PortableDocumentFormat)的文件。為解決上述問題,根據(jù)本發(fā)明的另一方面,提供了一種去除從雙層電子文件中復(fù)制的文本中的空格的系統(tǒng)。本發(fā)明的去除從雙層電子文件中復(fù)制的文本中的空格的系統(tǒng)包括復(fù)制模塊,用于從雙層電子文件中復(fù)制相鄰的兩個字符;判斷模塊,用于判斷所述兩個字符是否為空格符;檢查模塊,用于在所述相鄰的兩個字符都不是空格符的情況下,檢查復(fù)制得到的所述兩個字符之間是否存在空格;拉伸模塊,用于若所述兩個字符之間存在空格,則對所述雙層電子文件文字層的所述兩個字符中的至少一個字符向另一字符的方向拉伸。進一步地,所述復(fù)制模塊還用于從所述雙層電子文件的當前頁中復(fù)制文本塊;并且所述系統(tǒng)還包括輸出模塊,用于輸出所述文本塊以及在所述文本塊中的非空格符的字符一側(cè)或兩側(cè)出現(xiàn)空格的情況下,在輸出的所述文本塊中標示出該空格。進一步地,所述復(fù)制模塊還用于根據(jù)所述雙層電子文件的內(nèi)核數(shù)據(jù)確定針對相鄰兩個字符的選擇區(qū)域;從所述確定的選擇區(qū)域中復(fù)制字符。進一步地,所述判斷模塊還用于在所述拉伸模塊完成拉伸操作后,判斷所述兩個字符之間是否存在空格;所述輸出模塊還用于在所述拉伸模塊完成拉伸操作后,若所述兩個字符之間仍存在空格則輸出這兩個字符并且在輸出的這兩個字符之間標示出該空格。進一步地,所述拉伸模塊還用于將所述雙層電子文件文字層的所述兩個字符中的第一側(cè)字符向第二側(cè)拉伸;其中,所述雙層電子文件的圖像層與文字層的對位基準側(cè)是字符第一側(cè)。根據(jù)本發(fā)明的技術(shù)方案,檢查復(fù)制出的字符中是否存在多余空格,若存在則對字符拉伸,使Acrobat認為拉伸后的字符與相鄰字符間的距離無需在復(fù)制字符之后插入空格,從而避免了多余空格的產(chǎn)生,使復(fù)制出的文本不包含多余空格,這樣不致于影響用戶對復(fù)制出的文本的使用。此處所說明的附圖用來提供對本發(fā)明的進一步理解,構(gòu)成本申請的一部分,本發(fā)明的示意性實施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當限定。在附圖中圖1是根據(jù)現(xiàn)有技術(shù)的從雙層電子文件中復(fù)制的文本中存在多余空格以及該文本的原始狀態(tài)的示意圖;圖2是根據(jù)本發(fā)明實施例的去除從雙層電子文件中復(fù)制的文本中的空格的方法的主要步驟的示意圖;圖3是根據(jù)本發(fā)明實施例的檢測到多余空格的文本的示意圖;圖4是根據(jù)本發(fā)明實施例的去除多余空格的操作之后的文本的示意圖;圖5是根據(jù)本發(fā)明實施例的去除多余空格之后復(fù)制得到的文本的示意圖;以及圖6是根據(jù)本發(fā)明實施例的去除從雙層電子文件中復(fù)制的文本中的空格的系統(tǒng)的主要模塊示意圖。具體實施例方式下面將參考附圖并結(jié)合實施例,來詳細說明本發(fā)明。圖2是根據(jù)本發(fā)明實施例的去除從雙層電子文件中復(fù)制的文本中的空格的方法的主要步驟的示意圖。如圖2所示,該方法主要包括如下的步驟S21至步驟S24。步驟S21從雙層電子文件中復(fù)制相鄰的兩個字符。一個字符可以是拼音文字的一個字母,也可以是一個漢字或其他語言的一個單字,也可以是其他字符,包括各種標點符號、技術(shù)符號等。在本步驟中,具體可以是先根據(jù)雙層電子文件的內(nèi)核數(shù)據(jù)例如PDF的TouchUp文本,確定針對相鄰兩個字符的選擇區(qū)域,再從確定的選擇區(qū)域中復(fù)制字符。步驟S22判斷復(fù)制的兩個字符是否為空格符。如果其中至少一個為空格符,則返回步驟S21,這時在執(zhí)行步驟S21時不重復(fù)地復(fù)制出另兩個字符,即對當前版面中的同一位置的兩個字符不重復(fù)進行復(fù)制;如果這兩個字符都不是空格符,則進入步驟S23。步驟S23檢查復(fù)制得到的兩個字符之間是否存在空格。在本步驟中,查看復(fù)制得到的字符,檢查其中是否包含有Acrobat添加的空格。該字符是在根據(jù)內(nèi)核數(shù)據(jù)建立對應(yīng)的選擇區(qū)域中復(fù)制得到。如果存在空格,則進入步驟S24;否則返回步驟S21,不重復(fù)地復(fù)制出另兩個字符。步驟S24對雙層電子文件文字層的所述兩個字符中的至少一個字符向另一字符的方向拉伸。文檔一般是從左至右書寫,因此拉伸的方法一般是增加字符的寬度。本步驟中的拉伸是在雙層電子文件的文字層中進行,拉伸的量可以是文字層中字體尺寸衡量單位的某個倍數(shù),也可以是字體寬度的百分比。在拉伸之后字符間距減小,這樣Acrobat就不會判定這兩個字符的間距過大,于是認為復(fù)制之后二者之間無需插入空格,從而避免了多余空格的產(chǎn)生。步驟S21之前可以先對文本塊進行檢查,大致了解該文本塊被復(fù)制出之后會增加多少空格。為此,可以先從雙層電子文件的當前頁中復(fù)制文本塊,在復(fù)制出的文本塊中的非空格符的字符一側(cè)或兩側(cè)出現(xiàn)空格的情況下,在輸出的該文本塊中標示出該空格。圖3是根據(jù)本發(fā)明實施例的檢測到多余空格的文本的示意圖。如圖3所示,在圖像層中,方框31中包含一塊文本,其中使用小方框標示出了多個字母,例如小方框32。在復(fù)制出之后,兩個小方框32之間會出現(xiàn)多余空格。步驟S21之后可以是先由用戶選定一塊文本或指定一頁文本,也可以是指定一個或多個雙層電子文件。以指定一塊文本為例,在步驟S24之后,可以繼續(xù)處理該塊文本的其他部分,即返回步驟S21,并且對于同一位置的兩個字符不再次同時復(fù)制。可以是兩兩地復(fù)制字符,即每次復(fù)制的字符是前次復(fù)制的第二個字符及其后的一個字符,例如,在處理一段文本“WelcometoChina”時,在一次執(zhí)行步驟S21時復(fù)制了“We”,則在再次執(zhí)行步驟S21時復(fù)制“el”,以后各次執(zhí)行步驟S21時依次復(fù)制“1(3”、“(0”、“0111”......等。此時如果當指定的文本處理完成,可以輸出去除多余空格的結(jié)果,如圖4所示,圖4是根據(jù)本發(fā)明實施例的去除多余空格的操作之后的文本的示意圖。從圖4可以看出,在圖像層中,方框41中的文本塊內(nèi)存在兩種小方框,一種是方框42(圖中示出了多個和方框42同樣作用的方框,位于單詞末尾附近),表示這里有一個正常的空格符;一種是方框43,方框43成對地出現(xiàn),表示兩個方框43之間被插入了一個多余空格。在輸出去除多余空格的結(jié)果后,如果方框42的數(shù)量較少,用戶可以接受,那么可以保存當前的處理結(jié)果;否則也可以繼續(xù)處理,即對拉伸后的字符再次進行拉伸操作。具體可以是返回步驟21重新執(zhí)行圖2所示流程,也可以是在第一次執(zhí)行該流程之后記錄拉伸過的字符然后再次拉伸這些字符。如果雙層電子文件的圖像層與文字層的對位基準側(cè)是字符左側(cè),則對于字符的拉伸操作,可以將該字符向右側(cè)拉伸;反之則向左側(cè)拉伸。當然也可以將字符同時向兩側(cè)拉伸,但這樣會影響圖像層與文字層的對位,如果這種影響能被接受,則可以考慮兩側(cè)拉伸。圖5是根據(jù)本發(fā)明實施例的去除多余空格之后復(fù)制得到的文本的示意圖。如圖5所示,方框51中包含的文本塊內(nèi)進行了多余空格的去除操作,復(fù)制出該文本之后,僅存在兩處多余空格,如橢圓52和橢圓53所示。對應(yīng)于圖4,去除多余空格之后,橢圓52和橢圓53所示的位置即為相鄰兩個方框43之間的位置??梢钥闯鋈匀淮嬖诘亩嘤嗫崭駜H會出現(xiàn)在標點附近,這樣的空格不會將單詞拆開,因此對用戶對復(fù)制出的文本的使用的影響較小,例如不會影響到用戶檢索某個單詞。圖6是根據(jù)本發(fā)明實施例的去除從雙層電子文件中復(fù)制的文本中的空格的系統(tǒng)的主要模塊示意圖。如圖6所示,去除從雙層電子文件中復(fù)制的文本中的空格的系統(tǒng)60包括復(fù)制模塊、判斷模塊、檢查模塊、拉伸模塊。復(fù)制模塊用于從雙層電子文件中復(fù)制相鄰的兩個字符;判斷模塊,用于判斷所述兩個字符是否為空格符;檢查模塊,用于在所述相鄰的兩個字符都不是空格符的情況下,檢查復(fù)制得到的所述兩個字符之間是否存在空格;拉伸模塊,用于若所述兩個字符之間存在空格,則對所述雙層電子文件文字層的所述兩個字符中的至少一個字符向另一字符的方向拉伸。復(fù)制模塊還可用于從所述雙層電子文件的當前頁中復(fù)制文本塊;這樣,去除從雙層電子文件中復(fù)制的文本中的空格的系統(tǒng)50還可以包括輸出模塊,用于輸出所述文本塊以及在所述文本塊中的非空格符的字符一側(cè)或兩側(cè)出現(xiàn)空格的情況下,在輸出的所述文本塊中標示出該空格。復(fù)制模塊還可用于根據(jù)雙層電子文件的內(nèi)核數(shù)據(jù)確定針對相鄰兩個字符的選擇區(qū)域;從所述確定的選擇區(qū)域中復(fù)制字符。判斷模塊還可以用于在拉伸模塊完成拉伸操作后,判斷所述兩個字符之間是否存在空格,這樣,所述輸出模塊還可用于在拉伸模塊完成拉伸操作后,若所述兩個字符之間仍存在空格則輸出這兩個字符并且在輸出的這兩個字符之間標示出該空格。拉伸模塊還可用于將雙層電子文件文字層的所述兩個字符中的第一側(cè)字符向第二側(cè)拉伸;其中,雙層電子文件的圖像層與文字層的對位基準側(cè)是字符第一側(cè)。根據(jù)本發(fā)明的技術(shù)方案,檢查復(fù)制出的字符中是否存在多余空格,若存在則對字符拉伸,使Acrobat認為拉伸后的字符與相鄰字符間的距離無需在復(fù)制字符之后插入空格,從而避免了多余空格的產(chǎn)生,使復(fù)制出的文本不包含多余空格,這樣不致于影響用戶對復(fù)制出的文本的使用。顯然,本領(lǐng)域的技術(shù)人員應(yīng)該明白,上述的本發(fā)明的各模塊或各步驟可以用通用的計算裝置來實現(xiàn),它們可以集中在單個的計算裝置上,或者分布在多個計算裝置所組成的網(wǎng)絡(luò)上,可選地,它們可以用計算裝置可執(zhí)行的程序代碼來實現(xiàn),從而,可以將它們存儲在存儲裝置中由計算裝置來執(zhí)行,或者將它們分別制作成各個集成電路模塊,或者將它們中的多個模塊或步驟制作成單個集成電路模塊來實現(xiàn)。這樣,本發(fā)明不限制于任何特定的硬件和軟件結(jié)合。以上所述僅為本發(fā)明的優(yōu)選實施例而已,并不用于限制本發(fā)明,對于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。權(quán)利要求一種去除從雙層電子文件中復(fù)制的文本中的空格的方法,其特征在于,包括從雙層電子文件中復(fù)制相鄰的兩個字符,然后判斷所述兩個字符是否為空格符;在所述相鄰的兩個字符都不是空格符的情況下,檢查復(fù)制得到的所述兩個字符之間是否存在空格,若存在空格,則對所述雙層電子文件文字層的所述兩個字符中的至少一個字符向另一字符的方向拉伸。2.根據(jù)權(quán)利要求1所述的方法,其特征在于,從雙層電子文件中復(fù)制相鄰的兩個字符之前還包括從所述雙層電子文件的當前頁中復(fù)制文本塊;在所述文本塊中的非空格符的字符一側(cè)或兩側(cè)出現(xiàn)空格的情況下,在輸出的所述文本塊中標示出該空格。3.根據(jù)權(quán)利要求1所述的方法,其特征在于,從雙層電子文件中復(fù)制相鄰的兩個字符包括根據(jù)所述雙層電子文件的內(nèi)核數(shù)據(jù)確定針對相鄰兩個字符的選擇區(qū)域;從所述確定的選擇區(qū)域中復(fù)制字符。4.根據(jù)權(quán)利要求1所述的方法,其特征在于,對所述兩個字符中的至少一個字符向另一字符的方向拉伸之后還包括判斷所述兩個字符之間是否存在空格,若存在則在輸出的這兩個字符之間標示出該空格。5.根據(jù)權(quán)利要求4所述的方法,其特征在于,在輸出的這兩個字符之間標示出該空格之后,所述方法還包括對拉伸后的字符再次進行已執(zhí)行的拉伸的操作。6.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述雙層電子文件的圖像層與文字層的對位基準側(cè)是字符第一側(cè);對所述雙層電子文件文字層的所述兩個字符中的至少一個字符向另一字符的方向拉伸包括將所述雙層電子文件文字層的所述兩個字符中的第一側(cè)字符向第二側(cè)拉伸。7.根據(jù)權(quán)利要求1所述的方法,其特征在于,在所述相鄰的兩個字符中的至少一個為空格符的情況下,重復(fù)執(zhí)行從雙層電子文件中復(fù)制相鄰的兩個字符及其后的步驟,并且對當前版面中的同一位置的兩個字符不再次同時復(fù)制。8.根據(jù)權(quán)利要求1至7中任一項所述的方法,其特征在于,所述雙層電子文件為可移植文檔格式的文件。9.一種去除從雙層電子文件中復(fù)制的文本中的空格的系統(tǒng),其特征在于,包括復(fù)制模塊,用于從雙層電子文件中復(fù)制相鄰的兩個字符;判斷模塊,用于判斷所述兩個字符是否為空格符;檢查模塊,用于在所述相鄰的兩個字符都不是空格符的情況下,檢查復(fù)制得到的所述兩個字符之間是否存在空格;拉伸模塊,用于若所述兩個字符之間存在空格,則對所述雙層電子文件文字層的所述兩個字符中的至少一個字符向另一字符的方向拉伸。10.根據(jù)權(quán)利要求9所述的系統(tǒng),其特征在于,所述復(fù)制模塊還用于從所述雙層電子文件的當前頁中復(fù)制文本塊;并且所述系統(tǒng)還包括輸出模塊,用于輸出所述文本塊以及在所述文本塊中的非空格符的字符一側(cè)或兩側(cè)出現(xiàn)空格的情況下,在輸出的所述文本塊中標示出該空格。11.根據(jù)權(quán)利要求9所述的系統(tǒng),其特征在于,所述復(fù)制模塊還用于根據(jù)所述雙層電子文件的內(nèi)核數(shù)據(jù)確定針對相鄰兩個字符的選擇區(qū)域;從所述確定的選擇區(qū)域中復(fù)制字符。12.根據(jù)權(quán)利要求9所述的系統(tǒng),其特征在于,所述判斷模塊還用于在所述拉伸模塊完成拉伸操作后,判斷所述兩個字符之間是否存在空格;所述輸出模塊還用于在所述拉伸模塊完成拉伸操作后,若所述兩個字符之間仍存在空格則輸出這兩個字符并且在輸出的這兩個字符之間標示出該空格。13.根據(jù)權(quán)利要求9至12中任一項所述的系統(tǒng),其特征在于,所述拉伸模塊還用于將所述雙層電子文件文字層的所述兩個字符中的第一側(cè)字符向第二側(cè)拉伸;其中,所述雙層電子文件的圖像層與文字層的對位基準側(cè)是字符第一側(cè)。全文摘要本發(fā)明公開了一種去除從雙層電子文件中復(fù)制的文本中的空格的方法與系統(tǒng),以解決現(xiàn)有技術(shù)中從雙層電子文件中復(fù)制的文本中存在多余空格的問題。該方法包括從雙層電子文件中復(fù)制相鄰的兩個字符,然后判斷所述兩個字符是否為空格符;在所述相鄰的兩個字符都不是空格符的情況下,檢查復(fù)制得到的所述兩個字符之間是否存在空格,若存在空格,則對所述雙層電子文件文字層的所述兩個字符中的至少一個字符向另一字符的方向拉伸。使用本發(fā)明的技術(shù)方案,能夠避免了多余空格的產(chǎn)生,使復(fù)制出的文本不包含多余空格,這樣不致于影響用戶對復(fù)制出的文本的使用。文檔編號G06F17/22GK101980185SQ201010531159公開日2011年2月23日申請日期2010年10月29日優(yōu)先權(quán)日2010年10月29日發(fā)明者蘭榮春,周長嶺,趙海濤申請人:方正國際軟件有限公司