旅館に届く手書きの食事・アレルギーの要望票を読み取り、料理長と配膳係が見る献立の変更指示表に起こす
宿泊客が手書きした食事・アレルギーの要望票を読み取り、食材・程度・対象の食事をそろえます。献立と原材料の表に照らして変更の要る料理を拾い、料理長と配膳係が同じものを見る変更指示表の下書きにします。
- 生成AI
- Azure OpenAI Service/Claude/Gemini
- AIサービス
- Azure AI/Google Document AI
- 対象業界
- 宿泊/飲食
- 対象部門
- カスタマーサポート
- 対象業務
- データ入力・転記/内容確認・チェック
- 主な課題
- 入力作業が多い/引き継ぎができていない/確認ミスが多い
- AIで行う処理
- 読み取り(OCR)
- 主な効果
- 入力漏れ削減/品質標準化/工数削減
- 導入難易度
- ★★☆☆☆
- 実装レベル
- 半自動化
- 費用感
- API連携(中)
- 人間の確認
- 必須
01導入前 / 導入後の業務フロー
- 届いた要望票を予約課の箱に入れる。到着時に記入されたものはフロントから回ってくる
- 担当者が1枚ずつ読み、PMSの予約の備考欄に、アレルギーと苦手な食材を書き写す
- その日の献立表と厨房の原材料の表を開き、要望の食材が入る料理を探す
- 変更が要る料理を、部屋番号ごとに手書きの指示表に書く
- 前日の夕方に、指示表を料理長に渡し、写しを配膳係のリーダーに渡す
- 料理長が代わりの料理を決め、指示表に書き足す
- 配膳係は、指示表の写しを見て、その部屋の膳に印を付ける
- 人届いた要望票を複合機でスキャンする。ファイル名を予約番号にする
- 自動スキャンの保存をきっかけに処理が動き、画像の寸法と向きを確かめる
- 自動レイアウトモデルが、チェック欄の状態、自由記述の手書きの文字、信頼度を返す
- 自動生成AIが、チェック欄と自由記述を、人ごとの食材・程度の言葉・対象の食事にそろえる
- 自動食材を、その宿泊日の献立と原材料の表に照らし、変更の要る料理を機械的に拾う
- 自動部屋番号ごとの変更指示表の下書きを作り、PMSの備考欄に入れる文の案を作る
- 人予約の担当が、要望票の画像と下書きを並べて確かめる
- 人料理長が下書きを見て、代わりの料理と、出せない場合の連絡の要否を決める
- 自動料理長が確定した指示表を、配膳係の画面と印刷用に同じ内容で出す
各工程の詳しい説明を読む
- 届いた要望票を予約課の箱に入れる。到着時に記入されたものはフロントから回ってくる
- 担当者が1枚ずつ読み、PMSの予約の備考欄に、アレルギーと苦手な食材を書き写す
- その日の献立表と厨房の原材料の表を開き、要望の食材が入る料理を探す
- 変更が要る料理を、部屋番号ごとに手書きの指示表に書く
- 前日の夕方に、指示表を料理長に渡し、写しを配膳係のリーダーに渡す
- 料理長が代わりの料理を決め、指示表に書き足す
- 配膳係は、指示表の写しを見て、その部屋の膳に印を付ける
(a)手書きの字を読み違える。 「卵」と「卯」、「いか」と「いくら」、「乳」と「孔」。急いで読むと、似た字を取り違えます。 取り違えたまま備考欄に入ると、そのあとの全員がPMSの文字を正として扱います。
(b)程度の言葉が落ちる。 備考欄の文字数には限りがあり、担当者は「えびNG」と縮めて書きます。「加熱すれば大丈夫」と「同じ鍋もだめ」は、厨房にとってまったく違う指示です。 縮めた時点でその違いが消えます。
(c)料理名から原材料が見えない。 「先付」「八寸」「強肴」という献立表の名前を見ても、何が入っているかは分かりません。原材料の表を開かずに献立表だけで探すと、だしに使うえびや、衣の卵を見落とします。
(d)料理長と配膳係で見る紙が違う。 料理長は代わりの料理を書き足しますが、配膳係の写しにはその書き足しが無いことがあります。 膳を運ぶ人が、どの皿が差し替えなのかを知らないまま運ぶことになります。
- 【人】 届いた要望票を複合機でスキャンする。ファイル名を予約番号にする
- 【自動】 スキャンの保存をきっかけに処理が動き、画像の寸法と向きを確かめる
- 【自動】 レイアウトモデルが、チェック欄の状態、自由記述の手書きの文字、信頼度を返す
- 【自動】 生成AIが、チェック欄と自由記述を、人ごとの食材・程度の言葉・対象の食事にそろえる
- 【自動】 食材を、その宿泊日の献立と原材料の表に照らし、変更の要る料理を機械的に拾う
- 【自動】 部屋番号ごとの変更指示表の下書きを作り、PMSの備考欄に入れる文の案を作る
- 【人】 予約の担当が、要望票の画像と下書きを並べて確かめる
- 【人】 料理長が下書きを見て、代わりの料理と、出せない場合の連絡の要否を決める
- 【自動】 料理長が確定した指示表を、配膳係の画面と印刷用に同じ内容で出す
7番目と8番目が、この設計の分かれ目です。人は全件を見ます。 食物アレルギーは、誤れば宿泊客の健康に直結します。AIが減らすのは、写すことと、原材料の表を目で追うことです。 何を出すかの判断は、これまでどおり料理長が行います。
5番目を規則で決めているのも意図してのことです。 料理と食材の対応は原材料の表に書かれており、表に無い対応をAIに推測させると、表に無いことが「入っていない」に化けます。
9番目で配膳係と料理長が同じものを見るようにするのは、第3章の(d)のためです。 書き足しのない写しが出回らないように、確定した版だけを配ります。
02今回想定するシステム構成
食事・アレルギーの要望票(手書き。郵送・FAX・到着時の記入) │ 予約番号をファイル名にしてスキャン ▼【トリガー】保管場所への画像の保存 Azure Functions ── 寸法・向き・ページ数の確認、予約番号で予約の情報を引く ▼ Azure AI Document Intelligence(レイアウトモデル) │ チェック欄の状態、手書きの文字、表、信頼度 ▼ Azure OpenAI ── 人ごとの食材(語彙)・程度の言葉(原文)・対象の食事にそろえる ▼ Azure Functions ── 宿泊日の献立 × 原材料の表と照らし、変更の要る料理を拾う ▼ 変更指示表の下書き(部屋・人・食事・料理・食材・程度の言葉) ▼ 【予約の担当が確認】→【料理長が代わりの料理を決めて確定】 ▼ 配膳係の画面と印刷用に、確定した版を出す
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| OCR | Azure AI Document Intelligence(レイアウトモデル) | Google Document AI(Form Parser) |
| 生成AI | Azure OpenAI(Microsoft Foundry)(構造化出力で食材・程度・対象の食事を返す) | Claude API、Gemini API |
| 連携 | Azure Functions(起動、献立と原材料の表との照合、指示表の作成) | Azure Logic Apps |
| 保管 | Azure Blob Storage(要望票の画像と読み取り結果) | 館内のファイルサーバー |
| 予約 | 既存の予約の台帳(PMS) | ― |
PMSと原材料の表は、新しく足すものではありません。 PMSからは、予約番号・宿泊日・部屋・人数を書き出して使います。PMSの備考欄への書き込みは、この構成では案の文を作るまでにし、入力は人が行います。 PMSに外から書き込む口があるかは製品によって違い、ここは利用環境に応じた個別実装になります。
読み取りには、Azure AI Document Intelligence のレイアウトモデルを使います。 文字・表・選択マーク(チェック欄)・文書の構造を取り出すモデルで、選択マークは selected/unselected の状態と信頼度で返ります。 要望票のアレルギーのチェック欄は、この選択マークとして読めます。
日本語の手書きに対応していることを確かめてあります。 公式の言語対応の表では、Read と Layout の手書きの対応言語に日本語(ja)が載っています。さらにレイアウトモデルは、行ごとに手書きの書体かどうかを styles として信頼度つきで返します。印字された選択肢の文字と、宿泊客が書き込んだ文字を見分ける材料になります。
03どうやって実装するのか
処理の起点を決める
スキャンした画像が保管場所に保存されたことを起点にします。 郵送とFAXで届いた要望票は、届いたその日にスキャンします。到着時に書かれたものは、フロントで受け取ったらすぐにスキャンします。 当日の夕食に間に合わせるには、その時点で下書きが要るからです。
ファイル名は予約番号にします。 予約番号があれば、宿泊日・部屋・人数をPMSの書き出しから引けます。予約番号が分からない要望票は、代表者の氏名と到着日で引いた候補を出し、人が決めます。
毎日15時に、翌日の到着分で要望票が未着の予約を一覧にします。 要望票が返ってこなかった予約は、到着時に書いてもらう対象です。未着の一覧は、フロントの到着時の声かけの手元資料になります。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 要望票の画像 | 1枚1ファイル。予約番号、受け取った経路(郵送/FAX/到着時) | 複合機のスキャン |
| 読み取り結果 | チェック欄の状態と信頼度、手書きの文字、行ごとの手書きかどうか | レイアウトモデル |
| 予約の情報 | 予約番号、宿泊日、部屋、人数、夕食・朝食の有無 | PMSの書き出し |
| 食材の語彙 | 表示が義務づけられた9品目、推奨される20品目、館で足した食材(甲殻類、魚卵、生もの、香味野菜など) | 館で作る一覧 |
| 献立 | 宿泊日の夕食・朝食の料理の一覧 | 厨房の献立表 |
| 原材料の表 | 料理ごとの食材、だし・調味料・揚げ油 | 厨房の原材料の表 |
質を決めるのは、原材料の表です。 料理ごとに、主な食材だけでなく、だし(かつお・昆布・えび)、つなぎ(卵・小麦)、調味料(しょうゆの小麦・大豆)、揚げ油の共用まで書かれているかどうかで、照合の結果が変わります。表に書かれていないものは、照合では「入っていない」になります。 だから、表の書き方を料理長と最初に決めます。
食材の語彙の土台には、食物アレルギーの表示の区分を使います。 京都府の案内では、表示が義務づけられた「特定原材料」は、えび、カシューナッツ、かに、くるみ、小麦、そば、卵、乳、落花生の9品目、表示が推奨される「特定原材料に準ずるもの」は、アーモンド、あわび、いか、いくら、オレンジ、キウイフルーツ、牛肉、ごま、さけ、さば、大豆、鶏肉、バナナ、ピスタチオ、豚肉、マカダミアナッツ、もも、やまいも、りんご、ゼラチンの20品目とされています(令和8年4月にカシューナッツが特定原材料に追加)。これは食品を購入する場面のための表示の決まりで、旅館の料理の範囲をそのまま決めるものではありません。 要望票の選択肢と語彙の出発点として使い、館の事情で食材を足します。
データの取得方法を決める
要望票は、レイアウトモデルを呼んで読みます。 取るものは次のとおりです。
| 取るもの | どこから | 何に使うか |
|---|---|---|
| チェック欄の状態と信頼度 | pages の selectionMarks(state、confidence) | どの食材にチェックが入っているか |
| チェック欄の横の印字の文字 | 選択マークの位置と、近くの行の文字 | チェック欄がどの食材のものか |
| 手書きの文字 | lines/words と styles の isHandwritten | 自由記述と、人ごとの欄の書き込み |
| 表 | tables のセル | 「お名前/アレルギー/苦手」の人ごとの表 |
| 単語ごとの信頼度 | words の confidence | 読みの怪しい文字の印 |
チェック欄と食材の対応は、要望票の様式で固定です。 様式を変えない限り、何番目のチェック欄がどの食材かは決まっています。選択マークの位置を、様式の座標の一覧と照らして食材に結び付けます。 これを生成AIに推測させません。
予約の情報は、毎朝と15時にPMSから書き出したものを読みます。 献立と原材料の表は、月替わりの献立が決まった時点で厨房から受け取り、宿泊日ごとにどの献立を使うかを持っておきます。
AIへ渡す前に整形する
- 寸法と向きの確認 … 画像は50×50ピクセルから10,000×10,000ピクセルの間であることが必要です。FAXの画像は向きを直します
- 文字の大きさの確認 … 抽出できる文字の最小の高さは、1024×768の画像で12ピクセル(150dpiで約8ポイント)です。FAXで届いた要望票は解像度が低く、小さな手書きが下限に近くなります
- 様式の確認 … 印字された見出しの文字で、館の様式の要望票かを確かめます。旧様式や、宿泊客が別の紙に書いて同封したものは
needs_humanにします - 予約の引き当て … ファイル名の予約番号でPMSの書き出しを引き、宿泊日・部屋・人数を付けます
- 献立の引き当て … 宿泊日から、その日の夕食と朝食の献立と原材料の表を付けます
- チェック欄の座標の照合 … 選択マークの位置を様式の座標の一覧に当て、食材の名前を付けます
2番目は、FAXの要望票で効いてきます。 小さな手書きが読めないとき、それは「書かれていない」のではなく「読めない」です。 読めない欄は空欄として扱わず、unreadable として人に回します。
AIに処理させる
させるのは、要望票の読み取り結果を、人ごとの要望の一覧にそろえることです。 献立と照らすこと、料理を出してよいかを判断すること、代わりの料理を決めることはさせません。
| 見るもの | させること | 判断できないときの扱い |
|---|---|---|
| チェック欄 | 座標で食材が付いたチェックの状態を、人ごとに写す | 信頼度が低ければ unreadable |
| 自由記述の食材 | 書かれた食材を、食材の語彙の中から選ぶ | 語彙に無ければ other と原文 |
| 程度の言葉 | 「加熱すれば可」「同じ鍋も不可」「少量なら可」などを原文のまま写す | 書かれていなければ空 |
| 重さの手がかり | 「アナフィラキシー」「エピペン」「救急搬送」などの言葉を写す | 評価をせずに写す |
| 対象の人 | 家族・団体のうち、誰の要望か | 分からなければ whole_party と書かず unknown |
| 対象の食事 | 夕食だけか、朝食もか | 書かれていなければ all_meals |
| 苦手な食材・宗教上の理由・菜食 | アレルギーとは別の欄に写す | ― |
「程度の言葉を原文のまま」が、この構成のいちばん大事な指示です。 程度の言葉は、語彙にそろえると意味が変わります。「少量なら大丈夫」を「軽度」とまとめると、料理長は「軽度」の意味を宿泊客に確かめ直すことになります。 原文のまま横に置けば、料理長がそのまま読めます。
対象の食事を、書かれていなければ「すべての食事」にするのは、安全側に倒すためです。 夕食だけと書かれていなければ、朝食も対象にします。
| させないこと | 理由 |
|---|---|
| 料理にその食材が入っているかの判断 | 原材料の表で決める。料理名から推測させない |
| 料理を出してよいかの判断 | 料理長と施設が決める |
| 代わりの料理の提案 | 代わりの料理にも別の食材が入る。料理長が決める |
| 食材の広げ方の判断(「甲殻類」をえびとかにに広げる、など) | 広げる範囲は宿泊客に確かめる |
| 程度の言葉の要約・言い換え | 意味が変わる |
| 読めない文字の推測 | 「いか」か「いくら」かを推測で決めない |
4行目が、いちばん判断が分かれるところです。 「魚介類」と書かれた要望票は、えび・かに・いか・貝・魚卵をすべて避けるのか、魚だけなのかが分かりません。AIに広げさせると、広げすぎても狭めすぎても誤りになります。 「魚介類」のまま ambiguous にし、宿泊客に確かめる項目として出します。
指示内容を固定する
あなたは旅館の予約課で、宿泊客が手書きした食事・アレルギーの要望票を
人ごとの要望の一覧にそろえる立場です。
OCRが返した読み取り結果だけを使ってください。推測で埋めないでください。
【書く項目(人ごと)】
- person ........... 要望票に書かれた名前や続柄(「長男」「父」など)
- allergens ........ チェック欄で selected の食材と、自由記述に書かれた食材。
自由記述の食材は【食材の語彙】から選ぶ。無ければ other と原文
- degree_words ..... 程度やどこまで避けるかの言葉。原文のまま写す
- severity_quotes .. アナフィラキシー、エピペン、救急、入院などの言葉。原文のまま写す
- meals ............ 対象の食事(dinner/breakfast)。書かれていなければ両方
- dislikes ......... 苦手な食材(アレルギーではないもの)
- other_requests ... 宗教上の理由、菜食、子どもの食事、記念日など
【status の選び方】
- ok ......... 読み取れており、食材の語彙に当てはまる
- unreadable . 文字は検出されているが信頼度が低く、確定できない
- ambiguous .. 食材の範囲が広く、どこまでを避けるか書かれていない(「魚介類」など)
迷ったときに ok を選ばないでください。
【厳守事項】
- 料理にその食材が入っているかを判断しないでください。献立のことは書かないでください。
- 料理を出してよいか、代わりの料理を何にするかを書かないでください。
- 程度の言葉を要約したり、「軽度」「重度」などに言い換えたりしないでください。
- 重さを評価しないでください。severity_quotes に言葉を写すだけにしてください。
- 「甲殻類」「魚介類」「ナッツ類」のような広い言葉を、個別の食材に広げないでください。
そのまま other に原文を入れ、status を ambiguous にしてください。
- 似た字(いか/いくら、卵/卯など)で迷ったときは、どちらかに決めず unreadable にしてください。
- チェック欄が unselected の食材を、自由記述から selected にしないでください。
自由記述に書かれた食材は、別に allergens に足してください。
- アレルギーと苦手な食材を混ぜないでください。要望票の欄に従って分けてください。
【食材の語彙】{allergen_vocab}
【チェック欄(座標で食材を付けたもの)】{checkboxes}
【手書きの文字(行ごと、信頼度つき)】{handwritten_lines}
【予約の人数】{party_size}
「似た字で迷ったら決めない」を書くのは、読み違いがいちばん危ないからです。 「いか」と「いくら」は、手書きでは1字の差です。AIは文脈からもっともらしいほうを選びますが、もっともらしさは安全の根拠になりません。 unreadable にして人が紙を見れば、数秒で決まります。
「広い言葉を広げない」を書くのは、広げると親切に見えるからです。 「甲殻類」をえびとかにに広げた一覧は、一見よくできています。ただし宿泊客の言う「甲殻類」に、ほかのものが含まれるかどうかは、聞かないと分かりません。
出力形式を固定する
次の形のJSONで受け取ります。 Azure OpenAI の構造化出力(response_format に json_schema を strict: true で渡す方式)を使い、形を固定します。
{
"reservation_no": "",
"form_type": "meal_request",
"persons": [
{
"person": "",
"allergens": [ { "item": "", "source": "checkbox | free_text", "status": "ok", "raw": "" } ],
"degree_words": [""],
"severity_quotes": [""],
"meals": ["dinner", "breakfast"],
"dislikes": [""],
"other_requests": [""]
}
],
"unreadable_lines": [ { "text": "", "confidence": 0 } ]
}
このあとに、ワークフローが献立との照合を足します。
| 足す項目 | 決め方 |
|---|---|
affected_dishes | 人ごとの allergens と meals から、宿泊日の献立の原材料の表を引き、その食材を含む料理を並べる |
ingredient_hits | 料理ごとに、どの原材料(だし・調味料・揚げ油を含む)で当たったか |
to_confirm | ambiguous と unreadable の項目。宿泊客に確かめる事項 |
party_check | 要望票の人数と予約の人数が合うか |
1つ目の理由は、読み取りと照合を別の層に置けることです。 献立が月替わりで変わっても、要望の一覧はそのままで照合だけをやり直せます。到着の前日に献立の一部が差し替わったときも、照合を回し直すだけで済みます。
2つ目は、ingredient_hits で料理長の確認が速くなることです。 「八寸:えび(だし)」のように、どの原材料で当たったかが分かれば、料理長はその料理のどこを差し替えればよいかがすぐに分かります。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 保管場所 | Azure Functions のトリガー | 画像の保存を検知する |
| Azure AI Document Intelligence | API呼び出し | チェック欄と手書きの読み取り |
| Azure OpenAI | API呼び出し | 人ごとの要望の一覧へのそろえ |
| PMSの書き出し | ファイルの読み取り | 宿泊日・部屋・人数 |
| 献立と原材料の表 | スプレッドシートの読み取り | 照合 |
| 変更指示表 | 画面と印刷用のファイル | 確定した版を料理長と配膳係へ |
PMSには書き込みません。 備考欄に入れる文の案を出し、予約の担当が入力します。原材料の表にも書き込みません。 表の更新は厨房が行います。
人が確認する
人が全件を確かめます。 確かめるのは2段階です。
- 予約の担当が、要望票の画像と下書きを並べて確かめる … チェック欄の状態、食材の名前、程度の言葉が画像と合っているかを見ます。
unreadableとambiguousを先に見ます - 確かめる事項を宿泊客に聞く …
to_confirmの項目について、到着前なら電話、到着後ならフロントで聞きます - 料理長が変更指示表を確かめ、代わりの料理を決める …
affected_dishesとingredient_hitsを見て、差し替える料理と、出せないものを決めます - 確定した版だけを配る … 料理長が確定したものを、配膳係の画面と印刷用に出します
1番目で、チェック欄の空欄を見落とさないでください。 選択マークの信頼度が低いチェック欄は、薄い鉛筆の印か、消しゴムで消した跡のことがあります。どちらなのかは、紙を見ないと分かりません。
目標は、480件をならして1件3分です。 要望の無い要望票(「特になし」にチェック)は数十秒で終わり、複数人の要望が書かれた要望票に時間を使います。
例外に対処する
| 起きること | 対応 |
|---|---|
| 予約番号が分からない | 代表者の氏名と到着日で候補を出し、人が決める |
| 旧様式・別の紙に書かれた要望 | チェック欄の座標が使えない。needs_human にし、自由記述として読む |
| FAXで文字が小さすぎる | 1024×768の画像で12ピクセルが下限。宿泊客に電話で確かめる |
| 「魚介類」「ナッツ類」など広い言葉 | ambiguous。宿泊客に範囲を確かめる |
| 要望票の人数と予約の人数が違う | party_check で印。予約の変更か書き漏れかを確かめる |
| 原材料の表に無い料理が献立にある | 照合できない料理として印を付け、料理長に原材料の追記を頼む |
| 到着当日に要望票が書かれた | 当日の夕食に間に合うよう、フロントから予約課へ電話でも知らせる |
| 読み取りサービスが応答しない | 画像を保管場所に残し、従来の手書きの指示表で当日を回す |
上から6行目が、最初の数か月でいちばん出ます。 月替わりの献立のたびに新しい料理が入り、原材料の表が追いつかないからです。照合できない料理を「当たりなし」と表示しないことが大事です。 当たりなしと照合できないは、別の結果です。
記録を残す
- 要望票の画像と、受け取った経路・日時
- 読み取りサービスが返した JSON と、Azure OpenAI に渡した入力と返ってきた JSON
- 照合の結果(
affected_dishes、ingredient_hits、to_confirm)と、そのとき使った献立と原材料の表の版 - 宿泊客に確かめた内容と、確かめた人・日時
- 料理長が確定した変更指示表と、確定した時刻
- 人が下書きを直した記録
3つ目で原材料の表の版を残すのは、表が月の途中でも直るからです。 後から「この料理にえびのだしが入っていた」と分かったとき、どの宿泊客の照合がその版で行われたかを引けるようにします。
04実装レベルの3段階
半自動化で、1件8分が3分程度になります。この段階が本記事の想定です。 いちばん時間のかかっていた原材料の表を目で追う作業が、照合の結果を読む作業に変わります。本格構成では、献立の差し替えのたびに照合をやり直せるようになり、前日の夕方以降の変更にも追いつけます。
05工数削減シミュレーション
導入後 480件 × 3分 ÷ 60 = 24 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 夕食と朝食を部屋出しや個室で出し、宿泊客から食事・アレルギーの要望を紙の要望票(事前の郵送・FAX、到着時の記入)で受けている旅館。予約の担当やフロントが要望票を読んで予約の台帳に書き写し、献立表と照らして変更の要る料理を拾い、料理長と配膳係に手書きの指示表で申し送っているため、転記の漏れや読み違いが心配な場合。献立ごとの原材料の表を厨房で持っている、または作れる場合。
- 要望を予約サイトや自社のフォームの選択式で受けており、手書きの要望票がほとんど無い施設。食事を出さない、またはビュッフェだけで個別の献立の変更をしない施設。献立と原材料の表が無く、作る見込みも無い場合。なお、アレルギーのある宿泊客に料理を出してよいかの判断、代わりの料理の決定、混入の防ぎ方は料理長と施設の責任で行うもので、この構成では代替できません。
07最小構成で試す方法
- 先月の要望票から30枚を選ぶ(うち数枚は、複数人分が書かれたもの、FAXで届いたもの、程度の言葉が書かれたものを入れる)
- 氏名を伏せた画像で、Document Intelligence Studio のレイアウトモデルで読み取る
- 読み取った結果を、検証用の環境の Azure OpenAI に渡し、「人ごとに、食材、程度の言葉(原文のまま)、対象の食事を書いてください。料理のことは書かないでください」と指示する
- 出てきた結果を、当時の指示表と突き合わせる
30枚は必ずやってください。 照合の仕組みを作る前に、「チェック欄と手書きが読めるのか」「程度の言葉が残るのか」を確かめます。
| 出てきた内容 | 判断 |
|---|---|
| 当時の指示表と同じ食材が出て、程度の言葉も残った | 原材料の表との照合に進む |
| 程度の言葉を要約した | 指示の書き方で直る。構成は有効 |
| FAXの要望票が読めない | FAXの受け方が先。 郵送か到着時の記入を案内する |
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 程度の言葉が要約される | 原文のまま写させ、語彙にそろえるのは食材だけにする |
| 似た字を文脈で決める | 迷ったら unreadable。人が紙を見て決める |
| 「甲殻類」を広げる | 広げさせない。ambiguous にして宿泊客に確かめる |
| 料理名から原材料を推測する | 照合は原材料の表だけで行う。AIに献立を渡さない |
| 原材料の表にだしや揚げ油が無い | 照合で当たらない。料理長と表の書き方を最初に決める |
| 照合できない料理が「当たりなし」と出る | 「照合できない」を別の結果にする |
| チェック欄の薄い印を読み落とす | 選択マークの信頼度が低いものは人が紙で見る |
| FAXの要望票が読めない | 解像度の下限に当たる。電話で確かめる |
| 料理長と配膳係で版が違う | 確定した版だけを配る |
| AIが代わりの料理を提案する | させない。代わりの料理にも別の食材が入る |
上の4行が、この構成の失敗のほとんどです。 どれも、AIが「親切に」補ったり、まとめたり、推測したりすることから起きます。食物アレルギーの情報では、親切な推測が事故の入口になります。
5行目と6行目は、AIの外の問題です。 原材料の表が不完全なままでは、読み取りがどれだけ正確でも照合が外れます。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 宿泊客の氏名と到着日、家族の続柄、食物アレルギーと重さの手がかり(アナフィラキシーやエピペンの記載)、宗教上の理由、記念日です。
- 健康に関わる情報として扱う … 食物アレルギーとその重さの記載は、宿泊客の健康に関わる情報です。閲覧できる人を予約課・フロント・料理長・配膳係に限り、宿泊が終わったあとの保管期間を決めます
- 料理を出す判断をAIに寄せない … この構成は、要望票に書かれたことと、原材料の表で当たった料理を示すだけです。出してよいか、代わりに何を出すかは、料理長と施設が決めます
- 「当たりなし」を安全の保証として扱わない … 照合は原材料の表に書かれた範囲でしか当たりません。表に無い原材料や、調理器具・揚げ油の共用による混入は、照合では分かりません
- 確かめる事項を宿泊客に聞く …
ambiguousとunreadableを推測で埋めず、宿泊客に聞く手順を残します - 外部のサービスに渡す範囲を絞る … 生成AIに渡すのは、要望票の読み取り結果と食材の語彙だけです。PMSの書き出しや献立の全体は、照合の処理の側で扱います
- 障害時の手順を残す … 読み取りサービスが止まった日でも食事は出ます。従来の手書きの指示表で回す手順を残しておきます
誤りが起きた場合のリスクは、要望を見落として料理を出すことと、要望の範囲を誤って広げたり狭めたりすることの2つです。 前者は読み違いと原材料の表の不足で起き、後者は広い言葉の推測で起きます。どちらも、AIに推測させない設計と、人が全件を見る運用で守ります。
10まず何から始めるか
1週目:原材料の表の書き方を料理長と決める
今月の献立について、料理ごとに主な食材、だし、つなぎ、調味料、揚げ油の共用まで書いた表を作ります。この表は、AIを入れなくても、予約課が料理長に聞き直す回数を減らします。
2週目:30枚で試す
先月の要望票から30枚を選び、氏名を伏せた画像で読み取りと人ごとの要望のそろえ方を試します。程度の言葉が原文のまま残っているか、似た字を推測で決めていないかを最優先で見ます。
3週目:要望票の様式を見直す
チェック欄の並びに9品目と20品目をそろえ、「特になし」のチェック欄と、程度を書く欄を足します。チェック欄の座標の一覧を作ります。
4週目:スキャンから下書きまでをつなぐ
保管場所への保存を起点に、読み取り、そろえ、原材料の表との照合、変更指示表の下書きまでを作ります。この時点では、従来の手書きの指示表と並べて回します。
2か月目: 予約の担当と料理長が全件を確かめる運用にし、手書きの指示表をやめます。3か月目以降: 未着の要望票の一覧と、献立の差し替え時の再照合を足し、1件8分が何分になったかを実測します。月替わりの献立のたびに原材料の表が先に更新されるようになった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| 消費者庁が食品表示基準の中に食物アレルギー表示制度を定めていること。表示が義務づけられた特定原材料が、えび、カシューナッツ、かに、くるみ、小麦、そば、卵、乳、落花生の9品目であること(令和8年4月にカシューナッツが追加、令和10年3月31日までの経過措置)。表示が推奨される特定原材料に準ずるものが、アーモンド、あわび、いか、いくら、オレンジ、キウイフルーツ、牛肉、ごま、さけ、さば、大豆、鶏肉、バナナ、ピスタチオ、豚肉、マカダミアナッツ、もも、やまいも、りんご、ゼラチンの20品目であること(令和6年3月にまつたけが削除されマカダミアナッツが追加) | 京都府: アレルギーと食品 | 2026-10-08 |
レイアウトモデルが文字・表・選択マーク・文書の構造を取り出すこと。選択マークが selected/unselected の状態と信頼度で返ること。行ごとに手書きの書体かどうかを styles で信頼度つきで返すこと。画像が 50×50 から 10,000×10,000 ピクセル、文字の最小の高さが 1024×768 の画像で 12 ピクセル(150dpi で約8ポイント)であること | Microsoft Learn: Document layout analysis | 2026-10-08 |
Read と Layout の手書きの対応言語に日本語(ja)が含まれること(v4.0) | Microsoft Learn: Language and locale support for Read and Layout | 2026-10-08 |
構造化出力が渡した JSON Schema に従わせる機能で、Chat Completions では response_format に json_schema を strict: true で指定すること。すべての項目を必須にし、additionalProperties を false にすること | Microsoft Learn: How to use structured outputs with Azure OpenAI in Microsoft Foundry Models | 2026-10-08 |
アレルギーのある宿泊客に料理を出してよいか、代わりの料理、混入の防ぎ方は、料理長と施設が自らの責任で判断してください。 本記事は京都府の案内と各製品の公式ページで確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-1091)についてのご相談はこちらから。
