AIテキスト透かし:隠し文字マークとトークン選択マーク
AIテキスト透かしには二形式があり、削除できる文字でできているのは一方だけです。
| 透かしの種類 | 存在する場所 | このツールで見えるか | このツールで削除できるか |
|---|---|---|---|
| 隠し文字マーク | テキストのバイト内。不可視または異常なコードポイントとして | はい | はい |
| トークン選択マーク | 語の選択そのものの中 | いいえ | いいえ |
隠し文字マークは、テキストエディターが保存し、画面が描画しないコードポイントです。
トークン選択マークは、モデルが各ステップで選んだ語によって運ばれるため、見つける文字も剥がす文字もありません。今日テキスト出力に印を付けるAIツールはすべてこの種類を使います。
Unicode文字を不可視にするものは何か?
画面上で幅を取らないとき、その文字は不可視です。Unicodeはその振る舞いをDefault_Ignorable_Code_Pointプロパティと、書式を意味する一般カテゴリCfで記録します。
Default_Ignorable_Code_Pointは派生プロパティで、規格の各バージョンのDerivedCoreProperties.txtにプレーンテキスト一覧として公開されます。このクリーナーはUnicode 17.0(2025年9月9日リリース)に固定しており、4,803文字が追加され符号化総数は159,801になりました。
Unicode 17.0のプロパティデータを取得し、自分で数えました。Default_Ignorable_Code_Pointを持つコードポイントは4,174ありますが、割り当て済み文字は405だけです。残りの3,769はまだ何も使わない予約スロットです。405のうち256は異体字セレクタ、97はTagsブロックにあり、日常の文章に現れるのは52です。
同じバージョンでカテゴリCfは170文字です。だから「隠し文字104個」のような丸めた宣伝数字だけでは何も分かりません。隣にUnicodeバージョンがなければ、数字を照合できません。
トークン選択透かしが文字クリーニング後も残る理由は?
トークン選択(統計的透かしとも呼ばれる)はモデルが選んだ語に保存されるため、不可視文字を削除しても統計的マークは消えません。
AIツールが使うアルゴリズムは独自のため、インターネット上のどのテキスト透かしクリーナーもトークン/統計選択透かしを除去できません。
ChatGPTはテキストに透かしを入れますか?
OpenAIはいいえと言います。2025年4月20日、RumidocsはGPT o3とo4 miniの返信にU+202F(NARROW NO-BREAK SPACE)が含まれていたと報告しました。OpenAIは二日後に回答し、それらの文字は「大規模強化学習の癖」であり透かしではないと述べました。Rumidocsは2025年4月23日に記事を更新し、特殊文字の出現が止まったと述べました。
OpenAIは2024年にテキスト透かし手法を構築しましたが、出荷しませんでした。現在の出所ヘルプ記事は、今日信号を運ぶものを列挙します。画像はC2PA Content CredentialsとSynthID、音声はSynthID、テキストはどちらもありません。同じページは「テキストを含むすべてのモダリティへ出所信号を広げるのが目標」と述べており、これは計画であって製品ではありません。
正直な答えは短いです。ChatGPTはテキストに透かしを付けず、2025年に見つかった文字は修正されたバグでした。
ChatGPTとClaudeの出力で見つかる不可視文字の種類
このクリーナーが見つける文字は五つのグループに分かれます。ゼロ幅文字、異常なスペース、制御文字、見た目の似た句読点、タグ/私用文字です。
| グループ | 例 | 何をするか | 標準プリセット |
|---|---|---|---|
| ゼロ幅文字 | U+200B, U+200C, U+200D, U+2060, U+FEFF | 幅を取らず、ファイルには残る | U+200B、U+2060、U+FEFFを削除し、二つの接合子は保持 |
| 異常なスペース | U+00A0, U+2009, U+202F, U+3000 | スペースに見えるが、並べ替えや検索では別文字 | 通常のスペースに変換 |
| 制御文字 | C0およびC1範囲、双方向制御 | 描画を誘導するかパーサーを壊し、印刷されない | タブと改行以外をすべて削除 |
| 見た目の似た句読点 | カーリー引用符、en/emダッシュ、U+00AD | 印刷されるが、入力した文字ではない | そのまま残す |
| タグと私用 | U+E0000からU+E007F、私用領域 | 人が見ない可読テキストを運ぶ | 削除 |
このページのすべての測定で使った実行例です。文「The meeting starts at 9:30 am on 12 May.」はプレーンテキストエディターにそのまま打つと40文字・40バイトです。ワープロを往復すると42文字・49バイトになりました。先頭にバイト順マーク、「am」の後にゼロ幅スペース、二つの通常スペースが静かにU+202FとU+00A0に入れ替わっていました。余分な9バイト。見た目は何も変わりませんでした。
The meeting starts at 9:30 am on 12 May.ゼロ幅文字:U+200B、U+200C、U+200D、U+2060、U+FEFF
ゼロ幅文字は画面上でスペースを取りませんがファイルには存在するため、貼り付けたテキストが誰にも見えない印を運べます。
| コードポイント | 公式Unicode名 | 実際の役割 |
|---|---|---|
| U+200B | ZERO WIDTH SPACE | 改行の機会を示す。主にウェブエディターが挿入 |
| U+200C | ZERO WIDTH NON-JOINER | ペルシャ語・アラビア語の語で文字を離したままにする |
| U+200D | ZERO WIDTH JOINER | 絵文字を一枚の絵に接合し、インド系文字で合字を形成する |
| U+2060 | WORD JOINER | その位置での改行を止める |
| U+FEFF | ZERO WIDTH NO-BREAK SPACE | バイト順マーク。通常はテキストエディターが残し、AIではない |
五つのうち二つはゴミではなく働く文字です。U+200CとU+200Dは実言語で意味を持つため、標準プリセットはそれらをそのまま残します。
異常なスペース:U+00A0、U+2009、U+202F、U+3000
異常なスペースは普通のスペースに見えて別のコードポイントを持つため、検索・並べ替え・コードを壊します。
Unicode 17.0はZsカテゴリ(スペース区切り)に17文字を定義し、キーボードのスペースは一つだけです。UTF-8のバイト幅がコストになるため、文字データベースから17すべてとそのバイト幅を一覧しました。
| コードポイント | 公式Unicode名 | UTF-8バイト |
|---|---|---|
| U+0020 | SPACE | 1 |
| U+00A0 | NO-BREAK SPACE | 2 |
| U+1680 | OGHAM SPACE MARK | 3 |
| U+2000 to U+200A | EN QUADからHAIR SPACEまで、11文字 | 各3 |
| U+202F | NARROW NO-BREAK SPACE | 3 |
| U+205F | MEDIUM MATHEMATICAL SPACE | 3 |
| U+3000 | IDEOGRAPHIC SPACE | 3 |
U+202F一つはスペースが1バイトのところ3バイトかかり、「9:30 am」の隙間がU+202Fだと「9:30 am」の検索は一致しません。この不一致が、標準プリセットでもスペースを正規化する理由です。
9:30 am
9:30 am上のツール入力欄にサンプルテキストをコピー&ペーストして結果を確認できます。
エディターが挿入するダッシュ、スマート引用符、ソフトハイフン
カーリー引用符、長いダッシュ、ソフトハイフンU+00ADは、多くの場合言語モデルではなくワープロのオートコレクト設定から来ます。
Unicode 17.0はDashプロパティを31文字に与え、キーボードの素のU+002DからU+2014 EM DASH、U+2E3A TWO-EM DASHまであります。キー入力は一つだけです。残りはソフトが意図を判断したときに入ります。U+00ADは例外で、そこで折り返すときだけハイフンとして印字され、他では見えません。
ダッシュは、こうしたページに多くの人を連れてくる疑問であり、短い答えは何も証明しないということです。詳しい議論は下のエムダッシュの節にあります。
テキスト内に指示を隠すタグと私用文字
Unicode Tagsブロック(U+E0000からU+E007F)の文字は、人間の読者が決して見ない完全な文を運べます。攻撃者がAIアシスタントが後で読むテキストに隠し指示を密輸する方法です。
AWS Security Blogは2025年9月30日にUnicode文字の密輸を取り上げました。タグ文字は「当初、テキスト内の言語を示す不可視マーカーとして設計され」、「プロンプトインジェクションの潜在的な経路として浮上した」と述べています。2026年3月10日付のCloud Security Allianceの研究ノートは、同じ手口をAIエージェントのスキル、ツール説明、MCPサーバーに辿りました。その作業はTagsブロックをU+200B、U+200C、U+200D、U+FEFFと並んで挙げています。
規模を見るために一つ作りました。可視の文「Great work on the report.」は25文字・25バイトです。タグ文字で符号化した42文字の指示を付け足すと、ファイルは67文字・193バイトになりました。画面では五語と句点のままですが、スクリプトはコピーから指示をそのまま取り出せました。タグ文字はそれぞれ4バイト・0ピクセルです。
Great work on the report.これはAI検出とは無関係にテキストをきれいにする最も強い理由です。ウェブページのコピーをチャットアシスタントに貼ると、自分が打っていない指示を渡しているかもしれません。
ブラウザーでの不可視文字削除:スキャンとクリーンの流れ
このクリーナーは貼り付けた瞬間にテキストをスキャンし、公式Unicode名と位置付きですべての検出を一覧し、「テキストをクリーニング」を押すまで何も変えません。
手順は四つです。
- テキストを貼り付けるか、.txtまたは.mdファイルをドロップします。
- すべての文字とその位置を示す検出一覧を確認します。
- プリセットを選ぶか、守りたい個別の検出を保持します。
- クリーニングし、結果をコピーするかダウンロードします。
このクリーナーはテキストの語を一字たりとも書き換え・言い換え・人間化しません。
標準・高度・厳格プリセットの比較
標準は通常の文章で問題になる文字を削除し、高度は網を広げ、厳格は最も多く削除します。
| 文字グループ | 標準 | 高度 | 厳格 |
|---|---|---|---|
| ゼロ幅スペース、単語接合子、バイト順マーク | 削除 | 削除 | 削除 |
| 双方向制御とC0/C1制御 | 削除 | 削除 | 削除 |
| Tagsブロックと私用文字 | 削除 | 削除 | 削除 |
| ソフトハイフンU+00AD | 削除 | 削除 | 削除 |
| Zsカテゴリの異常なスペース | U+0020に変換 | U+0020に変換 | U+0020に変換 |
| 接合子U+200CとU+200D | 保持 | 絵文字シーケンス外で削除 | どこでも削除 |
| 異体字セレクタ | 保持 | 絵文字シーケンス外で削除 | どこでも削除 |
| カーリー引用符と長いダッシュ | 保持 | 保持 | まっすぐな引用符と素のダッシュに変換 |
プリセットの横にワンタップフィルターが三つあります。不可視文字の削除、ダッシュとハイフンの削除、絵文字の削除です。これらのルールを公開するのは意図的です。競合ツールはすべてルールセットを一つのボタンの裏に隠すため、何かが壊れるまで何が消えたか分かりません。
Markdownコード保護がコードブロックを保つ仕組みは?
Markdownモードと保護をオンにすると、クリーナーはフェンス付き・インラインのコードを飛ばすため、正確な文字が必要なスニペットはそのまま残ります。
コードは、散文ではゴミと呼ぶ文字が荷重を持つ唯一の場所です。正規表現やテスト文字列は、バイト順マークがまさにそこにあることに依存することがあります。
テキストは端末から出ますか?
いいえ。スキャンもクリーニングもブラウザー内で実行され、ページがテキストをアップロードや保存することはありません。
正直な後半も同じ息で述べます。このページは無料なので、広告を表示しサイト分析を使うことがあります。任意のJSONレポートは変更内容を記録し、あなたのテキストは含みません。
テキストとファイルの制限:20,000語と1 MB
クリーナーは貼り付けテキスト最大20,000語、またはUTF-8の.txt/.mdファイル最大1 MBまで受け付けます。
それ以外は対象外です。HTML、DOCX、PDF、JSON、CSVは不可で、貼り付けはプレーンテキストのみです。JavaScriptが必要です。アカウントも支払もありません。UIは26言語です。公式Unicode名はすべて英語のままです。翻訳された文字名は引用できる名前ではなくなるからです。
テキストではなく写真の場合は、 画像からAI情報を削除 または 画像メタデータを編集.
ベンダー別のAIテキスト印付け:ChatGPT、Claude、Gemini、Grokの比較
テキスト出力に印を付けるAIベンダーは一部だけで、行うベンダーはすべて隠し文字ではなく語の選択を使います。
| ベンダー | テキストに印を付ける | 方式 | このクリーナーで見つかるか | 出典と日付 |
|---|---|---|---|---|
| Anthropic, Claude | はい | トークン選択透かし(SynthID Textの一形態) | いいえ | Anthropic、2026年8月11日発表、技術ノート2026年8月14日、更新2026年9月1日 |
| Google, Gemini | はい | SynthID Text、トークン確率の変調 | いいえ | Google DeepMind、2024年5月14日、同年後半にオープンソース化 |
| OpenAI, ChatGPT | 確認されたテキスト透かしなし | テキストの本番環境にはなし。画像はC2PAとSynthID、音声はSynthID | 該当なし | OpenAI出所ヘルプ記事、2026年9月2日時点 |
| xAI, Grok | 公開されたコミットメントなし | 明記なし | 該当なし | xAIは委員会の透明性実務規範に署名せず、2026年8月12日報道 |
Anthropicは、2026年8月2日以降にローンチしたモデルはローンチ時にマークを持つと述べます。それ以前のモデルへの付与にも取り組んでいます。テキスト透かし検出は公開チェッカーではありません。Anthropicは検出が「現在プライベートプレビューで、EU法の求めに応じ適格な組織に利用可能」と述べます。適格リストは規制当局、法執行、メディア、ファクトチェッカー、研究者、教育機関、EU市民社会団体に及びます。Anthropicが別途提供する無料のClaude Content Checkerは生成ファイル上のC2PA Content Credentialsを読み、テキスト透かしとは別物です。
xAIが実務規範に署名しないことは、GrokをAI法そのものから免除しません。任意規範はコンプライアンスへの道であり、法律の代わりではありません。
Claudeのテキスト透かしの仕組みは?
Claudeは同等に良い語のあいだで選び、秘密鍵がどちらを取るかを決めます。マークは選択の連なりであり、テキスト内のどの文字でもありません。
Anthropicは仕組みを率直に述べます。「次の語を任意の乱数生成器で選ぶ代わりに、透かしは鍵と直前の数語を使ってモデルが選ぶべき語を決めます。」同社はまた、Claudeのテキスト透かしが「Google DeepMindが2024年のNature論文で発表したSynthID-Text手法の一形態」だと述べます。
耐性についてAnthropicは具体的です。「軽い編集では透かしを完全には取り除けないだろう」一方、すべての語を置き換える完全な書き換えは取り除きます。
SynthID TextはGeminiの出力に何をマークしますか?
SynthID TextはGeminiが書くときにトークン確率へパターンを埋め込みます。Google DeepMindは2024年5月14日にGeminiアプリとウェブ体験向けのSynthIDテキスト透かしを発表しました。手法は「生成時点でトークン分布に追加情報を導入し、生成されるトークンの尤度を変調する」ことで働きます。DeepMindは同年後半にResponsible Generative AI Toolkit経由でオープンソース化しました。
公開された限界は手法と同じくらい重要です。SynthID Textは長く多様な回答で最もよく働きます。モデルにほぼ言い回しの自由がない短い事実返答では性能が落ちます。徹底的に書き換えたり翻訳したりすると信頼度はさらに下がります。
隠し文字の検出とAI著者性:一方が他方を決して証明しない理由
隠し文字は何かがテキストを処理した証拠であり、AIが書いた証拠ではありません。
どの不可視文字にも、AI文章が存在する前からの普通の説明があります。ワープロ、CMS、PDF書き出しは何十年もそれらを挿入してきました。検出はテキストがソフトウェアを通ったことを示し、誰かが公開するほぼすべての文に当てはまります。
AI以外で不可視文字はどこから来るか?
ワープロ、ウェブエディター、PDF書き出し、翻訳ツール、チャットアプリ、普通のコピー&ペーストが、それぞれ不可視文字を挿入します。
| 発生源 | よく追加する文字 | 理由 |
|---|---|---|
| ワープロ | U+00A0, U+2019, U+2014, U+00AD | オートコレクトと自動ハイフネーション |
| ウェブとCMSエディター | U+200B, U+FEFF | 改行ヒントとファイルエンコーディングマーカー |
| PDF書き出し | U+2009, U+202F, U+00A0 | テキストをコピーし直すとき組版の間隔を保つ |
| 翻訳・ローカライズツール | U+200C, U+200D, U+061C | アラビア語・ペルシャ語・インド系文字の正しい描画 |
| チャットとメッセージアプリ | U+200D, U+FE0F | 絵文字シーケンスとテキスト/絵文字の表示 |
| アプリ間のコピー&ペースト | U+FEFF、混在したZsスペース | クリップボードでのエンコーディング変換 |
私自身の40バイトのテスト文は、言語モデルに一度も会わずに四件の検出を拾いました。それが一つの測定に収まった議論のすべてです。
エムダッシュが透かしでない理由
エムダッシュは作家・編集者・オートコレクトが何世紀も使ってきた普通の句読点なので、誰が文を書いたかの信号にはなりません。
2025年の修正で決着します。OpenAIは2025年11月14日、ChatGPTがエムダッシュを使わないよう求めるカスタム指示にやっと従うと述べました。Sam Altmanはその日はっきり言いました。「カスタム指示でChatGPTにem-dashesを使わないよう伝えても、ようやく本来どおり動く」。個人設定でオフにできる癖はマークではありませんでした。訓練で身についたスタイルで、修正は設定でした。
このクリーナーは今もダッシュ削除を提供し、理由は正直です。まっすぐな引用符と素のダッシュが欲しい人向けのスタイルフィルターです。透かしフィルターではなく、検出器がテキストについて言うことは変えません。
クリーニングがテキストを壊すとき:ペルシャ語、アラビア語、インド系文字、絵文字
ゼロ幅文字の削除は正しいテキストを壊すことがあります。一部の文字体系は語を正しく綴るためにそれらを必要とするからです。
最もよく壊れる四つのケースを実行し、起きたことを正確に記録しました。ペルシャ語の語 میخواهم は八文字で、中央のU+200Cが二つの部分の結合を防ぎます。削除すると میخواهم になり、七文字で書き方も変わります。デーヴァナーガリーでは क्ष が正しい合字を作るU+200Dを持ち、剥がすと画面上の形が変わります。家族絵文字 👨👩👧👦 は七コードポイントで、三つのU+200D接合子が四枚の絵をつなぎます。接合子を外すと 👨👩👧👦 の四人に分かれます。赤いハート ❤️ は絵文字として描画するためにU+FE0Fを持ち、なければ同じコードポイントがテキスト記号 ❤ に戻ります。
だからツールは何かをクリーニングする前に検出を示し、個別ヒットを保持でき、厳格がデフォルトではないのです。一言語の編集者にはきれいな結果に見え、六言語の編集者にはバグ報告に見えます。
AIテキスト透かしクリーニングの最終判断
不可視文字のクリーニングは、きれいで持ち運びやすく安全なテキストのためにやる価値があります。
このツールを動かす理由は二つです。第一に、隠し文字は検索結果、表計算の照合、コード、URLで静かに壊します。第二に、タグ文字は誰も打たず誰も見えない指示をAIアシスタントに運べます。クリーニングは見た目の手入れではなく、セキュリティ習慣になります。
ベンダー透かしを破ろうとする人は、誤った層をクリーニングしています。ClaudeとGeminiは語の選択でテキストに印を付け、OpenAIは画像と音声に印を付けテキストには付けず、文字をいくら剥がしてもどれにも届きません。こうした統計的透かしを破る一つの方法は、テキストをいくつかの異なる言語に翻訳してから元の言語に戻すことです。
自分のテキストを一ページ分上の入力欄に貼り、検出を読んでテキストをよりよく理解するか、単に出力をコピーしてください。
以上です。ここまで読んでくださりありがとうございます。