メシテロでは、コンビニ商品のバーコードをスキャンして食事を記録できる。でも、データベースに登録されていない商品だと成分表ラベルを撮影→AIが読み取るというフローになる。
問題は、このOCR(画像から文字を読み取る技術)の分析に約10秒かかること。その間、ユーザーはスマホの画面でスピナー(くるくる回るアイコン)を見てるだけ。
しかも、成分表から読み取れる情報はカロリーやタンパク質などの栄養データだけ。商品名は「不明な食品」になりがち。結局、もう一度パッケージを撮影して商品名を取得する手間が発生する。
だから、成分表の分析を待ってる間にパッケージを撮影させることで、待ち時間を有効活用しつつ商品名の精度も上げる。一石二鳥。
裏側で何が起きているか: 2つのAI分析(成分表のOCRとパッケージの商品名認識)が同時並行で走っている。ユーザーがパッケージを撮影し終わる頃には、大抵の場合成分表の分析も終わっているので、ほぼ待ち時間ゼロで確認画面に進める。
エラー時の動き: パッケージ認識が失敗しても、成分表のデータがあれば「商品名だけ不明」のまま確認画面に進める。成分表の読み取り自体が失敗した場合はエラー表示になり、撮り直しができる。
変更するファイルは2つだけ: useScanner.ts(カメラの状態を管理する頭脳部分)と FoodInput.tsx(画面の見た目を担当する部分)。既存の他のフローには一切影響しない。