- Authors

- Name
- Youngju Kim
- @fjvbn20031
- ビジョンモデルはひとつのカテゴリではありません
- 画像を理解する対話型VLM
- 小さいVLMとオンデバイス
- OCR専用モデルはVLMとは別物です
- 文書構造化はテキスト抽出とは違います
- 画像検索には別の埋め込みモデルがあります
- カードが明記する禁止用途と限界
- コード例
- 選ぶ順序
- 自分で試す
- シリーズ案内
- 参考資料
モデル情報は2026-08-12にHugging Faceのページで直接確認しました。モデルカードとライセンスは変わりうるので、使用前に原本を再確認してください。
ビジョンモデルはひとつのカテゴリではありません
画像を扱うオープンモデルを探すと、性格のまったく違うものが一覧に混ざって出てきます。実務では最低4つに分けないと選択が始まりません。画像を見て対話するVLM、文字だけを正確に読むOCR専用モデル、文書の構造まで復元するモデル、そして画像をベクトルにして検索に使う埋め込みモデルです。
この4つは互いを代替しません。VLMに領収書を読ませればだいたい読みますが、金額欄を飛ばしたかどうかを確認する手段がありません。OCR専用モデルは正確に読みますが、その領収書が承認可能かは判断しません。
画像を理解する対話型VLM
| リポジトリ | license | サイズ | コンテキスト | カード記載の特徴 |
|---|---|---|---|---|
Qwen/Qwen2.5-VL-7B-Instruct | apache-2.0 | 7B | 32,768、長い動画入力時は64kまで拡張 | 1時間を超える動画の理解、文書の構造化出力、境界ボックスと点による位置指定 |
google/gemma-3-4b-it | gemma | 4B | 128K | 画像とテキストの入力、140以上の言語 |
google/gemma-3-27b-it | gemma | 27B | 入力128K、出力8,192 | 条件に同意してからアクセス |
openbmb/MiniCPM-V-2_6 | コードは Apache-2.0、モデルは別途MiniCPM Model License | 8B | 明記なし | 任意のアスペクト比と最大180万画素、複数画像の対話、動画理解 |
Qwen/Qwen2.5-VL-7B-Instruct のカードは、請求書・帳票・表の内容を構造化された出力にできると記し、画像内の対象の位置を境界ボックスや点で指定できると述べます。自動化パイプラインではこの位置指定の有無が決定的です。値だけを返すモデルは人が原本と突き合わせる必要がありますが、座標まで返すモデルは確認画面で該当箇所をそのまま示せます。
同じカードは、32,768トークンを超える入力にYaRN拡張を使うと時間的・空間的な位置指定の性能に大きく影響するため推奨しないと述べます。長い動画と精密な位置指定を同時に求めてはいけないという意味です。
openbmb/MiniCPM-V-2_6 は任意のアスペクト比と最大180万画素の画像を処理すると記します。固定解像度にリサイズするモデルと違い、縦長のスクリーンショットや横に広い図面を切り落とさないという意味で、スクリーンショット解析のような用途で差が出ます。
小さいVLMとオンデバイス
HuggingFaceTB/SmolVLM-Instruct はApache 2.0で20億パラメータ、評価表に必要な最小GPU RAMが5.02GBと記載されています。この数字がカードにあること自体が有用です。多くのVLMのカードはメモリ要件を記さず、自分で測る必要があるからです。
openbmb/MiniCPM-V-2_6 のカードはiPadのような端末機器に配備できると記します。オンデバイスのビジョンを検討するなら、この2つのリポジトリが出発点になります。
OCR専用モデルはVLMとは別物です
stepfun-ai/GOT-OCR2_0 は apache-2.0 で0.7B規模、カードは複数のOCRモードを列挙します。平文OCR、書式を保つOCR、箱や色で領域を指定する細分化OCR、マルチクロップOCRがあり、書式付きの結果はHTMLとしてレンダリングできると記されています。
実務的に重要なのは細分化OCRです。書式の決まった文書ならページ全体を読んで解析する代わりに座標で必要な欄だけ読めるので、他の欄の誤読が結果に混ざりません。カードに限界の項目は明記されていません。
microsoft/Florence-2-large は mit で0.77B、プロンプトトークンで作業を指定する構造です。カードは <CAPTION>、<DETAILED_CAPTION>、<OD>、<OCR>、<OCR_WITH_REGION>、<DENSE_REGION_CAPTION>、<REGION_PROPOSAL>、<CAPTION_TO_PHRASE_GROUNDING> といったトークンを列挙します。使用例には trust_remote_code=True が必要と記され、このリポジトリは4kコンテキストで継続事前学習した版で0.1Bのサンプルしか使われていないため十分に学習されていない可能性があるとカード自身が述べています。
文書構造化はテキスト抽出とは違います
契約書や論文を扱うときに必要なのは文字ではなく構造です。表が表であること、どの段落がどの見出しの下にあるか、数式が数式であることが残らなければなりません。
docling-project/SmolDocling-256M-preview は cdla-permissive-2.0 で0.3B規模、DocTagsという出力形式を使うと記されています。カードが列挙する機能は、OCR、境界ボックスを含むレイアウトと位置指定、コード認識、数式認識、チャート認識、ヘッダーを含む表認識、図の分類、キャプションの対応付け、リストのグループ化、ページ全体の変換です。
使う前に必ず確認すべき事実が2つあります。名前にpreviewが付いていること、そしてカードに後継のgranite-docling-258Mが公開され、今後はそちらが更新と支援を受けると書かれていることです。ds4sd/SmolDocling-256M-preview のアドレスから入っても、ページには docling-project/SmolDocling-256M-preview が表示されます。
画像検索には別の埋め込みモデルがあります
画像をテキストで探したり似た画像を探したりするのは、VLMではなく埋め込みモデルの仕事です。google/siglip-so400m-patch14-384 は apache-2.0 で0.9B、ゼロショット画像分類と画像・テキスト検索に使えると記されています。384x384の解像度で事前学習されています。
このカードには目を引く一文があります。モデルを公開したチームがカードを書かなかったため、Hugging Faceのチームが代わりに書いたという案内です。つまりそこに書かれた内容は配布者が保証した仕様ではなく第三者がまとめた説明なので、原論文と突き合わせる方が安全です。限界の項目は明記されていません。
カードが明記する禁止用途と限界
ビジョンモデルは人と文書を直接扱うため、禁止用途が具体的に書かれることが多くあります。
HuggingFaceTB/SmolVLM-Instruct のカードは、このモデルが高リスクのシナリオ向けではないと述べ、採用評価と重大な自動意思決定を禁止用途として列挙し、画像生成には対応しないと記します。openbmb/MiniCPM-V-2_6 のカードは、このモデルが個人的な意見を理解も表明もできず価値判断も下せないと記し、使用から生じる問題に開発者は責任を負わないと明記します。google/gemma-3-4b-it と google/gemma-3-27b-it は、微妙なニュアンスや皮肉、比喩を捉えられないことがあり、不正確または古い事実を生成しうると述べます。
ライセンス構造が複合的な場合もあります。openbmb/MiniCPM-V-2_6 はコードがApache-2.0でモデルは別途MiniCPM Model Licenseに従い、商用利用は登録アンケートを終えれば無料だと案内します。ライセンス全文を自分で読み、商用利用は法務レビューを通してください。
コード例
# 例: 画像と質問を一緒に入れて構造化された答えを受け取ります
from transformers import AutoProcessor, AutoModelForImageTextToText
repo = "Qwen/Qwen2.5-VL-7B-Instruct"
processor = AutoProcessor.from_pretrained(repo)
model = AutoModelForImageTextToText.from_pretrained(repo, torch_dtype="auto", device_map="auto")
messages = [
{
"role": "user",
"content": [
{"type": "image", "url": "invoice.png"},
{"type": "text", "text": "表の項目と金額をJSONで整理してください。"},
],
}
]
inputs = processor.apply_chat_template(
messages, add_generation_prompt=True, tokenize=True, return_tensors="pt"
).to(model.device)
out = model.generate(**inputs, max_new_tokens=512)
print(processor.decode(out[0], skip_special_tokens=True))
選ぶ順序
- 必要なのが理解か抽出か構造復元か検索かをまず分けます。
- 入力画像の実際の解像度とアスペクト比の分布を確認し、モデルがそれを切り落とさないか見ます。
- 位置情報が必要かを決めます。必要なら座標を出すモデルだけを候補にします。
- 複数枚を一度に入れるなら、複数画像の対話を明記したモデルを選びます。
- 禁止用途の一覧に自分の用途が入っていないか確認します。
- previewの表記と後継モデルの案内を確認し、保守される方を選びます。
自分で試す
- ニューラルネットワーク構造エクスプローラー — ビジョンモデルの構造が何を捉えるのかを見ます。
- ニューラルネット実習 — 画像の特徴抽出がどんな原理で動くのか実験します。
- LLM GPUメモリ(VRAM)計算機 — VLMは画像トークンまで計算する必要があるので容量を事前に確認します。
シリーズ案内
- 前の記事: 音声モデルの選び方: STTとTTSの実践基準
- 次の記事: コードモデルの選び方: 補完と対話、FIM、ライセンス
参考資料
- 表のすべての値は2026-08-12に該当モデルのHugging Faceページから直接読みました。ページになかった項目は明記なしと書いています。
stepfun-ai/GOT-OCR2_0とgoogle/siglip-so400m-patch14-384の限界の項目はページに明記されていないため書いていません。- ライセンス全文を自分で読み、商用利用は法務レビューを通してください。