AIでレシート管理を自動化 — 撮影→OCR→家計簿
約5分で読めます
AIでレシート管理を自動化 — 撮影→OCR→家計簿
レシートをスマホで撮影するだけで、品目・金額・日付を自動抽出し、CSVで家計簿に反映するパイプラインを構築する。
全体のパイプライン
撮影 → 画像アップロード → Claude Vision で解析 → JSON抽出 → CSV追記 → 月次集計
Step 1: 画像からデータを抽出する
Claude Visionはレシート画像を直接読み取れる。OCRツールを別途用意する必要がない。
import anthropic, base64, json
def extract_receipt(image_path: str) -> dict:
client = anthropic.Anthropic()
with open(image_path, "rb") as f:
image_data = base64.standard_b64encode(f.read()).decode("utf-8")
response = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=1024,
messages=[{
"role": "user",
"content": [
{"type": "image", "source": {
"type": "base64",
"media_type": "image/jpeg",
"data": image_data
}},
{"type": "text", "text":
"このレシートから以下をJSON形式で抽出せよ: "
"store(店名), date(YYYY-MM-DD), items(品目と金額の配列), "
"total(合計金額), category(食費/日用品/交通費/その他)"
}
]
}]
)
return json.loads(response.content[0].text)
Step 2: CSVに追記する
import csv
def append_to_csv(data: dict, csv_path: str = "expenses.csv"):
with open(csv_path, "a", newline="", encoding="utf-8") as f:
writer = csv.writer(f)
for item in data["items"]:
writer.writerow([
data["date"], data["store"],
item["name"], item["price"], data["category"]
])
Step 3: 月次集計
import pandas as pd
def monthly_summary(csv_path: str = "expenses.csv"):
df = pd.read_csv(csv_path, names=["date","store","item","price","category"])
df["month"] = pd.to_datetime(df["date"]).dt.to_period("M")
return df.groupby(["month", "category"])["price"].sum()
精度を上げるコツ
- 画像は正面から撮る — 斜めだと文字認識精度が落ちる
- レシート全体を写す — 合計金額が切れると検証できない
- 抽出結果をクロスチェック — items合計とtotalの一致を自動検証する
対応可能なレシートの種類
| 種類 | 精度 | 備考 |
|---|---|---|
| コンビニ・スーパー | 95%以上 | フォーマットが統一されており高精度 |
| 飲食店 | 90%程度 | 手書きメモが混在する場合あり |
| 交通系ICカード明細 | 85%程度 | 小さい文字が多く解像度依存 |
まとめ
Claude Visionを使えば、専用OCRサービスなしでレシート管理を完全自動化できる。撮影→JSON抽出→CSV追記の3ステップで、手入力ゼロの家計簿が実現する。
関連記事
A
Agentive 編集部
AIエージェントを実際に使い倒す個人開発者。サイト制作の自動化を実践しながら、その知見を発信しています。