この記事のポイント
- 東京大学が開発した日本語特化のオープンVLM「Asagi」の概要と、従来OCRとの立ち位置の違い
- 2B〜14Bまでの4サイズ展開で、用途やマシンスペックに応じて選べる
- Pythonコード付きで、画像を入力して日本語で説明を生成する手順を解説
はじめに
「画像に写っている日本語のテキストを、AIに読み取らせたい」と思ったとき、まず頭に浮かぶのはOCRでしょう。しかし、OCRは文字を1文字ずつ認識する技術であり、「画像全体の文脈を理解して説明する」ことは苦手です。
たとえば、ホワイトボードに書かれた会議メモの写真を見せたとき、OCRは文字をテキスト化してくれますが、「この会議で何が議論されたか」までは教えてくれません。
東京大学 原田・黒瀬・椋田研究室が開発した「Asagi」は、この課題に対する一つの答えです。日本語に特化したオープンなVision-Languageモデル(VLM)で、画像を見て日本語で説明や質問応答ができます。画像内の文字も含めて「理解」するため、従来のOCRとは異なるアプローチで画像中のテキスト情報を扱えます。
Asagiとは
Asagiは、東京大学が開発した日本語特化のオープンなVision-Languageモデル(VLM)です。画像とテキストを同時に処理し、画像の内容を日本語で説明したり、画像に関する質問に日本語で回答できます。
基本情報
| 項目 | 内容 |
|---|---|
| 開発元 | 東京大学 原田・黒瀬・椋田研究室 |
| モデルサイズ | 2B / 4B / 8B / 14B の4種類 |
| ライセンス | Apache-2.0(商用利用可) |
| 公開先 | Hugging Face(MIL-UT) |
| 学習データ規模 | 約2,000万件の画像・テキストペア |
モデル構成(Asagi-14Bの場合)
Asagiは3つのコンポーネントで構成されています。
| コンポーネント | 使用モデル | パラメータ数 |
|---|---|---|
| ビジョンエンコーダ | Google SigLiP(siglip-so400m-patch14-384) | 4.28億 |
| 接続層(プロジェクタ) | 2層のMLP | 6,400万 |
| LLM(言語モデル) | llm-jp-3-13b-instruct | 130億 |
画像をビジョンエンコーダで特徴量に変換し、接続層を経由して日本語LLMに渡すことで、画像の内容を日本語で生成します。LLM部分にはNII(国立情報学研究所)が開発した日本語LLM「LLM-jp」が使われており、日本語の自然さに強みがあります。
日本語VLM開発の課題と合成データ戦略
なぜ日本語VLMが少なかったのか
VLMの学習には大量の「画像と説明文のペアデータ」が必要です。英語ではLAION-5Bなど数十億規模のデータセットが存在しますが、日本語ではこれに匹敵する規模のデータがありませんでした。
Asagiの解決策:合成データの活用
Asagiの開発チームは、以下の方法で約2,000万件のデータセットを構築しました。
| データソース | 件数 | 方法 |
|---|---|---|
| Webクロール画像(ROIS) | 840万 | 英語VLMで説明文を生成→日本語LLMで翻訳・合成 |
| 日本語画像テキストペア | 440万 | 合成 |
| Wikipedia画像 | 250万 | 合成 |
| CommonCatalog CC-BY | 350万 | 英語→日本語翻訳 |
| LLaVA-Pretrain-JA | 55万 | 既存データセット |
| STAIR Captions | 41万 | 既存データセット |
| GQA / VQA v2 / JVG | 440万 | 英語→日本語翻訳 |
重要なポイントとして、GPT-4など出力物の利用に制限のあるモデルは合成プロセスに使用していません。代わりにCALM3-22B-Chat(日本語LLM)とPhi3.5-vision-instruct(英語VLM)を利用しています。この方針により、ライセンス上のリスクなく商用利用が可能です。
従来OCRとの違い
Asagiは「OCRツール」ではありませんが、画像内のテキストを含めて理解できるため、OCR的な使い方も可能です。ただし、得意分野が異なります。
| 観点 | 従来OCR(EasyOCRなど) | Asagi(VLM) |
|---|---|---|
| 目的 | 文字を正確にテキスト化 | 画像全体を理解して説明 |
| 出力 | 認識した文字列 | 自然な日本語文 |
| テーブル認識 | 構造を再現 | テーブルとして認識するが再現は苦手 |
| 文脈理解 | なし | あり(画像全体を考慮) |
| 手書き文字 | モデルによる | ある程度対応 |
| 正確性 | 文字単位で高精度 | 意味は正しいが一字一句の再現は不得意 |
| 活用シーン | 帳票・書類の正確なデジタル化 | 画像の要約・説明・質問応答 |
つまり、「この請求書の金額はいくら?」→ 従来OCR向き、「この写真に何が写っている?」→ Asagi向き、という使い分けになります。
Asagiを動かしてみる
必要な環境
| 項目 | 要件 |
|---|---|
| Python | 3.9以上 |
| GPU VRAM | 2Bモデル:約9GB / 8Bモデル:約21GB / 14Bモデル:約30GB |
| 推奨環境 | Google Colab(L4 GPU以上)/ ローカルGPU搭載PC |
GPU非搭載のマシン(MacBook Airなど)でもCPUモードで動作しますが、推論に非常に時間がかかります(2Bモデルでも数分〜十数分程度)。実用的に使うにはGPU環境を推奨します。
パッケージのインストール
pip install transformers==4.45.1 accelerate==0.34.2 torch==2.4.0 torchvision==0.19.0 Pillow huggingface_hub
Hugging Faceの認証設定
Asagiはゲート付きリポジトリ(利用条件への同意が必要なモデル)として公開されています。ダウンロードするには、以下の手順が必要です。
- Hugging Faceのモデルページ(https://huggingface.co/MIL-UT/Asagi-2B )にアクセスし、利用条件を確認して「Access request」を送信する
- マイページでアクセストークンを発行する
トークン発行時の注意点として、Fine-grained tokenを使う場合は「Access public gated repos」の権限を有効にしてください。シンプルに済ませたい場合は「Read」タイプのトークンを発行すればOKです。
発行したトークンは、環境変数に設定するか、コード内で直接指定して使います。
# 環境変数に設定する場合
export HF_TOKEN="hf_xxxxxxxxxxxxxxxxxxxxx"
アクセスリクエストが承認されると、モデルのダウンロードが可能になります。
基本的な使い方(Asagi-8B)
以下は実際に動作確認済みのコードです。8Bモデルを使って画像の内容を日本語で説明させます。
import os
import torch
import transformers
from PIL import Image
from transformers import AutoModel, AutoProcessor, GenerationConfig
transformers.set_seed(42)
# Hugging Faceトークン(環境変数 or 直接指定)
hf_token = os.environ.get("HF_TOKEN", "your_token_here")
# モデルの読み込み
model_path = "MIL-UT/Asagi-8B"
processor = AutoProcessor.from_pretrained(model_path, token=hf_token)
model = AutoModel.from_pretrained(
model_path,
trust_remote_code=True,
torch_dtype=torch.bfloat16,
device_map="auto",
token=hf_token
)
# 生成設定
generation_config = GenerationConfig(
do_sample=True,
num_beams=5,
max_new_tokens=2048,
temperature=0.3,
repetition_penalty=1.5
)
# プロンプトと画像の準備(<image>トークンが必須)
prompt = (
"以下は、タスクを説明する指示です。"
"要求を適切に満たす応答を書きなさい。\n\n"
"### 指示:\n<image>\n"
"この画像に書かれている日本語の文章をすべて書き起こしてください。"
"省略せずに全文を出力してください。\n\n"
"### 応答:\n"
)
# 画像の読み込み
image = Image.open("photo.jpg")
# 推論の実行
inputs = processor(text=prompt, images=image, return_tensors="pt")
for k, v in inputs.items():
if v.dtype == torch.float32:
inputs[k] = v.to(model.dtype)
inputs = {
k: inputs[k].to(model.device)
for k in inputs if k != "token_type_ids"
}
generate_ids = model.generate(**inputs, generation_config=generation_config)
result = processor.batch_decode(
generate_ids, skip_special_tokens=True,
clean_up_tokenization_spaces=False
)[0]
print(result)
プロンプト内の <image> トークンは画像の挿入位置を示す特殊トークンです。これがないとモデルが画像を認識できずエラーになるため、必ず含めてください。
プロンプトの書き方
Asagiは Alpaca 形式のプロンプトを使います。用途に応じて「### 指示:」の内容を変えることで、さまざまなタスクに対応できます。
# 画像の説明を求める場合
prompt = (
"以下は、タスクを説明する指示です。"
"要求を適切に満たす応答を書きなさい。\n\n"
"### 指示:\n<image>\n"
"この画像の内容を詳しく説明してください。\n\n"
"### 応答:\n"
)
# 質問応答の場合
prompt = (
"以下は、タスクを説明する指示です。"
"要求を適切に満たす応答を書きなさい。\n\n"
"### 指示:\n<image>\n"
"この写真はどこで撮影されたものですか?\n\n"
"### 応答:\n"
)
ホワイトボードのメモ、スライドのスクリーンショット、看板の写真など、日本語が含まれる画像で試してみると面白い結果が得られます。
MacBook Air(CPU)で動かす場合の注意
GPU非搭載のMacBook AirでもCPUモードで実行できますが、推論にかなりの時間がかかります。2Bモデルでも1回の推論に数分〜十数分、8Bモデルではさらに長くかかります。手軽に試したい場合はGoogle Colab(GPU付き)の利用を推奨します。
モデルサイズの選び方
| モデル | パラメータ数 | VRAM目安 | 向いている用途 |
|---|---|---|---|
| Asagi-2B | 20億 | 約9GB | お試し・軽量な用途・Colab無料枠 |
| Asagi-4B | 40億 | 約15GB | バランス型・日常的な画像説明 |
| Asagi-8B | 80億 | 約21GB | より詳細な説明・質問応答 |
| Asagi-14B | 142億 | 約30GB | 最高精度・研究用途 |
Google Colabで試す場合、無料枠のT4 GPU(VRAM 16GB)なら2Bまたは4Bモデルが動作します。L4 GPU以上なら8Bモデルも利用可能です。
ベンチマーク結果
日本語VLMの主要ベンチマークでの比較です。
| モデル | LMサイズ | Heron-Bench | JA-VLM-Bench (ROUGE-L) | JA-VG-VQA (ROUGE-L) |
|---|---|---|---|---|
| Asagi-14B | 13B | 55.8 | 50.8 | 56.8 |
| VILA-jp | 13B | 57.2 | 52.3 | 16.2 |
| Asagi-8B | 7.2B | 54.7 | 49.4 | 56.4 |
| GPT-4o | - | 87.6 | 37.6 | 12.1 |
Asagi-14Bは JA-VG-VQA(日本語の視覚的質問応答)で最高スコアを記録しており、日本語での画像理解に強みがあることがわかります。一方、Heron-BenchではGPT-4oに大きく差をつけられており、汎用的な画像理解ではまだ発展途上です。
他のマルチモーダルモデルとの比較
画像内の文字認識に使えるモデルは他にもあります。
| モデル | 開発元 | 特徴 | 日本語対応 |
|---|---|---|---|
| Asagi | 東京大学 | 日本語特化・オープン・合成データ活用 | 特化 |
| Phi-4 | Microsoft | 軽量で高性能・画像内文字認識に強い | 多言語対応 |
| Ovis2 | Alibaba | 画像理解全般に高精度 | 多言語対応 |
| GPT-4o | OpenAI | 最高水準の汎用性能 | 多言語対応 |
| Sarashina2-Vision | SB Intuitions | 日本語特化の視覚言語モデル | 特化 |
| NABLA-VL | 日本発 | 日本語大規模VLM | 特化 |
Asagiの独自のポジションは、「日本語に特化」かつ「オープンソース(Apache-2.0)」かつ「GPT-4の出力を使わずに学習」している点です。商用利用時のライセンスリスクがなく、自社環境でのローカル実行が可能です。
活用アイデア
1. 画像の日本語キャプション生成
商品写真やイベント写真を入力して、日本語の説明文を自動生成。WebサイトのALTテキストやSNS投稿文の下書きに活用できます。
2. スライド・資料の要約
プレゼン資料のスクリーンショットを入力して、内容の要約を生成。会議の振り返りや議事録の補助に使えます。
3. 従来OCRとの組み合わせ
Mistral OCRやNDLOCR-Liteで文字を正確に抽出した後、Asagiで画像全体の文脈を補足する、というパイプラインも考えられます。
画像 → OCR(正確なテキスト抽出)→ Asagi(文脈理解・要約)
4. 看板・標識の読み取りと説明
街中の看板や案内板の写真を入力して、「何が書いてあるか」だけでなく「何のための看板か」まで説明させることができます。
注意点と制限事項
- Asagiは研究段階のモデルであり、安全性のチューニング(アラインメント)は行われていません
- 画像内の文字の「正確な転記」は苦手です。1文字単位の精度が求められる場面では、専用のOCRツールを使いましょう
- Hugging Faceでモデルをダウンロードするには、利用条件への同意が必要です
- 14Bモデルの実行には30GB以上のVRAMが必要です
まとめ
| ポイント | 内容 |
|---|---|
| モデル名 | Asagi(2B / 4B / 8B / 14B) |
| 開発元 | 東京大学 原田・黒瀬・椋田研究室 |
| 特徴 | 日本語特化のオープンVLM |
| ライセンス | Apache-2.0(商用利用可) |
| 学習データ | 約2,000万件(合成データ中心、GPT-4不使用) |
| 得意分野 | 日本語での画像説明・質問応答 |
| 苦手分野 | 1文字単位の正確なOCR |
| 実行環境 | GPU必須(2BモデルならVRAM 9GBから) |
Asagiは、「画像を見せたら日本語で説明してくれるAI」として、従来のOCRとは異なる価値を持つモデルです。オープンソースで商用利用可能なため、自社サービスへの組み込みや研究開発に活用しやすいのが大きな魅力です。まずは2Bモデルで手元の画像を試してみてください。
関連記事
- Mistral OCR 3でPDF・画像を高精度テキスト化する方法
- 国立国会図書館が作った無料OCR「NDLOCR-Lite」をレビュー
- PaddleOCR・Tesseractで印刷文字はどこまで読める?
AI導入でお困りですか?
「自社の画像データを日本語で分析したい」「OCRとマルチモーダルAIの使い分けがわからない」そんなお悩みはありませんか?
AI DARUMAでは、画像認識やOCRを活用した業務効率化のご相談を承っています。お気軽にお問い合わせください。
〒723-0062 広島県三原市本町 1丁目7-29 2階 コワーキングスペースarica内