sue@blog ~ /posts/ai-image-kanji-garble-why
$ cd ../
$ cat post.metadata

なぜ画像生成AIは日本語の漢字を崩すのか — トークナイザ・長尾分布・周波数バイアスから読み解く

date: 2026-06-14 生成AI トークナイザ 論文 考察
前回は「どんな時に崩れて、どう対処するか」を実験でまとめた。今回はその続きで、「なぜ崩れるのか」をモデルの作りと公開論文から考える。結論は、漢字崩れは気まぐれでも“中国語化”でもなく、3つのよく知られた仕組みが重なった結果かな?という話。
姉妹記事
この記事は「なぜ」側です。症状と対処法(実験データ・作例)と、実装で打てる対策の実験比較 も合わせてどうぞ。
最初に正直な線引き
gpt-image-1.5 / 2 の内部構造(トークナイザ・語彙・デコーダ解像度など)は公開されていません。なのでこの記事は「①このクラスのモデルに関する査読・プレプリント論文」「②OpenAIの公式言及」「③前回の自分の実験結果」から逆算する考察です。公開事実推測はそのつど分けて書きます。断定はしません。

結論(3つの仕組みの重なり)

漢字が崩れるのは、モデルの別々の層で起きる3つの仕組みが、たまたま同じ文字で同時にピークになるからです。

文字ブラインドなトークナイザ:プロンプトの漢字はBPEで「分解できない塊」に圧縮される。モデルは描くべき字の“画(ストローク)”を読み取れない。
長尾な訓練データ:漢字の頻度はジップ的。稀少漢字は学習画像にほぼ出ず、正しい字形を学べない(→それっぽい別の字を捏造)。
視覚トークナイザの周波数バイアス+レート制約:密な多画字は画像として“高周波”。圧縮・少トークンで真っ先に失われるのがこの細い画。

だから 稀少 × 高画数 × 小さくシーンに埋め込み の字は3つが同時に効いて崩壊する。逆にかな・英字は小集合・高頻度・低画数で、3つともほとんど当たらないので崩れない。前回の実験で見えた症状は、全部この枠組みで説明がつきます。


1. まずモデルの作り:画像も「トークンを1個ずつ」生成している

OpenAIの公式な明言は1つだけあります。2025年3月のGPT-4oネイティブ画像生成のSystem Card追補で、「4o image generation はChatGPTに統合された“自己回帰(autoregressive)”モデル」と書かれ、DALL-Eの拡散(diffusion)と対比されています。API版の gpt-image-1 はこの系譜です。

自己回帰の画像生成は、画像を離散的な「画像トークン」の列に分解して、テキストと同じく「次のトークンを予測」していく方式(image-GPT / VQ-VAE/VQGANの系統)。つまり画像の中の文字のスペルも、テキスト生成と同じトークナイザの理屈に支配される。ここが出発点です。

公開事実:4o/gpt-image-1 が自己回帰であること(System Card)。
推測:第三者解析(GPT-ImgEval)は分類器ベースで「自己回帰バックボーン+拡散デコーダのハイブリッド」と推測しているが、OpenAIは拡散デコーダの存在を明言していない。gpt-image-1.5 / 2 の内部は完全に非公開で、OpenAIが言うのは能力(小さく密なテキスト・多言語・2K・“思考”ステップ)だけ。

2. 仕組み① 文字ブラインドなトークナイザ:モデルは“画”を読めない

核心の論文が Character-Aware Models Improve Visual Text Rendering(Liu et al., ACL 2023)です。テキストエンコーダには「文字対応(character-aware)」と「文字ブラインド(character-blind)」があり、サブワードBPE/SentencePieceは文字列を“分解できない単位”に圧縮してIDに変換するため、トークンの中の文字・ストローク情報が消えてしまう。モデルは「描くべき字の形」を入力から読み取れず、分布から間接的に推測するしかない。

