ローカルLLMでマルチモーダルAI|画像認識・OCRをオフラインで実現する方法

kento_morota 12分で読めます

「社内の書類を画像ごとAIに読み取らせたいが、クラウドに送るのはセキュリティ上不安…」。そんな悩みを抱える中小企業のIT担当者や経営者の方は多いのではないでしょうか。

近年、テキストだけでなく画像や音声も理解できるマルチモーダルAIが急速に進化しています。しかもその一部は、自社のPCやサーバー上で完全オフラインで動作させることが可能です。本記事では、ローカル環境でマルチモーダルAIを構築し、画像認識やOCRをセキュアに実現する方法を、具体的な手順とともに解説します。

マルチモーダルAIとは?テキスト以外も理解するLLMの進化

マルチモーダルAIとは、テキスト・画像・音声・動画など複数の情報形式(モダリティ)を同時に処理できるAIのことです。従来のLLM(大規模言語モデル)はテキストの入出力のみでしたが、マルチモーダル対応モデルでは画像を入力として受け取り、その内容をテキストで説明したり、質問に回答したりできます。

マルチモーダルAIが中小企業にもたらすメリット

中小企業の現場では、画像やスキャン文書を扱う場面が数多くあります。マルチモーダルAIを活用すれば、以下のような業務を効率化できます。

  • 紙の請求書・領収書の読み取り:スキャン画像からテキストを抽出し、金額や日付を自動で整理
  • 製品検品の補助:製品写真から外観の異常を検出・報告
  • 名刺のデジタル化:名刺画像から氏名・会社名・連絡先を自動で構造化データに変換
  • 図面や仕様書の解析:技術図面の内容を説明させたり、特定の情報を抽出

これらをクラウドに送信せず、自社内で完結できるのがローカルLLMによるマルチモーダルAIの大きな強みです。ローカルLLMのセキュリティとデータ保護の観点からも、機密文書の処理に最適です。

ローカルで動作するマルチモーダル対応モデル一覧

2026年現在、ローカル環境で動作可能なマルチモーダル対応LLMは複数存在します。代表的なモデルを比較してみましょう。

モデル名 パラメータ数 対応モダリティ 必要VRAM目安 日本語対応
LLaVA 1.6 7B / 13B テキスト+画像 6GB〜10GB △(英語中心)
Gemma 3 4B / 12B / 27B テキスト+画像 4GB〜20GB
Qwen2.5-VL 3B / 7B / 72B テキスト+画像+動画 4GB〜48GB
LLaMA 4 Scout 17B(MoE) テキスト+画像 12GB〜
MiniCPM-V 3B / 8B テキスト+画像+OCR 3GB〜8GB

日本語の文書処理を重視する場合は、Qwen系モデルGemma 3が特におすすめです。限られたVRAMで運用したい場合は、MiniCPM-Vのような軽量モデルが適しています。

モデル選定のポイント

マルチモーダルモデルを選ぶ際には、以下の3点を確認しましょう。

  • 対応解像度:高解像度の画像を処理できるモデルほどOCR精度が向上しますが、その分VRAMも多く消費します
  • 日本語OCR精度:英語では高精度でも、日本語(特に縦書きや手書き)への対応はモデルによって差があります
  • 量子化対応量子化によってモデルサイズを削減し、少ないVRAMでも動作させられるかがカギです

必要なハードウェア構成と事前準備

マルチモーダルAIをローカルで動作させるには、テキスト専用モデルよりもやや高めのスペックが求められます。画像処理が加わるためです。

推奨スペック

用途 GPU VRAM RAM ストレージ
軽量モデル(3B〜7B)で検証 8GB以上 16GB以上 SSD 50GB以上
実用レベル(7B〜13B) 12GB〜16GB 32GB以上 SSD 100GB以上
高精度運用(27B以上) 24GB以上 64GB以上 SSD 200GB以上

GPUの選定について詳しくはローカルLLMのPC・GPUスペックガイドを参照してください。NVIDIA GeForce RTX 4060 Ti(16GB)であれば、多くの7Bクラスのマルチモーダルモデルを快適に動作させられます。

ソフトウェアの事前準備

ローカルでマルチモーダルモデルを動かすためのツールとして、以下が代表的です。

Ollamaでマルチモーダルモデルを動かす手順

最も手軽にマルチモーダルAIをローカルで試せるのがOllamaです。以下では、Gemma 3の12Bモデルを例に解説します。

ステップ1:モデルのダウンロード

ターミナルを開き、以下のコマンドを実行します。

ollama pull gemma3:12b

ダウンロードサイズは約8GB程度です。社内ネットワークの帯域に応じて数分〜数十分かかります。

ステップ2:画像を入力して対話する

Ollamaでは、画像ファイルのパスを指定して質問できます。

ollama run gemma3:12b "この画像に書かれている内容を読み取ってください" ./invoice_sample.png

このコマンドで、指定した画像の内容をAIが解析し、テキストとして出力します。請求書であれば、金額・日付・宛先などを抽出してくれます。

ステップ3:Open WebUIで使いやすくする

コマンドラインでの操作に慣れていない社員でも使えるよう、Open WebUIを導入すると便利です。ブラウザ上でチャット形式のインターフェースから画像をドラッグ&ドロップで送信し、AIの回答を受け取れます。

docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway \
  -v open-webui:/app/backend/data \
  --name open-webui ghcr.io/open-webui/open-webui:main

起動後、http://localhost:3000にアクセスし、モデル選択でgemma3:12bを指定すれば、画像付きチャットがすぐに利用できます。

OCR用途での活用:紙の書類をデジタルデータに変換

マルチモーダルLLMの特に有用な活用先が、OCR(光学文字認識)の代替・補助です。従来のOCRツールと比較した場合のメリットを見てみましょう。

従来OCRとマルチモーダルLLMの比較

比較項目 従来型OCR マルチモーダルLLM
文字認識精度 活字は高精度、手書きは低い 手書きも含めて高精度
レイアウト理解 テンプレート設定が必要 自動でレイアウトを判断
出力の柔軟性 テキスト抽出のみ 要約・分類・翻訳も同時に可能
セットアップ 商用ライセンスが必要な場合あり オープンソースで無料
処理速度 高速(CPU処理可能) GPU推奨(やや遅い場合あり)

特に注目したいのは出力の柔軟性です。従来のOCRは画像中の文字をそのまま抽出するだけですが、マルチモーダルLLMなら「この請求書の合計金額と支払期日だけを抽出してJSON形式で返してください」といった指示が可能です。

OCRの実践例:請求書からの情報抽出

以下のようなプロンプトで、構造化されたデータを取得できます。

以下の請求書画像から、次の項目を抽出してJSON形式で出力してください:
- 請求日
- 請求元会社名
- 請求先会社名
- 合計金額(税込)
- 支払期限
- 主な品目(上位3つ)

このアプローチにより、従来は手作業で行っていたデータ入力を大幅に効率化できます。RAG(検索拡張生成)と組み合わせれば、過去の取引データと照合しながら処理を行うことも可能です。

画像認識の業務活用シーン

OCR以外にも、マルチモーダルAIの画像認識機能は中小企業のさまざまな場面で活用できます。

製造業での品質検査

製品の外観検査にマルチモーダルLLMを活用する例が増えています。カメラで撮影した製品画像をAIに送り、キズ・変色・形状の異常などを検出させます。専用の画像認識システムほどの精度ではありませんが、目視検査の補助として有効です。

不動産・建設業での現場記録

建設現場の写真から進捗状況を文章化したり、物件写真から特徴を自動で記述させたりする活用が可能です。報告書作成の時間を大幅に短縮できます。

小売業での商品管理

商品棚の写真から陳列状況を分析させたり、商品パッケージから情報を読み取ってデータベースに登録する用途に使えます。

これらの活用事例について、より詳しくはローカルLLMのビジネス活用事例もご覧ください。

APIサーバーとして構築し社内システムに統合する

マルチモーダルAIを本格的に業務に組み込むなら、APIサーバーとして構築し、既存の社内システムから呼び出せるようにするのが効果的です。

OllamaのAPIを活用する方法

OllamaはデフォルトでローカルにAPIサーバーを起動します。画像付きリクエストもAPI経由で送信できます。

curl http://localhost:11434/api/generate -d '{
  "model": "gemma3:12b",
  "prompt": "この画像の内容を説明してください",
  "images": ["base64エンコードされた画像データ"],
  "stream": false
}'

画像はBase64エンコードして送信します。これにより、Pythonスクリプトやバッチ処理から自動的に画像を処理するワークフローを構築できます。

Pythonでの自動処理スクリプト例

import requests
import base64
import json
import glob

def process_invoice(image_path):
    with open(image_path, "rb") as f:
        image_data = base64.b64encode(f.read()).decode("utf-8")

    response = requests.post("http://localhost:11434/api/generate", json={
        "model": "gemma3:12b",
        "prompt": "この請求書から請求日、金額、請求元を抽出してJSONで返してください",
        "images": [image_data],
        "stream": False
    })
    return json.loads(response.json()["response"])

# フォルダ内の全画像を一括処理
for img in glob.glob("./invoices/*.png"):
    result = process_invoice(img)
    print(f"{img}: {result}")

このようなスクリプトを定期実行することで、スキャンした請求書を自動でデータ化する仕組みを構築できます。

導入時の注意点とトラブルシューティング

マルチモーダルAIをローカルで運用する際に、よく遭遇する問題と対処法を整理します。

VRAMが不足する場合の対処

画像処理はテキスト処理よりもVRAMを多く消費します。不足する場合は以下を試してください。

  • 量子化モデルを使用する:Q4_K_M程度の量子化であれば、精度を大きく損なわずVRAMを40〜50%削減できます
  • 入力画像の解像度を下げる:必要以上に高解像度の画像を送ると処理が重くなります。OCR用途なら300dpi程度で十分です
  • より小さいモデルを選択する:7Bが厳しければ3Bクラスのモデルを検討しましょう

日本語の認識精度が低い場合

日本語OCRの精度が期待通りでない場合は、以下を検討してください。

  • プロンプトを日本語で記述する:「日本語で回答してください」と明示するだけで精度が向上することがあります
  • 日本語学習データの多いモデルに変更する:Qwen2.5-VLは中国語・日本語の文書処理に強みがあります
  • 前処理で画像を最適化する:コントラスト調整、傾き補正、ノイズ除去などの前処理で認識精度が向上します

処理速度が遅い場合

マルチモーダル処理はテキスト専用モデルと比べて推論に時間がかかります。ローカルLLMの高速化テクニックも参考にしつつ、以下の対策を検討してください。

  • バッチ処理で夜間に一括実行する
  • Flash Attentionなどの最適化技術を有効にする
  • 画像のリサイズで処理負荷を軽減する

まとめ:マルチモーダルAIで紙業務をDX化しよう

ローカルLLMによるマルチモーダルAIは、画像認識やOCRをオフラインで実現できる、中小企業にとって非常に実用的な技術です。機密性の高い書類をクラウドに送ることなく、社内で完結したAI処理を実現できます。

導入のステップをまとめると以下のとおりです。

  1. 処理したい業務と画像の種類を明確にする
  2. 必要なスペックを確認し、適切なモデルを選定する
  3. Ollamaなどのツールでまず小規模に検証する
  4. Open WebUIなどで社内ユーザーが使いやすい環境を整備する
  5. API連携で既存の業務システムに統合する

まずは手元にある請求書や名刺のスキャン画像を1枚、ローカルのマルチモーダルモデルに読み取らせてみてください。その精度と可能性に驚かれるはずです。ローカルLLMの基礎知識から学びたい方は、あわせてそちらもご参照ください。

#マルチモーダル#画像認識#ローカルLLM
共有:
無料メルマガ

週1回、最新の技術記事をお届け

AI・クラウド・開発の最新記事を毎週月曜にメールでお届けします。登録は無料、いつでも解除できます。

プライバシーポリシーに基づき管理します

AI活用のヒントをお探しですか?お気軽にご相談ください。

まずは話だけ聞いてもらう