PROJECT 03 / RECEIPT MANAGEMENT API

レシートを撮影すれば、
家計簿の下ごしらえが終わる。

財布にレシートを溜めて、月末にまとめて家計簿アプリに手入力するのが 続かなかったので、iPhoneでレシートを撮影してOCRしたテキストを 送るだけで、店舗名・商品・金額をAIが自動で整理してくれるAPIを作りました。 データ解析はすべてローカルLLMで処理するので、家計の中身が 外部のAIサービスに渡ることもありません。

STATUS
Documentation(ログインデモなし)
構成
iPhoneアプリ(OCR)+ API + 管理画面
ROLE
個人開発(設計・実装・運用すべて担当)
レシート管理APIのシステム構成図

システム概要図(iPhoneアプリ → Laravel APIサーバー → ローカルLLM解析 → MySQL保存)

01 / BACKGROUND

課題設定

家計簿はつけたい、でもレシートをその場でアプリに手打ちするのは 面倒で続かない。かといって溜め込むと、月末にまとめて入力するのが 苦痛になって結局挫折する…というのを何度か繰り返していました。 「レシートを撮った瞬間にデータ化されていて、家計簿アプリを 開いたときにはもう整理済み」という状態を目指すことにしました。

また、家計の中身は生活が丸わかりになる情報なので、 外部のクラウドAIサービスに送るのは気が引けるところがありました。 そこで、解析にはローカルで動くAIモデルを使い、 データも自分のサーバーの中だけで完結させる構成にしています。

02 / ARCHITECTURE

設計・アーキテクチャ

全体の流れ
iPhoneアプリでレシートを撮影してOCR(文字認識)にかけ、 店舗名・日付・商品・金額などのテキストをAPIサーバーに送信。 サーバー側でAIが内容を整理し、DBに保存したうえで、 アプリからの求めに応じて一覧や集計を返します。
APIサーバー
Laravel 11で構築。受け取ったデータのバリデーションと、 APIキーによるアクセス制御(Sanctum)を行ったうえで、 解析処理をキューに乗せて非同期で流しています。
レシート解析
OCRで読み取った生のテキストを、自宅サーバーで動くローカルLLM (gemma4-e4b、Ollamaで実行)に渡して解析。店舗名の表記ゆれの吸収、 商品名の抽出・整理、金額の集計、支出カテゴリの推定までをAIに任せています。
データの持ち方
レシート単位の情報(店舗名・日付・合計金額など)を持つ receiptsテーブルと、商品明細(商品名・金額・カテゴリ)を 持つitemsテーブルに分けてMySQLへ保存しています。
管理画面
APIキーの発行、支出のメインカテゴリ・サブカテゴリの管理、 Amazonの購入履歴CSVをまとめて取り込む機能などを、 Web管理画面(Receipt API)から行えるようにしています。
03 / TECHNICAL HIGHLIGHTS

技術的な工夫

01

解析はぜんぶ自宅サーバーで完結

クラウドの生成AI APIを使わず、ローカルで動くAIモデルに レシートの解析を任せています。家計の中身が外部に送信されないので、 プライバシー面でも安心して使えます。

02

OCRの荒いテキストをAIが整形

OCR結果は表記ゆれや余計な文字が混ざりがちですが、 それをそのままAIに渡して「店舗名」「商品名」「金額」「カテゴリ」に 仕分けし直してもらうことで、構造化されたデータとして保存しています。

03

Amazonの購入履歴もまとめて取り込み

Amazonの注文履歴からダウンロードしたCSVを読み込んで、 そのままレシートとして登録できる機能を管理画面に用意しました。 ネット通販の購入履歴を、いちいち手入力しなくて済みます。

04

カテゴリを自分の家計に合わせて調整

「食費」「住居費」「交通費」といったメインカテゴリと、 その下にぶら下がる「スーパー」「コンビニ」などのサブカテゴリを、 管理画面から自由に追加・編集できるようにしています。

Amazon購入履歴CSVの読み込み画面

Amazon購入履歴CSVの読み込み画面

APIキー・カテゴリ管理画面

APIキー・カテゴリ・サブカテゴリの管理画面

04 / NEXT STEPS

今後の展望

iPhoneアプリ側と連携し、グラフ化や集計などにも対応できています。 今後はiOSのネイティブアプリ化も視野に入れ、「撮って終わり」ではなく 「見て気づける」ところまで育てていきたいと思っています。

05 / STACK

使用技術

Laravel 11 PHP 8.x MySQL 8.x Laravel Sanctum Ollama gemma4-e4b(ローカルLLM)
NEXT PROJECT
領収書管理アプリ(GAS)
詳細を見る