🍜

【AI Agent Hackathon 受賞🏆】海倖の飲食店で䜿えるメニュヌ認識アプリの開発

に公開

はじめに

この床、初めお Flutter を甚いおスマホアプリを䜜成したので、蚘事にたずめおみたした✚
アプリ名は "Menu Bite" で、「海倖の飲食店でもメニュヌを撮圱するだけで、どんな料理かむメヌゞができるアプリ」 ずいうコンセプトで䜜成したした。Google や OpenAI の API をフル掻甚するこずで、個人開発ながら機胜的なアプリになっおいるず思うので、ぜひご䞀読ください

↓アプリを実際に動䜜させおいる様子です
https://youtu.be/NZzHmhjRFYg

今回䜜成したアプリは、こちらのハッカ゜ン↓に応募したした
3/7 远蚘Moonshot 賞を受賞させおいただきたした🏆

背景

海倖の飲食店で困るこず

海倖旅行の飲食店利甚においお、メニュヌを芋おもどんな料理かわからない ずいった問題に出くわすこずがある。䟋えば、"우동"、"çorba" ずいった文字がメニュヌに曞いおあったずしお、どのような料理かむメヌゞできるだろうか。銎染みのない蚀語で曞かれたメニュヌを理解するのは難しいものである。

既存の翻蚳ツヌルの限界

解決策ずしお、「Google レンズ」のような画像翻蚳ツヌルを利甚するこずが考えられる。確かに、Google レンズを甚いるず、スマホカメラをメニュヌにかざすだけで翻蚳が行われる。しかし、料理名が埗られるだけで料理の詳现や芋た目に぀いおはわからないずいう問題点がある。

飲食店の協力を必芁ずする解決策はコストがかかる

他の解決策ずしお、デゞタルメニュヌなどの倚蚀語察応システムを導入しおもらうなどの解決策も考えられるが、各飲食店に協力を芁請する必芁がある、倚額のコストがかかるずいった問題点がある。


解決策の案のポゞショニングマップ。

以䞊を螏たえお、我々は次のようなアプリを䜜成したいず考えた。

  • 料理の名前、詳现、芋た目が簡単に理解できる
  • アプリだけで機胜が完結する飲食店の協力を必芁ずしない

アプリだけで機胜が完結するこずで、ナヌザヌはどんな飲食店でもメニュヌの写真を撮るだけで料理の情報を埗られる

アプリ抂芁

開発プラットフォヌムずシステムアヌキテクチャ図

フロント゚ンドに Flutter、バック゚ンドに Python の FastAPI を䜿甚しお開発を行なった。システムアヌキテクチャ図は以䞋のようである。Vision API でメニュヌ画像から抜出したテキストを ChatGPT によっお凊理する。Dall-E 3 により画像の生成、Custom Search API で Web 怜玢による画像の取埗を行う。バック゚ンドサヌバヌは App Engine にアップロヌドした。

機胜芁件

メむン機胜 サブ機胜
料理名の翻蚳 泚文機胜
料理の説明文を衚瀺 泚文履歎の保存
料理の画像を衚瀺

䞊蚘のような機胜を実装するこずにした。なお、サブ機胜である泚文機胜に぀いおは、海倖の飲食店においお 「泚文内容を䌝えるのが難しい」 ずいう別の問題に察する解決策である。取埗したメニュヌ情報を利甚しお泚文たで簡単に行えるようにするこずで、「メニュヌを撮圱」するだけで①メニュヌを理解する,②泚文を行うずいう二぀の目的を同時に達成できる。たた、泚文履歎機胜に぀いおは、海倖での食事を思い出ずしお保存する圹割を持぀。

画面構成

画面構成は、以䞋のようになっおいる。たずアプリを開くずカメラ画面が衚瀺される。メニュヌを撮圱するず、プレビュヌ画面に遷移し、画像の確認を行える。画像を送信するず、メニュヌ画面に遷移し、読み取った料理の名前や画像などが衚瀺される。泚文する料理を遞択したら、泚文ボタンを抌すこずで泚文画面に遷移する。泚文完了ボタンを抌すず、泚文履歎画面に遷移する。

機胜

カメラ機胜

アプリ党䜓の共通の仕様ずしお、䞊郚のバヌから①蚀語蚭定、②䞋郚のタブバヌから別画面ぞの遷移が行える。カメラ画面では、メニュヌを③カメラで撮圱、あるいは④写真フォルダから遞択できる。

メニュヌ画面

メニュヌの画像から埗られた料理に関する情報を衚瀺。䞊郚の①バヌからカテゎリを遞択するず、そのカテゎリに応じた料理の䞀芧が衚瀺される。②各料理のりィゞェットには、料理の画像、名前元蚀語、翻蚳語の蚀語、料金の情報が衚瀺される。③ゎミ箱ボタンで料理情報を削陀できる。遞択した料理ずその個数に応じお、④泚文ボタンに合蚈金額が衚瀺される。

各料理の詳现画面

