我第一次注意到這個問題時,它根本不是一個浮水印的故事。一位用戶將人工智慧聊天的配置片段貼到我們的一個 JSON 工具中,解析器拒絕了它,並錯誤地指向了不存在的字元。我在代碼點檢視器中打開字串,發現兩個大括號之間有一個零寬度空間,在我嘗試的每個編輯器中都看不見。該文件看起來很完美並且被損壞了。當 Anthropic 於 2026 年 8 月宣布 Claude'當輸出將帶有不可見標記時,同一類字元會從偶爾的貼上事故變成人們想要故意檢查的東西,所以我建立了一個 克勞德水印去除劑 它顯示文字中的每個隱藏字符,並刪除您告訴它的字符。
TL;DR: 工具 克勞德水印去除劑 掃描貼上的文字以查找不可見的unicode 字元- 零寬度空格、變化選擇器、不間斷空格、方向標記和其他非列印代碼點- 用代碼點名稱突出顯示每個字元的位置,並一鍵產生乾淨的副本。如果您要求,它還可以標準化智慧引號和印刷破折號。偵測和刪除都會在瀏覽器中執行用戶端:上傳的任何內容都不會上傳,並且工具一旦載入即可離線工作。
什麼是人工智慧文字浮水印?
人工智慧文字浮水印是嵌入生成文字中的訊號,可讓軟體將文字識別為機器稍後編寫的。 2026 年 8 月成為新聞的版本是字元層級的:看不見的 Unicode 代碼點編織在可見字母之間,沒有讀者可以看到的含義。 Anthropic' 的報導;推出完全此類的標記以及圖像的 C2PA 出處元數據,這是由內容出處和真實性聯盟維護的內容憑證的行業標準(()https://c2pa.org/specifications/specifications/2.2/index.html).
字元級標記之所以有效,是因為 Unicode 包含數百個代碼點,這些代碼點渲染為「無」。變體選擇器,在 Unicode 標準中定義,用於選擇其之前字元的字形變體 (https://www.unicode.org/faq/vs.html),應用於普通字母時顯示為零像素。零寬度空間和連接符的存在是為了控制換行和連字。這些被放入段落中的序列對於一個人來說是看不見的,對於掃描器來說是明確無誤的。
該設計包含兩件事,並且都關係到您應該如何對待它。首先,標記會隨著複製和貼上、資料庫、git 提交、已發布的頁面而傳播。其次,它們本質上是脆弱的:它們無法在重新打字中倖存下來,並且它們可以在從未設計過它們的系統中破壞事物。
為什麼隱形角色會破壞真實系統?
因為大多數軟體比較的是字節,而不是外觀。當一個字串攜帶隱藏代碼點時,兩個看起來相同的字串是不同的鍵、不同的檔案名稱和不同的值。這些是自我們發布探測器以來我在自己的日誌中看到的故障:
| 它降落的地方 | 出了什麼問題 |
|---|---|
| JSON 或 YAML 配置 | 解析器錯誤指向 "valid"默默不匹配的行或鍵 |
| 原始碼 | 編譯器拒絕標識符;程式碼審查差異沒有顯示明顯的變化 |
| 資料庫 | 唯一約束拒絕合併的看起來重複的行 |
| 電子表格 | VLOOKUP 並加入明顯存在的未命中行 |
| 字元限制 | 計數誇大:一條寫著 270 個字元的推文拒絕發布 |
| URL 和 slugs | 連結 404,因為 slug 帶有零寬度字元 |
| 搜尋 | Ctrl+F 找不到您直視的短語 |
字元計數情況是我們直接測量的情況:我們的 字計數器 計算字素簇,因此隱藏的代碼點不會誇大其可見字元圖形,但計算 UTF-16 單位的平台可以看到其中的每一個。這兩個數字之間的差距通常是文字攜帶某些內容的第一個提示。
克勞德水印去除器偵測到什麼?
該工具掃描人工智慧生成和文字處理器文字中出現的每一類非列印字符,而不僅僅是與任何單一供應商相關的字符:
| 類別 | 代碼點 | 為什麼它在那裡 |
|---|---|---|
| 零寬度字元 | U+200B、U+200C、U+200D、U+FEFF | 換行控制、連接行為、雜散位元組順序標記 |
| 變體選擇器 | U+FE00 到 U+FE0F,U+E0100 到 U+E01EF | 字形選擇;浮水印報告中引用最多的範圍 |
| 特殊空間 | U+00A0、U+2000 至 U+200A、U+202F、U+3000 | 讀作普通空間的不可破解和印刷空間 |
| 定向標記 | U+200E、U+200F、U+202A 至 U+202E | 雙向文字控制 |
| 軟連字符和單字連接符 | U+00AD,U+2060 | 除了行尾之外看不見 |
| 印刷標點符號 | 智慧引號、em 和 en 破折號、省略號 | 可見,但可以告訴您何時需要普通 ASCII |
每個發現都以其官方 Unicode 名稱和代碼點突出顯示,因此您可以在做出決定之前準確地看到位置。按類別刪除:刪除零寬度字元和變體選擇器,如果佈局需要,請保留不間斷空格,將印刷標點符號轉換為純 ASCII 或保留其樣式。清理後的文字和更改內容的計數從另一面出來。
如何檢查文字中是否有隱藏的水印字元?
- 將文字貼到 探測器. 一切都在您的瀏覽器中運行,因此草稿、客戶端工作和未發布的副本可以安全貼上。
- 閱讀亮點。在上下文中,每個不可見字元都顯示為帶有其代碼點名稱的標記令牌,因此法語句子中的合法不間斷空格可以與英語單字中間的零寬度空格區分開來。
- 選擇要剝離的內容。預設會刪除沒有可見功能的字符,並留下可見的排版。
- 複製已清理的輸出,並檢查前後計數(如果您想要剩餘內容的證明)。
如果您喜歡自己查看原始代碼點,請透過以下方式執行文字 統一碼轉換器,它將每個字元顯示為其轉義序列。下面的單行在節點中也做了同樣的事情,以便快速抽查:
const hidden = /[--︀-️]/g
const text = process.argv[2] ?? ''
console.log([...text.matchAll(hidden)].map(m =>
`U+${m[0].codePointAt(0).toString(16).toUpperCase().padStart(4, '0')} at index ${m.index}`
))
空數組意味著不存在任何常見的隱藏範圍。任何其他資訊都會告訴您代碼點及其位置。
去除人工智慧浮水印可以嗎?
對於您自己的內容,清理隱藏字元是普通的文字衛生,與從您即將共享的 URL 中刪除追蹤參數的操作相同。您提示文本,編輯文本,以自己的名義發布文本,並且您對此負責;破壞解析器和誇大計數的不可見代碼點是該工作流程的缺陷,而不是其功能。
誠實的對位法值得明確指出:存在出處標記,以便讀者、平台和研究人員可以大規模區分機器文本和人類文本,這是一個合法的目標。在禁止人工智慧寫作的地方從文本中剝離標記以通過檢測--一篇分級論文、一篇帶有披露政策的出版物、一個禁止生成評論的市場--無論有或沒有浮水印,都違反了政策,並且刪除字符不會改變內容文字是什麼。處理統計模式而不是隱藏字元的偵測器不會受到清潔的影響,在任何人將字元擦洗視為匿名之前,這一點值得知道。我們的立場很無聊:揭露需要揭露的內容,並讓您發布的文字不含您沒有選擇放置的字元。
清潔會改變文字的閱讀方式嗎?
不。刪除零寬度字元和變體選擇器會刪除未呈現為「無」的代碼點,因此可見文字與字元相同。您可以選擇的兩個變更在設計上是可見的:將智慧引號和印刷破折號轉換為 ASCII 等效項,並將奇異空間折疊為普通空格。兩者預設為關閉,並且每個都顯示替換次數,因此沒有任何靜默變化。這 案例轉換器 當您也標準化標題或識別碼時,清理後立即配對。
C2PA 和影像浮水印怎麼樣?
文字和圖像的標記不同。來自人工智慧產生器的圖像越來越多地攜帶 C2PA 內容憑證:描述文件製作方式的簽名元數據,嵌入到文件容器中而不是像素中。這是與相機 EXIF 相同結構意義上的元數據,並且適用相同的規則 - 在發布文件之前了解文件攜帶的內容。我們的 EXIF 去除劑 顯示照片中的每個元資料字段,並完全在瀏覽器中剝離您選擇的內容;這 元資料圖像指南 覆蓋那一面的深度與覆蓋文字的深度相同。
這與簡單的尋找和替換有何不同?
您無法在搜尋框中輸入隱形角色,這使得手動替換成為跨越數百個候選代碼點的猜謎遊戲。另一個溝渠是包含所有非 ASCII 的盲正規表示式條:它會破壞合法的重音名稱、貨幣符號和非拉丁文本以及噪音。偵測器'工作是中間路徑 - 命名在上下文中找到的每個隱藏字符,並讓您有意刪除類別。出於同樣的原因,避免"清潔器和報價;將您的文字上傳到伺服器進行處理;您正在清理的文字通常正是您尚未發布的文字。這個按結構來說是客戶端,就像其中的每個工具一樣 隱私優先的集合.
常見問題
關於隱形字元和清理人工智慧文字的常見問題,以我們回答它們的方式回答。



