以下、添付図面を参照して本発明に係る実施の形態を詳細に説明する。なお、本発明は、図示例に限定されるものではない。
先ず、図1〜図4を参照して、本実施の形態の装置構成を説明する。図1に、本実施の形態のオーダエントリシステム1の構成を示す。図2に、店頭中央装置10の機能構成を示す。図3に、メニューシート作成装置20の機能構成を示す。図4に、ハンディ端末30の機能構成を示す。
本実施の形態のオーダエントリシステム1は、レストラン等の飲食店の店舗に設置されるシステムである。オーダエントリシステム1は、顧客の注文をハンディ端末30から入力し、注文品の厨房へのオーダー指示、お客様用明細書の発行、注文品の精算を行うシステムである。
図1に示すように、オーダエントリシステム1は、店頭中央装置10と、メニューシート作成装置20と、ハンディ端末30と、レジ40と、を備える。店頭中央装置10、メニューシート作成装置20及びレジ40は、通信ネットワークNを介して通信接続されている。また、店頭中央装置10とハンディ端末30とは、無線通信を行う。
店頭中央装置10は、OES親機であり、オーダエントリシステム1の各装置を管理する。メニューシート作成装置20は、PC(Personal Computer)等により構成され、メニューシート作成等を行う。ハンディ端末30は、OES端末であり、顧客の注文情報の入力を受け付ける。レジ40は、顧客の注文品の会計を行う装置である。通信ネットワークNは、有線LAN(Local Area Network)等の有線通信ネットワークである。
図2に示すように、店頭中央装置10は、CPU(Central Processing Unit)11と、RAM(Random Access Memory)13と、印刷部14と、記憶部15と、有線通信部16と、無線通信部17と、を備える。店頭中央装置10の各部は、バス18を介して互いに接続されている。
CPU11は、店頭中央装置10の各部を制御する。CPU11は、記憶部から読み出されて適宜RAM13に展開されたプログラムとの協働で、各種処理を行う。具体的には、CPU11は、メニュー設定プログラム151に従い、後述するメニュー設定処理を行う。また、CPU11は、業務管理プログラム152に従い、後述する業務管理処理を行う。
RAM13は、揮発性のメモリであり、各種データ、各種プログラムを一時的に格納するワークエリアを有する。印刷部14は、CPU11の指示に従い、各種情報を用紙に印刷する伝票等のプリンタ部である。印刷部14は、サーマルプリンタとするが、ドットインパクト方式等、他の印刷方式の印刷部としてもよい。
記憶部15は、HDD(Hard Disk Drive)、フラッシュメモリ等により構成される。記憶部15は、各種データ、各種プログラムを読み出し及び書き込み可能に記憶する。記憶部15には、メニュー設定プログラム151と、業務管理プログラム152と、が記憶されている。
有線通信部16は、通信ネットワークに接続され、通信ネットワークN上の機器と情報の送受信を行うネットワークカード等の通信部である。無線通信部17は、アンテナ、変調部、復調部等を備え、ハンディ端末30と無線通信を行う通信部である。なお、店頭中央装置10は、通信ネットワークN上に設けられたアクセスポイントを介して、ハンディ端末30と無線通信を行う構成としてもよい。
図3に示すように、メニューシート作成装置20は、CPU21と、操作部22と、RAM23と、表示部24と、記憶部25と、有線通信部26と、画像取得部27と、印刷部28と、を備える。メニューシート作成装置20の各部は、バス29を介して互いに接続されている。
CPU21は、メニューシート作成装置20の各部を制御する。CPU21は、記憶部から読み出されて適宜RAM23に展開されたプログラムとの協働で、各種処理を行う。具体的には、CPU21は、メニューシート作成プログラム251に従い、後述するメニュー作成処理を行う。また、CPU21は、メニューシート出力プログラム252に従い、後述するメニューシート出力処理を行う。
操作部22は、各種キーが配列されたキーボードと、マウス等のポインティングデバイスとを有し、ユーザからのキー入力、位置入力を受け付けて入力情報としてCPU21に出力する。また、操作部22は、表示部24と一体的に構成されるタッチパネルを含む構成としてもよい。RAM23は、RAM13と同様の構成である。
表示部24は、LCD(Liquid Crystal Display)等の表示部であり、CPU21から入力される表示情報にしたがい各種表示を行う。記憶部25は、HDD等により構成された記憶部である。記憶部25には、メニューシート作成プログラム251、メニューシート出力プログラム252が記憶されている。また、記憶部25には、メニュー作成処理により作成された管理テーブル50とが記憶される。有線通信部26は、有線通信部16と同様の構成である。
画像取得部27は、CCD(Charge Coupled Device)、CMOS(Complementary Metal Oxide Semiconductor)等の撮像素子、AD変換部等を備える。画像取得部27は、撮像素子によりメニューブック等の画像を撮像し、その撮影画像信号をAD変換部によりデジタルの画像データに変換して出力する。印刷部28は、CPU21の指示に従い、各種情報を伝票よりも大きな用紙に印刷する電子写真方式、インクジェット方式等のプリンタ部である。
図4に示すように、ハンディ端末30は、CPU31と、操作部32と、RAM33と、表示部34と、ROM(Read Only Memory)35と、無線通信部36と、フラッシュメモリ37と、を備える。ハンディ端末30の各部は、バス38を介して互いに接続されている。
CPU31は、ハンディ端末30の各部を制御する。CPU31は、記憶部から読み出されて適宜RAM33に展開されたプログラムとの協働で、各種処理を行う。具体的には、CPU31は、メニュー入力プログラム351に従い、後述するメニュー入力処理を行う。
操作部32は、各種キーと、メニューシート用のグリッド状のキー群とを備え、ユーザ(店員)による各キーの押下入力を受付け、操作情報としてCPU31に出力する。例えば、ハンディ端末30を見開き可能な構成とし、開いた状態で、グリッド状のキー群が左右に設けられている。グリッド状のキー群の上には、メニューシートを挟むことが可能な透明板が設けられている。透明板に挟んだメニューシートの押下により、グリッド状のキー群の対応するキーが押下入力される。
RAM33は、RAM13と同様の構成である。表示部34は、LCD、ELD(ElectroLuminescent Display)等から構成される端末装置用の表示部である。ROM35は、読み出し専用のメモリであり、各種データ及び各種プログラムが記憶されている。ROM35には、メニュー入力プログラム351が記憶されている。
無線通信部36は、無線通信部17と同様の構成である。無線通信部36は、店頭中央装置10と無線通信を行う。フラッシュメモリ37は、不揮発性のメモリであり、各種データが読み出し及び書き込み可能に記憶される。
次に、図5〜図8を参照して、メニューシート作成の概要を説明する。図5に、領域選択前のメニューシート設定画面241を示す。図6に、領域選択後のメニューシート設定画面241を示す。図7に、メニューシート画面242を示す。図8に、管理テーブル50の構成を示す。
メニューシート作成装置20において、店舗内の顧客のテーブルに置かれるメニューブックが画像取得部27により撮像される。そして、例えば、図5に示すように、メニューシート作成装置20に、メニューシート設定画面241が表示部24に表示される。
メニューシート設定画面241には、メニューブック画像F0と、選択ボタン2411と、変換ボタン2412と、を有する。メニューブック画像F0は、画像取得部27により撮像されたメニューブックの画像である。メニューブック画像F0は、各メニューの画像P1〜P12と、各メニュー名であるキャラクタC1〜C12と、各メニューの単価と、を有する。画像P1〜P12は、順に、キャラクタC1〜C12に対応している。メニューブック画像F0内において、写真P1〜P12、キャラクタC1〜C12及び単価は、任意の位置に配置されている。
選択ボタン2411は、メニューシートに含めるメニューシート設定画面241の領域(画像、キャラクタ)の選択確定入力を受け付けるボタンである。この領域の選択は、例えば、操作部22のマウスを介して行われる。選択ボタン2411押下後、図6に示すように、写真P1〜P3,P12と、キャラクタC4〜C11と、が選択されたものとする。
変換ボタン2412は、メニューブック画像F0における選択した領域(画像、キャラクタ)から、メニューシートの画像への変換指示入力を受け付けるボタンである。変換ボタン2412が押下されると、選択領域の配置に近いメニュー画像を有するメニューシートの画像データが作成される。例えば、図7に示すように、メニューシート画面242として表示部24に表示される。
メニューシート画面242では、ハンディ端末30の操作部32のグリッド状のキー群の配置に対応したグリッド2421を有する。グリッド2421には、操作部32のグリッド状のキーを識別するためのKEY番号が割り当てられている。グリッド2421において、選択した写真P1〜P3,P12及びキャラクタC4〜C11に近い位置に、写真画像P1a〜P3a,P12a及びキャラクタ画像C4a〜C11aが配置されている。
メニューシートの作成時に、メニューシート作成装置20において、メニューシートに関する情報として、管理テーブル50が作成されて、フラッシュメモリ37に記憶される。図8に示すように、管理テーブル50は、KEY番号51と、キャラクタ52と、単価53と、領域BITデータ54と、領域矩形座標55と、ファイルパス56と、の項目を有する。
KEY番号51は、ハンディ端末30の操作部32のグリッド状の各キーの識別番号である。キャラクタ52は、KEY番号51のグリッドに配置するメニュー名の文字列である。単価53は、キャラクタ52のメニューの単価である。領域BITデータ54は、KEY番号51のグリッドに配置する画像、キャラクタの画像データ(ビットマップデータ)である。領域矩形座標55は、メニューシート内の領域BITデータ54の画像の左上及び右下の座標を示す。ファイルパス56は、メニューブックの画像データのファイルの格納場所を示すデータである。
次に、図9〜図11を参照して、メニューシート作成における選択領域の位置の調整を説明する。図9に、メニューブック画像F1内の領域選択を示す。図10(a)に、横グリッド間で領域の移動が不要な場合において、メニューシート内に選択時のまま配置した領域を示す。図10(b)に、メニューシート内の各横グリッド内に収めた領域を示す。図10(c)に、各横グリッド内で縦方向に位置を調整した領域を示す。図10(d)に、横グリッド及び縦グリッド内に収めた領域を示す。図11(a)に、横グリッド間で領域の移動が必要な場合において、メニューシート内の各横グリッド内に収めた領域を示す。図11(b)に、横グリッド内で余分な領域を空いている横グリッド内に分散した領域を示す。図11(c)に、各横グリッド内に収めた領域を示す。図11(d)に、各横グリッド内で縦方向に位置を調整した領域を示す。図11(e)に、横グリッド及び縦グリッド内に収めた領域を示す。
図9に示すように、メニューブック画像F1から領域R1,R2を選択する場合を考える。領域R1,R2を調整するために、領域R1,R2の位置を示す重心G1,G2を算出する。領域R1,R2は、矩形領域であるので、領域の中心と重心とは同座標になる。領域が矩形以外(L字形等)である場合を含め、「重心」と表している。
重心G1,G2を各グリッドの中心に調整することで、領域R1,R2をグリッド内に収めることができる。領域R1,R2が、グリッドの大きさに合わない場合には、適宜、グリッドの大きさに合わせる(画像切り出し、縮小、拡大)ものとする。図7の例では、キャラクタC41〜C111は、グリッド2421の大きさに合わせて、画像切り出しがなされている。
次いで、図10及び図11を参照して、メニューブックで選択した領域のグリッドへの格納を説明する。図10を参照して、横グリッド間で領域の移動が不要な場合の領域の位置調整を説明する。図10及び図11において、各領域は、円で示されている。円の中心が重心となる。また、各領域の円内の番号は、各領域の識別番号である。
また、説明を簡単にするため、操作部32のキー配列は、横4×縦4の16個のグリッドからなるものとする。1個のグリッドには、1個の領域のみが対応付け可能である。また、同じ横位置で縦方向4つのグリッドをまとめたものを横グリッドとする。また、同じ縦位置で横方向4つのグリッドをまとめたものを縦グリッドとする。この4つの横グリッドをW1〜W4とし、4つの縦グリッドをH1〜H4とする。
図10(a)に示すように、選択時の7つの領域をそのまま選択位置のまま配置する。すると、横グリッドW1〜W4に収められる領域の重み(個数)配列は、(1,2,2,2)となる。1つの横グリッド内には、最大4つの領域が収められるので、横グリッドW1〜W4間において、各領域の移動は、不要である。
そして、図10(b)に示すように、各領域の横方向の中心位置が、横グリッドW1〜W4の各中心位置に合せられる。そして、図10(c)に示すように、横グリッドW1〜W4の縦方向の大きさが、縦グリッドの大きさに合せられる。このときの各領域の縦方向の位置は、縦方向のバネモデルにより縮められることが好ましい。そして、図10(d)に示すように、各領域の中心位置が、縦グリッドH1〜H3の各中心位置に合せられる。
図11を参照して、横グリッド間で領域の移動が必要な場合の領域の位置調整を説明する。図11(a)に示すように、選択時の7つの領域をそのまま選択位置のまま配置し、各領域の横方向の中心位置が横グリッドW1〜W4の各中心位置に合せられる。すると、横グリッドW1〜W4に収められる重み(個数)配列は、(1,0,0,6)となる。1つの横グリッド内には、最大4つの領域が収められるので、横グリッドW4で領域が2つ余分となり、横グリッドW1〜W4間において、各領域の移動が、必要となる。
この場合、図11(b)に示すように、例えば、領域が横方向に均等に配置しなおされる。そして、図11(c)に示すように、各領域の横方向の中心位置が横グリッドW1〜W4の各中心位置に合せられる。すると、横グリッドW1〜W4に対応する重み(個数)配列は、(1,1,1,4)となる。
そして、図11(d)に示すように、横グリッドW1〜W4の縦方向の大きさが、縦グリッドの大きさに合せられ、各領域の位置も調整される。そして、図11(e)に示すように、各領域の中心位置が、縦グリッドH1〜H3の各中心位置に合せられる。
次に、図12〜図23を参照して、オーダエントリシステム1の動作を説明する。先ず、図12〜図19を参照して、メニューシート作成装置20において実行されるメニューシート作成処理を説明する。図12に、メニューシート作成装置20で実行されるメニューシート作成処理のフローチャートを示す。図13〜図15に、メニューシート作成処理の横グリッド格納処理のフローチャートを示す。図16〜図18に、メニューシート作成処理の縦グリッド格納処理のフローチャートを示す。図19に、メニューシート作成処理の管理テーブル設定処理のフローチャートを示す。
メニューシート作成装置20において、例えば、操作部22を介してユーザからのメニューシート作成処理実行指示の入力を受け付けたことをトリガとして、CPU21は、メニューシート作成プログラム251に従い、メニューシート作成処理を実行する。
図12に示すように、先ず、画像取得部27によりメニューブックが撮像され、その画像データが取得される(ステップS1)。そして、ステップS1で取得された画像データのメニューブック画像を含むメニューシート設定画面が作成されて表示部24に表示される(ステップS2)。ステップS2で表示される画面は、例えば、図5に示したメニューシート設定画面241であるものとする。
そして、操作部22を介して、グリッド用のメニューの画像の領域の選択や、選択ボタン又は変換ボタン押下の操作入力が受け付けられる(ステップS3)。ステップS3において、グリッド用のメニューの領域の選択がなされた場合、その選択された領域の領域BITデータ(領域の画像データ)、領域矩形座標(領域の左上及び右下の座標)が取得され、仮管理テーブルのレコードに格納される。このレコードは、同一の領域で同一のレコードになる。仮管理テーブルは、領域番号、領域BITデータ、領域矩形座標の項目を有するものとする。そして、ステップS4で新たに選択された領域がカウントされる(ステップS4)。ステップS4のカウント値は、仮管理テーブルにおいて、領域番号として、ステップS3での仮管理テーブルの選択領域と同一レコードに格納される。
そして、ステップS4での操作入力が、変換ボタン押下であるか否かが判別される(ステップS5)。変換ボタン押下でない場合(ステップS5;NO)、ステップS3に移行される。変換ボタン押下である場合(ステップS5;YES)、ステップS4における選択領域を横グリッドに格納する横グリッド格納処理が実行される(ステップS6)。
そして、ステップS6により横グリッドに格納された領域を縦グリッドに格納する縦グリッド格納処理が実行される(ステップS10)。そして、ステップS10によりグリッドに格納された領域に関する管理テーブルを設定する管理テーブル設定処理が実行され(ステップS14)、メニューシート作成処理が終了する。ステップS6の横グリッド格納処理と、ステップS10の縦グリッド格納処理と、ステップS14の管理テーブル設定処理とは、詳細に後述される。
図13〜図15を参照して、メニューシート作成処理のステップS6の横グリッド格納処理を説明する。図13〜図15に示すように、先ず、予め設定されて記憶部25に記憶されている横グリッド数nが読み出され、メニューブックの画像の全横ドット数wが取得され、1横グリッドあたりの横ドット数(=w/n)が算出される(ステップS61)。
そして、全横グリッドのうち、未選択の横グリッドが一つ選択される(ステップS62)。そして、ステップS62で未選択の横グリッドが選択されたか否かが判別される(ステップS63)。未選択の横グリッドが選択された場合(ステップS63;YES)、選択中の横グリッドの最も左の横座標である開始点sxと、最も右の横座標である終了点exとが算出され(ステップS64)、ステップS62に移行される。
未選択の横グリッドが選択されない場合(ステップS63;NO)、仮管理テーブルから未選択のレコードが一つ選択される(ステップS65)。そして、ステップS65で未選択レコードが選択されたか否かが判別される(ステップS66)。未選択レコードが選択された場合(ステップS66;YES)、選択レコードの領域矩形座標が読み出され、この領域矩形座標から重心(mx,my)が算出される(ステップS67)。重心(mx,my)は、領域矩形座標の左上及び右下の座標の中点の座標となる。
そして、全横グリッドのうち、未選択の横グリッドが一つ選択される(ステップS68)。そして、ステップS68で未選択の横グリッドが選択されたか否かが判別される(ステップS69)。ステップS68で未選択の横グリッドが選択されていない場合(ステップS69;NO)、ステップS65に移行される。ステップS68で未選択の横グリッドが選択された場合(ステップS69;YES)、選択中の横グリッドが選択中の領域の重心を含むか否かが判別される(ステップS70)。
選択中の横グリッドが選択中の領域の重心を含まない場合(ステップS70;NO)、ステップS68に移行される。選択中の横グリッドが選択中の領域の重心を含む場合(ステップS70;YES)、各横グリッドの領域の個数を有する重み配列のうち、選択中の横グリッドに対応する重みが+1増加され(ステップS71)、ステップS68に移行される。重み配列は、例えば、図11(a)の例で、(1,0,0,6)のように表される。
そして、予め設定されて記憶部25に記憶されている横グリッド数nが読み出される(ステップS72)。そして、重み配列から未選択の重みが左から順に一つ選択される(ステップS73)。そして、ステップS73で重み配列から未選択の重みが選択されたか否かが判別される(ステップS74)。未選択の重みが選択された場合(ステップS74;YES)、選択中の重みが(重み−m)の値に補正され、その補正値が補正配列に設定され(ステップS75)、ステップS73に移行される。補正配列は、例えば、図11(a)の例で、(−3,−4,−4,2)のように表される。
未選択の重みが選択されていない場合(ステップS74;NO)、重みの最大値maxが0に仮定される(ステップS76)。そして、補正配列から未選択の補正値が一つ選択される(ステップS77)。そして、ステップS77で未選択の補正値が選択されたか否かが判別される(ステップS78)。未選択の補正値が選択された場合(ステップS78;YES)、選択中の補正値が0より大きいか否かが判別される(ステップS79)。選択中の補正値が0より大きくない場合(ステップS79;NO)、ステップS77に移行される。
選択中の補正値が0より大きい場合(ステップS79;YES)、重み配列における重みの最大値maxが選択中の補正値に設定され、そのindexが取得される(ステップS80)。indexは、(−3,−4,−4,2)の場合、左から、1,2,3,4である。そして、重みの最大値maxが0であるか否かが判別される(ステップS81)。未選択の補正値が選択されない場合(ステップS78;NO)、ステップS81に移行される。
重みの最大値maxが0でない場合(ステップS81;NO)、(重み配列のindexの重み)−(補正配列のindexの補正値)が算出され、その算出値が重み配列の最大値に設定される(ステップS82)。例えば、重み配列(1,0,0,6)、indexが4で、重みの最大値maxが2である場合に、重み配列(1,0,0,4)に設定される。
そして、補正配列の補正値の最大値(補正値max)が0より大きいか否かが判別される(ステップS83)。補正値maxが0より大きい場合(ステップS83;YES)、補正配列全体が未処理とされ、重みの最小値minが0に設定される(ステップS84)。そして、補正配列から未選択の補正値が一つ選択される(ステップS85)。そして、ステップS85で未選択の補正値が選択されたか否かが判別される(ステップS86)。
未選択の補正値が選択されていない場合(ステップS86;NO)、重み配列のindexの重みが+1増加され、補正値maxから1が減算され(ステップS87)、ステップS83に移行される。
未選択の補正値が選択された場合(ステップS86;YES)、選択中の補正値が重みの最小値minよりも小さいか否かが判別される(ステップS88)。選択中の補正値が重みの最小値minよりも小さくない場合(ステップS88;NO)、ステップS85に移行される。選択中の補正値が重みの最小値minよりも小さい場合(ステップS88;YES)、重みの最小値minが補正配列の選択中の補正値に設定され、そのindexが取得され(ステップS89)、ステップS85に移行される。
補正値maxが0より大きくない場合(ステップS83;NO)、ステップS76に移行される。例えば、ステップS83〜S89により、補正配列が(−3,−4,−4,0)、重み配列が(1,1,1,4)となる。
重みの最大値maxが0である場合(ステップS81;YES)、未選択領域(仮管理テーブルの未選択レコード)がレコード順に一つ選択される(ステップS90)。そして、ステップS90で未選択領域が選択されたか否かが判別される(ステップS91)。未選択領域が選択された場合(ステップS91;YES)、重み配列の未選択の重みが左から順に一つ選択される(ステップS92)。そして、ステップS92で未選択の重みが選択されたか否かが判別される(ステップS93)。
未選択の重みが選択されていない場合(ステップS93;NO)、ステップS90に移行される。未選択の重みが選択された場合(ステップS93;YES)、選択中の重みが0でないか否かが判別される(ステップS94)。選択中の重みが0でない場合(ステップS94;YES)、選択中の領域の重心が、その領域を含む横グリッドの中心に補正され、重み配列の選択中の重みから1が減算され(ステップS95)、ステップS90に移行される。選択中の重みが0である場合(ステップS94;NO)、ステップS92に移行される。未選択領域が選択された場合(ステップS91;NO)、横グリッド格納処理が終了する。
次いで、図16〜図18を参照して、メニューシート作成処理のステップS10の縦グリッド格納処理を説明する。図16〜図18に示すように、先ず、予め設定されて記憶部25に記憶されている縦グリッド数mが読み出され、メニューブックの画像の全縦ドット数hが取得され、1縦グリッドあたりの縦ドット数(=h/m)が算出される(ステップS101)。
そして、全縦グリッドのうち、未選択の縦グリッドが一つ選択される(ステップS102)。そして、ステップS102で未選択の縦グリッドが選択されたか否かが判別される(ステップS103)。未選択の縦グリッドが選択された場合(ステップS103;YES)、選択中の縦グリッドの最も上の縦座標である開始点syと、最も下の縦座標である終了点eyとが算出され(ステップS104)、ステップS102に移行される。
未選択の縦グリッドが選択されない場合(ステップS103;NO)、全横グリッドのうち、未選択の横グリッドが一つ選択される(ステップS105)。そして、ステップS105で未選択の横グリッドが選択されたか否かが判別される(ステップS106)。未選択領域が選択された場合(ステップS106;YES)、選択中の横グリッドの重心myが小さい領域順に縦配列が作成される(ステップS107)。そして、縦配列の未選択要素が一つ選択される(ステップS108)。
そして、ステップS108で未選択要素が選択されたか否かが判別される(ステップS109)。未選択要素が選択されていない場合(ステップS109;NO)、ステップS105に移行される。未選択要素が選択された場合(ステップS109;YES)、選択中の要素の次の要素があるか否かが判別される(ステップS110)。選択中の要素の次の要素がない場合(ステップS110;NO)、ステップS105に移行される。
選択中の要素の次の要素がある場合(ステップS110;YES)、選択中の要素の重心myとその次の要素の重心myとの差が縦グリッドの大きさより小さいか否かが判別される(ステップS111)。選択中及び次の要素の重心myの差が縦グリッドの大きさより小さくない場合(ステップS111;NO)、ステップS108に移行される。
選択中及び次の要素の重心myの差が縦グリッドの大きさより小さい場合(ステップS111;YES)、補正値adj=(ey−sy−(my[next]−my))が算出される(ステップS112)。ここで、my[next]が、次要素の重心myである。そして、次の要素以降の(ステップS114で)未処理の残り要素があるか否かが判別される(ステップS113)。未処理の残り要素がある場合(ステップS113;YES)、未処理の残り要素の重心myに補正値adjが加算され(ステップS114)、ステップS113に移行される。未処理の残り要素がない場合(ステップS113;NO)、ステップS108に移行される。
上記ステップS105で未選択の横グリッドが選択されず、ステップS106で未選択領域が選択されなかったと判断された場合(ステップS106;NO)、仮管理テーブルから未選択のレコードが一つ選択される(ステップS115)。そして、ステップS115で未選択レコードが選択されたか否かが判別される(ステップS116)。未選択レコードが選択された場合(ステップS116;YES)、選択中のレコードに応じて最大の重心mymaxが更新されて取得され(ステップS117)、ステップS115に移行される。
未選択レコードが選択されない場合(ステップS116;NO)、補正元最大値=(mymax+(ey−sy)/2)が算出され、補正比rate=(補正元最大値/h)が算出される(ステップS118)。そして、補正比rate=1であるか否かが判別される(ステップS119)。補正比rate=1である場合(ステップS119;YES)、未選択領域(仮管理テーブルの未選択レコード)が一つ選択される(ステップS120)。
そして、ステップS120で未選択領域が選択されたか否かが判別される(ステップS121)。未選択領域が選択された場合(ステップS121;YES)、選択中の領域の重心myが、縦グリッドの中心((sy−ey)/2)に設定され(ステップS122)、ステップS120に移行される。未選択領域が選択されない場合(ステップS121;NO)、縦グリッド格納処理が終了する。
補正比rate=1でない場合(ステップS119;NO)、仮管理テーブルから未選択のレコードが一つ選択される(ステップS123)。そして、ステップS123で未選択レコードが選択されたか否かが判別される(ステップS124)。未選択レコードが選択された場合(ステップS124;YES)、選択中のレコードの領域の重心myが(my×rate)に補正され(ステップS125)、ステップS123に移行される。
未選択レコードが選択されない場合(ステップS124;NO)、全横グリッドのうち、未選択の横グリッドが一つ選択される(ステップS126)。そして、ステップS126で未選択の横グリッドが選択されたか否かが判別される(ステップS127)。未選択領域が選択された場合(ステップS127;YES)、選択中の横グリッドの重心myが小さい順に縦配列が作成される(ステップS128)。そして、縦配列の未選択要素が一つ選択される(ステップS129)。
そして、ステップS129で未選択要素が選択されたか否かが判別される(ステップS130)。未選択要素が選択されていない場合(ステップS130;NO)、ステップS126に移行される。未選択要素が選択された場合(ステップS130;YES)、選択中の要素の次の要素があるか否かが判別される(ステップS131)。選択中の要素の次の要素がない場合(ステップS131;NO)、ステップS126に移行される。
選択中の要素の次の要素がある場合(ステップS131;YES)、選択中の要素の重心myとその次の要素の重心myとの差が縦グリッドの大きさより小さいか否かが判別される(ステップS132)。選択中及び次の要素の重心myの差が縦グリッドの大きさより小さくない場合(ステップS132;NO)、ステップS129に移行される。
選択中及び次の要素の重心myの差が縦グリッドの大きさより小さい場合(ステップS132;YES)、補正値adj=(ey−sy−(my[next]−my))が算出される(ステップS133)。そして、次の要素以降の(ステップS135で)未処理の残り要素があるか否かが判別される(ステップS134)。未処理の残り要素がある場合(ステップS134;YES)、未処理の残り要素の重心myに補正値adjが加算され(ステップS135)、ステップS134に移行される。未処理の残り要素がない場合(ステップS134;NO)、ステップS129に移行される。
次いで、図19を参照して、メニューシート作成処理のステップS14の管理テーブル設定処理を説明する。図19に示すように、先ず、未選択の領域(仮管理テーブルの未選択レコード)が一つ選択される(ステップS141)。そして、横グリッド格納処理及び縦グリッド格納処理で算出された、選択中の領域の補正後の重心mx,myが、補正座標として取得される(ステップS142)。そして、補正座標に応じて、選択中の領域が含まれるグリッドに対応するKEY番号に変換され、記憶部25に記憶される管理テーブル50のKEY番号51に設定される(ステップS143)。
そして、選択中の領域に対応する領域BITデータが仮管理テーブルから読み出され、管理テーブル50の領域BITデータ54に設定される(ステップS144)。そして、選択中の領域の重心mx,my、縦横グリッドの大きさから領域矩形座標が算出され、管理テーブル50の領域矩形座標55に設定される(ステップS145)。そして、メニューシートのファイルを格納するファイルパスが、管理テーブル50のファイルパス56に設定される(ステップS146)。
そして、未選択の領域があるか否かが判別される(ステップS147)。未選択の領域がある場合(ステップS147;YES)、ステップS141に移行される。未選択の領域がない場合(ステップS147;NO)、管理テーブル50が表示部24に表示される(ステップS148)。そして、操作部22を介してユーザからの各領域のキャラクタの操作入力が受け付けられ、その操作入力に応じて、管理テーブル50のキャラクタ52が設定される(ステップS149)。そして、操作部22を介してユーザからの各領域の単価の操作入力が受け付けられ、その操作入力に応じて、管理テーブル50の単価53が設定される(ステップS150)。
そして、操作部22を介してユーザからの管理テーブル50の編集入力の終了指示が入力されたか否かが判別される(ステップS151)。編集入力の終了指示が入力されていない場合(ステップS151;NO)、ステップS149に移行される。編集入力の終了指示が入力された場合(ステップS151;YES)、管理テーブル設定処理が終了する。
次いで、図20を参照して、メニューシート作成装置20において実行されるメニューシート出力処理を説明する。図20に、メニューシート作成装置20で実行されるメニューシート出力処理のフローチャートを示す。
メニューシート作成装置20において、メニューシート作成処理の実行後、例えば、操作部22を介してユーザからのメニューシート出力処理実行指示の入力を受け付けたことをトリガとして、CPU21は、メニューシート出力プログラム252に従い、メニューシート出力処理を実行する。
図20に示すように、先ず、記憶部25に記憶されている管理テーブル50からKEY番号51、キャラクタ52、単価53が抽出される(ステップS161)。そして、ステップS161で抽出された情報から、ハンディ端末30用の転送用一時ファイルが生成される(ステップS162)。そして、ステップS162で生成された転送用一時ファイルが、有線通信部26を介して、店頭中央装置10に送信され(ステップS163)、メニューシート出力処理が終了する。
また、ステップS161と並行して、管理テーブル50に基づいて、メニューシートの画像データが生成され、そのメニューシートの画像データに応じて印刷部14により用紙にメニューシート画像が印刷され(ステップS164)、メニューシート出力処理が終了する。メニューシート画像は、例えば、図7のメニューシート画面242のメニューシート画像となる。
次いで、図21を参照して、店頭中央装置10において実行されるメニュー設定処理を説明する。図21に、店頭中央装置10で実行されるメニュー設定処理のフローチャートを示す。
店頭中央装置10において、メニューシート出力処理に対応して、例えば、有線通信部16によりメニューシート作成装置20から転送用一時ファイルを受信開始したことをトリガとして、CPU11は、メニュー設定プログラム151に従い、メニュー設定処理を実行する。
図21に示すように、先ず、通信ネットワークN、有線通信部16を介して、メニューシート作成装置20から転送用一時ファイルが受信される(ステップS171)。そして、ステップS171で受信された転送用一時ファイルからKEY番号、キャラクタが抽出される(ステップS172)。そして、ステップS172で抽出されたKEY番号、キャラクタが、無線通信部17を介してハンディ端末30に送信され(ステップS173)、メニュー設定処理が終了する。
ステップS173に対応して、ハンディ端末30では、KEY番号、キャラクタが、無線通信部36を介して受信される。そして、CPU31により、受信されたKEY番号及びキャラクタが、フラッシュメモリ37に記憶されるとともに、操作部32のメニューシート用のグリッドに設定される。また、メニューシート出力処理のステップS164で印刷されたメニューシートは、ハンディ端末30の操作部32のグリッド状のキー群の上の透明板に挟まれて取り付けられる。
次いで、図22を参照して、ハンディ端末30において実行されるメニュー入力処理を説明する。図22に、ハンディ端末30で実行されるメニュー入力処理のフローチャートを示す。
メニュー設定処理実行後、店舗において、顧客がテーブルに着き、ホールスタッフがそのテーブルでメニューの注文をとる際に、メニュー入力処理が実行される。ハンディ端末30において、例えば、操作部32を介して、ユーザ(ホールスタッフ)からメニュー入力処理を実行開始したことをトリガとして、CPU31は、メニュー入力プログラム351に従い、メニュー入力処理を実行する。
図22に示すように、先ず、操作部32を介して、ユーザ(店員)からの顧客の着いたテーブルのテーブル番号及び客数の入力が受け付けられる(ステップS181)。そして、操作部32のグリッド状のキー群のキー押下入力により、メニュー入力が受け付けられる(ステップS182)。そして、操作部32を介して、ユーザ(ホールスタッフ)からのメニュー入力完了指示入力が受け付けられたか否かが判別される(ステップS183)。
メニュー入力完了指示入力が受け付けられていない場合(ステップS183;NO)、ステップS182に移行される。メニュー入力完了指示入力が受け付けられた場合(ステップS183;YES)、ステップS181,S182で入力されたテーブル番号、客数及び注文されたメニューの情報に基づいてオーダー情報が作成され、このオーダー情報が無線通信部36を介して店頭中央装置10に送信され(ステップS184)、メニュー入力処理が終了する。
次いで、図23を参照して、店頭中央装置10において実行される業務管理処理を説明する。図23に、店頭中央装置10で実行される業務管理処理のフローチャートを示す。
店頭中央装置10において、メニューシート入力処理に対応して、例えば、無線通信部17によりハンディ端末30からオーダー情報を受信開始したことをトリガとして、CPU11は、業務管理プログラム152に従い、業務管理処理を実行する。
図23に示すように、先ず、無線通信部17を介して、ハンディ端末30からオーダー情報が受信される(ステップS191)。そして、ステップS191で受信されたオーダー情報に基づいて、オーダー指示票用及びお客様明細用のプリントデータが作成され、このプリントデータに応じて印刷部14によりオーダー指示票及びお客様明細が印刷される(ステップS192)。そして、ステップS191で受信されたオーダー情報に基づいて、レジ40での精算用の精算情報が作成され、有線通信部16、通信ネットワークNを介してレジ40に送信され(ステップS193)、業務管理処理が終了する。顧客の食事後に、レジ40では、店頭中央装置10から精算情報を受信し、その精算情報に応じて、顧客の食事代金の精算を行う。
以上、本実施の形態によれば、メニューシート作成装置20は、画像取得部27により取得された画像データから、ハンディ端末30の操作部32のグリッド状のキー配列に設定するメニューの画像の領域の選択入力を操作部22により受け付ける。そして、CPU21は、選択された画像の領域を操作部32のグリッド状のキー配列に割り当て、当該割り当てた画像の領域BITデータ54と、当該画像のメニューの識別情報(キャラクタ52)と、領域矩形座標55と、操作部32のKEY番号51と、を対応付けた管理テーブル50を作成する。そして、CPU21は、管理テーブル50から、メニューの識別情報(キャラクタ52)及びKEY番号31を抽出して、店頭中央装置10を介してハンディ端末30に転送する。このため、ハンディ端末30の操作部32に、画像のメニューの識別情報と、KEY番号と、を対応付けて設定することができ、操作部32のグリッド状のキー配列に対応するメニューシートのレイアウトを、メニューブックに近いレイアウトに容易に設定できる。従って、ユーザ(ホールスタッフ)が、ハンディ端末30においてメニューを視覚的に容易に操作入力できる。
また、メニューシート作成装置20は、管理テーブル50に基づいてメニューシート画像を作成し、印刷部28で印刷する。このため、メニューブックに近いレイアウトのメニューシートを容易に印刷できる。ユーザ(ホールスタッフ)は、ハンディ端末30においてメニューを視覚的に容易に認識できる。
また、メニューシート作成装置20は、画像取得部27により取得されたメニューブックの画像を表示部24に表示し、操作部22により、表示されたメニューブックから、ハンディ端末30の操作部32に設定する画像の領域の選択入力を受け付ける。このため、視覚的に容易に、操作部32に設定する画像の領域を選択できる。
また、メニューシート作成装置20は、操作部22によりメニューの識別情報としてメニューのキャラクタ及び単価の入力を受付ける。このため、キャラクタ52及び単価53を容易に入力でき、これらの情報を含む管理テーブル50を作成でき、店頭中央装置10が、キャラクタ52及び単価53を管理できる。
以上の説明では、本発明に係るプログラムのコンピュータ読み取り可能な媒体として記憶部25を使用した例を開示したが、この例に限定されない。本発明に係るプログラムのデータを通信回線を介して提供する媒体として、キャリアウエーブ(搬送波)も本発明に適用される。
なお、上記実施の形態における記述は、本発明に係るメニューシート作成装置、メニューシート作成システム及びプログラムの一例であり、これに限定されるものではない。
上記実施の形態では、メニューシート作成処理の横グリッド格納処理において、横グリッド内の余分な領域を、最も領域が少ない横グリッドに格納させる構成であった。しかし、これに限定するものではなく、領域の偏差の補正を用いる構成としてもよい。
ここで、例えば、4×4のグリッドのメニューシートにおいて、メニューブック上で選択した矩形が偏った配置となっている例を考える。実施の形態に倣って、重みを重み配列で表すと、(1,0,0,6)となる。いま、各列に含まれるグリッド数4より、大きい重み値がある。すなわち、4番目の横グリッドでは、最右列よりあふれてしまう。この重みの補正に、元の重みを完全に平均せず、偏りを維持するようにする。なぜなら、完全に平均すると重みは、(2,2,2,1)のようになり、元の配置と乖離してしまうからである。
偏りを維持した重みの補正には、まず、グリッド数を超えた重みの値を、グリッド数まで減少させる。重みの平均は、次式(1)で表される。
(各重みの和)÷(横グリッド数) …(1)
この例では、平均値1.75となる。
平均値からの各重み値の偏差を、次表1のように表す。
ここで、重み6から補正値2だけ減らして重み4にするため、次表2の括弧の数値a,b,c,x,y及びzについて、偏差を平均に近づけるように増やす必要がある。
補正は、偏差がマイナスの値のものについて行う。元の負の偏差に対して、偏差の大きさに応じた値を補正値として増やすように、次式(2)のように計算する。
(偏差の補正値)={(補正対象の偏差の絶対値)/(補正対象の偏差の絶対値の和)}×補正値 …(2)
上記例では、式(2)より偏差の補正値が以下のようになる。
x={(|−0.75|)/(|−0.75|+|−1.75|+|−1.75|)}×2=0.35
y={(|−1.75|)/(|−0.75|+|−1.75|+|−1.75|)}×2=0.82
z={(|−1.75|)/(|−0.75|+|−1.75|+|−1.75|)}×2=0.82
x、y、zの小数点第一位を四捨五入し、重みの補正値a=0,b=1,c=1を得る。これらの和a+b+cは、重み6を4に補正したときの補正値2と等しくなる。よって、補正後の重み配列は、(1,1,1,4)のように表される。これは、実施の形態の横グリッド格納処理と同様である。
また、上記の実施の形態では、ハンディ端末30の操作部32に配置するメニューシートの元となる画像データをメニューブックとしたが、これに限定されるものではない。例えば、店内の写真を画像データとして取り込み、テーブルやカウンター等の領域をそれぞれ選択して切り抜くことで、ハンディ端末30の操作部32に、テーブル等の番号を入力するキーを設定することができる。さらに、フロアスタッフの写真を画像データとして取り込み、各スタッフの顔の領域を選択して切り抜くことで、ハンディ端末30の操作部32に、従業員がサインオンするためのキーを設定することができる。
また、上記実施の形態では、ハンディ端末30が、印刷したメニューシートを操作部32の上に設定する構成としたが、これに限定されるものではない。例えば、ハンディ端末30の操作部32が、表示部34のタッチパネルとして機能する構成としてもよい。この構成では、店頭中央装置10が、管理テーブル50をハンディ端末30に送信し、ハンディ端末30が、管理テーブル50の領域BITデータ54を、操作部32のグリッド状のキー群(キー配列)に対応する位置に表示部34で表示する。
また、上記実施の形態におけるオーダエントリシステム1の各構成要素の細部構成及び細部動作に関しては、本発明の趣旨を逸脱することのない範囲で適宜変更可能であることは勿論である。