メニュヌ画面で特定の料理をタップするずポップアップが出珟。①料理名怜玢リンクが貌られおいる、②料理の説明文が衚瀺される。③画像生成ボタンをタップするず生成 AI による画像生成が行われる。④個数遞択ボタンで泚文する個数を遞択するず、⑀確定ボタンに泚文数に応じた金額が衚瀺される。

泚文画面

泚文画面では、①ナヌザヌに察する 「店員さんにこの画面を芋せおください」 ずいうメッセヌゞを衚瀺。その䞋に実際に②店員さんに芋せる泚文内容を衚瀺。泚文内容にはメニュヌの曞かれおいた蚀語で 「以䞋のメニュヌをお願いしたす。」 ずいうメッセヌゞず共に、遞択した料理ずその個数が衚瀺される。

泚文履歎

①過去に泚文した料理を確認できる。たた、実際に食べた②料理の画像を投皿できる。③ゎミ箱ボタンで泚文履歎を削陀できる。

技術

実装にあたっお、䞻に Google、OpenAIのAPI を利甚した。具䜓的には以䞋の四぀を甚いた。

Cloud Vision API

開発するアプリに簡単に画像怜出機胜を実装できるサヌビス。画像ラベリングやランドマヌク怜出など様々な機胜を提䟛しおいるが、ここでは光孊匏文字認識OCR を利甚する。Cloud Vision API の OCR 機胜を甚いおメニュヌ画像から料理名、カテゎリ名、料金の抜出を行う。

Custom Search API

RESTful リク゚ストによっおりェブ怜玢結果を取埗できるサヌビス。この API を甚いお、料理名をク゚リずした画像の怜玢を行い、料理画像を取埗する。この際甚いるク゚リには OCR で取埗した料理名に ChatGPT による誀字の修正埌述を斜したものを利甚した。

ChatGPT API

以䞋の目的で利甚。

  1. 料理名の抜出取埗したテキストから料理名を抜出
  2. 誀字の修正「倩ふら」→「倩ぷら」
  3. 料理名の翻蚳「倩ぷら」→「tempura」
  4. 説明文の生成 「倩ぷら」 → “Deep-fried seafood or vegetables.”
  5. カテゎリの分類「メむン」、「サむド」など
  6. 料理名ず料金の結び付け各料理の料金を察応

プロンプトは以䞋のように䜜成した。䞀行目で料理名の翻蚳ず説明文の生成を行うように指瀺しおいる。この時、language 倉数を眮くこずによっお蚭定蚀語に応じお翻蚳が行えるようにしおいる。二行目から五行目で、料理名を抜き出しお誀字の修正を行い、各料理をカテゎリに分類し、料金を衚す文字列を各料理の料金ずしお利甚するよう指瀺しおいる。最埌に出力の圢匏ず具䜓䟋を䞎えおいる。

DALL·E API

料理画像の生成を行うために利甚。プロンプトは以䞋のように䜜成した。料理が机に盎で眮かれるのを防ぐため、適した皿に茉せるように指瀺しおいる。たた、誇匵の匷い画颚になるのを防ぐため、自然に描くように指瀺しおいる。

画像を生成しおみた結果。

倚蚀語察応

Menu Bite は倚蚀語察応を行っおいる。アプリ内で凊理する蚀語には、翻蚳元の蚀語メニュヌを衚蚘しおいる蚀語 ず翻蚳先の蚀語が存圚する。

翻蚳元の蚀語に぀いおは、Cloud Vision API が読み取るこずができお ChatGPT が理解できれば良いので、それらの察応蚀語数に䟝存する。珟時点2025/2/10では、Cloud Vision API が 60 蚀語以䞊、ChatGPT が 80 蚀語以䞊に察応しおいる。

翻蚳先の蚀語に぀いおは、先述したように ChatGPT に䞎えるプロンプトで蚀語指定を倉数で行っおいるため、蚀語蚭定で遞択できるようにさえすれば ChatGPT の察応しおいる党おの蚀語で生成を行える。たた、システムずしお衚瀺される文字に぀いおも倉数を眮いお、蚀語ごずの察応衚を䜜成するこずによっお倚蚀語察応しおいる。

最埌に

初めおの Flutter 開発でしたが、Google や OpenAI の API を駆䜿するこずで実甚的なアプリを開発できたした。特に、画像認識・怜玢・蚀語生成ずいった匷力な機胜をAPIずしお掻甚できるため、個人開発でも高機胜なアプリを䜜るこずが可胜だず実感したした。

このように、既存のAPIを組み合わせるこずで、「こんな機胜があったら䟿利なのに」ずいうアむデアを、少人数・短期間でも圢にするこずができるのが、今の開発環境の魅力です。

「アむデアはあるけど、技術的に難しそう 」ず感じるこずも、APIを掻甚すれば意倖ず実珟できるかもしれたせん。皆さんもぜひ、APIを掻甚した開発に挑戊しおみおはどうでしょうか

最埌たでお読みいただき、ありがずうございたした😆

Discussion