非構造化データを使ったレコメンド生成
Inspiration(インスピレーション)
日々の食事選びで「美味しくて、かつ経済的な選択」を行うことの難しさに直面し、そこからインスピレーションを得ました。特に、好みのメニューを思いついても、それを最も安く作る方法を見つけるのは時間がかかります。そこで、AIの力を借りて、チラシのような非構造化データから有用な情報を抽出し、ユーザーの希望するメニューに対して最適な食材と購入場所をレコメンドするシステムを作ろうと考えました。
What it does(何ができるか)
このシステムは以下の機能を提供します:
- ウェブサイト上でユーザーが食べたいメニューを入力
- 入力されたメニューに基づき、以下の情報を提供:
- レシピに適した食材のリスト
- それぞれの食材の最安値と購入できる店舗
- 経済的にレシピを作るためのアドバイス
ユーザーは、好みのメニューを入力するだけで、効率的に食材を購入する方法を知ることができます。
How we built it(どのように作ったか)
データ収集と保存:
- 複数の食料品店のチラシをJPG形式で収集し、Google Cloud Storage (GCS) に格納
データ処理パイプライン:
- GCS上のチラシ画像データをBigQueryのオブジェクトテーブルとして定義
- Vertex AI上の Gemini Pro Vision モデルを使用して、チラシ画像から商品名と価格を抽出
- 抽出された情報をBigQueryに構造化データとして格納
バックエンド処理:
- Google Cloud Functions を使用し、Python で実装
- ユーザー入力を受け取り、BigQuery からデータを取得
- Vertex AI 上の Gemini モデルを利用して、食材のレコメンデーションを生成
フロントエンド:
- シンプルで使いやすいウェブインターフェースを設計
- ユーザーがメニューを入力し、結果を閲覧できるUI実装
Challenges we ran into(直面した課題)
画像データからの情報抽出: チラシ画像から正確に商品名と価格を抽出することが困難でした。様々なレイアウトやフォントに対応する必要がありました。
AIモデルの調整: Gemini Pro Vision モデルのプロンプトを最適化し、正確な情報抽出を実現するのに試行錯誤が必要でした。
Accomplishments that we're proud of(誇れる成果)
非構造化データ(チラシ画像)から有用な構造化データを抽出し、実用的なサービスを構築できました。
複数のGoogle Cloudサービス(GCS、BigQuery、Vertex AI、Cloud Functions)を統合し、効率的なデータパイプラインを構築しました。
AIを活用して、画像認識からパーソナライズされたレコメンデーションまでを一貫して行うシステムを実現しました。
ユーザーフレンドリーなインターフェースで、複雑なバックエンド処理を簡単に利用できるようにしました。
What we learned(学んだこと)
非構造化データ(画像)から構造化データへの変換技術と、そのスケーラブルな処理方法
Gemini Pro Vision モデルを使用した高度な画像認識と情報抽出技術
BigQueryを活用した大規模データの効率的な管理と分析手法
クラウドサービスを組み合わせた複雑なシステムアーキテクチャの設計と実装
AIモデルのプロンプトエンジニアリングの重要性と最適化技術
What's next for 非構造化データを使ったレコメンド生成
データソースの拡大: チラシ以外の情報源(ウェブサイト、SNSなど)からも商品情報を収集し、より包括的なデータベースを構築
リアルタイム更新: 店舗の在庫情報とリアルタイムに連携し、より正確なレコメンデーションを提供
個人化の強化: ユーザーの過去の選択や好みを学習し、より精度の高いパーソナライズされたレコメンデーションを実現
多言語対応: 様々な言語のチラシや入力に対応し、グローバルな展開を目指す
モバイルアプリ開発: スマートフォンのカメラでチラシを撮影すると即座に情報が更新される機能を実装
環境への配慮: 食品ロス削減につながるレコメンデーション機能の追加
このプロジェクトを通じて、私たちは非構造化データの持つ可能性と、それを活用したAIサービスの価値を実感しました。技術の力で日常生活の小さな課題を解決できることを示せたと考えています。今後も、ユーザーの声に耳を傾けながら、より革新的で有用なサービスへと進化させていきたいと考えています。
Built With
- cloudrun
- google-cloud
- python

Log in or sign up for Devpost to join the conversation.