校對雙層PDF中的隱藏文本


作者:馬健
郵箱:stronghorse_mj@hotmail.com
發布:2012.06.11

目錄
一、背景
二、能夠校對的PDF需要滿足的條件
三、校對工具的選擇
四、校對過程
五、延伸討論

 

事先聲明:本文所談校對方法僅適用於DjVuToy、FreePic2Pdf、Pdg2Pic所生成的雙層PDF,對其他軟件生成的雙層PDF無效,不喜勿進。

一、背景

隨着在DjVuToy、FreePic2Pdf、Pdg2Pic中均支持雙層PDF,一個 必然要問的問題是:如何對雙層PDF進行校對?原因無他,雙層PDF都是基於OCR技術的,而OCR百分百無錯是不可能的,至少目前是完全沒有可能的。

目前雙層PDF的校對方法大體上有兩種:

1、基於XML的校對

這種方法的核心思想是:把雙層PDF中的隱藏文本導出,然后對文本進行校對,再導入回去。由於隱藏文本除了文本字符串外,還有顯示位置、顯示比例等信息,因此只用純文本文件難以表述, 而XML文件表達得更全面一些,故多用XML。

這種方法其實在DjVuToy中也被我用來校對雙層DjVu,所以對其弊端早有體會:編輯文本固然容易,但想更改文字位置、字體大小卻很困難。但要想保持隱藏文本與底圖的一致性,在編輯文字后對文字顯示位置或顯示比例進行更改也是必不可少的。

DjVu格式由於其天然缺陷(詳見我寫的《DjVu、PDF中的隱藏文本》),再加上工具缺乏,采用導出、導入的方法那是迫不得已,PDF如果還來這一套, 未免太不與時俱進,恐怕會被行家所笑話。

2、基於PDF編輯工具的校對

與孤寒的DjVu相比,由於PDF文件的廣泛流傳、深入人心,各種PDF工具如今是層出不窮,其中自然有一些能夠直接對PDF中的文字進行編輯的工具。雙層PDF中的文本由於是隱藏文本,因此通常不能直接用這些工具進行編輯,需要先把隱藏文本顯示出來后才能編輯,編輯完成再隱藏回去。

與基於XML的校對方法相比,用PDF編輯工具直接校對雙層PDF的文本,不僅編輯過程比較直觀,而且調整文字顯示位置、顯示比例也比較容易,鼠標拖一下即可。因此在DjVuToy、FreePic2Pdf、Pdg2Pic中均針對這種校對方法提供輔助工具,輔助完成校對過程中所需的“顯示隱藏文本”、“隱藏校對過的文本”等功能,本文下面也僅針對這種方法進行闡述。

二、能夠校對的PDF需要滿足的條件

前面一再強調“僅針對DjVuToy、FreePic2Pdf、Pdg2Pic所生成的雙層PDF”,原因在於不是什么樣的雙層PDF都可以用PDF編輯工具進行校對的——在我看來,以下幾個關鍵技術點決定了校對的難易程度:

1、采用內嵌字體還是外掛字體?

PDF中的文字允許使用內嵌字體,也允許使用外掛字體,相對來說采用外掛字體的更易於校對:內嵌字體為減小文件長度,通常只嵌入所需用到的文字的字形,用不到的就不嵌入了。在這種情況下如果想增加一個原來沒有的字可就麻煩了。而外掛字體則不受此限制,只要外部字體文件中有字形的文字,都可以加入進來。

當然外掛字體的平台兼容性比外掛字體略差:找不到字體的時候自然就不能顯示。不過這個問題的影響和解決方法在我看來不是啥大問題,在簡體中文環境下更沒有問題。

所以一項技術的選擇有時候沒有對錯之分,只有側重點的不同:Acrobat側重於“平台兼容性”,所以選擇了內嵌字體;我的三個軟件考慮“校對”、“文件長度”、“實現難易程度”等,就選擇了外掛字體。

2、“字壓圖”還是“圖壓字”?

對於雙層PDF來說,隱藏文字在頂層,掃描圖像在底層的是“字壓圖”,否則就是“圖壓字”。在實際中兩種路線都有人采用:Acrobat生成雙層PDF采用的是字壓圖,deent75采用的是圖壓字。在我看來,采用字壓圖路線的雙層PDF更便於校對:如果采用字壓圖,圖像顯示出來后還能看到上層的文字,反之文字就會被圖像蓋住。

deent75采用圖壓字可能也有它自己的考慮,但真實原因它不說就誰也不知道,總之我那三個軟件在別的地方都在全力模仿deent75,唯獨在這個地方堅定不移地跟Acrobat走——字壓圖。

三、校對工具的選擇

同樣的原因,這世上也不是什么編輯軟件都適合做雙層PDF校對的,在我看來至少需滿足如下條件才行:

1、支持外掛字體。即采用外掛字體的PDF,在編輯完成后還是外掛字體。這條雖然簡單,但直接就把Acrobat排除了:采用外掛字體的PDF,在用Acrobat編輯存盤后,新加入的字就全變成內嵌的了。

