檔案 metadata 清除器¶
什麼時候用得上¶
Metadata 是什麼那篇提到,照片裡帶著拍攝時間、相機型號與 GPS 座標。上傳照片前先去 EXIF,是任何人現在就能做的低成本防護。
問題在於怎麼去。線上的清除工具幾乎都要先把檔案傳上去,而會需要清 metadata 的人,通常最不該把原始檔交出去。頁面在你的瀏覽器裡處理,檔案不離開裝置,清完的是新的一份,原始檔留著不動。
三種常見的處境:
- 剛搬到新住處,想傳一張照片給朋友報平安:手機拍照預設會把 GPS 座標寫進檔案裡。朋友看到的是一張照片,有心找的人看到的是一組座標。傳出去之前清一次,畫面完全不受影響。
- 在社運現場或事故現場拍了畫面要投稿給媒體:照片裡的拍攝時間與座標合起來,指得出是誰在什麼時候站在哪裡。清掉之後編輯台收到的還是同一張圖。
- 要寄出陳情書、檢舉信或履歷的 PDF:作者欄位常留著你電腦裡的帳號名稱,製作軟體那一欄會寫出作業系統與版本。內文改過名字,欄位裡的舊資料還在。
拿掉 metadata 只處理檔案裡看不到的欄位。畫面中的門牌、路標、制服、窗外景色都在影像本身,清完照樣看得見,分享之前要自己看過一遍。
支援哪些檔案¶
| 格式 | 拿掉的東西 | 影像資料 |
|---|---|---|
.jpg |
EXIF、XMP、IPTC 與 Photoshop 欄位、註解 | 一個位元都沒動 |
.png |
EXIF、文字欄位、修改時間 | 一個位元都沒動 |
.webp |
EXIF、XMP | 一個位元都沒動 |
.gif |
註解、應用程式擴充(動畫的循環設定留著) | 一個位元都沒動 |
.mp4 .mov |
使用者資料區、編碼器名稱、軌道處理器名稱 | 一個位元都沒動 |
.pdf |
標題、作者、製作軟體、時間、XMP | 整份重寫,見下方說明 |
前面五種格式把描述欄位整段拿掉,壓縮過的影像或影音資料不動。PDF 做不到同樣的保證,理由見下方「PDF 沒辦法保證無損」。
其他格式目前不支援,文末列出清單與替代做法。遇到認不出來的檔案,畫面上會列出錯誤,不會靜靜地交還一份沒有處理過的東西。
拿掉什麼,留下什麼¶
照片檔案裡,影像本身跟描述用的欄位分開存放。描述欄位整段拿掉,影像資料不受影響。
| 拿掉 | 裡面是什麼 |
|---|---|
| EXIF | 拍攝時間、相機型號、GPS 座標,還有一張沒被裁切過的縮圖 |
| XMP | Adobe 系列軟體寫的描述,常含地點與作者 |
| IPTC 與 Photoshop 欄位 | 說明、作者、關鍵字 |
| 註解欄位 | 檔案裡夾帶的任意文字 |
| 修改時間 | 上次存檔的時間 |
| 留著 | 為什麼 |
|---|---|
| 色彩描述檔(ICC Profile) | 拿掉的話顏色會偏,內容多半是 sRGB 這類標準設定,識別力低 |
| 色彩轉換標記 | 印刷用的 CMYK 檔案少了它,顏色會反過來 |
| 基本相容資訊 | 少了它有些看圖程式會顯示警告 |
| 影像本身 | 拿掉就解不開或變樣 |
EXIF 裡沒被裁切過的縮圖要單獨提。你把照片裁掉一半再傳出去,縮圖可能還是原本的完整畫面。
畫面上會逐項列出這次拿掉與留下的東西,每一項標著它在檔案格式裡的代號與佔用大小。
清完的圖跟原圖完全一樣¶
頁面不重新編碼。影像與影音資料從檔案裡的固定位置開始照抄,解出來跟原檔完全相同。
重新編碼的工具做不到無損。每一次重新壓縮都會損失畫質,而且輸出用的是那套函式庫的預設壓縮參數,跟相機原本寫進去的不一樣,比對量化表就看得出來,等於換上另一種可辨識的痕跡。
無損也表示清完之後檔案通常只小一點點。一張 630 KB 的照片清掉完整的 EXIF 之後是 629 KB,少掉的 140 個位元組就是原本記著相機型號與座標的地方。
清完之後會實際打開一次¶
清好的檔案會在瀏覽器裡實際載入一次再交給你。影片會等到時間長度讀得出來為止,那是改壞影片最典型的症狀。程式要是把檔案改壞了,載入這一步會攔下來並且列出原因,不會讓你拿著一份打不開的照片離開。
影片是一樣的道理¶
手機拍的影片跟照片一樣會記錄拍攝地點、裝置型號與時間,而且更難察覺,因為多數人不會去看影片的屬性。
MP4 與 MOV 是一層包一層的結構,描述欄位住在其中一層,整段拿掉不需要碰壓縮過的影音資料,跟照片是同一種做法。
三個地方會被清掉:
- 使用者資料區(user data atom):標題、作者、拍攝地點座標、裝置型號
- 編碼器名稱與版本:指得出你用什麼軟體或哪一款手機處理過
- 軌道的處理器名稱:不同平台寫法不同,等於一個平台指紋
有一種痕跡清不掉¶
編碼器會把自己的版本寫進壓縮資料本身。該字串屬於影音資料本身,位置跟畫面內容混在一起,跟描述欄位不同。
要清掉只能重新編碼,而重新編碼會損失畫質,也只是把舊編碼器的痕跡換成新的。頁面不做這件事,會把掃到的字串列在處理結果裡。
PDF 是另一種處理方式¶
照片與影片可以直接把某一段剪掉,PDF 不行。PDF 每個物件在檔案裡的位置都記在交叉索引表(cross-reference table)上,拿掉一段之後後面全部位移,整張表要重算。PDF 1.5 之後常見的做法還會把好幾個物件壓進同一段壓縮資料,從外面連內容都讀不到。
解析與重寫交給 pdf-lib(MIT 授權,授權全文),原封不動放在 utils/vendor/ 底下。要拿掉哪些欄位則在頁面這邊指定。
清掉的是:
- 文件標題、作者、主旨、關鍵字
- 製作這份文件的軟體,該欄常含作業系統與版本。用瀏覽器列印成 PDF 的話,裡面會是完整的瀏覽器識別字串
- 建立與修改時間
- XMP 描述區,地點、作者與編輯歷史都可能記在裡面
拿掉引用不等於拿掉內容¶
把文件目錄裡指向 XMP 的引用刪掉之後重新存檔,該段內容仍然完整留在檔案裡,只是沒有東西指向它。用文字搜尋工具打開還是找得到作者跟地點。要真的清掉必須把物件本身從文件裡移除,頁面就是這樣處理的。
PDF 沒辦法保證無損¶
PDF 整份是重寫的,做不到照片與影片那種一個位元都沒動的保證。
實測上頁面內容不會重新排版,渲染出來的畫面跟原檔逐像素相同。但如果你的 PDF 有表單、數位簽章或特殊的互動元件,重寫之後不一定完全保留。重要的檔案先留一份原始檔。
不支援的格式¶
HEIC/HEIF:iPhone 預設拍出來就是這個格式,容器結構複雜得多,頁面還做不到。在 iPhone 上可以到「設定 → 相機 → 格式」選「最相容」,之後拍的就是 JPEG。已經拍好的可以用 AirDrop 或郵件傳給自己,過程多半會轉成 JPEG。
TIFF、RAW、MKV、WebM、AVI 與 Office 文件目前也不支援。
不做的事¶
不做臉部模糊。臉部模糊需要人臉偵測模型,跟清除 metadata 是完全不同的一件事,也不該用同一個工具的名義混在一起。
PDF 裡的註解與附件各自可能帶著作者與時間,頁面只處理文件層級的描述欄位,遇到帶註解的檔案會在處理結果裡標出來。
離線可用¶
跟這一區其他工具一樣,程式存進裝置之後斷網也能用,那就是檔案沒有偷偷送出去最直接的證明。
要把這一頁帶著走,見離線閱讀。