ByteScope

Similar Photo Finder

選一個資料夾,它把連拍、縮小過的複本、重存過的照片分成一組組,建議每組留哪張,其他的先搬到旁邊——全在你的瀏覽器裡,照片不上傳。

照片都在這個分頁的背景工作裡解碼,不會送到任何地方。唯一會下載的是 24 MB 的比對模型,下載一次就留在瀏覽器裡。

照片

選一個資料夾(桌面版 Chrome、Edge 或 Opera),或把照片拖進來。子資料夾也會一起掃,一次最多 10,000 張。

把照片或資料夾拖到這裡
資料夾
—
照片
0

多像才算「相似」?

取消勾選就只用感知雜湊比對:快很多、不用下載,但裁切過的圖和連拍就認不出來。

隨便兩張照片很好分,但同一面白牆拍兩張就可能被判成相似。移動或刪除之前,每一組都先看過。

誠實的限制

  • 「相似」是模型的判斷。它可能把不一樣的照片放在同一組,例如同一面白牆拍的兩張。確認之前每一組都要看過。
  • 預設是把照片移到 _similar,不是刪除。在這裡刪除就是永久刪除:不進資源回收桶,也不進垃圾桶。
  • 選資料夾、移動和刪除都需要桌面版的 Chromium 系瀏覽器。其他瀏覽器只能勾選照片和匯出清單。
  • 清晰度分數只是參考。它看不出閉眼或表情。
  • HEIC 照片會一起比對,但在這裡讀不到拍攝時間。手機上只能用拖放的方式加照片。
  • 照片絕對不會上傳。

要找的是一模一樣的檔案?用 Duplicate File Finder想依日期整理照片?用 Photo Organizer

瀏覽器支援度

要原地重新命名和刪除檔案,需要 File System Access API,目前只有 Chromium 系列瀏覽器支援。不管支不支援,下面的操作都在你自己的電腦上完成——絕不會上傳任何東西。

功能ChromeEdgeFirefoxSafari
從硬碟開啟資料夾window.showDirectoryPicker——Chrome/Edge 86 以上,僅限桌面版✓支援✓支援✗不支援✗不支援
原地重新命名檔案FileSystemFileHandle.move——Chrome/Edge 111 以上✓支援✓支援✗不支援✗不支援
原地刪除檔案FileSystemDirectoryHandle.removeEntry✓支援✓支援✗不支援✗不支援
記住資料夾供下次使用控制代碼會存在這台裝置的 IndexedDB 裡;權限每次還是要重新授權✓支援✓支援✗不支援✗不支援

在這個瀏覽器偵測到

  • window.showDirectoryPicker …
  • FileSystemFileHandle.move …
  • indexedDB …

在 Firefox、Safari,或任何手機、平板上,這個頁面能說明怎麼做,但沒辦法實際執行。請用桌面版 Chrome 或 Edge 開啟。

關於這個工具

手機倒出來三千張照片,有一大半其實是同一個瞬間:按著快門不放的連拍、裁一下又存一次的那張、LINE 傳過被壓縮的版本、截圖的截圖。重複檔案掃描幫不上忙,因為這些檔案沒有一個是 byte 對 byte 一樣的。這一頁是在瀏覽器裡跑的相似照片清理工具:選一個資料夾,它把看起來很像的照片分成一組組,每組建議一張值得留的,其他搬進 _similar/ 資料夾——你堅持的話,也可以直接刪。什麼都不會上傳:照片在分頁裡的 worker 解碼,拿來比對的模型只下載一次,之後留在瀏覽器裡。

「相似」有兩種意思

每張照片同時過兩關。第一關是 64 位元的感知雜湊,它只擅長一件事:照片被縮小、被重新壓縮之後,還認得出是同一張,所以原檔和通訊軟體縮小過的那份會進同一組。但它撐不過裁切。第二關是 Meta 的 DINOv2-small 模型(Apache-2.0)算出來的影像特徵向量,要下載一次 24 MB,之後就快取起來。裁過的、連拍的每一張、幾乎同一個位置拍的同一個場景,都是靠這一關抓出來。兩關的門檻都是滑桿可以調;向量比對只在你選的時間窗內(預設 5 分鐘)拍的照片之間進行,所以去年的海邊不會跟今年的海邊配成一對,沒有拍攝時間的照片則不受時間窗限制照樣比。把「也找相似的連拍」取消勾選,就只跑雜湊,快很多,也不用下載。模型下載失敗的話,頁面會自己退回只跑雜湊,並且告訴你原因。

留哪一張