面白いのは、巨大モデルが英語のスペルを当てられる「spelling miracle」は 英語に閉じていて、他言語には広がらなかったこと。つまりスケールで殴っても、漢字の字形を正しく選ぶための信号は弱いまま。直し方は文字対応エンコーダ(ByT5=生のUTF-8バイト、Charformer、画像向けの Glyph-ByT5)で、これらはスペル精度を大きく押し上げます。当時のText-to-Image(Stable Diffusion / DALL-E / Imagen / Parti)が軒並み文字ブラインドBPEだったことが、文字化けがほぼ普遍的な失敗だった理由です。

仕組み①b なぜCJKが一番ひどいのか:バイト分割・Han統合・“未学習トークン”

現代のトークナイザ(GPT-2以降のtiktoken系)はバイトレベルBPE。文字は生のUTF-8バイトに落ちてからマージされます。BMPの漢字はUTF-8で3バイト(稀少・補助平面の字は4バイト)。約10万字あるCJKに10万スロットは割けないので、大半の漢字は2〜3トークンに分割される(GPT-2系では過半数の漢字が3トークン必要、という実務報告)。英語中心の学習データだと、英語は密なトークン・CJKは断片という非対称も乗ります。

さらに厄介なのが未学習トークン(glitch token)。バイト断片や稀少漢字のトークンは「語彙にはあるが学習でほとんど出ない」ため表現が不安定になる(Fishing for Magikarp)。加えて Han統合(中日韓で同じUnicodeコードポイントを共有する設計)で、同じコードポイントが言語/フォントで違う字形になり得る曖昧さも重なる。稀少漢字は「弱いトークン × 曖昧な字形」の二重苦です。

:CJKのトークン比(2〜5倍、最悪十数倍)や「過半数が3トークン」「o200kでほぼ1字1トークン」といった数値は実務記事・ベンチ由来で、トークナイザのバージョン依存。傾向は堅いが、正確な数値は目安として読んでください。

3. 仕組み② 長尾な訓練データ:稀少漢字は“例”が足りない

漢字・漢字の頻度はジップ的(長尾)です。Qwen-Imageの技術報告は、表語文字が難しい理由を「文字集合の大きさ・頻度の偏り・レイアウトの複雑さ」と明言しています。常用漢字は学習画像に桁違いに多く出るのに対し、稀少漢字はほとんど出ない。だからモデルは稀少字の正確なストローク配置を学ぶ勾配信号が乏しく、それっぽいが間違った画を捏造する。

最先端モデルはこれに対し、データバランス・稀少文字の合成増強・簡→難のカリキュラム学習で明示的に対処している(Qwen-Image)。裏を返せば、対処しなければ稀少・複雑字が一番崩れるという強い間接証拠です。対してかな(約46字)・英字(26字)は閉じた小集合で常時頻出するので、強い字形プライアを獲得していて崩れにくい。


4. 仕組み③ 画数の多さ=“高周波”:周波数バイアスとレート歪みが細部を先に捨てる

密な多画字(楷書で一字30画超もある)は、画像として見ると高い空間周波数の塊です。FA-VAE は「圧縮率が上がるほど高周波の視覚信号が先に失われ、中〜高周波が最も復元しにくい」と直接示しています。さらにCNNのエンコーダ/デコーダには周波数バイアス(Frequency Principle / Spectral Bias, Rahaman et al. 2019)があり、低周波から学んで高周波の細い画を遅く・下手にしか学べない。同じ条件なら、複雑な字ほど先に潰れるのです。

そしてトークングリッドが解像度のボトルネックになる。DALL-EのdVAEは256×256を32×32の離散トークンに圧縮(約192倍の削減、おおよそ8×8pxで1トークン)し、その再構成は「細線」を落とすことが知られています。一字に数トークンしか割り当たらないと、十数本の画は表現しきれないCharGen はまさに「画の繰り返し・融合・別字化・ストロークの増減」という、あの“崩れ方”を名指しして、文字レベルのエンコーダと知覚損失で直しています。


5. 重なり:3層が掛け算で効く

3つの層は独立ではなく掛け算で効きます。稀少・高画数の漢字を、小さくシーンに埋め込むと——

