(57)【要約】【課題】スクリプトを適用する処理の高速化。【解決手段】印刷データに基づいて印刷物を印刷するレシートプリンターから、前記印刷データを取得する取得部と、前記印刷データに含まれるテキストデータに基づいて、前記印刷物の種類を判定する判定部と、複数のスクリプトから、前記種類に対応した前記スクリプトを選択し、選択した前記スクリプトを前記テキストデータに対して適用する適用部と、を備える情報処理装置を構成する。【選択図】図１
2020086814.tif 000002
【特許請求の範囲】
【請求項１】
印刷データに基づいて印刷物を印刷するレシートプリンターから、前記印刷データを取得する取得部と、
前記印刷データに含まれるテキストデータに基づいて、前記印刷物の種類を判定する判定部と、
複数のスクリプトから、前記種類に対応した前記スクリプトを選択し、選択した前記スクリプトを前記テキストデータに対して適用する適用部と、
を備える情報処理装置。
【請求項２】
前記判定部は、
前記テキストデータと、前記印刷物の前記種類とを対応づけた教師データに基づいて機械学習された学習モデルにより、前記種類の判定を行う、
請求項１に記載の情報処理装置。
【請求項３】
前記判定部は、
前記印刷物が複数の前記種類のそれぞれである可能性を取得し、
前記適用部は、
前記可能性が高い前記種類であるほど順位が高くなるように、前記種類に対応した前記スクリプトを選択する優先順位を設定する、
請求項１または請求項２に記載の情報処理装置。
【請求項４】
前記適用部は、
選択した前記スクリプトを前記テキストデータに対して適用して結果が得られるまで、設定した前記優先順位に従って、前記スクリプトを選択して適用する、
請求項３に記載の情報処理装置。
【請求項５】
前記印刷物の前記種類には、店舗での購入記録を示す前記印刷物と、店舗の売上集計を示す前記印刷物と、が含まれる、
請求項１〜請求項４のいずれかに記載の情報処理装置。
【請求項６】
前記スクリプトは、
前記テキストデータに含まれる項目名と、前記項目名に対応したパラメーターとを対応づける処理を行うためのプログラムである、
請求項１〜請求項５のいずれかに記載の情報処理装置。
【請求項７】
前記印刷データに基づいて前記印刷物を印刷する印刷部と、
請求項１〜請求項６のいずれかに記載の情報処理装置に対して前記印刷データを送信可能な送信部と、
を備えるレシートプリンター。
【請求項８】
印刷データに基づいて印刷物を印刷するレシートプリンターから、前記印刷データを取得する取得工程と、
前記印刷データに含まれるテキストデータに基づいて、前記印刷物の種類を判定する判定工程と、
複数のスクリプトから、前記種類に対応した前記スクリプトを選択し、選択した前記スクリプトを前記テキストデータに対して適用する適用工程と、
を含む情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、レシートプリンターおよび情報処理方法に関する。
【背景技術】
【０００２】
従来、ＰＯＳ端末等で利用されるレシートプリンターで印刷を行わせるための印刷データを解析する技術が知られている。例えば、特許文献１においては、印刷データを制御サーバーに送信すると、制御サーバーがレイアウトに対応する方法で印刷データを解析する技術が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１５−１５８７７５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
印刷データによって印刷される印刷物のレイアウトが不明である状態では、レイアウトに対応した解析の方法が不明であるため、想定される全ての方法で解析を行い、最も適切な結果を解析結果と見なす手法が採用され得る。このように全ての方法で解析を行う構成では、解析に時間がかかってしまう。
【課題を解決するための手段】
【０００５】
上記目的を達成するための情報処理装置は、印刷データに基づいて印刷物を印刷するレシートプリンターから、印刷データを取得する取得部と、印刷データに含まれるテキストデータに基づいて、印刷物の種類を判定する判定部と、複数のスクリプトから、種類に対応したスクリプトを選択し、選択したスクリプトをテキストデータに対して適用する適用部と、を備える。すなわち、情報処理装置においては、印刷データに含まれるテキストデータに基づいて印刷物の種類に対応したスクリプトを選択する。この結果、全ての種類のスクリプトを適用しなくても、適切なスクリプトをテキストデータに対して適用できる可能性を高めることができる。
【０００６】
また、判定部は、テキストデータと、印刷物の種類とを対応づけた教師データに基づいて機械学習された学習モデルにより、種類の判定を行う構成であってもよい。この構成によれば、人間による判断に頼らずに規定されたテキストデータと印刷物の種類との対応関係に基づいて印刷物の種類を判断することができる。
【０００７】
さらに、判定部は、印刷物が複数の種類のそれぞれである可能性を取得し、適用部は、可能性が高い種類であるほど順位が高くなるように、印刷物の種類に対応したスクリプトを選択する優先順位を設定する構成であっても良い。この構成によれば、適切なスクリプトをテキストデータに対して適用することができる可能性を高めることができる。
【０００８】
さらに、適用部は、選択したスクリプトをテキストデータに対して適用して結果が得られるまで、設定した優先順位に従って、スクリプトを選択して適用する構成であっても良い。この構成によれば、早期に適切なスクリプトをテキストデータに対して適用することができる可能性を高めることができる。
【０００９】
さらに、印刷物の種類には、店舗での購入記録を示す印刷物と、店舗の売上集計を示す印刷物と、が含まれる構成であっても良い。この構成によれば、店舗での購入記録を示す印刷物と、店舗の売上集計を示す印刷物とが印刷され得るレシートプリンターで利用される印刷データに対して適切なスクリプトを適用することができる可能性を高めることができる。
【００１０】
さらに、前記スクリプトは、テキストデータに含まれる項目名と、項目名に対応したパラメーターとを対応づける処理を行うためのプログラムであっても良い。この構成によれば、適切なスクリプトをテキストデータに対して適用することで、適切な解析結果を得ることができる。また、テキストデータが示す内容を容易に利用可能な状態にすることができる。
【図面の簡単な説明】
【００１１】
【図１】情報処理装置のブロック図である。
【図２】ニューラルネットワークの構造を示す図である。
【図３】機械学習処理を示すフローチャートである。
【図４】情報処理を示すフローチャートである。
【図５】購入記録を示す印刷物と構造化データの例を示す図である。
【図６】ＲＮＮを含むモデルの構造を示す図である。
【発明を実施するための形態】
【００１２】
ここでは、下記の順序に従って本発明の実施の形態について説明する。
（１）情報処理装置の構成：
（２）機械学習処理：
（３）情報処理：
（４）他の実施形態：
【００１３】
（１）情報処理装置の構成：
図１は、本発明の実施形態にかかる情報処理装置を示すブロック図である。本実施形態にかかる情報処理装置１は、レシートプリンター２と通信可能なサーバーであり、インターネット等のネットワークを介してレシートプリンター２と通信を行うことができる。
【００１４】
レシートプリンター２は店舗のレジスターに備えられるプリンターである。すなわち、、レシートプリンター２は、店舗において商品を購入した各顧客に対して購入記録を示す印刷物（レシート）を渡すために使用され、会計後にオペレーターの操作によってレシートが印刷される。むろん、レシートプリンター２は他の機器と協働する構成であってもよく、例えば、ＰＯＳシステム（point of sales system）の一部を構成していても良い。
【００１５】
レシートプリンター２は、図示しないレジスター等の制御装置からの指令によって各種の印刷物を印刷することができる。本実施形態において図示しない制御装置は、店舗での購入記録を示す印刷物と、店舗の売上集計を示す印刷物と、店舗で働く者の勤怠情報を示す印刷物とのいずれかを指定して印刷することができる。
【００１６】
すなわち、制御装置は、図示しないプロセッサーの機能により、顧客が購入した商品の価格等を示す購入記録を示す印刷データを生成することができる。制御装置が、レシートプリンター２に対して制御信号を出力して当該印刷データに基づく印刷を指示すると、レシートプリンター２は購入記録を示す印刷物を印刷することができる。
【００１７】
また、制御装置は、任意の期間毎の購入記録を集計して売上集計を取得することができ、当該売上集計を示す印刷データを生成することができる。制御装置が、レシートプリンター２に対して制御信号を出力して当該印刷データに基づく印刷を指示すると、レシートプリンター２は店舗の売上集計を示す印刷物を印刷することができる。さらに、制御装置は、店舗で働く者の勤務開始および終了に関する情報を記録、管理しており、任意の期間毎の情報を集計して勤務情報を取得することができる。制御装置は、当該勤務情報を示す印刷データを生成することができ、レシートプリンター２に対して制御信号を出力して当該印刷データに基づく印刷を指示すると、レシートプリンター２は店舗で働く者の勤怠情報を示す印刷物を印刷することができる。
【００１８】
このように、レシートプリンター２は、購入記録を示す印刷物を印刷することができるが、他の印刷物である売上集計を示す印刷物、勤怠情報を示す印刷物を印刷することもできる。なお、本実施形態において、レシートプリンター２に受け渡される印刷データには、印刷物に印刷されるべきテキストを示すテキストデータが含まれている。
【００１９】
本実施形態においてレシートプリンター２は、情報処理装置１に印刷データを送信可能な送信部を備える。レシートプリンター２は、印刷物の印刷指示が行われると、印刷データに基づいてレシートプリンター２の印刷ヘッド（印刷部）による印刷を行うとともに、送信部の機能により、情報処理装置１に対して印刷データを送信する。なお、本実施形態においては、レシートプリンター２と情報処理装置１とが接続され、レシートプリンター２から情報処理装置１に印刷データが送信されるが、レシートプリンター２を制御する制御装置から印刷データが情報処理装置１に送信されてもよい。この場合、レシートプリンター２を制御する制御装置もレシートプリンター２を構成すると見なすことができる。なお、送信部は、通信インターフェース、通信回路、通信ポート等で構成される。また、送信部による印刷データの送信は、ＵＳＢやイーサネット等の有線通信による送信であってもよく、Ｗｉ−ＦｉやＢｌｕｅｔｏｏｔｈ等の無線通信による送信であってもよい（イーサネット、Ｗｉ−Ｆｉ、Ｂｌｕｅｔｏｏｔｈは登録商標）。
【００２０】
情報処理装置１は、プロセッサー１０（制御部）と、ＨＤＤ（ハードディスクドライブ、記憶部）２０と、通信部３０とを備えている。通信部３０は、インターネット等を介して外部の機器と通信を行うための装置であり、レシートプリンター２と通信を行って情報を授受することができる。なお、通信部３０は、レシートプリンター２の送信部と同様のハードウェア構成を有してよく、送信部と同様に、有線通信であっても、無線通信であってもよい。
【００２１】
プロセッサー１０は、ＣＰＵ，ＲＡＭ等を備え、ＨＤＤ２０に記録された種々のプログラムを実行することができる。本実施形態においては、これらのプログラムに情報処理プログラム１１が含まれている。情報処理プログラム１１は、印刷データに含まれるテキストデータ対してスクリプトを適用する処理をプロセッサー１０に実行させるプログラムである。
【００２２】
本実施形態において、スクリプトは、テキストデータに含まれる特定の項目と、項目の内容を示すパラメーターとを対応づけるための処理を記述したプログラムである。例えば、図５の左側には購入記録を示す印刷物Ｐｒが示されている。当該印刷物には、印刷物が発行された日時（０２／１７／２０１７）やレジスターのオペレーター名（Ｎａｍｅ  Ａ）、商品名毎の価格（＄４．９９）等が記載される。これらの日時やオペレーター名、価格は可変の情報であり本実施形態においてはこれらをパラメーターと呼ぶ。
【００２３】
これらのパラメーターは、その情報自体（価格の値等）のみでは意味をなさないため、これらのパラメーターが何に対するパラメーターであるかを示す情報が項目である。例えば、４．９９ドルなどという値自体では何の価格であるのか不明であるため、商品名が対応づけられることで特定の商品の価格が４．９９ドルであるという意味を持つ。また、例えば、２０１７年２月１７日などという値自体では何の日時であるのか不明であるため、印刷物が発行された日時であることが対応づけられることで、発行日時が２０１７年２月１７日であるという意味を持つ。
【００２４】
このように、本実施形態において印刷物に印刷するテキストは、パラメーター（数値または人名等の文字列）と、パラメーターが何のパラメーターであるのかを示す項目とによって構成されている。そこで、スクリプトは、テキストデータを解析し、項目とパラメーターとを抽出して両者を対応づける処理を行うように定義されている。本実施形態においては、当該処理が行われると項目名とパラメーターとを対応づけたテキストデータが生成される。ここでは、生成された当該テキストデータを構造化データと呼ぶ。なお、構造化データにおいては、項目が階層構造を有している場合がある。すなわち、ある項目がさらに下位のサブ項目に細分化されている場合がある。むろん、階層の数は３以上であってもよい。図５に示す構造化データにおいては、括弧の種類を区別することによってこのような階層構造を示している。
【００２５】
図５の右側には印刷物Ｐｒから生成された構造化データＳｔの例を示している。図５の右側の構造化データＳｔにおいては、項目名とパラメーターとが"："によって対応づけられている。例えば、印刷物が発行された日時を示すパラメーターである"０２／１７／２０１７"が"ｐｒｉｎｔｅｄ＿ａｔ"という項目名に対応づけられている。また、レジスターを操作したオペレーター名を示すパラメーターである"Ｎａｍｅ  Ａ"が"ｓｔａｆｆ"という項目のサブ項目の項目名である"ｉｄ"に対応づけられている。なお、印刷物において、項目名は表記されていなくてもよい。例えば、図５の左側に示す印刷物Ｐｒにおいて、印刷物が発行された日時は０２／１７／２０１７という数値で表記されているが、発行日時であることを示す文言は表記されていない。
【００２６】
本実施形態においては、上述のように３種類の印刷物（購入記録を示す印刷物、売上集計を示す印刷物、勤怠情報を示す印刷物）を印刷することができ、それぞれにおける項目やパラメーターは異なり得る。そこで、本実施形態においては、印刷物の種類に対応したスクリプトが予め用意され、スクリプトデータ２０ｄとしてＨＤＤ２０に記録される。
【００２７】
情報処理装置１は、レシートプリンター２から印刷データが送信されると、当該印刷データに含まれるテキストデータに対してスクリプトを適用するが、印刷データによって印刷される印刷物の種類が不明であると、適用するスクリプトを決定することができない。印刷物の種類が不明のままスクリプトを適用しようとすると、全ての種類のスクリプトをテキストデータに適用し、適正な結果を採用するなどの手順を採用しなくてはならない。しかし、全ての種類のスクリプトをテキストデータに適用すると、処理に時間がかかってしまう。
【００２８】
そこで、本実施形態においては、印刷物の種類を判定した上で適用すべきスクリプトを決定する構成が採用されている。このような処理を実行するため、情報処理プログラム１１は、取得部１１ａ、判定部１１ｂ、適用部１１ｃを備えている。すなわち、情報処理プログラム１１が実行されると、プロセッサー１０は、取得部１１ａ、判定部１１ｂ、適用部１１ｃとして機能する。
【００２９】
取得部１１ａにより、プロセッサー１０は、印刷データに基づいて印刷物を印刷するレシートプリンターから、印刷データを取得する機能を実行する。すなわち、レシートプリンター２から印刷データが送信されると、プロセッサー１０は取得部１１ａの機能により、通信部３０を介して印刷データを取得する。印刷データが取得されると、印刷データ２０ａとしてＨＤＤ２０に記録される。
【００３０】
判定部１１ｂにより、プロセッサー１０は、印刷データに含まれるテキストデータに基づいて、印刷物の種類を判定する機能を実行する。本実施形態においてプロセッサー１０は、テキストデータと、印刷物の種類とを対応づけた教師データに基づいて機械学習された学習モデルにより、印刷物の種類を判定する。
【００３１】
具体的には、本実施形態における機械学習は、ニューラルネットワークによる学習である。図２は、本実施形態において利用されるニューラルネットワークの構造を模式的に示した図である。図２においては、ニューロンを模したノードを丸で示し、ノード間の結合を実線の直線で示している（ただし、図を簡易化するためノードおよび結合は一部のみが示されている）。また、図２においては、同一層に属するノードを縦に並べて示しており、左端の層が入力層Ｌｉ、右端の層が出力層Ｌｏである。
【００３２】
ここでは、２層の関係において入力層Ｌｉに近い層を上位層、出力層Ｌｏに近い層を下位層と呼ぶ。すなわち、ある層においては、１層上位の層の出力を入力とし、重みの乗算とバイアスの和算を行い、活性化関数を介して出力を行う構造となっている。例えば、図２に示す層ＬPのノードの数がＰ個であり、層ＬPの各ノードに対する入力データがｘ1，，，，ｘMであり、バイアスがｂ1，，，，ｂPであり、層ＬPのｋ番目のノードに対する重みがｗk1，，，，ｗkM、活性化関数がｈ（ｕ）である場合、当該層ＬPの各ノードにおける中間出力ｕ1，，，，ｕPは以下の式１で表現される。
【数１】
2020086814.tif 000003
従って、式１を活性化関数ｈ（ｕk）に代入すると層ＬPの各ノードにおける出力ｙ1，，，，ｙPが得られる。
【００３３】
モデルは、このように一般化されるノードが複数層設けられることによって構成される。従って、本実施形態において、モデルは、少なくとも各層における重みとバイアスと活性化関数を示すデータによって構成される。なお、活性化関数は、種々の関数、例えば、シグモイド関数や、双曲線関数（ｔａｎｈ）、ＲｅＬＵ（Rectified Linear Unit）や他の関数を使用可能であり、非線形関数であることが好ましい。むろん、機械学習を行う際に必要な他の条件、例えば、最適化アリゴリズムの種類や学習率等のパラメーターがモデルに含まれていても良い。また、層の数やノードの数、相関の結合関係は種々の態様とすることができる。
【００３４】
本実施形態においては、印刷データ２０ａに含まれるテキストデータを所定の入力値に変換して入力層Ｌｉに入力し、出力層Ｌｏから印刷物の種類を示す出力値を出力するモデルが構築される。本実施形態においては、テキストデータにキーワードが含まれているか否かを示すフラグを入力層Ｌｉへの入力値とし、印刷物が特定の種類である可能性を示す値を出力層Ｌｏの出力値とするモデルが構築される。例えば、図２においては、テキストデータに"ｃａｓｈ"というキーワードが存在する場合にノードＩi2に数値１が入力され、"ｃａｓｈ"というキーワードが存在しない場合にノードＩi2に数値０が入力される。また、テキストデータに"ｇｒａｎｄ  ｔｏｔａｌ"というキーワードが存在する場合にノードＩiMに数値１が入力され、"ｇｒａｎｄ  ｔｏｔａｌ"というキーワードが存在しない場合にノードＩiMに数値０が入力される。すなわち、図２に示す入力層Ｌｉの各ノードには、各ノードに対応するキーワードが併記されている。
【００３５】
キーワードの有無を判定するための手法は、種々の手法であってよく、本実施形態においては、特定のフォーマットでの表記された数値もキーワードとなり得る。例えば、図２に示す"＄０．０"は、ドル通貨を示す記号の右側に、任意桁数の任意の数値、コンマ、任意桁数の任意の数値が並ぶ文字列を示しており、このフォーマットでの数値が存在する場合にキーワードが存在するとされる。
【００３６】
出力層ＬｏのノードＴi1〜Ｔi3は、本実施形態において印刷物の種類が３種類であることに応じて設けられた３個のノードであり、ノードＴi1，Ｔi2，Ｔi3のそれぞれが、購入記録を示す印刷物、売上集計を示す印刷物、勤怠情報を示す印刷物に対応している。すなわち、学習モデルの学習が完了した後においては、テキストデータが購入記録を示す印刷物のデータである場合、ノードＴi1の出力値が他のノードの出力値より大きくなる。テキストデータが売上集計を示す印刷物、勤怠情報を示す印刷物それぞれのデータである場合、ノードＴi2，Ｔi3の出力値のそれぞれが他のノードの出力値より大きくなる。なお、本実施形態においては、ノードＴi1，Ｔi2，Ｔi3の出力値の和が１になるように規格化されている。従って、各ノードの出力の最大値は１である。
【００３７】
以上のモデルによれば、テキストデータに含まれるキーワードの有無を示す入力値をモデルに入力し、各ノードの出力値を計算することで、出力値が大きい順にノードに対応した種類の印刷物である可能性が高いと推定することができる。
【００３８】
学習済のモデルは学習モデル２０ｂとしてＨＤＤ２０に記録されるが、印刷データに含まれるテキストデータに基づいて印刷物の種類を推定する前に、当該学習モデル２０ｂが学習されている必要がある。当該学習は、教師データ２０ｃに基づいて行われる。すなわち、教師データ２０ｃは、テキストデータと、当該テキストデータによって印刷される印刷物の前記種類とを対応づけたデータであり、学習するに充分な量のデータが予め収集される。
【００３９】
プロセッサー１０は、判定部１１ｂの機能により、任意のタイミングで教師データ２０ｃに基づいて学習を実行する。この際、プロセッサー１０は、図２に示すモデルによって、教師データ２０ｃによって対応づけられたテキストデータと印刷物の種類との関係が再現されるようにモデルを調整する。すなわち、プロセッサー１０は、教師データ２０ｃに含まれる少なくとも一部のテキストデータのそれぞれに基づいて、キーワードの有無を特定し、各テキストデータを入力値に変換する。
【００４０】
さらに、プロセッサー１０は、当該入力値をモデルに入力し、得られた出力値が示す印刷物の種類と、教師データ２０ｃが示す印刷物の種類とが一致するように（差分が最小化されるように）モデルを調整する。当該調整によって、予め決められた学習完了判定基準を満たした場合に、得られたモデルが学習モデル２０ｂとしてＨＤＤ２０に記録される。
【００４１】
プロセッサー１０は、学習モデル２０ｂがＨＤＤ２０に記録された状態で印刷物の種類の判定を行う。すなわち、プロセッサー１０は、印刷データ２０ａを取得すると、判定部１１ｂの機能により印刷データ２０ａからテキストデータを抽出する。また、プロセッサー１０は、当該テキストデータからキーワードを検索し、各キーワードについての有無を特定する。さらに、プロセッサー１０は、キーワードの有無をフラグ（１または０）で示す入力値を生成し、学習モデル２０ｂに基づいて入力値に対応する出力値を取得する。そして、プロセッサー１０は各ノードの出力値を比較し、出力層の値が大きい順にノードに対応する印刷物の種類である可能性が高いと見なす。
【００４２】
このようにして印刷データで印刷される印刷物の種類が上述の３種類のそれぞれである可能性が順位付けされることで、印刷物の種類が判定される。印刷物の種類が判定されると、適用部１１ｃの機能によりプロセッサー１０は、複数のスクリプトから、印刷物の種類に対応したスクリプトを選択し、選択したスクリプトをテキストデータに対して適用する。
【００４３】
本実施形態においては、印刷データで印刷される印刷物の種類である可能性が高い順が特定されているため、プロセッサー１０は、可能性が高い種類であるほど順位が高くなるように、各印刷物の種類に対応したスクリプトを選択する優先順位を設定する。そして、プロセッサー１０は、選択したスクリプトをテキストデータに対して適用して結果が得られるまで、設定した優先順位に従って、スクリプトを選択して適用する。
【００４４】
すなわち、本実施形態におけるスクリプトは、特定のフォーマットのテキストを検出したり、特定のキーワードと項目名との組み合わせを検出したりして、特定のパラメーターに対してパラメーターに対応する項目を対応づける処理の手順である。プロセッサー１０は、スクリプトが適用された場合に得られた結果が既定の判断基準を満たす場合にスクリプトの適用結果が得られたと判定する。既定の判断基準は、種々の手法で決められてよいが、本実施形態においては、スクリプトの適用によって得られた構造化データにおいて、予め必須とされた項目のパラメーターが得られたか否かが判断基準となっている。
【００４５】
すなわち、必須とされた項目のパラメーターが構造化データとして取得された場合に、プロセッサー１０は、スクリプトの結果が得られたと判定する。必須とされた項目のパラメーターが構造化データとして取得されなかった場合、プロセッサー１０は、スクリプトの結果が得られなかったと判定する。むろん、必須とされる項目は複数個であってもよい。
【００４６】
プロセッサー１０は、このようなスクリプトの適用と結果が得られたか否かの判定を、優先順位に従って実施する。すなわち、プロセッサー１０は、スクリプトデータ２０ｄを参照し、最も優先順位が高いとされた印刷物の種類に対応するスクリプトを印刷データ２０ａのテキストデータに適用し、構造化データを取得する。プロセッサー１０は、当該構造化データに基づいてスクリプトの結果が得られたか否かを判定し、結果が得られた場合、プロセッサー１０は、スクリプトの適用を終了する。
【００４７】
一方、結果が得られなかった場合、プロセッサー１０は、次の優先順位のスクリプトを印刷データ２０ａのテキストデータに適用し、構造化データに基づいて結果が得られたか否か判定する。プロセッサー１０は、以後、結果が得られたと判定されるまで、順次、優先順位を１個下げてスクリプトを適用し、結果が得られたか否か判定する処理を繰り返す。
【００４８】
以上のような本実施形態によれば、プロセッサー１０は、印刷データ２０ａに含まれるテキストデータに基づいて印刷物の種類に対応したスクリプトを選択し、適用する。また、本実施形態においては、テキストデータで印刷される印刷物の種類である可能性が高い順にスクリプトを適用していく。この結果、全ての種類のスクリプトを適用しなくても、適切なスクリプトをテキストデータに対して適用できる可能性を高めることができる。
【００４９】
なお、以上の処理によって印刷データ２０ａから構造化データが得られると、当該データは構造化データ２０ｅとしてＨＤＤ２０に記録され、構造化データ２０ｅは各種の解析のために利用可能になる。例えば、複数の印刷データ２０ａの構造化データ２０ｅがＩＳＶ（independent software vendor）等に提供され、各種の解析やソフトウェアの開発等に利用される。
【００５０】
（２）機械学習処理：
次に、プロセッサー１０が実行する機械学習処理を説明する。図３は機械学習処理を示すフローチャートである。機械学習処理は、印刷物の種類を判定する前に予め実行される。機械学習処理が開始されると、プロセッサー１０は、判定部１１ｂの機能により、訓練モデルを取得する（ステップＳ１００）。すなわち、予め決められたニューラルネットワークのパラメーター（重みやバイアス等）を訓練モデルとして取得する。
【００５１】
訓練モデルにおいては、テキストデータにおけるキーワードの有無を入力値として、印刷物の種類を示す出力値を出力するが、出力値が示す印刷物の種類は初期において正確ではない。すなわち、訓練モデルにおいては、ノードが構成する層の数やノードの数は決められるが、入出力の関係を規定するパラメーター（上述の重みやバイアス等）は最適化されていない。これらのパラメーターは、機械学習の過程で最適化される（すなわち、訓練される）。本実施形態において訓練モデルは予め決定されているが、利用者がマウス３ａやキーボード３ｂを操作して決定しても良い。
【００５２】
次に、プロセッサー１０は、判定部１１ｂの機能により、教師データ２０ｃを取得する（ステップＳ１０５）。すなわち、プロセッサー１０は、予めＨＤＤ２０に記録されている教師データ２０ｃを取得する。なお、教師データ２０ｃは、レシートプリンター２の運用過程や、新たなフォーマットの印刷物の使用が開始される前等において適宜追加されてよい。むろん、既存のフォーマットの印刷物の廃止等に応じて廃止される印刷物の教師データ２０ｃが削除されてもよい。
【００５３】
次に、プロセッサー１０は、判定部１１ｂの機能により、テストデータを取得する（ステップＳ１１０）。本実施形態においては、教師データ２０ｃの一部がテストデータとされる。テストデータは、教師データ２０ｃと区別される。なお、テストデータの情報量と教師データ２０ｃの情報量は、種々の量であって良いが、本実施形態においては、教師データ２０ｃの方がテストデータより多くなるように設定される。
【００５４】
次に、プロセッサー１０は、判定部１１ｂの機能により、初期値を決定する（ステップＳ１１５）。すなわち、プロセッサー１０は、ステップＳ１００で取得した訓練モデルのうち、可変のパラメーターに対して初期値を与える。初期値は、種々の手法で決定されて良い。例えば、ランダム値や０等を初期値とすることができ、重みとバイアスとで異なる思想で初期値が決定されても良い。むろん、学習の過程でパラメーターが最適化されるように初期値が調整されても良い。
【００５５】
次に、プロセッサー１０は、判定部１１ｂの機能により、学習を行う（ステップＳ１２０）。すなわち、プロセッサー１０は、教師データ２０ｃの各テキストデータを抽出し、各テキストデータにおけるキーワードの有無に基づいて各テキストデータを入力値に変換する。そして、プロセッサー１０は、ステップＳ１００で取得した訓練モデルに当該入力値を入力し、印刷物の種類毎に、各種類である可能性を示す出力値を計算する。また、プロセッサー１０は、出力値と、各テキストデータに対応づけられた印刷物の種類を示すフラグと、の差を示す損失関数によって誤差を特定する。そして、プロセッサー１０は、損失関数のパラメーターによる微分に基づいてパラメーターを更新する処理を既定回数繰り返す。
【００５６】
教師データ２０ｃに含まれるサンプルの数をｉで表現した場合、プロセッサー１０は、ｉ番目のサンプルのテキストデータから特定された入力値を訓練モデルに入力することで、ｉ番目のサンプルの出力値（Ｔi1〜Ｔi3）を取得する。一方、教師データ２０ｃに対応づけられた印刷物の種類を示す情報は、印刷物の種類に対応した値（ｔi1〜ｔi3）であり、特定の印刷物の種類に対応した値が１、他の種類に対応した値が０となる。
【００５７】
そこで、訓練モデルの出力値をＴiと表記し、教師データ２０ｃが示す印刷物の種類をｔiと表記すると、ｉ番目のサンプルについての損失関数はＬ（Ｔi，ｔi）と表記可能である。むろん、損失関数は、種々の関数を採用可能であり、例えば、交差エントロピー誤差などを採用可能である。以上のような損失関数Ｌを算出する処理は、教師データ２０ｃが示すサンプルの全てまたは一部について実施され、その平均や総和によって１回の学習における損失関数が表現される。例えば、総和によって損失関数が表現される場合、全体の損失関数Ｅは次の式２で表現される。
【数２】
2020086814.tif 000004
損失関数Ｅが得られたら、プロセッサー１０は、既定の最適化アルゴリズム、例えば、確率的勾配降下法等によってパラメーターを更新する。
【００５８】
以上のようにして、既定回数のパラメーターの更新が行われると、プロセッサー１０は、訓練モデルの汎化が完了したか否かを判定する（ステップＳ１２５）。すなわち、プロセッサー１０は、ステップＳ１１０で取得したテストデータから算出される入力値を訓練モデルに入力して出力値を取得する。そして、プロセッサー１０は、最も大きい出力値に対応する印刷物の種類と、テストデータに対応づけられた印刷物の種類とが一致している数を取得し、テストデータのサンプル数で除することで推定精度を取得する。本実施形態において、プロセッサー１０は、推定精度が閾値以上である場合に汎化が完了したと判定する。
【００５９】
なお、汎化性能の評価に加え、ハイパーパラメーターの妥当性の検証が行われてもよい。すなわち、重みとバイアス以外の可変量であるハイパーパラメーター、例えば、ノードの数等がチューニングされる構成において、プロセッサー１０は、検証データに基づいてハイパーパラメーターの妥当性を検証しても良い。検証データは、例えば、教師データ２０ｃから予め抽出され、教師データ２０ｃやテストデータと区別されることによって用意される。
【００６０】
ステップＳ１２５において、訓練モデルの汎化が完了したと判定されない場合、プロセッサー１０は、ステップＳ１２０を繰り返す。すなわち、さらに重みおよびバイアスを更新する。一方、ステップＳ１２５において、訓練モデルの汎化が完了したと判定された場合、プロセッサー１０は、学習モデルを記録する（ステップＳ１３０）。すなわち、プロセッサー１０は、訓練モデルを学習モデル２０ｂとしてＨＤＤ２０に記録する。以上のようにして得られた学習モデル２０ｂで印刷物の種類を推定する構成によれば、任意の印刷データに含まれるテキストデータに基づいて、印刷データで印刷される印刷物の種類を推定することが可能になる。
【００６１】
（３）情報処理：
次に、プロセッサー１０が実行する情報処理を説明する。図４は、情報処理を示すフローチャートである。本実施形態において情報処理は、任意のレシートプリンター２から印刷データが送信された場合に実行される。
【００６２】
情報処理が開始されると、プロセッサー１０は、取得部１１ａの機能により、印刷データを取得する（ステップＳ２００）。すなわち、プロセッサー１０は、取得部１１ａの機能により、通信部３０を介してレシートプリンター２と通信を行い、レシートプリンター２が送信した印刷データを受信する。プロセッサー１０は、受信した印刷データを印刷データ２０ａとしてＨＤＤ２０に記録する。
【００６３】
次に、プロセッサー１０は、判定部１１ｂの機能によりキーワード検索を行う（ステップＳ２０５）。すなわち、プロセッサー１０は、ステップＳ２００で受信された印刷データ２０ａからテキストデータを抽出し、予め決められたキーワードが存在するか否か判定する。プロセッサー１０は、存在したキーワードに１、存在しなかったキーワードに０を対応づける。例えば、図２に示す例であれば、"＄０．０"で示されたフォーマットのキーワードが存在する場合にフラグを１、"ｃａｓｈ"というキーワードが存在する場合にフラグを１、"ｈｏｕｒｓ"というキーワードが存在しない場合にフラグを０に設定するなどの処理を行う。
【００６４】
次に、プロセッサー１０は、学習モデルによる推定を行う（ステップＳ２１０）。すなわち、プロセッサー１０は、学習モデル２０ｂに基づいて、ステップＳ２０５で設定されたフラグを入力値としたニューラルネットワークの演算を行う。この結果、印刷物の種類に応じた各ノードについての出力値が得られる。例えば、図２に示す例において、ステップＳ２０５で設定されたフラグが入力値とされ、学習モデル２０ｂによる演算が行われると、ノードＴi1，Ｔi2，Ｔi3のそれぞれについて０以上１以下の出力値が得られる。
【００６５】
次に、プロセッサー１０は、優先順位を取得する（ステップＳ２１５）。すなわち、プロセッサー１０は、各ノードの出力値の大きさが、各ノードに対応する種類の印刷物である可能性を示していると見なす。そして、プロセッサー１０は、出力値が大きい順に各ノードに対応する種類を並べ、当該種類に対応したスクリプトを適用する際の優先順位とする。
【００６６】
例えば、図２に示す例においては、ノードＴi1，Ｔi2，Ｔi3のそれぞれが、購入記録を示す印刷物、売上集計を示す印刷物、勤怠情報を示す印刷物に対応している。この例において、ノードＴi1，Ｔi2，Ｔi3の出力値が０．１，０．８５，０．０５である場合、売上集計を示す印刷物に対応したスクリプトの優先順位が最も高く、次いで、購入記録を示す印刷物に対応したスクリプト、次に、勤怠情報を示す印刷物に対応したスクリプトという優先順位になる。
【００６７】
次に、プロセッサー１０は、未適用で最も優先順位が高いスクリプトを適用し（ステップＳ２２０）、結果が得られたと判定されるまでステップＳ２２０を繰り返す（ステップＳ２２５）。すなわち、プロセッサー１０は、ステップＳ２００で取得された印刷データからテキストデータを抽出し、ステップＳ２１５で取得された優先順位が高い順にスクリプトをテキストデータに適用する。スクリプトがテキストデータに対して適用されると、構造化データが得られるため、プロセッサー１０は、当該構造化データに基づいて、既定の判断基準を満たすか否かを判定する。そして、プロセッサー１０は、既定の判断基準を満たす場合に、結果が得られたと判定する。ステップＳ２２５において、結果が得られたと判定された場合、プロセッサー１０は、得られた構造化データ２０ｅをＨＤＤ２０に保存する（ステップＳ２３０）。以上の構成によれば、テキストデータで印刷される印刷物の種類である可能性が高い順にスクリプトを適用していく。この結果、全ての種類のスクリプトを適用しなくても、適切なスクリプトをテキストデータに対して適用できる可能性を高めることができる。
【００６８】
（４）他の実施形態：
以上の実施形態は本発明を実施するための一例であり、他にも種々の実施形態を採用可能である。例えば、本発明の一実施形態にかかる情報処理装置は、種々の態様で提供されてよく、クラウド型のサーバーなど、複数の装置によって提供されてもよい。さらに、情報処理装置１によって実行される機能の少なくとも一部がレシートプリンター２で実行されてもよい。例えば、学習モデル２０ｂがレシートプリンター２に保存され、レシートプリンター２において印刷物の種類が判定されてもよい。さらに、以上の実施形態のように印刷データに含まれるテキストデータに基づいて、印刷データで印刷される印刷物の種類を判定する手法は、プログラムの発明、方法の発明としても実現可能である。
【００６９】
さらに、機械学習と、印刷物の種類の判定とが別の装置で実行されてもよい。さらに、上述の実施形態は一例であり、一部の構成が省略されたり、他の構成が追加されたりする実施形態が採用され得る。
【００７０】
取得部は、印刷データに基づいて印刷物を印刷するレシートプリンターから、印刷データを取得することができればよい。すなわち、取得部は、任意の印刷物を印刷させるための印刷データを、任意のタイミングで取得することができればよい。レシートプリンターと情報処理装置との接続態様は種々の態様であってよく、ケーブルによって直接的に接続されていてもよいし、インターネット等を介して接続可能であってもよい。
【００７１】
レシートプリンターは、レシートを印刷することができればよく、むろん、レシート以外の印刷物が印刷可能であって良い。レシートは、店舗での購入記録を示す印刷物であれば良く、購入記録が印刷される限り、印刷内容やレイアウトは限定されない。印刷データは、レシートプリンターに任意の印刷物を印刷させるためのデータであれば良く、任意のフォーマットであって良い。ただし、印刷データにはテキストデータが含まれ、当該テキストデータが示すテキストが印刷用紙に印刷されて印刷物となる。むろん、印刷物にはテキスト以外のオブジェクトが印刷されてよく、各種の画像や罫線等を印刷させるためのデータが印刷データに含まれていてもよい。
【００７２】
なお、テキストデータは、印刷物に印刷される文字列を示していればよいが、むろん、テキストのレイアウトやフォントの種類、大きさ等の情報が含まれていてもよい。印刷物の種類の判定にこれらの情報が利用されても良い。
【００７３】
判定部は、印刷データに含まれるテキストデータに基づいて、印刷物の種類を判定することができればよい。すなわち、テキストデータは、印刷物に印刷されるテキストを示しており、テキストによって印刷物の内容が記述される。従って、テキストを印刷物の種類を判定するための要素として利用することができる。印刷物の種類を判定するための手法は、上述の実施形態のように機械学習による学習済のモデルを利用する構成に限定されない。例えば、テキストデータが示すテキスト内に印刷物の種類に応じた特定のキーワードが含まれている比率等によって印刷物の種類が判定される構成等が採用されてもよい。
【００７４】
印刷物の種類は、印刷物の用途等によって予め分類されていればよく、上述の実施形態のように、店舗での購入記録を示す印刷物、店舗の売上集計を示す印刷物、勤怠情報を示す印刷物以外にも種々の印刷物が挙げられる。例えば、購入された宝くじやチケット等を示す印刷物であってもよいし、公共料金の支払い証明を示す印刷物であってもよく、他にも種々の印刷物であってよい。
【００７５】
適用部は、複数のスクリプトから、印刷物の種類に対応したスクリプトを選択し、選択したスクリプトをテキストデータに対して適用することができればよい。すなわち、印刷物の種類は複数個存在し、それぞれに応じたスクリプトが予め用意される。スクリプトは、印刷物の種類に応じて用意されるため、少なくとも印刷物の種類の数と同一数だけ存在するが、１種類の印刷物に対して複数のスクリプトが予め用意されてもよい。
【００７６】
スクリプトは、テキストデータに基づいて既定の手順で処理を行うためのプログラムであれば良く、言語は限定されない。スクリプトは簡易な処理の手順であることが多いが、むろん、処理の内容は複雑であってもよい。スクリプトを適用する目的は、種々の目的であってよく、スクリプト毎に目的が存在してもよい。目的としては、上述の実施形態のように、項目とパラメーターとを対応づけて抽出し、各種の解析の元データとして提供する目的以外にも、種々の目的が想定される。例えば、購入記録に含まれる商品毎の金額や合計金額等に基づいて家計管理のための情報を収集する目的や、店舗の売上集計に基づいて市場調査のための情報を収集する目的や、勤怠情報に基づいて労務管理のための情報を収集する目的など、各種の目的が想定される。
【００７７】
スクリプトのテキストデータに対する適用は、スクリプトが示す手順に従ってテキストデータを解析する処理を実行することに相当する。ここでは、テキストデータに基づいて既定の処理が実行されればよく、スクリプトはインタープリタ型であってもよいしコンパイル型であってもよい。
【００７８】
教師データは、印刷データに含まれるテキストデータと、当該印刷データによって印刷される印刷物の種類とを対応づけていればよい。教師データは、学習モデルの入力値および出力値のフォーマットと同一のフォーマットで定義されていればよく、上述の実施形態のようなフォーマットに限定されない。例えば、テキストデータが示す文字列が入力値とされてもよいし、テキストデータに含まれ得る文字列を示すｏｎｅ−ｈｏｔベクトルが定義されて入力値とされてもよいし、テキストデータに含まれる単語や単語の数が入力値とされてもよく、種々の構成を採用可能である。
【００７９】
テキストデータから導出される値が入力値となる場合、当該値の導出は種々の手法で行われてよい。例えば、文字列や単語が検索され、検索結果の有無や検索された数が取得されてもよい。さらに、通貨や時刻が特定のフォーマットで表現されているか否か判定されてよい。例えば、文字列の左側に通貨を示す記号が存在し、その右側に数桁の数値が存在し、その右側にコンマが存在し、さらにその右側に数値が存在するような文字列を検索して価格の有無が特定されてもよい。むろん、このような検索に際しては、正規表現が利用されて良い。
【００８０】
また、出力値は、印刷物の複数の種類について、それぞれの種類である可能性を示していていてもよいし、それぞれの種類ではない可能性を示していてもよい。また、印刷物の種類毎に学習モデルが生成され、印刷物の種類毎に当該種類である可能性を示す値が出力値とされてもよく、他にも種々の態様が想定可能である。むろん、出力値がスクリプトを示していてもよい。
【００８１】
機械学習の手法は、種々の手法であって良い。すなわち、テキストデータ自体やテキストデータから導出される値（単語の数やテキストの長さ、スペースの数、人名の有無等）を入力し、印刷物の種類を出力するモデルを構築し、当該モデルによって適正な出力が得られるように機械学習すればよい。機械学習においては、当該モデルによる出力と教師データにおける出力値との差分を極小化する学習を行うことができればよい。
【００８２】
従って、例えばニューラルネットワークによる機械学習が行われる場合、モデルを構成する層の数やノードの数、活性化関数の種類、損失関数の種類、勾配降下法の種類、勾配降下法の最適化アルゴリズムの種類、ミニバッチ学習の有無やバッチの数、学習率、初期値、過学習抑制手法の種類や有無、畳み込み層の有無、畳み込み演算におけるフィルタのサイズ、フィルタの種類、パディングやストライドの種類、プーリング層の種類や有無、、全結合層の有無、再帰的な構造の有無など、種々の要素を適宜選択して機械学習が行われればよい。むろん、他の機械学習、例えば、サポートベクターマシンやクラスタリング、強化学習等によって学習が行われてもよい。
【００８３】
さらに、モデルの構造（例えば、層の数や層毎のノードの数等）が自動的に最適化される機械学習が行われてもよい。さらに、情報処理装置において機械学習が行われる構成において、複数のレシートプリンターから教師データが収集され、この教師データに基づいて機械学習が行われる構成であっても良い。
【００８４】
むろん、テキストデータがＲＮＮ（Recurrent Neural Network）によって処理されても良い。すなわち、ＲＮＮによれば、テキストデータの前後関係を考慮することが可能であるため、ＲＮＮによる処理が含まれるモデルの機械学習が利用されても良い。図６は、ＲＮＮを含むモデルの構成例である。図６においては、入力値となるテキストデータが単語に分解され、入力値とされる。図６においては、購入記録を構成するテキストの一部である"Ｃａｓｈｉｅｒ  ＮａｍｅＡ  Ｍｉｌｋ  ＄  ４．９９、、、、０．７０"という連続した文字列が単語に分解され、"Ｃａｓｈｉｅｒ"が入力値ｘ1、"ＮａｍｅＡ"が入力値ｘ2、"Ｍｉｌｋ"が入力値ｘ3、"＄"が入力値ｘ4、"４．９９"が入力値ｘ5とされ、以後、"０．７９"が入力値ｘnと変換される例が示されている。
【００８５】
さらに、図６においては、各入力値がＲＮＮのブロックＭ1〜Ｍ5に入力されて出力値ｙ1〜ｙ5、、、ｙnが出力される例が想定されている。なお、図６に示す例においては、ＲＮＮのブロックＭ1〜Ｍ5、、、Ｍn-1の出力値ｙ1〜ｙ5、、、ｙn-1が次のブロックＭ2〜Ｍ6、、、Ｍnに入力される。なお、最初のＲＮＮのブロックＭ1に対して入力値ｘ1とともに入力される値ｙ0は、種々の手法で初期化されて良い（例えば、０ベクトル等）。図６に示す例においては、これらの出力値がニューラルネットワーク（ＮＮ）に入力され、最終的に印刷物の種類に対応したノードＴi1，Ｔi2，Ｔi3毎の出力値が得られる。
【００８６】
以上のようなモデルにおいて、入力値の定義法や重み、バイアスなどのＲＮＮのモデルやＮＮのモデルは、公知の種々の手法を用いることができる。図１に示す例において、以上のようなモデルが想定され、プロセッサー１０が判定部１１ｂの機能によって機械学習を行えば、テキストデータを入力し、印刷データによって印刷される印刷物の種類を推定するモデルを機械学習することができる。そして、このような構成においても、印刷物の種類を判定し、判定結果に応じたスクリプトを適用することにより、全ての種類のスクリプトを適用しなくても、適切なスクリプトをテキストデータに対して適用できる可能性を高めることができる。むろん、図６に示すＲＮＮのモデルも一例であり、双方向ＲＮＮが採用されるなど、種々のモデルが採用されてよい。
【００８７】
印刷物が複数の種類のそれぞれである可能性は、種々の手法によって定義されてよい。従って、印刷物が特定の種類である可能性の最大値が１であり、最小値が０である上述の実施形態以外にも種々の構成が採用されてよい。いずれにしても、印刷物が特定の種類であることを示す数値の大小関係によって、印刷データで印刷される印刷物が複数の印刷物の中のそれぞれである可能性を順位付けすることができればよい。優先順位は、当該順位付けによって特定されればよい。
【００８８】
選択したスクリプトをテキストデータに対して適用して結果が得られたか否かは、予め決められた判定基準によって判断されればよい。従って、上述の実施形態のようにスクリプトが既定の構造化データを出力する構成において、構造化データの中で予め必須とされたデータが得られた場合に結果が得られたと見なす構成以外にも種々の構成が採用されてよい。例えば、スクリプトが適用された場合に、エラーの発生比率や項目とパラメーターとの対応関係が不定となった比率等が閾値以下である場合等にスクリプトの適用結果が得られたと判定する構成等が挙げられる。
【００８９】
さらに本発明は、コンピューターが実行するプログラムや、方法としても適用可能である。また、以上のようなプログラム、方法は、単独の装置として実現される場合もあれば、複数の装置が備える部品を利用して実現される場合もあり、各種の態様を含むものである。また、一部がソフトウェアであり一部がハードウェアであったりするなど、適宜、変更可能である。さらに、プログラムの記録媒体としても発明は成立する。むろん、そのプログラムの記録媒体は、磁気記録媒体であってもよいし半導体メモリ等であってもよいし、今後開発されるいかなる記録媒体においても全く同様に考えることができる。
【符号の説明】
【００９０】
１…情報処理装置、２…レシートプリンター、３ａ…マウス、３ｂ…キーボード、１０…プロセッサー、１１…情報処理プログラム、１１ａ…取得部、１１ｂ…判定部、１１ｃ…適用部、２０…ＨＤＤ、２０ａ…印刷データ、２０ｂ…学習モデル、２０ｃ…教師データ、２０ｄ…スクリプトデータ、２０ｅ…構造化データ、３０…通信部
【図１】
2020086814.tif 000005
【図２】
2020086814.tif 000006
【図３】
2020086814.tif 000007
【図４】
2020086814.tif 000008
【図５】
2020086814.tif 000009
【図６】
2020086814.tif 000010