DeepSeek-OCRの仕組みが面白いので遊んでしまっている。
最初に試したときは、純粋にOCRさせてますね。きれいな心をしている。
画像でテキストをトークン圧縮するDeepSeek-OCRがいろいろすごい - きしだのHatena
そして前回はランダムな文字列を読ませて誤認識を誘ってみた。
DeepSeek-OCRにはランダム文字列が読めない - きしだのHatena
もう2つ、弱点ぽいところをついてみる。
その前に、DeepSeek-OCRの構造を確認。
https://arxiv.org/abs/2510.18234
ここで、DeepEncoderがSAM->Conv->CLIPってなってるのがキモ。
SAM(Segment Anything Model)は、画像の領域分けをする仕組み。
GitHub - facebookresearch/segment-anything: The repository provides code for running inference with the SegmentAnything Model (SAM), links for downloading the trained model checkpoints, and example notebooks that show how to use the model.
たぶん、任天堂の有価証券報告書の場合だとこんな感じで領域分けしてくれるやつ。
Convはたぶん普通のニューラルネットで、SAMの出力を1/16にしてくれる。
SAM->Convがトークナイザとして扱われてる。
CLIPは、ここで試してる、同内容の画像とテキストのベクトル表現を一致させる仕組み。
日本語CLIPを使って画像検索を作ったら素晴らしすぎた - きしだのHatena
CLIPがMoEモデルに投入するエンベディングベクトルを作ってくれる。
たぶん、「あ」の表のなかに「め」やら「ぬ」やら「ね」やら入れておくと、トークナイザ部分を困らせることができる気がする。
そして、日本語っぽいけど実は日本語ではない、みたいな文でCLIPを困らせることができる。
右上の「わしたは」も「わたしは」になってたりする。
仕組み上の弱点かなと思ったところをついてみると実際に弱かったりするの楽しい。