AI出力には実際に不可視Unicodeが含まれることが多くあります。最も多いのはノーブレークスペースやナローノーブレークスペースです。しかしこれらは書式処理の副産物にすぎず、隠された透かしではありません。実際のテキスト透かし技術は存在しますが、単語の選択を統計的に偏らせる方式のため、特殊な文字は一切残りません。どんな文章でも数秒で自分で確認できます。
主張の内容と拡散された理由
数か月ごとに、ChatGPTからコピーした文章に隠し文字が含まれているという投稿が拡散され、OpenAIが出力を追跡できるよう密かに透かしを入れているという結論が飛躍しています。
観察自体は事実です。ただし、その結論は裏付けられていません。
実際に見つかっているのは本物です。チャットの回答を文字インスペクターに貼り付けると、画面上では何も表示されないコードポイントが頻繁に見つかります。問題はその解釈です。透かしとは、編集されても残り、除去が困難で、何らかの情報を符号化している必要があります。検索・置換を一度実行しただけで消え、復元可能な情報を何も持たない文字は、その条件を一つも満たしていません。
実際に文章に含まれているもの
AI出力に現れる不可視文字は、圧倒的にありふれた組版用文字です。
| 文字 | コードポイント | 現れる理由 |
|---|---|---|
| ノーブレークスペース | U+00A0 | 数値と単位を同じ行に保つため |
| ナローノーブレークスペース | U+202F | 句読点の前や数値内の細い空白として |
| ゼロ幅スペース | U+200B | 改行位置のヒント。Webテキストから引き継がれることが多い |
| ソフトハイフン | U+00AD | 折り返し時に単語を分割してよい位置を示すため |
| バイトオーダーマーク | U+FEFF | 上流のファイル由来のエンコーディングの名残 |
どれも正当な組版上の目的を持ち、言語モデルが登場する何十年も前から存在していました。混入経路も従来通りです。モデルがこれらを含む学習テキストから覚えたもの、チャット画面が整形済み出力をHTMLとして描画するもの、そしてレンダリングされたWebページからのコピーがマークアップの内容をそのまま持ち込むものです。
最後の経路は思いのほか重要です。モデル由来と思われているものの多くは、実際には生成ではなく「ブラウザからのコピー」によって持ち込まれています。同じ回答でも、API経由で取得したほうがチャット画面からコピーするよりきれいなテキストになることがよくあります。
AIテキストの透かし技術は存在するのか?
存在します。ただし、バイラル投稿が想定するような仕組みではありません。
最もよく文書化されているのが、2024年に『Nature』誌に発表されたGoogle DeepMindのSynthID-Textです。これは各ステップでモデルがサンプリングする単語を微妙に偏らせることで、完成したテキストに対応する検証器で検出可能な統計的署名を持たせる手法です。特殊な文字は一切関与しません。何も挿入されません。透かしは「ありふれた単語の選択」の中に存在するため、コピーや軽い編集を経ても残り、コードポイントを調べても見つけられないのです。
OpenAIもテキスト透かしの研究について公に言及していますが、ChatGPTの出力向けに一般提供が確認された実装はありません。
実用上の示唆は、パニックとは逆の方向を向いています。使っているモデルに透かしが入っているなら、不可視文字を除去しても透かしは消えません。そして不可視文字が見つかっても、それは透かしの証拠ではなく、書式処理の証拠にすぎません。
それでも不可視文字が問題になる理由
透かしの有無にかかわらず、不可視文字は取り除いておきたいものです。静かに問題を引き起こすからです。
- 検索や検索・置換が機能しない。 2文字の間にゼロ幅スペースがあると、その単語を検索しても見つかりません。画面上は理由が見えないままです。
- フォームの入力チェックが通らない。 末尾にノーブレークスペースが付いたメールアドレスやライセンスキーは、画面上は正しく見える比較に失敗します。
- コードがコンパイル・パースできない。 通常のスペースがあるべき場所にノーブレークスペースがあると、問題なさそうに見える行を指す構文エラーが出ます。
- CSVの読み込みが壊れる。 バイトオーダーマークが最初の列ヘッダーに付着し、最初のフィールドが黙ってマッピングに失敗します。
- 重複レコードが発生する。 見た目が同一の2つのエントリが別の文字列となり、重複排除をすり抜けます。
こうした不具合が特に厄介なのは、テキストが正しく見えるからです。デバッグの勘はすべて別の方向に向かってしまいます。
自分の文章を確認・クリーンアップする方法
不可視文字を削除ツールに文章を貼り付けてください。見つかったゼロ幅スペース、ソフトハイフン、バイトオーダーマーク、方向制御文字をすべて種類ごとの件数とともに報告し、必要に応じて削除できます。スキャンはローカルで実行されるため、内容がブラウザの外に出ることはありません。
より広く確認したい場合は、ChatGPT・AI文章クリーナーが不可視文字に加えて長いダッシュ、曲線引用符、絵文字も一度に処理できます。
習慣にしたいのは、テキストがシステムの境界を越えるタイミングでチェックを回すことです。チャット画面からコードエディターへ、Webページからスプレッドシートへ、PDFからフォームへ。不可視文字が被害をもたらすのはそこであり、取り除くコストが最も低い瞬間でもあります。
これらの文字の全リストとそれぞれの役割については、不可視Unicodeリファレンスをご覧ください。
よくある質問
ChatGPTは不可視文字でテキストに透かしを入れているのですか?
それを示す証拠はありません。ChatGPTの出力に見つかる不可視文字は、ノーブレークスペースやナローノーブレークスペースといった何十年も前から存在する通常の組版用文字で、情報のペイロードも持ちません。基本的なクリーンアップで消えてしまうため、透かしとしても使い物になりません。
AI生成テキストに透かしを入れることは可能ですか?
可能です。2024年にNature誌に発表されたGoogle DeepMindのSynthID-Textは、モデルの単語選択を偏らせて出力に統計的署名を持たせます。特殊な文字は一切挿入されないため、コードポイントを調べても見つからず、不可視文字を除去しても消えません。
ChatGPTからコピーした文章に隠し文字が含まれるのはなぜですか?
主な原因は、Webページからレンダリング済みのHTMLをコピーしていることです。チャット画面は整形済みの出力を表示しており、そのコピーには整形に使われた空白系の文字が含まれます。同じ回答でもAPI経由で取得したほうが、目に見えてきれいなテキストになることが多いです。
文章内の不可視文字はどうやって見つけますか?
「不可視文字を削除」ツールのようにコードポイントを一覧表示するスキャナーに貼り付けてください。存在する不可視文字の種類を特定し、件数を数え、必要に応じて削除まで行えます。処理はすべてブラウザ内で実行されます。
不可視文字は危険ですか?
危険ではありませんが、実害はあります。検索を壊し、フォームの入力チェックを失敗させ、コードに構文エラーを起こし、CSVヘッダーを破損させ、見た目が同一の重複レコードを生み出します。テキストは正常に見えるため、こうした不具合の原因特定は通常よりはるかに困難です。