はじめに
最近公開された MiniCPM-V-4は、モバイルでも快適に動く軽量なマルチモーダルAIモデルです。画像とテキストを同時に扱えるため、ポスターやチャート、表の解析に強いとされています。
今回は Google Colab 上で動かし、実際に「京都市の月間降水量」の折れ線グラフを読み取らせてみました。
セットアップ
Colab では以下のようにセットアップしました。
・torch
, transformers
, accelerate
をインストール
・openbmb/MiniCPM-V-4
モデルを読み込み(SDPAで動作)
・画像(PNG)をアップロードしてモデルに解析させる
プロンプトは「要約・軸・単位・傾向・主要数値・ビジネス上の示唆」を出力するように指定しました。
実際の解析結果
今回解析させたのはこちらのグラフ
京都市の降水量グラフ(1月〜12月)を読み込ませたところ、モデルは以下のように答えてくれました。
1.要約
1〜2月は少なく、6〜7月が最も多い。8〜9月で一時的に減少し、10〜12月にかけて減少傾向。
2.図表の種類と軸
折線グラフ、X軸は月、Y軸は降水量(mm)、単位はミリメートル。
3.傾向
冬は少雨、梅雨の6月にピーク(約230mm)、夏に減少、秋の9月に再び増加後、冬にかけて下降。
4.主要数値
1月:約50mm、2月:約70mm、6月:約230mm、9月:約200mm、12月:約45mm。
検証と感想
実際のグラフと見比べると、傾向はほぼ正確に捉えていました。
数値も大きなズレはなく、凡例・軸・単位など基本的な情報も正しく抽出できています。
少し粗い部分(1〜2月をまとめて「50mm」としたなど)はありましたが、追加プロンプトで補正できそうです。
特に良かったのは、「梅雨のピーク → 夏に減少 → 秋に再上昇 → 冬に低下」という全体像を自然に説明できたこと。これはレポート作成や授業の資料まとめなどに直結する力だと感じました。
手順
1 ランタイム準備
!pip -q install "torch>=2.3" "torchvision>=0.18" --index-url https://download.pytorch.org/whl/cu121
!pip -q install "transformers>=4.43" accelerate pillow sentencepiece einops
2 モデル読込(BF16 / SDPA)
from PIL import Image
import torch
from transformers import AutoModel, AutoTokenizer
MODEL_ID = "openbmb/MiniCPM-V-4"
device = "cuda" if torch.cuda.is_available() else "cpu"
model = AutoModel.from_pretrained(
MODEL_ID,
trust_remote_code=True,
attn_implementation="sdpa", # Colab(T4)向けにSDPAを指定
torch_dtype=torch.bfloat16
).eval().to(device)
tokenizer = AutoTokenizer.from_pretrained(MODEL_ID, trust_remote_code=True)
図表画像をアップロード
from google.colab import files
up = files.upload() # 手元のPNG/JPGを選択
img_path = list(up.keys())[0]
image = Image.open(img_path).convert("RGB")
image
「図表読み取り」プロンプト実行(日本語最適化テンプレ)
SYSTEM_PROMPT = (
"あなたは厳密な図表アナリストです。画像から読み取れる範囲のみで答え、"
"推測や外部知識の混入は避けてください。数値や単位は可能な限り明示します。"
)
USER_PROMPT = (
"この図表を日本語で解析してください。\n"
"1) 30〜60字で要約(箇条書き3点)\n"
"2) 図表の種類、X/Y軸ラベル、単位、凡例\n"
"3) データの傾向(増減・ピーク・季節性・外れ値)\n"
"4) 主要な数値(読み取れる範囲で具体値)\n"
"※ 写っていない情報は『不明』と明記"
)
msgs = [
{"role": "system", "content": [SYSTEM_PROMPT]},
{"role": "user", "content": [image, USER_PROMPT]},
]
answer = model.chat(msgs=msgs, image=image, tokenizer=tokenizer)
print(answer)
MiniCPM-V-4 のおすすめ用途
今回の実験を通して見えてきた、このモデルのおすすめ活用シーンを整理しました。
📰*** ビジネスレポートや研究論文の図表解析***
グラフや表を読み取って要点を抽出できるため、資料作成の補助に役立ちます。
📚 教育用途(授業や学習補助)
統計グラフや理科・地理のチャートを生徒向けに分かりやすく解説。学習教材の自動生成にも向いています。
📷 OCR+要約
ポスターやチラシの写真を読み取り、テキスト化+要点要約。外出先での情報整理に便利。
📊 図表比較・トレンド分析
複数のグラフを入力して「違いを3点挙げて」といった比較解析も可能。市場調査や報告資料作りに応用できます。
📱 モバイル端末での活用
iPhoneやiPadでも軽快に動く設計なので、現場でのデータ確認やオフライン利用にも強い。
まとめ
・MiniCPM-V-4は小型ながら図表解析に強く、グラフの要点をしっかり拾える。
・Colab 上でも軽快に動作し、OCRや表・グラフ解析にすぐ使える。
・ビジネスレポート、教育現場、モバイルアシスタントなど、多彩な場面で実用性が高い。
フリーランスエンジニアです。
お仕事のご相談こちらまで
rockyshikoku@gmail.com
Core MLを使ったアプリを作っています。
機械学習関連の情報を発信しています。