地に足の付いた現実的な技術選定から魔力のある体験を得るー「AIレシート読み取り機能」のケーススタディのトップ画像

地に足の付いた現実的な技術選定から魔力のある体験を得るー「AIレシート読み取り機能」のケーススタディ

投稿日時:
moznionのアイコン

株式会社スマートバンク / ソフトウェアエンジニア

moznion

Xアカウントリンク

本記事では、2025年5月14日に開催されたオンラインイベント「【技術選定を突き詰める】Online Conferenc​​e 2025」内のセッション「地に足の付いた現実的な技術選定から魔力のある体験を得るー『AIレシート読み取り機能』のケーススタディ」の内容をお届けします。同セッションでは、スマートバンク ソフトウェアエンジニアのmoznion(@moznion)さんに、「AIレシート読み取り機能」の開発における技術選定について、各選択肢の長所と短所に触れながらお話しいただきました。ぜひ本編のアーカイブ動画とあわせてご覧ください。


moznionさん:スマートバンクでソフトウェアエンジニアを務めるmoznionです。当社は、家計簿プリペイドカード事業を展開しており、ユーザーはVISAのプリペイドカードで決済すると、支出が自動的に記録され、手軽に家計簿がつけられます。「ワンバンク マイカード」のほか、パートナーとの家計管理が可能な「ワンバンク ペアカード」、親子で支払履歴を共有できる「ワンバンク ジュニアカード」も展開しています。われわれはAI家計簿アプリ「ワンバンク」を通じて、より簡単に家計管理を行い、お金の使い方を改善できる機能群を提供しています。

不可欠だが実装は難しい、レシート読み取り機能

今回は、AIレシート読み取り機能についてご紹介します。この機能では、スマートフォンでレシートの表面を読み取り、支出情報を記録するものです。同機能は生成AI技術を活用し、従来の方式と比較して約3倍の精度を実現しています。

レシート読み取り機能の開発における前提をご説明します。レシートは家計管理において重要かつ一般的なツールであり、家計管理に関する多くの入門書でもまずレシートを集めて支出状況を把握することが推奨されています。そのため、家計簿アプリを提供するならば、レシート読み取り機能は不可欠といえるでしょう。しかし、経験のある方は共感いただけるかもしれませんが、その実装は容易ではありません。

まず、レシート画像やテキストデータ、その内容に対するアノテーションなど、大量の学習データが必要です。そして、それらのデータを用いて深層学習などでモデルを構築する上では、モデルを運用するための環境を用意するとともに、モデルを定期的に更新しなければなりません。加えて、すでに多くの企業がレシート読み取り機能を提供しているため、独自の機能として差別化を図ることは困難です。

「それ、ChatGPTでできますよ」

当初は私もレシート読み取り機能の開発にどちらかというと反対の立場をとっており、なるべく作らないようにしていました。しかしあるとき、当社のアプリエンジニア@_rocknameさんから“それ、ChatGPTでできますよ”と、iOSアプリのプロトタイプが送られてきたのです。

レシート画像を読み込むと、アプリから直接ChatGPTが呼び出され、必要な情報が抽出されて支出情報として記録される仕組みでした。具体的には、レシート内容を光学文字認識(OCR)でテキスト化し、そのテキストをGPT-4oに渡すことで、店舗名、金額、日付などの情報を抽出し、構造化します。レシート全体の情報から支出カテゴリーを推定するタスクも行っていました。

これを見たとき、思わず“できてるじゃん”と言ってしまいました。もちろん、これで完成ではありませんが、LLMによってブレークスルーが起きたといえます。万能ではないものの、ゼロショット学習で7~8割程度の精度が得られたことは、特定の用途においては非常に有効だと感じました。

通常必要となるモデルの学習やLLM自体のファインチューニングが不要でありながら、未知のレシートに対しても一定の汎化性能を発揮できる点も“魔力がある”といえるでしょう。そして何より、当初懸念していたデータ不足という課題をクリアし、大量のレシートデータを事前に用意しなくても開発を始められる点が非常に魅力的でした。

Pros and Consで振り返る、技術選定

ここからは、ChatGPTとアプリが直接連携するプロトタイプを、商用利用に耐え得る形で再設計・実装するための技術選定について解説します。技術選定に絶対的な正解はなく、それぞれの選択肢にはPros and Cons(長所と短所)、トレードオフが存在するという前提をご理解ください。今回は各選択肢のPros and Consを示し、最終的に当社がどのような判断をしたのかを共有できればと考えています。当社のアプリはRuby on Railsで構築されたモノリシックな構成であるため、技術選定ではその点を考慮しています。

失敗できない、初のLLM活用案件

このLLMを活用した機能は、一般的にAIと聞いて連想されるチャットボットや、画像/文章生成といったタスクとは異なります。OCRで読み取った非構造化テキストデータから、特徴的な情報を抽出・構造化することを目的としています。

LLMを組み込んだアプリケーションの開発は、当組織にとって初の試みであり、不確実性の高いプロジェクトでした。初のLLM活用案件だったため、“やっぱり駄目だった”という結果は避けたかったのです。今後、LLMを活用したアプリ開発は必然の流れになると考えており、今回の取り組みがその足かせにならないよう、不確実性を可能な限り低減したいというモチベーションがありました。そこで、不確実性を減らすために以下の2点を意識しました。

1. プロトタイプアプリを開発のベースラインにする

この記事のつづきを読もう
新規登録ログイン

プロフィール