2、支持亞洲語言,尤其是簡體中文。這一條基本上就把大多數國外的編輯軟件給排除了。

最終選來選去,發現還是Foxit PDF Editor和Foxit Phantom滿足要求。具體我測試了Foxit PDF Editor v1.2、v1.5、v2.2,及Foxit Phantom v2.0、v2.2.4、v5.0.4,感覺各有不同:

Foxit PDF Editor v1.2:對Adobe標准中文字體支持不佳,半角文字顯示寬度超寬。
Foxit PDF Editor v1.5:修正了半角問題,但編輯界面與v1.2相同,操作繁瑣。
Foxit PDF Editor v2.2:編輯界面較v1.5簡化,在寬屏下使用方便,普屏下足夠讓你咬牙切齒。
Foxit Phantom v2.0、v2.2.4:編輯界面非常簡潔,符合一般文字處理習慣。
Foxit Phantom v5.0.4:版本大躍進,功能大倒退。Foxit Phantom在v2.2.4后,一跳就跳到了v5.0,沒有中間的3、4版本,但5.x版本放棄了原先的文本編輯模式,改為采用將Foxit PDF Editor換了個名字集成進來的方式,所以文字編輯功能在方便性上相當於Foxit PDF Editor v2.x,比Foxit Phantom v2.x大有不如。

最終,我選擇Foxit Phantom v2.2.4作為雙層PDF編輯器,並寫在那三個軟件的界面提示中。

如果只想用文字編輯功能,不需要其他閑雜功能,Foxit Phantom v2.2.4很容易實現綠化:安裝完成后,直接將安裝文件夾中的全部內容復制出來,就是綠色版了。如果再刪除用不到的文件,整個運行所需的文件約17.1 MB,包括簡體中文界面所需文件。

四、校對過程

在解決了文件問題和工具問題后,下面就該具體說一下校對過程了。校對過程其實也很簡單,大體上分為三步:

1、顯示出雙層PDF中的隱藏文字

在DjVuToy、FreePic2Pdf、Pdg2Pic中,均有“校對”按鈕,點擊后進入“PDF校對工具”界面,第一個頁簽就是“顯示文字”——Foxit Phantom只能編輯可見文字,隱藏文字是不能編輯的,所以要先顯示出來才能走到以后的步驟。

在操作的時候,可以選擇是只顯示文字,還是圖像、文字一起顯示。這個需要根據自己的習慣進行選擇:如果只顯示文字而隱藏圖像,則校對的時候看起來更簡單一些,不容易眼花,但是在調整文字顯示位置、顯示比例的時候,會沒有參照物。文字、圖像同時顯示(圖像可以選擇透明度)看起來會累一點,但如果有什么字拿不准,鼠標把文字拖走即可看到底圖,看完了按Ctrl+Z就可以讓文字回到原位,用鼠標拖拽調整文字顯示位置、顯示比例時也有參照物。

2、用Foxit Phantom v2.2.4校對PDF

用Foxit Phantom v2.2.4打開PDF文件后,鼠標左鍵點擊其工具條上的“雙擊文本對象或右鍵點擊對象對其修改”按鈕,以后再用鼠標左鍵雙擊需要編輯的文字即可對其進行修改,單擊則可通過拖拽改變文字的顯示位置、顯示比例。總之感覺和用PowerPoint改PPT差不多,所以我說它方便。

3、校對完成后,把文字再隱藏起來

畢竟文字隱藏起來后,才是普通意義上的“雙層PDF”。DjVuToy、FreePic2Pdf、Pdg2Pic的“PDF校對工具”界面中的第二更頁簽,就是用來干這個的。不論第1步中采用了什么樣的顯示方式,經此一步后都回到隱藏文字、顯示圖像的雙層PDF,只不過文字是經過校對的。

如果對校對結果很有自信,對文件大小又比較在意,還可以再走一步:把雙層PDF中的掃描圖像全部刪掉,只留下文字層。這樣搞出來的文字版PDF不僅文件長度比較小,而且文字版式與原文相同,至少作為參考文獻引用的時候,頁碼、行數是不會錯的。

以前看Ken777制作“精確版面還原PDF”的時候,羡慕了很久,后來Acrobat中提供的ClearScan也很令我心動,這次總算有機會照貓畫虎了。

五、延伸討論

用過PdfToy的人可能會覺得DjVuToy、FreePic2Pdf、Pdg2Pic中“PDF校對工具”的界面看起來有點眼熟,其實這個工具從界面到代碼都COPY自PdfToy的“流過濾”功能,只不過把表達式寫死了,所以只能支持特定情況的PDF,對其他PDF無能為力。

對於不是用DjVuToy、FreePic2Pdf、Pdg2Pic生成的雙層PDF,其實只要滿足前述的采用外掛字體、字壓圖的情況,理論上說都可以用PdfToy的“流過濾”功能實現與“PDF校對工具”相同的功能,只不過所用的表達式可能要根據具體情況做一點修改。在《PdfToy應用案例( 八)》(案例十三)中,我將詳細說明“PDF校對工具”所用到的表達式及其原理,便於PdfToy的用戶舉一反三。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM