はじめに:従来OCRの限界とVision LLMのブレイクスルー
TesseractなどのオープンソースOCRや従来のクラウドOCRでは、「結合された複雑な表」「手書きの修正注記」「レイアウトの不規則な領収書」のパース時に順序が崩れる問題がありました。
最新の Gemini 3.7 Flash の視覚認識(Vision)と構造化出力を組み合わせることで、画像から直接テーブルやキー・バリューの関係性を理解し、一撃で綺麗なJSONに変換可能です。
1. 帳票OCRパイプラインのコード例
import os
import google.generativeai as genai
from PIL import Image
genai.configure(api_key=os.environ["GEMINI_API_KEY"])
model = genai.GenerativeModel("gemini-3.7-flash")
# 画像の読み込み
img = Image.open("invoice_sample.png")
prompt = """
この請求書画像から以下の情報を正確に読み取り、JSON形式でのみ出力してください。
- 請求元会社名 (issuer_name)
- 登録番号 (invoice_number, Tから始まる13桁)
- 請求金額合計 (total_amount_yen)
- 明細行リスト (items: [ { name, quantity, unit_price, subtotal } ])
"""
response = model.generate_content(
[img, prompt],
generation_config={"response_mime_type": "application/json"}
)
print(response.text)
1枚あたり約0.3円未満の極めて安価なコストで、人間が入力したかのような高精度な帳票電子化を実現できます。