結果、ストロークが融合・欠落・増殖して崩れた字になる。これが「正しい字を選べず別字や架空字になる」現象の正体です。


6. なぜ英語(と、かな)は崩れないのか — 同じ3つの仕組みが“有利側”に裏返る

ここまで「漢字が崩れる理由」を3つ挙げました。逆に言うと、英語(アルファベット)が崩れないのは、その3つが全部“逆向き=有利側”に働くからです。特別なことは起きておらず、同じ仕組みの裏返しで説明できます。

観点英語(ラテン文字)/ かな漢字
覚えるべき字形の数26字 / かな約46字の閉じた小集合。26字さえ描ければ任意の単語を“合成”できる約10万字。1字ずつ別の複雑な形を覚える必要がある
① トークン化ラテン文字はUTF-8で1バイト=密にトークン化され断片化しにくい。英語では「spelling miracle」が成立し字形・綴り知識が強いBMPの漢字は3バイト=2〜3トークンに分割。稀少字は未学習トークンになりやすく、spelling miracle は英語の外に広がらなかった
② 訓練データ頻度学習画像のテキストは英語が圧倒的多数。26字は天文学的頻度で出る → 鉄壁の字形プライア長尾。稀少漢字はほぼ出ず、正しい字形を学べない
③ 画数(空間周波数)数本の線=低周波。少トークン・低解像度でも潰れにくい十数〜30本超=高周波。少トークン・低解像度で先に潰れる

つまり英語が安定しているのは「英語が特別」だからではなく、たまたま3つの不利要因をどれも踏まないからかなも同じ理由で安定します(小集合・高頻度・低画数)。そして漢字の中でも、常用漢字のように頻度が高く画数が中庸な字は英語に近い“有利側”に寄るので崩れにくい。前回の実験で常用字は崩れず、稀少・高画数字だけが崩れたのは、この「有利↔不利」の連続的なグラデーションそのものです。


7. これで前回の“症状”が全部説明できる

前回の実験で観察した症状は、この枠組みからすべて予測できるものでした。

観察された症状仕組みからの説明
稀少・高画数の漢字が一番崩れる①②③が同じ字で同時にピークになる
シーン埋め込みが主役配置より悪い一字あたりのトークン数・実効解像度が減る=③のレート制約が強まる
quality=low が悪いトークン予算=レート制約。高周波(=字の同定に効く細い画)から先に捨てられる
かな・英字はほぼ崩れない小集合・高頻度・低画数で、①②③のどれも強く当たらない
新しいモデルほど良い多言語トークン知識が強い自己回帰LLM+大語彙化(cl100k→o200kで断片化が減る)+長尾対策+“思考”ステップ

「中国語化」がほとんど起きず“架空字・別字化”が主だったのも、これで腑に落ちます。崩れは「中国語にしようとした」のではなく、正しい字を構成する情報が各層で欠けた結果だからです。


8. 世代で何が変わったか(DALL-E 2 → 3 → 4o → 1.5 → 2)


まとめ

画像生成AIの漢字崩れは、文字ブラインドなトークン化 × 長尾なデータ × 高周波の細部を先に捨てる視覚トークナイザ、という3つの仕組みが重なった結果と見るのが、いちばん腑に落ちます。だから前回の対処法——文字はモデルに描かせずフォント合成する/gpt-image-2・不透明・短文に寄せる/難字だけ品質を上げる——が効く理由も、ここから逆算で説明できます(①②③のどれかを外す手だから)。

注意点として、gpt-image系の内部は非公開なので、ここで挙げた「拡散デコーダ」「具体的なトークナイザ」等をOpenAIの確定仕様として断定はできません。確実なのは「4o/gpt-image-1は自己回帰」というOpenAIの言及と、メカニズム自体が非OpenAIのシステムで査読・実証されていること。そこから「このクラスのモデルなら、こう壊れるはず」を組み立てた、というのが正直なところです。

参考文献

対になる記事
症状と対処法 / ③ 対策はどれが効くか / ④ 崩れやすい漢字リスト へ。
sue@blog ~ $ _