每一組列出縮圖、拍攝時間、畫素尺寸、檔案大小和清晰度分數,並且標出一張建議保留:畫素最多的優先,再比清晰度,再比檔案大小,理由就寫在縮圖下面。清晰度算的是 Laplacian 濾鏡的變異數,也就是邊緣對比有多強,所以它分得出對到焦和手震的差別,但完全不懂誰閉了眼、誰表情不好。每張照片都能自己切換保留或移走;唯一的規則是每組至少留一張,會把整組清空的選法會被拒絕,而不是默默幫你少刪幾張。一般筆電上千張照片第一次要跑個幾分鐘;同一個資料夾再開一次,會直接用存好的結果,快很多。

預設是搬走,刪除要你說了算

預設的動作不是刪除。被你移走的照片會搬進所選資料夾最上層的 _similar/,子資料夾結構照舊,下一次掃描會跳過那裡,所以同一組不會再被配成一對。改選刪除的話,File System Access API 會把檔案直接移除:不進資源回收筒,這個工具也沒有復原。兩種動作在動手前都會列出完整清單等你確認。幾件要老實說的事:「相似」是模型的看法,同一面白牆拍的兩張可能被分在一組,所以確認前請把每一組都看過。HEIC 照片比得了,但這裡讀不到它的拍攝時間。還有,選資料夾、搬移、刪除都需要桌面版 Chromium 系瀏覽器;其他瀏覽器和手機上,你可以把照片拖進來、看分組、標記要移走的,再把清單匯出成 CSV,但檔案本身不會被動到。

常見問題

我的照片會被上傳嗎?

不會。每張照片都在你瀏覽器分頁裡的 worker 解碼,雜湊、清晰度分數、特徵向量也都在那裡算;比對和分組同樣在本機。唯一的網路傳輸是那個 24 MB 的模型,從固定網址抓一次,存進瀏覽器快取,沒有任何一個請求帶著你的照片。這一頁是背後沒有伺服器的靜態檔案。

這跟重複檔案掃描有什麼不一樣?

重複檔案掃描只回報 byte 完全一樣的檔案,其他一概不管,所以照著機械化處理很安全。這一頁管的是那個工具刻意不管的全部:同一張照片的兩種尺寸、原檔和重新壓縮過的複本、裁過的版本、連拍的十一張。因為「相似」是判斷不是事實,這裡的預設更保守:照片是搬走而不是刪掉,而且會請你先把每一組看過。只想找完全相同的檔案,請直接用重複檔案掃描。

為什麼兩張不一樣的照片被分在同一組?

因為在模型眼裡它們長得像。特徵向量描述的是照片裡有什麼,同一面素色牆、同一片天空、同一塊磁磚地板拍的兩張,有時會比真正連拍的兩張還接近。隨手拍的旅遊照很容易分得開,幾乎空無一物的畫面就不一定了。覺得某個資料夾被分得太寬鬆,可以調門檻滑桿,但真正的保險是檢視那一步:不管搬移還是刪除,確認前把每一組都看過。

它挑得出連拍裡最好的一張嗎?

它挑得出最清楚、最大的那張,而且會說理由。建議保留的順序是先比畫素尺寸,再比以 Laplacian 濾鏡變異數算出的清晰度分數,再比檔案大小。這個分數分得出對焦清楚和糊掉的差別,但它看的只有邊緣對比:誰眨了眼、有沒有笑、是不是看向別處,它一點都不知道。把建議當起點就好,你的眼睛不同意就改掉。

被移走的照片去了哪裡?能復原嗎?

預設會搬進所選資料夾最上層的 _similar/,子資料夾結構保留,所以要復原就是搬回去。如果你切成刪除,File System Access API 會把檔案直接移除:不進資源回收筒也不進垃圾桶,這個工具和作業系統都沒有復原可按。確認畫面會把每個檔案列出來,再提醒你一次。兩種動作都不會把一組清空:每組一定至少留一張在原位。

掃一次要多久?那 24 MB 是在下載什麼?

下載的是 Meta 的 DINOv2-small 影像模型(Apache-2.0),用來比對雜湊認不出來的照片,像是裁過的和連拍的每一張。只抓一次,核對過大小和摘要才存進瀏覽器快取。開著它的話,一般筆電上千張照片第一次要跑個幾分鐘;結果會存起來,同一個資料夾再開就快很多。取消「也找相似的連拍」就只跑雜湊,不用下載,更快。超過 10,000 張的資料夾不會掃,請改選子資料夾。

哪些瀏覽器能搬移和刪除?HEIC 呢?

選資料夾、搬進 _similar/、刪除,全都靠 File System Access API,只有 Chrome、Edge、Brave 這類桌面版 Chromium 系瀏覽器才有。Firefox、Safari 和所有手機瀏覽器上,你還是可以把照片或資料夾拖進來、看分組、標記要移走的、把清單匯出成 CSV,但頁面碰不到檔案。iPhone 的 HEIC 照片會和其他照片一樣解碼、比對,只是這裡讀不到它的拍攝時間,所以比對時不套時間窗。