跳轉到

檔案 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 裡的註解與附件各自可能帶著作者與時間,頁面只處理文件層級的描述欄位,遇到帶註解的檔案會在處理結果裡標出來。

離線可用

跟這一區其他工具一樣,程式存進裝置之後斷網也能用,那就是檔案沒有偷偷送出去最直接的證明。

要把這一頁帶著走,見離線閱讀