見出し画像

レシート画像をAPIで取得、Tableauでデータ可視化

システム概要

スーパーマーケットやコンビニで売っている商品のキャンペーンで、購入者がレシート画像をアップロードするとキャンペーンに応募できるWebシステムのデータを、Tableau(データ可視化ツール)で可視化するデータ基盤を構築しました。


システム構成図


① キャンペーンサイトで応募

商品を購入したレシートをキャンペーンサイトにアップしてアンケートに答えると、ポイントがもらえる仕組みです。
応募プラットフォームはSPIRALという、キャンペーン応募サイトを構築できる開発プラットフォームを利用しました。


想定応募数は1000件/1日、2週間で10000件を超えるとキャンペーン終了になります。
SPIRALには写真のアップロードとデータ可視化が可能ですが、アップロードされた写真の整合性チェックや本格的なデータ分析ができるUIはありません。

人が1件1件、目視で確認しても10000件ならできなくはないのですが、できるだけ効率化したいので、今回はGoogleの画像認識技術CloudVisionAPIを利用しました。

また、レシートデータとアンケートデータを組み合わせて、GoogleBigQueryにデータベースを構築し、Tableauでリアルタイムで可視化が可能なダッシュボードを作成しました。

これにより、スーパーやコンビニのPOSデータに近いデータを、キャンペーン主催者(メーカー)が集めることができます。


② 応募データをAPIで保存

レシート応募&アンケートデータをAPIで自動収集して、GoogleBigQueryに保存しています。

・レシート画像をデータ活用

GoogleCloudVisionAPIでレシートの文字列をデータ化することができます。
1000件/1.5$ (2023年3月時点)


下の画像のようなキレイなレシートだと読取が容易なのですが、画像が暗かったり、くしゃくしゃになっていたりすると上手く読み取れない場合があります。

レシート文字の中でも、「購入日時」と「店舗電話番号」は読取精度が高いため、こちらをデータベース化して店舗マスターを作成し、都道府県や小売業態別に集計することが可能となりました。

レシート画像


レシートから抽出された文字列

FamilyMart
一の橋店
東京都港区麻布十番1-2-10
電話:03-3560-3895
領収証
2016年9月29日(木)12:45
十六茶¥151
値引き-22
◎吊るしベーコン¥198
◎茶碗蒸¥133
(商品合計¥482)
(值合計-22)
小計¥460
合計¥460
(内消費稅等¥34)
お預り¥510
お釣¥50
2-4986No.022


・不正防止対策

ごくまれに不正を考えてしまう人がいるようで同じレシートの写真を使う人がいました。
全く同じ写真を流用すれば判定できるのですが、1枚のレシートを別の角度から写真を撮ってアップする亡者もいました。

対策として、複数回応募している人の画像データを目視で確認することにしました。複数回応募しているかどうかは、Tableauで可視化しました。


③ 応募データをTableauで可視化

②で取得した応募&アンケートデータをTableauで可視化しました。
GoogleCloudFunctionsの日時で処理しているため、データは毎日自動で更新されます。

Tableauで確認できる内容としては、応募人数や応募数、日付別日時別の応募数、応募者ごとの応募回数、アンケート結果になります。


また、Tableau上からワンクリックでレシート画像を閲覧できるように、明細データに画像リンクのURLをつけました。


アンケートに属性(性別や年齢)を追加することで、より利用価値が高いデータを収集することが可能です。
また、キャンペーンを複数回実施することでリピーターが増えたり、ほかのどの商品と一緒に購入されているか等のデータ分析も可能になってきます。

この記事が気に入ったらサポートをしてみませんか?