先說結論
開啟 PDF 塗黑,把文件放進去,打上要消失的詞,勾上你確實要的那些,按「拿掉」。字會從繪製這一頁的指令裡刪掉,同樣的詞也會從書籤、註解、表單域和文件屬性裡拿走,而做好的檔案在交給你之前,會當著你的面重新開啟、重新搜一遍。
下面所有內容都在說,為什麼最後那半句才是要緊的,以及怎麼看出你手頭在用的那個工具能不能說出同樣的話。
這裡說的是哪種失誤
在 PDF 閱讀器裡給一個姓名畫一個黑塊。你看見的是一個蓋著黑塊的姓名。而多數閱讀器存下來的,是一份含著那個姓名的文件,外加一個另存的方塊,它有位置、有大小、有顏色。
這樣畫出來的方塊是一個註解:一個有位置的物件,存在頁面旁邊,而不是頁面裡面。它下面的文字分毫未動。誰把那塊區域選中按複製、誰拿任何一個文字提取器過一遍、誰把檔案在一個註解畫法不同的程式裡開啟,姓名就回來了。螢幕上沒有任何東西能把它跟真正的塗黑區分開,而這恰恰是為什麼這種事在僱著律師的機構裡也一再發生。
它讓法院文書、情報評估、合同,以及 2025 年 12 月美國司法部大批檔案裡被塗黑的姓名公之於眾,而那些姓名在公佈後幾小時之內就被讀了出來。套路每次都一樣:方塊是註解,而註解從來就不是文字。
真正的塗黑做的是什麼
PDF 的一頁是一串指令:設這個字型,把筆挪到這裡,畫出這些字形。頁面上的詞只存在於一個地方,就是這些繪製指令的運算元:
BT /F1 12 Tf 72 700 Td (致張偉先生) Tj ET 把這個姓名塗黑,意思是把那些字元從那條指令裡刪掉,再把這一頁寫回去。此後沒有什麼可以恢復,不是因為檔案藏得好,而是因為那些字元不在檔案裡。這裡沒有哪個方塊底下還壓著東西,因為底下什麼都沒有。
有一樣東西必須放回去,不然結果一眼就看得出不對。文字是靠一支筆在頁面上往前推著畫出來的,所以刪掉五個字元,就會把這一行剩下的部分往左拽五個字元:表格的列不再對齊,合計滑到了別的表頭下面。一個把這件事做對的工具,會量出被刪部分本該讓筆前進多遠,再把那個距離作為一條字距指令放回去,而那條指令只挪筆,不畫任何東西。
那個黑塊,如果有的話,是之後畫在一處早就空了的位置上的。它是給讀文件的人的一點禮貌,是「這裡拿走過東西」的記號,而不是塗黑本身。一句話就能說清這個區別:真的塗黑裡,方塊是裝飾;假的塗黑裡,方塊就是塗黑。
詞藏身的四個地方,而它們都不是頁面
這一段專治那些前半截做對了的人。一份 PDF 同時在好幾個地方帶著文字,而閱讀器會把它們全都顯示、搜尋、複製出來。把姓名從頁面上拿掉、卻留在其中任何一處,就不算拿掉。
- 文件屬性。標題、作者,以及這份檔案是從哪個檔案匯出的。一份從頁面上刪掉了姓名、屬性裡卻還寫著
張某_和解稿3.docx的文件,沒有被塗黑。同樣的資訊通常還在一個 XMP 包裡存了第二份,那個也得走。 - 書籤。閱讀器側邊那份目錄,是一串帶著頁碼的標題,而標題是一行文字,頁面上的任何東西都管不著它。
- 表單域和註解。有人在表單裡填的內容會存兩遍:一遍是那個域的值,一遍是閱讀器畫出來的外觀。兩遍都得走。一張便籤帶著它的正文,也帶著寫它的人的名字。
- 替換文字。PDF 可以宣告某一串字形其實「拼的是」另一樣東西,好讓連字或者行末斷開的詞,按它代表的那個詞被複制走。這意味著一份文件可以顯示一樣、在你按 Ctrl+C 時遞給你另一樣,而一次只拿掉了被畫出來那部分的塗黑,會把整句話原封不動地留給任何一個選中這一段的人。
附件是第五處。一份 PDF 可以在自己內部裝下整個的別的檔案,而你對頁面做什麼都碰不到它們。
三十秒檢查一個檔案
任何你要發出去的東西都這麼過一遍,不管它是哪個工具做的。這是那個能把已知的每一次失誤都逮住的檢查。
- 開啟做好的檔案,按 Ctrl+F(Mac 上是 Cmd+F)。搜你拿掉的那個詞。真的塗黑什麼都搜不到。要是閱讀器跳到了一個黑塊上,那個詞還在裡面,方塊只是壓在它上面。
- 把塗黑的那塊區域選中複製。在方塊上拖過去,按 Ctrl+C,貼到任何一個文字框裡。只要有東西貼出來,你就是從另一頭逮住了同一個失誤。
- 把整份文件選中,也複製一遍。Ctrl+A 然後 Ctrl+C,貼到任何一個文字編輯器裡,讀一讀出來的東西。這一條在三條裡遠遠最有用,因為它把文件按一個文字提取器看到的樣子攤給你,其中還包括你壓根不知道存在的文字,而這在掃描檔上很常見。
- 看看屬性,多數閱讀器裡是「檔案 → 屬性」,再看看書籤那一欄。這兩處都是一次在頁面上做得完美的塗黑之後,姓名照樣活下來的地方。
PDF 塗黑會替你跑其中第一條和第三條,並且把數量給你看。因為一個工具聲稱自己拿掉了什麼算不上證據,而在做好的檔案裡搜一遍算。
掃描出來的文件是另一回事
掃描檔是一頁紙的照片。上面的詞是畫素,不是文字,你在文字層上怎麼折騰都碰不到它們,因為要麼根本沒有文字層,要麼有的那一層是在描述這張圖,而不是這張圖本身。
如今多數掃描器和 PDF 工具會在圖上面加一層看不見的文字,由光學字元識別寫出來,好讓這一頁可以搜尋。那一層是真文字,拿得掉。也值得拿掉:搜尋、複製,以及每一個自動讀文件的系統,找到的正是它。圖一點不變,對著頁面看的人,那些詞照樣清清楚楚。
所以對一份掃描檔,誠實的順序是這樣:先把詞從文字層裡拿掉,再單獨處理那張圖,也就是去覆蓋畫素。做這件事的是圖片塗黑,而它旁邊那篇指南講了為什麼對文字來說,模糊或者馬賽克都不夠。
為什麼不乾脆列印出來再掃一遍
因為這麼做確實管用,代價是別的一切。把塗黑過的一頁列印出來再掃回去,確實得到一份沒有文字層可漏的文件,同時也得到一份誰也搜不了、任何螢幕閱讀器都讀不了、大小翻五到五十倍、清晰度全看辦公室掃描器心情的文件。這一招還建立在一個前提上:這一頁是照著它看上去的樣子列印的。註解可以被標成只在螢幕上顯示、不隨紙列印,而如果你那個黑塊正好是這一種,印表機吐出來的那張紙上就印著姓名。
「拼合成影像」也是同一個道理,有些工具把它當成塗黑來提供。它把每一頁變成這一頁自己的照片。如果那些詞是被蓋住而不是被刪掉的,那麼現在這層蓋子確實永久了,但文件的其他一切也跟著一起沒了,而你發出去的是一份誰也沒法用的檔案。
為什麼這是最不值得上傳的一件事
一個塗黑服務必須拿到還沒塗黑的那份檔案。整筆交易就是這樣:私密的那一版先完完整整地到了那邊,而留在別人硬碟上的也正是那一版。隱私政策上怎麼寫都好,這個先後順序沒得辯:你小心對待的那份文件,正是你親手交出去的那份。
再想想人們都拿什麼去塗黑,事情比聽起來更糟:證人證言、診斷書、要交給房東的銀行流水、帶著一個客戶名字卻要發給另一個客戶的合同、寫著家庭住址的申請材料。那些才是這裡說的文件,而這恰恰是為什麼處理它們的工具,另一頭不該有伺服器。
本站這個塗黑工具裡的一切都發生在你自己的瀏覽器裡:檔案在你的機器上讀取、修改、寫出、核對,而你搜的那些詞也從不離開這個分頁。斷網之後它照樣能用,而這正是「什麼都沒往外送」的最簡單證明。一次上傳實際上意味著什麼,看上傳檔案安全嗎。