(57)【要約】【課題】レシートデータのヘッダー範囲またはフッター範囲を特定すること。【解決手段】データ処理装置１００は、複数のレシートデータの各々のレシートデータにおける各々の行の行属性を特定して、各々のレシートデータの先頭行からの複数のレシートデータにおいて行属性が一致する暫定ヘッダー範囲を特定する。次に、データ処理装置１００は、特定した暫定ヘッダー範囲の最下行から順に、暫定ヘッダー範囲とは異なるデータ範囲に含まれる行の行属性と一致しなくなるまで、異なるデータ範囲に含まれる行の行属性と一致するか否かを判定する。そして、データ処理装置１００は、一致すると判定した行を暫定ヘッダー範囲から除外して、暫定ヘッダー範囲を更新する。【選択図】図１
2015075905.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
複数のレシートデータの各々のレシートデータに含まれる複数の行の各々の行に存在する文字の属性に基づいて、前記各々の行の行属性を決定し、
決定した前記各々の行の行属性を比較して、前記各々のレシートデータの先頭行または最終行からの行属性が前記複数のレシートデータにおいて一致するデータ範囲を特定し、
特定した前記データ範囲の最下行または最上行の行属性が、前記複数のレシートデータの少なくともいずれかのレシートデータの前記データ範囲とは異なるデータ範囲に含まれるいずれかの行の行属性と一致したことに応じて、前記データ範囲から最下行または最上行を除外する、
処理を実行させることを特徴とするデータ処理プログラム。
【請求項２】
前記除外する処理は、
前記データ範囲の最下行または最上行の行属性が、前記異なるデータ範囲に含まれるいずれの行の行属性とも一致しなくなるまで、前記データ範囲の最下行または最上行の行属性が、前記異なるデータ範囲に含まれるいずれかの行の行属性と一致したことに応じて、前記データ範囲から最下行または最上行を除外することを特徴とする請求項１に記載のデータ処理プログラム。
【請求項３】
前記特定する処理は、
前記各々の行の行属性を比較して、前記各々のレシートデータの先頭行からの行属性が前記複数のレシートデータにおいて一致する第１データ範囲を特定し、
前記各々の行の行属性を比較して、前記各々のレシートデータの最終行からの行属性が前記複数のレシートデータにおいて一致する第２データ範囲を特定し、
前記除外する処理は、
特定した前記第１データ範囲の最下行の行属性が、前記いずれかのレシートデータの前記第１データ範囲および前記第２データ範囲とは異なるデータ範囲に含まれるいずれかの行の行属性と一致したことに応じて、前記第１データ範囲から前記最下行を除外し、
特定した前記第２データ範囲の最上行の行属性が、前記いずれかのレシートデータの前記第１データ範囲および前記第２データ範囲とは異なるデータ範囲に含まれるいずれかの行の行属性と一致したことに応じて、前記第２データ範囲から前記最上行を除外する、
ことを特徴とする請求項１に記載のデータ処理プログラム。
【請求項４】
前記除外する処理は、
前記第１データ範囲の最下行の行属性が、前記異なるデータ範囲に含まれるいずれの行の行属性とも一致しなくなるまで、前記第１データ範囲の最下行の行属性が、前記異なるデータ範囲に含まれるいずれかの行の行属性と一致したことに応じて、前記第１データ範囲から最下行を除外し、
前記第２データ範囲の最上行の行属性が、前記異なるデータ範囲に含まれるいずれの行の行属性とも一致しなくなるまで、前記第２データ範囲の最上行の行属性が、前記異なるデータ範囲に含まれるいずれかの行の行属性と一致したことに応じて、前記第２データ範囲から最上行を除外する、
ことを特徴とする請求項３に記載のデータ処理プログラム。
【請求項５】
前記コンピュータに、
行の行属性に対応付けて前記行属性の行のデータ形式を特定のデータ形式に変換する変換規則を記憶する記憶部に基づいて、前記複数のレシートデータのうちのいずれかのレシートデータの前記行属性の行のデータ形式を前記特定のデータ形式に変換する、
処理を実行させることを特徴とする請求項１〜４のいずれか一つに記載のデータ処理プログラム。
【請求項６】
前記変換する処理は、
レシートデータにおいて連続する複数の行の行属性のパターンに対応付けて前記複数の行の各々の行のデータ形式を前記特定のデータ形式に変換する変換規則を記憶する記憶部に基づいて、前記複数のレシートデータのうちのいずれかのレシートデータの前記行属性のパターンに対応する複数の行の各々の行のデータ形式を前記特定のデータ形式に変換する、
ことを特徴とする請求項５に記載のデータ処理プログラム。
【請求項７】
前記コンピュータに、
前記複数のレシートデータのうちのいずれかのレシートデータに含まれるいずれかの行の記述内容と行属性とを対応付けて出力し、
前記いずれかの行の行属性と、前記いずれかの行を特定のデータ形式に変換する変換規則と、を受け付け、
受け付けた前記行属性と前記変換規則とを対応付けて前記記憶部に記憶する、
処理を実行させることを特徴とする請求項５または６に記載のデータ処理プログラム。
【請求項８】
コンピュータが、
複数のレシートデータの各々のレシートデータに含まれる複数の行の各々の行に存在する文字の属性に基づいて、前記各々の行の行属性を決定し、
決定した前記各々の行の行属性を比較して、前記各々のレシートデータの先頭行または最終行からの行属性が前記複数のレシートデータにおいて一致するデータ範囲を特定し、
特定した前記データ範囲の最下行または最上行の行属性が、前記複数のレシートデータの少なくともいずれかのレシートデータの前記データ範囲とは異なるデータ範囲に含まれるいずれかの行の行属性と一致したことに応じて、前記データ範囲から最下行または最上行を除外する、
処理を実行することを特徴とするデータ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理プログラム、およびデータ処理方法に関する。
【背景技術】
【０００２】
従来、レシートの印刷態様で記述されたテキストデータ（非構造化データ）を分析するために、テキストデータの中から、日時、商品名、数量、および金額などといった分析対象となる項目を抽出して、テキストデータを構造化データに変換することがある。
【０００３】
関連する技術としては、例えば、レシートの画像データから得られたテキストデータのうちの「小計」の文字列が含まれる行位置から日付の文字列が含まれる行位置まで順に１行ずつ上方向にラインデータを選択して品目関連データを抽出するものがある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００４−１６４２１８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来技術では、レシートの印刷態様が予め想定したものではない場合には、日時、商品名、数量、および金額などといった分析対象となる項目を抽出することができないことがある。例えば、企業や店舗等によってレシートのヘッダーやフッターの形式が異なる場合には、分析対象となる項目を抽出する手がかりとして用いられる特定の文字列などがレシートに含まれていないことがあり、分析対象となる項目を抽出することができない。また、作業者がレシートを観察して分析対象となる項目を抽出することが考えられるが、作業者の負担および作業時間が増大してしまったり、作業者のミスによって分析対象となる項目を抽出できないおそれがある。
【０００６】
１つの側面では、本発明は、レシートデータのヘッダー範囲またはフッター範囲を特定することができるデータ処理プログラム、およびデータ処理方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の一側面によれば、複数のレシートデータの各々のレシートデータに含まれる複数の行の各々の行に存在する文字の属性に基づいて、前記各々の行の行属性を決定し、決定した前記各々の行の行属性を比較して、前記各々のレシートデータの先頭行または最終行からの行属性が前記複数のレシートデータにおいて一致するデータ範囲を特定し、特定した前記データ範囲の最下行または最上行の行属性が、前記複数のレシートデータの少なくともいずれかのレシートデータの前記データ範囲とは異なるデータ範囲に含まれるいずれかの行の行属性と一致したことに応じて、前記データ範囲から最下行または最上行を除外するデータ処理プログラム、およびデータ処理方法が提案される。
【発明の効果】
【０００８】
本発明の一態様によれば、レシートデータのヘッダー範囲またはフッター範囲を特定することができるという効果を奏する。
【図面の簡単な説明】
【０００９】
【図１】図１は、実施の形態にかかるデータ処理プログラムによるレシートデータ処理の一例を示す説明図である。
【図２】図２は、データ処理装置１００のハードウェア構成例を示すブロック図である。
【図３】図３は、文字属性変換対応表３００の一例を示す説明図である。
【図４】図４は、データ処理装置１００の機能的構成例を示すブロック図である。
【図５】図５は、レシートデータの一例を示す説明図である。
【図６】図６は、行の行属性を特定する一例を示す説明図である。
【図７】図７は、行パターンデータの一例を示す説明図である。
【図８】図８は、暫定データ範囲を特定する一例を示す説明図である。
【図９】図９は、データ範囲を特定する一例を示す説明図である。
【図１０】図１０は、ブロックを特定する一例を示す説明図である。
【図１１】図１１は、ブロックを削除する一例を示す説明図である。
【図１２】図１２は、定義辞書１２００を作成する一例を示す説明図である。
【図１３】図１３は、変換規則を追加する一例を示す説明図である。
【図１４】図１４は、構造化データに変換する一例を示す説明図である。
【図１５】図１５は、データ処理手順の一例を示すフローチャートである。
【図１６】図１６は、行パターン作成処理手順の一例を示すフローチャートである。
【図１７】図１７は、種類特定処理手順の一例を示すフローチャートである。
【図１８】図１８は、文字変換処理手順の一例を示すフローチャートである。
【図１９】図１９は、識別子付与処理手順の一例を示すフローチャートである。
【図２０】図２０は、データ範囲特定処理手順の一例を示すフローチャートである。
【図２１】図２１は、暫定ヘッダー範囲特定処理手順の一例を示すフローチャートである。
【図２２】図２２は、暫定フッター範囲特定処理手順の一例を示すフローチャートである。
【図２３】図２３は、ヘッダー範囲特定処理手順の一例を示すフローチャートである。
【図２４】図２４は、フッター範囲特定処理手順の一例を示すフローチャートである。
【図２５】図２５は、定義辞書記憶処理手順の一例を示すフローチャートである。
【図２６】図２６は、第１ブロック作成処理手順の一例を示すフローチャートである。
【図２７】図２７は、第２ブロック作成処理手順の一例を示すフローチャートである。
【図２８】図２８は、定義辞書作成処理手順の一例を示すフローチャートである。
【図２９】図２９は、構造化データ変換処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下に添付図面を参照して、本発明にかかるデータ処理プログラム、およびデータ処理方法の実施の形態を詳細に説明する。
【００１１】
（データ処理プログラムによるレシートデータ処理の一例）
図１は、実施の形態にかかるデータ処理プログラムによるレシートデータ処理の一例を示す説明図である。データ処理装置１００は、データ処理プログラムを実行するコンピュータである。
【００１２】
データ処理装置１００は、複数のレシートデータを有する。ここで、レシートデータとは、レシートの印刷態様に合わせて記述されたテキストデータである。レシートデータとは、例えば、複数の空白文字、レシートを発行した店舗の名称を表す複数の通常文字、および複数の空白文字を並べた文字列を含むレシートの行を表す行データを有するデータである。
【００１３】
データ処理装置１００は、データ処理プログラムを実行することによって、複数のレシートデータに共通するデータ範囲を特定する。ここで、データ範囲とは、行の範囲である。共通するデータ範囲とは、行の行属性が複数のレシートデータにおいて一致する範囲である。共通するデータ範囲とは、例えば、ヘッダー範囲またはフッター範囲、あるいは暫定ヘッダー範囲または暫定フッター範囲である。
【００１４】
行の行属性とは、行に含まれる文字の種類の並び方を表す情報である。暫定ヘッダー範囲とは、ヘッダー範囲を含み、最下行側にヘッダー範囲ではない行の範囲が含まれる範囲である。暫定フッター範囲とは、フッター範囲を含み、最上行側にフッター範囲ではない行の範囲が含まれる範囲である。
【００１５】
図１（Ａ）において、データ処理装置１００は、レシートデータＲ１とレシートデータＲ２とを有する。ここで、データ処理装置１００は、各々のレシートデータにおける各々の行の行属性を特定する。データ処理装置１００は、例えば、レシートデータＲ１における先頭行の行属性として「複数の空白文字→複数の通常文字→複数の空白文字の順番になる文字の種類の並び方」を特定し、行属性の識別子「Ｒ０１」を付与する。
【００１６】
次に、データ処理装置１００は、各々のレシートデータの先頭行からの複数のレシートデータにおいて行属性が一致するデータ範囲を特定する。データ処理装置１００は、例えば、各々のレシートデータの先頭行から４行目までのように「Ｒ０１→Ｒ０２→Ｒ０３→Ｒ０４の順番になる並び方」で行属性の並び方が一致する範囲を特定する。そして、データ処理装置１００は、特定したデータ範囲を、暫定ヘッダー範囲に決定する。
【００１７】
図１（Ｂ）において、データ処理装置１００は、暫定ヘッダー範囲の最下行から順に、暫定ヘッダー範囲とは異なるデータ範囲に含まれる行の行属性と一致しなくなるまで、異なるデータ範囲に含まれる行の行属性と一致するか否かを判定する。
【００１８】
データ処理装置１００は、例えば、暫定ヘッダー範囲の最下行になる４行目の行属性の識別子「Ｒ０４」が、暫定ヘッダー範囲とは異なるデータ範囲になる５行目から１０行目のうちの６行目の行属性の識別子「Ｒ０４」と一致すると判定する。次に、データ処理装置１００は、暫定ヘッダー範囲の３行目の行属性の識別子「Ｒ０３」が、暫定ヘッダー範囲とは異なるデータ範囲になる５行目から１０行目のうちの行の行属性の識別子と一致しないと判定する。
【００１９】
次に、データ処理装置１００は、一致すると判定した行を暫定ヘッダー範囲から除外して、暫定ヘッダー範囲を更新する。データ処理装置１００は、例えば、暫定ヘッダー範囲から最下行になる４行目を除外する。そして、データ処理装置１００は、暫定ヘッダー範囲になる１行目から３行目のデータ範囲を、ヘッダー範囲に決定する。
【００２０】
これにより、データ処理装置１００は、レシートデータのヘッダー範囲を、自動で決定することができる。このため、データ処理装置１００の利用者は、レシートデータのヘッダー範囲を決定しなくてもよくなる。また、データ処理装置１００は、複数のレシートデータからヘッダー範囲を決定するため、ヘッダー範囲の決定精度を向上させることができる。
【００２１】
ここでは、データ処理装置１００は、レシートデータのヘッダー範囲を特定したが、これに限らない。例えば、データ処理装置１００は、レシートデータのフッター範囲を特定してもよい。また、例えば、データ処理装置１００は、レシートデータのヘッダー範囲およびフッター範囲を特定してもよい。
【００２２】
データ処理装置１００は、具体的には、各々のレシートデータの最終行からの複数のレシートデータにおいて行属性が一致するデータ範囲を特定することにより、レシートデータの暫定フッター範囲を特定する。次に、データ処理装置１００は、暫定フッター範囲の最上行から順に、暫定フッター範囲とは異なるデータ範囲に含まれる行の行属性と一致しなくなるまで、異なるデータ範囲に含まれる行の行属性と一致するか否かを判定する。そして、データ処理装置１００は、一致すると判定した行を暫定フッター範囲から除外することにより、レシートデータのフッター範囲を特定する。
【００２３】
これにより、データ処理装置１００は、レシートデータのフッター範囲を、自動で決定することができる。このため、データ処理装置１００の利用者は、レシートデータのフッター範囲を決定しなくてもよくなる。また、データ処理装置１００は、複数のレシートデータからフッター範囲を決定するため、フッター範囲の決定精度を向上させることができる。
【００２４】
（データ処理装置１００のハードウェア構成例）
図２は、データ処理装置１００のハードウェア構成例を示すブロック図である。図２において、データ処理装置１００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２０１と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）２０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２０３と、磁気ディスクドライブ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）２０４と、磁気ディスク２０５と、光ディスクドライブ２０６と、光ディスク２０７と、ディスプレイ２０８と、インターフェース（Ｉ／Ｆ：Ｉｎｔｅｒｆａｃｅ）２０９と、キーボード２１０と、マウス２１１と、スキャナ２１２と、プリンタ２１３と、を備えている。また、各構成部はバス２００によってそれぞれ接続されている。
【００２５】
ここで、ＣＰＵ２０１は、データ処理装置１００の全体の制御を司る。ＲＯＭ２０２は、ブートプログラムなどのプログラムを記憶している。ＲＡＭ２０３は、ＣＰＵ２０１のワークエリアとして使用される。磁気ディスクドライブ２０４は、ＣＰＵ２０１の制御にしたがって磁気ディスク２０５に対するデータのリード／ライトを制御する。磁気ディスク２０５は、磁気ディスクドライブ２０４の制御で書き込まれたデータを記憶する。
【００２６】
光ディスクドライブ２０６は、ＣＰＵ２０１の制御にしたがって光ディスク２０７に対するデータのリード／ライトを制御する。光ディスク２０７は、光ディスクドライブ２０６の制御で書き込まれたデータを記憶したり、光ディスク２０７に記憶されたデータをコンピュータに読み取らせたりする。
【００２７】
ディスプレイ２０８は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ２０８は、例えば、液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
【００２８】
Ｉ／Ｆ２０９は、通信回線を通じてＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどのネットワーク２１４に接続され、このネットワーク２１４を介して他の装置に接続される。そして、Ｉ／Ｆ２０９は、ネットワーク２１４と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。Ｉ／Ｆ２０９には、例えば、モデムやＬＡＮアダプタなどを採用することができる。
【００２９】
キーボード２１０は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス２１１は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
【００３０】
スキャナ２１２は、画像を光学的に読み取り、データ処理装置１００内に画像データを取り込む。なお、スキャナ２１２は、ＯＣＲ（Ｏｐｔｉｃａｌ  Ｃｈａｒａｃｔｅｒ  Ｒｅａｄｅｒ）機能を持たせてもよい。また、プリンタ２１３は、画像データや文書データを印刷する。プリンタ２１３には、例えば、レーザプリンタやインクジェットプリンタを採用することができる。また、光ディスクドライブ２０６、光ディスク２０７、ディスプレイ２０８、キーボード２１０、マウス２１１、スキャナ２１２、およびプリンタ２１３の少なくともいずれか１つは、なくてもよい。
【００３１】
（文字属性変換対応表３００の一例）
次に、図３を用いて、文字属性変換対応表３００の一例について説明する。文字属性変換対応表３００は、例えば、図２に示したＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域によって実現される。
【００３２】
図３は、文字属性変換対応表３００の一例を示す説明図である。文字属性変換対応表３００は、文字の種類ごとに、文字種項目と、記号項目とを有し、文字の種類ごとに各項目に情報が設定されることにより、レコードを記憶する。文字種項目には、文字の種類が記憶される。記号項目には、文字種項目の種類に対応する、文字種項目の種類の文字の変換先になる記号が記憶される。
【００３３】
例えば、レコード３０１は、文字の種類「英字、かな文字、漢字」と、文字の種類「英字、かな文字、漢字」に対応する記号「Ｃ」と、を含む文字属性対応情報を示す。以下の説明では、英字、かな文字、漢字をまとめて「通常文字」と表記する場合がある。また、例えば、レコード３０２は、文字の種類「数字」と、文字の種類「数字」に対応する記号「Ｎ」と、を含む文字属性対応情報を示す。
【００３４】
また、例えば、レコード３０３は、文字の種類「半角／全角空白文字」と、文字の種類「半角／全角空白文字」に対応する記号「Ｂ」と、を含む文字属性対応情報を示す。また、例えば、レコード３０４は、文字の種類「記号文字」と、文字の種類「記号文字」に対応する記号「＠」と、を含む文字属性対応情報を示す。
【００３５】
また、例えば、レコード３０５は、文字の種類「改行文字」と、文字の種類「改行文字」に対応する記号がなく、文字の種類「改行文字」である場合には文字を変換しないことを表す情報になる「変換しない」と、を含む文字属性対応情報を示す。また、例えば、レコード３０６は、文字の種類「直前の文字と同じ種類」と、文字の種類「直前の文字と同じ種類」に対応する記号「＊」と、を含む文字属性対応情報を示す。
【００３６】
（データ処理装置１００の機能的構成例）
次に、図４を用いて、データ処理装置１００の機能的構成例について説明する。
【００３７】
図４は、データ処理装置１００の機能的構成例を示すブロック図である。データ処理装置１００は、決定部４０１と、特定部４０２と、除外部４０３と、出力部４０４と、受付部４０５と、記憶部４０６と、変換部４０７とを含む。
【００３８】
決定部４０１は、複数のレシートデータの各々のレシートデータに含まれる複数の行の各々の行に存在する文字の属性に基づいて、各々の行の行属性を決定する。ここで、レシートデータとは、レシートの印刷態様に合わせて記述されたテキストデータである。文字の属性とは、文字の種類を表す情報である。行の行属性とは、行に含まれる文字の種類の並び方を表す情報である。
【００３９】
決定部４０１は、例えば、図３に示した文字属性変換対応表３００に基づいて、行に含まれる文字を記号に変換して、変換した結果を行の行属性に決定して、行属性の識別子を付与する。決定部４０１は、具体的には、１個目のレシートデータの先頭行「            ○×スーパー            」を「Ｂ＊Ｃ＊Ｂ＊」に変換して、変換した結果「Ｂ＊Ｃ＊Ｂ＊」を行属性に決定する。次に、決定部４０１は、行属性「Ｂ＊Ｃ＊Ｂ＊」が既存の行属性であるか否かを判定する。決定部４０１は、既存の行属性ではないため、行属性「Ｂ＊Ｃ＊Ｂ＊」に新たな識別子「Ｒ０１」を付与して、行属性「Ｂ＊Ｃ＊Ｂ＊」と行属性の識別子「Ｒ０１」とを対応付けて、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に記憶する。
【００４０】
また、決定部４０１は、具体的には、１個目のレシートデータの４行目の行「アイスクリーム                  」を「Ｃ＊Ｂ＊」に変換して、変換した結果「Ｃ＊Ｂ＊」を行属性に決定する。次に、決定部４０１は、行属性「Ｃ＊Ｂ＊」が既存の行属性であるか否かを判定する。決定部４０１は、既存の行属性ではないため、行属性「Ｃ＊Ｂ＊」に新たな識別子「Ｒ０４」を付与して、行属性「Ｃ＊Ｂ＊」と行属性の識別子「Ｒ０４」とを対応付けて、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に記憶する。
【００４１】
また、決定部４０１は、具体的には、１個目のレシートデータの６行目の行「オレンジジュース                    」を「Ｃ＊Ｂ＊」に変換して、変換した結果「Ｃ＊Ｂ＊」を行属性に決定する。次に、決定部４０１は、行属性「Ｃ＊Ｂ＊」が既存の行属性であるか否かを判定する。決定部４０１は、４行目の行の行属性と同一の既存の行属性であるため、新たな識別子を付与しない。
【００４２】
また、決定部４０１は、１個目のレシートデータに対応付けて、１個目のレシートデータの各々の行と、行属性の識別子とを対応付けたデータを作成して、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に記憶する。以下の説明では、各々の行と、行属性の識別子とを対応付けたデータを「行パターンデータ」と表記する場合がある。
【００４３】
また、決定部４０１は、具体的には、別の２個目のレシートデータの先頭行「            ○×スーパー            」を「Ｂ＊Ｃ＊Ｂ＊」に変換して、変換した結果「Ｂ＊Ｃ＊Ｂ＊」を行属性に決定する。次に、決定部４０１は、行属性「Ｂ＊Ｃ＊Ｂ＊」が既存の行属性であるか否かを判定する。決定部４０１は、１個目のレシートデータの１行目の行の行属性と同一の既存の行属性であるため、新たな識別子を付与しない。また、決定部４０１は、２個目のレシートデータに対応付けて、２個目のレシートデータの各々の行と、行属性の識別子とを対応付けたデータを作成して、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に記憶する。
【００４４】
これにより、特定部４０２は、決定部４０１によって作成された行パターンデータを記憶領域から取得することができる。決定部４０１は、例えば、図２に示したＲＯＭ２０２、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶装置に記憶されたプログラムをＣＰＵ２０１に実行させることにより、その機能を実現する。決定されたデータは、例えば、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に記憶される。
【００４５】
特定部４０２は、決定した各々の行の行属性を比較して、各々のレシートデータの先頭行または最終行からの行属性が複数のレシートデータにおいて一致するデータ範囲を特定する。ここで、データ範囲とは、先頭行からの行の行属性の並び方が複数のレシートデータにおいて一致する、先頭行からいずれかの行までのデータ範囲である。データ範囲とは、例えば、ヘッダー範囲またはフッター範囲である。
【００４６】
特定部４０２は、例えば、各々の行の行属性を比較して、各々のレシートデータの先頭行からの行属性が複数のレシートデータにおいて一致する第１データ範囲を特定する。特定部４０２は、具体的には、１個目のレシートデータに対応付けられた行パターンデータと２個目のレシートデータに対応付けられた行パターンデータとを比較する。次に、特定部４０２は、比較した結果、先頭行からの４行分の行の行属性の並び方が、「Ｒ０１→Ｒ０２→Ｒ０３→Ｒ０４の順番になる並び方」で一致するとして、先頭行からの４行分のデータ範囲を特定する。そして、特定部４０２は、特定したデータ範囲を、暫定ヘッダー範囲に決定する。
【００４７】
また、特定部４０２は、例えば、各々の行の行属性を比較して、各々のレシートデータの最終行からの行属性が複数のレシートデータにおいて一致する第２データ範囲を特定する。特定部４０２は、具体的には、１個目のレシートデータに対応付けられた行パターンデータと２個目のレシートデータに対応付けられた行パターンデータとを比較する。次に、特定部４０２は、比較した結果、最終行からの３行分の行の行属性の並び方が、「Ｒ０６→Ｒ０６→Ｒ０６の順番になる並び方」で一致するとして、最終行からの３行分のデータ範囲を特定する。そして、特定部４０２は、特定したデータ範囲を、暫定フッター範囲に決定する。
【００４８】
これにより、除外部４０３は、特定部４０２によって特定された暫定ヘッダー範囲および暫定フッター範囲を記憶領域から取得して、ヘッダー範囲およびフッター範囲を確定することができる。特定部４０２は、例えば、図２に示したＲＯＭ２０２、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶装置に記憶されたプログラムをＣＰＵ２０１に実行させることにより、その機能を実現する。特定されたデータは、例えば、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に記憶される。
【００４９】
除外部４０３は、データ範囲の最下行または最上行の行属性が、第３データ範囲に含まれるいずれの行の行属性とも一致しなくなるまで、データ範囲の最下行または最上行の行属性が、第３データ範囲に含まれるいずれかの行の行属性と一致するか否かを判定する。そして、除外部４０３は、一致すると判定したことに応じて、データ範囲から最下行または最上行を除外する。
【００５０】
ここで、第１データ範囲とは、上述したヘッダー範囲である。第２データ範囲とは、上述したフッター範囲である。第３データ範囲とは、第１データ範囲および第２データ範囲とは異なるデータ範囲である。第３データ範囲とは、例えば、上述したヘッダー範囲およびフッター範囲とは異なるデータ範囲である。以下の説明では、第３データ範囲を「明細範囲」と表記する場合がある。
【００５１】
除外部４０３は、例えば、第１データ範囲の最下行の行属性が、第３データ範囲に含まれるいずれの行の行属性とも一致しなくなるまで、第１データ範囲の最下行の行属性が、第３データ範囲に含まれるいずれかの行の行属性と一致するか否かを判定する。そして、除外部４０３は、一致したと判定したことに応じて、第１データ範囲から最下行を除外する。除外部４０３は、具体的には、ヘッダー範囲の最下行の行属性の識別子「Ｒ０４」が、第３データ範囲に含まれる行の行属性の識別子「Ｒ０４」と一致すると判定する。そして、除外部４０３は、ヘッダー範囲を先頭行からの４行分のデータ範囲から最下行を除外した先頭行からの３行分のデータ範囲に更新する。
【００５２】
また、除外部４０３は、例えば、第１データ範囲の最下行の行属性が、第４データ範囲に含まれるいずれの行の行属性とも一致しなくなるまで、第１データ範囲の最下行の行属性が第４データ範囲に含まれるいずれかの行の行属性と一致するか否かを判定してもよい。ここで、第４データ範囲とは、第１データ範囲とは異なるデータ範囲である。そして、除外部４０３は、一致したと判定したことに応じて、第１データ範囲から最下行を除外する。
【００５３】
除外部４０３は、例えば、第２データ範囲の最上行の行属性が、第３データ範囲に含まれるいずれの行の行属性とも一致しなくなるまで、第２データ範囲の最上行の行属性が、第３データ範囲に含まれるいずれかの行の行属性と一致するか否かを判定する。そして、除外部４０３は、一致したと判定したことに応じて、第２データ範囲から最上行を除外する。除外部４０３は、具体的には、フッター範囲の最上行の行属性の識別子「Ｒ０６」が、第３データ範囲に含まれる行の行属性の識別子と一致しないため、フッター範囲を最終行からの３行分のデータ範囲のままにして、処理を終了する。
【００５４】
また、除外部４０３は、例えば、第２データ範囲の最上行の行属性が、第５データ範囲に含まれるいずれの行の行属性とも一致しなくなるまで、第２データ範囲の最上行の行属性が第５データ範囲に含まれるいずれかの行の行属性と一致するか否かを判定してもよい。ここで、第５データ範囲とは、第２データ範囲とは異なるデータ範囲である。そして、除外部４０３は、一致したと判定したことに応じて、第２データ範囲から最上行を除外する。
【００５５】
これにより、除外部４０３は、ヘッダー範囲およびフッター範囲を確定することができる。除外部４０３は、例えば、図２に示したＲＯＭ２０２、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶装置に記憶されたプログラムをＣＰＵ２０１に実行させることにより、その機能を実現する。除外されたデータは、例えば、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に記憶される。
【００５６】
出力部４０４は、複数のレシートデータのうちのいずれかのレシートデータに含まれるいずれかの行の記述内容と行属性とを対応付けて出力する。また、出力部４０４は、いずれかのレシートデータに含まれるいずれかの行の記述内容と行属性とを対応付けて出力するとともに、第１データ範囲と第２データ範囲とを表す情報を出力する。出力部４０４は、例えば、レシートデータの各々の行の記述内容と行属性と、レシートデータにおけるヘッダー範囲とフッター範囲と、を出力する。
【００５７】
出力形式としては、例えば、ディスプレイ２０８への表示、プリンタ２１３への印刷出力、Ｉ／Ｆ２０９による外部装置への送信がある。また、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に記憶することとしてもよい。
【００５８】
これにより、データ処理装置１００の利用者は、出力部４０４によって出力された記述内容と行属性とに基づいて、行のデータ形式の変換規則を作成することができる。出力部４０４は、例えば、図２に示したＲＯＭ２０２、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶装置に記憶されたプログラムをＣＰＵ２０１に実行させることにより、または、Ｉ／Ｆ２０９により、その機能を実現する。
【００５９】
受付部４０５は、いずれかの行の行属性と、いずれかの行を特定のデータ形式に変換する変換規則と、を受け付ける。受付部４０５は、例えば、行の行属性の識別子「Ｒ０１」と、行に含まれる文字列をパターン化して表した正規表現の情報と行のデータ形式を変換するデータ形式とを対応付けた変換規則と、を受け付けて、記憶部４０６に格納する。
【００６０】
また、受付部４０５は、例えば、複数の行をグループ化する。次に、受付部４０５は、グループ化した複数の行の各々の行の行属性の識別子と、各々の行に含まれる文字列をパターン化して表した正規表現の情報と各々の行のデータ形式を変換するデータ形式とを対応付けた変換規則と、を受け付ける。そして、受付部４０５は、受け付けたデータを記憶部４０６に格納する。
【００６１】
受付部４０５は、具体的には、ヘッダー範囲に含まれるすべての行をグループ化する。そして、受付部４０５は、グループ化したヘッダー範囲に含まれる各々の行の行属性の識別子と、各々の行に含まれる文字列をパターン化して表した正規表現の情報と各々の行のデータ形式を変換するデータ形式とを対応付けた変換規則と、を受け付ける。
【００６２】
受付部４０５は、具体的には、フッター範囲に含まれるすべての行をグループ化する。そして、受付部４０５は、グループ化したフッター範囲に含まれる各々の行の行属性の識別子と、各々の行に含まれる文字列をパターン化して表した正規表現の情報と各々の行のデータ形式を変換するデータ形式とを対応付けた変換規則と、を受け付ける。
【００６３】
受付部４０５は、具体的には、明細範囲に含まれる連続する２行分の行ごとにグループ化する。そして、受付部４０５は、グループ化した２行分の各々の行の行属性の識別子と、各々の行に含まれる文字列をパターン化して表した正規表現の情報と各々の行のデータ形式を変換するデータ形式とを対応付けた変換規則と、を受け付ける。
【００６４】
これにより、変換部４０７は、受付部４０５によって受け付けられた変換規則に基づいて、レシートデータのデータ形式を変換することができる。受付部４０５は、例えば、図２に示したＲＯＭ２０２、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶装置に記憶されたプログラムをＣＰＵ２０１に実行させることにより、または、Ｉ／Ｆ２０９により、その機能を実現する。受け付けられたデータは、例えば、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に記憶される。
【００６５】
記憶部４０６は、行の行属性に対応付けて行属性の行のデータ形式を特定のデータ形式に変換する変換規則を記憶する。記憶部４０６は、レシートデータにおいて連続する複数の行の行属性のパターンに対応付けて複数の行の各々の行のデータ形式を特定のデータ形式に変換する変換規則を記憶する。記憶部４０６は、例えば、図２に示したＲＯＭ２０２、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶装置により、その機能を実現する。
【００６６】
変換部４０７は、記憶部４０６に基づいて、複数のレシートデータのうちのいずれかのレシートデータの行属性の行のデータ形式を特定のデータ形式に変換する。変換部４０７は、記憶部４０６に基づいて、複数のレシートデータのうちのいずれかのレシートデータの行属性のパターンに対応する複数の行の各々の行のデータ形式を特定のデータ形式に変換する。
【００６７】
これにより、変換部４０７は、レシートデータのデータ形式を、レシートデータの統計処理のための特定のデータ形式に変更することができる。変換部４０７は、例えば、図２に示したＲＯＭ２０２、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶装置に記憶されたプログラムをＣＰＵ２０１に実行させることにより、その機能を実現する。変換されたデータは、例えば、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に記憶される。
【００６８】
（データ処理の内容）
ここで、図５〜図１４を用いて、データ処理の内容について説明する。
【００６９】
〈レシートデータの一例〉
まず、図５を用いて、データ処理の対象になる、データ処理装置１００が有する複数のレシートデータの各々のレシートデータの一例について説明する。
【００７０】
図５は、レシートデータの一例を示す説明図である。図５に示すように、データ処理装置１００は、４個のレシートデータを有する。レシートデータには、例えば、レシートを発行した店舗の名称を表す文字列のデータ、レシートを発行した店舗の電話番号を表す文字列のデータ、およびレシートを発行した日時を表す文字列のデータが含まれる。
【００７１】
また、レシートデータには、購入商品名を表す文字列のデータ、購入商品の商品コードと金額とを表す文字列のデータ、および購入商品の個数と購入商品の個数分の合計金額を表す文字列のデータが含まれる。また、レシートデータには、合計金額を表す文字列のデータ、購入者が支払った金額を表す文字列のデータ、および購入者へのお釣りの金額を表す文字列のデータが含まれる。以下の説明では、各々の文字列のデータを「行データ」と表記する場合がある。
【００７２】
〈行の行属性を特定する一例〉
次に、図６を用いて、データ処理装置１００が、図５に示した複数のレシートデータの各々のレシートデータに含まれる行の行属性を特定する一例について説明する。
【００７３】
図６は、行の行属性を特定する一例を示す説明図である。図６に示すように、データ処理装置１００は、例えば、レシートデータＲＡの４行目の行の行データ「アイスクリーム                  」を読み込む。次に、データ処理装置１００は、文字属性変換対応表３００に基づいて、行データを１バイト分のデータごとに変換する。データ処理装置１００は、例えば、２バイト文字である「ア」の先頭１バイト分のデータを取得して、通常文字に対応する「Ｃ」に変換する。また、データ処理装置１００は、例えば、１バイトシフトして、２バイト文字である「ア」の末尾１バイト分のデータを取得して、通常文字に対応する「Ｃ」に変換する。
【００７４】
そして、データ処理装置１００は、行データ「アイスクリーム                  」を、「ＣＣＣＣＣＣＣＣＣＣＣＣＣＣＢＢＢＢＢＢＢＢＢＢＢＢＢＢＢＢＢＢ」に変換する。次に、データ処理装置１００は、連続する部分を「＊」に置換して、「ＣＣＣＣＣＣＣＣＣＣＣＣＣＣＢＢＢＢＢＢＢＢＢＢＢＢＢＢＢＢＢＢ」を「Ｃ＊Ｂ＊」に変換する。
【００７５】
そして、データ処理装置１００は、変換した結果「Ｃ＊Ｂ＊」を行属性に決定する。次に、データ処理装置１００は、行属性「Ｃ＊Ｂ＊」が既存の行属性であるか否かを判定する。データ処理装置１００は、既存の行属性ではないため、行属性「Ｃ＊Ｂ＊」に新たな識別子「Ｒ０４」を付与して、行属性「Ｃ＊Ｂ＊」と行属性の識別子「Ｒ０４」とを対応付けて記憶する。次に、データ処理装置１００は、レシートデータＲＡの４行目の行と、行属性の識別子「Ｒ０４」とを対応付けて記憶する。
【００７６】
また、データ処理装置１００は、例えば、レシートデータＲＡの８行目の行の行データ「お釣り                    ￥３９５」を読み込む。そして、データ処理装置１００は、行データ「お釣り                    ￥３９５」を、「ＣＣＣＣＣＣＢＢＢＢＢＢＢＢＢＢＢＢＢＢＢＢＢＢＢＢ＠ＮＮＮ」に変換する。次に、データ処理装置１００は、連続する部分を「＊」に置換して、「ＣＣＣＣＣＣＢＢＢＢＢＢＢＢＢＢＢＢＢＢＢＢＢＢＢＢ＠ＮＮＮ」を「Ｃ＊Ｂ＊＠Ｎ＊」に変換する。
【００７７】
そして、データ処理装置１００は、変換した結果「Ｃ＊Ｂ＊＠Ｎ＊」を行属性に決定する。次に、データ処理装置１００は、行属性「Ｃ＊Ｂ＊＠Ｎ＊」が既存の行属性であるか否かを判定する。データ処理装置１００は、６行目の行の行属性と一致する既存の行属性であるため、行属性「Ｃ＊Ｂ＊＠Ｎ＊」と行属性の識別子「Ｒ０６」とを対応付けて記憶する。次に、データ処理装置１００は、レシートデータＲＡの８行目の行と、行属性の識別子「Ｒ０６」とを対応付けて記憶する。
【００７８】
〈行パターンデータの一例〉
次に、図７を用いて、図６において行属性を特定して得られた行パターンデータの一例について説明する。
【００７９】
図７は、行パターンデータの一例を示す説明図である。データ処理装置１００は、レシートデータの各々の行と、各々の行の行属性の識別子とを対応付けた、レシートデータに対応する行パターンデータを作成する。
【００８０】
データ処理装置１００は、例えば、レシートデータＲＡに対応付けて、レシートデータＲＡの各々の行の行属性の識別子を並べたデータ「Ｒ０１→Ｒ０２→Ｒ０３→Ｒ０４→Ｒ０５→Ｒ０６→Ｒ０６→Ｒ０６」を作成する。そして、データ処理装置１００は、作成したデータを、行パターンデータＡとして記憶する。
【００８１】
データ処理装置１００は、例えば、レシートデータＲＢに対応付けて、レシートデータＲＢの各々の行の行属性の識別子を並べたデータ「Ｒ０１→Ｒ０２→Ｒ０３→Ｒ０４→Ｒ０５→Ｒ０４→Ｒ０５→Ｒ０６→Ｒ０６→Ｒ０６」を作成する。そして、データ処理装置１００は、作成したデータを、行パターンデータＢとして記憶する。
【００８２】
データ処理装置１００は、例えば、レシートデータＲＣに対応付けて、レシートデータＲＣの各々の行の行属性の識別子を並べたデータ「Ｒ０１→Ｒ０２→Ｒ０３→Ｒ０４→Ｒ０７→Ｒ０８→Ｒ０６→Ｒ０６→Ｒ０６」を作成する。そして、データ処理装置１００は、作成したデータを、行パターンデータＣとして記憶する。
【００８３】
データ処理装置１００は、例えば、レシートデータＲＤに対応付けて、レシートデータＲＤの各々の行の行属性の識別子を並べたデータ「Ｒ０１→Ｒ０２→Ｒ０３→Ｒ０４→Ｒ０５→Ｒ０４→Ｒ０７→Ｒ０８→Ｒ０６→Ｒ０６→Ｒ０６」を作成する。そして、データ処理装置１００は、作成したデータを、行パターンデータＤとして記憶する。
【００８４】
〈暫定データ範囲を特定する一例〉
次に、図８を用いて、データ処理装置１００が、図７に示した行パターンデータに基づいて、暫定データ範囲を特定する一例について説明する。
【００８５】
図８は、暫定データ範囲を特定する一例を示す説明図である。図８において、データ処理装置１００は、図７に示した行パターンデータを、データ長の昇順にソートする。データ処理装置１００は、例えば、行パターンデータＡ→行パターンデータＣ→行パターンデータＢ→行パターンデータＤの順番に並べる。
【００８６】
次に、データ処理装置１００は、各々のレシートデータに対応する行パターンデータの先頭行からの何行分の行の行属性が、複数のレシートデータにおいて一致するかを判定して、一致するデータ範囲を暫定ヘッダー範囲として特定する。データ処理装置１００は、例えば、各々のレシートデータに対応する行パターンデータの先頭行からの４行分の行の行属性が、複数のレシートデータにおいて一致すると判定して、暫定ヘッダー範囲として特定する。
【００８７】
また、データ処理装置１００は、各々のレシートデータに対応する行パターンデータの最終行からの何行分の行の行属性が、複数のレシートデータにおいて一致するかを判定して、一致するデータ範囲を暫定フッター範囲として特定する。データ処理装置１００は、例えば、各々のレシートデータに対応する行パターンデータの最終行から３行分の行の行属性が、複数のレシートデータにおいて一致すると判定して、暫定フッター範囲として特定する。
【００８８】
〈データ範囲を特定する一例〉
次に、図９を用いて、データ処理装置１００が、図８において特定された暫定データ範囲を修正して、データ範囲を特定する一例について説明する。
【００８９】
図９は、データ範囲を特定する一例を示す説明図である。図９において、データ処理装置１００は、暫定ヘッダー範囲の最下行の行から順に、行の行属性が明細範囲に含まれる行の行属性と一致しなくなるまで、行の行属性が明細範囲に含まれる行の行属性と一致するか否かを判定する。そして、データ処理装置１００は、暫定ヘッダー範囲から一致すると判定した行を除外してヘッダー範囲として特定する。
【００９０】
データ処理装置１００は、例えば、暫定ヘッダー範囲の最下行になる４行目の行の行属性が、明細範囲に含まれる行の行属性と一致すると判定して、暫定ヘッダー範囲から最下行を除外してヘッダー範囲として特定する。また、データ処理装置１００は、暫定フッター範囲の最上行になる最終行から３行目の行の行属性が、明細範囲に含まれる行の行属性と一致しないと判定して、暫定フッター範囲をそのままフッター範囲として特定する。
【００９１】
〈ブロックを特定する一例〉
次に、図１０を用いて、データ処理装置１００が、図７に示した行パターンデータおよび図９において特定されたデータ範囲に基づいて、行属性のブロックを特定する一例について説明する。
【００９２】
図１０は、ブロックを特定する一例を示す説明図である。図１０において、データ処理装置１００は、行パターンデータに基づいて、明細範囲において連続する２行分の行の行属性をグループ化してブロックとして定義する。データ処理装置１００は、例えば、行パターンデータＡに基づいて、明細範囲において連続する２行分の行の行属性の識別子「Ｒ０４→Ｒ０５」を、ブロックとして定義して識別子「Ｂ０１」を付与する。次に、データ処理装置１００は、各々の行パターンデータに含まれる行属性の識別子「Ｒ０４→Ｒ０５」を、ブロックの識別子「Ｂ０１」に置換する。そして、データ処理装置１００は、ブロックの識別子と、ブロックに含まれる行属性の識別子と、を対応付けて記憶する。
【００９３】
また、データ処理装置１００は、例えば、行パターンデータＣに基づいて、明細範囲において連続する２行分の行の行属性の識別子「Ｒ０４→Ｒ０７」を、ブロックとして定義して識別子「Ｂ０２」を付与する。次に、データ処理装置１００は、各々の行パターンデータに含まれる行属性の識別子「Ｒ０４→Ｒ０７」を、ブロックの識別子「Ｂ０２」に置換する。そして、データ処理装置１００は、ブロックの識別子と、ブロックに含まれる行属性の識別子と、を対応付けて記憶する。
【００９４】
また、データ処理装置１００は、例えば、行パターンデータＣに基づいて、明細範囲において連続するブロックの識別子と行属性の識別子との組み合わせ「Ｂ０２→Ｒ０８」を、新たなブロックとして定義して識別子「Ｂ０３」を付与する。次に、データ処理装置１００は、各々の行パターンデータに含まれるブロックの識別子と行属性の識別子との組み合わせ「Ｂ０２→Ｒ０８」を、ブロックの識別子「Ｂ０３」に置換する。そして、データ処理装置１００は、ブロックの識別子と、ブロックに含まれる行属性の識別子と、を対応付けて記憶する。以下の説明では、各々の行パターンデータに含まれる行属性の識別子をブロックの識別子に置換したデータを「ブロックデータ」と表記する場合がある。
【００９５】
〈ブロックを削除する一例〉
次に、図１１を用いて、データ処理装置１００が、図１０に示したブロックのうちのいずれかのブロックを削除する一例について説明する。
【００９６】
図１１は、ブロックを削除する一例を示す説明図である。図１１において、データ処理装置１００は、行パターンデータの明細範囲に含まれるブロックの識別子が、識別子「Ｂ０１」および「Ｂ０３」であると判定する。そして、データ処理装置１００は、行パターンデータにブロックの識別子「Ｂ０２」は含まれないため、ブロックの識別子「Ｂ０２」と行属性の識別子「Ｒ０４→Ｒ０７」とを対応付けた情報を削除する。
【００９７】
〈定義辞書１２００を作成する一例〉
次に、図１２を用いて、データ処理装置１００が、図７に示した行パターンデータおよび図１１において置換されたブロックデータに基づいて、定義辞書１２００を作成する一例について説明する。
【００９８】
図１２は、定義辞書１２００を作成する一例を示す説明図である。図１２において、データ処理装置１００は、ブロックの識別子と、ブロックに含まれる行属性の識別子と、ブロックに含まれる行属性の識別子が付与された行の位置と、を対応付けた定義辞書１２００を作成する。
【００９９】
〈変換規則を追加する一例〉
次に、図１３を用いて、データ処理装置１００が、変換規則を取得して、図１２に示した定義辞書１２００に変換規則を追加する一例について説明する。
【０１００】
図１３は、変換規則を追加する一例を示す説明図である。図１３において、データ処理装置１００は、定義辞書１２００と、レシートデータの記述内容と、レシートデータにおけるヘッダー範囲を表す情報と、レシートデータにおけるフッター範囲を表す情報と、を出力して、行属性に対応する変換規則の情報を受け付ける。
【０１０１】
データ処理装置１００は、変換規則として、例えば、行の行データの正規表現と、行の行データのデータ形式を変換するＸＭＬデータ形式とを対応付けた情報を受信する。正規表現において、「＾」は、行データの先頭を表す記号である。「＄」は、行データの末尾を表す記号である。「￥ｓ」は、空白文字を表す記号である。「＋」は、直前の文字が１回以上繰り返されることを表す記号である。「（」および「）」は、間に入る正規表現をグループ化することを表す記号である。「＄１，＄２，・・・」は、グループ化した内容を後方参照する記号である。
【０１０２】
〈構造化データに変換する一例〉
次に、図１４を用いて、データ処理装置１００が、図１３において作成された定義辞書１２００に基づいて、図７に示したレシートデータの各々のレシートデータを構造化データに変換する一例について説明する。
【０１０３】
図１４は、構造化データに変換する一例を示す説明図である。図１４において、データ処理装置１００は、変換規則が追加された定義辞書１２００に基づいて、レシートデータのデータ形式を構造化データ形式に変換する。
【０１０４】
データ処理装置１００は、例えば、レシートデータＲＸからヘッダー範囲の１行目の行を抽出する。次に、データ処理装置１００は、１行目の行の行属性「Ｂ＊Ｃ＊Ｂ＊」を特定する。そして、データ処理装置１００は、定義辞書１２００に基づいて、１行目の行の行属性「Ｂ＊Ｃ＊Ｂ＊」に対応する正規表現を、行データ「            ○×スーパー            」に当てはめる。次に、データ処理装置１００は、行データ「            ○×スーパー            」のデータ形式を変換して「＜店名＞○×スーパー＜／店名＞」にする。
【０１０５】
これにより、データ処理装置１００は、レシートデータのデータ形式を、レシートデータの統計処理のための特定のデータ形式に変更することができる。そして、データ処理装置１００は、データ形式が変換された構造化データに基づいて、レシートデータの統計処理を実行することができる。
【０１０６】
（データ処理手順の一例）
次に、図１５を用いて、データ処理装置１００のデータ処理手順の一例について説明する。
【０１０７】
図１５は、データ処理手順の一例を示すフローチャートである。図１５において、データ処理装置１００は、図１６に後述する行パターン作成処理を実行する（ステップＳ１５０１）。ここで、行パターン作成処理とは、複数のレシートデータの各々のレシートデータにおける行属性の並び方を表す行パターンデータを作成する処理である。
【０１０８】
次に、データ処理装置１００は、図２０に後述するデータ範囲特定処理を実行する（ステップＳ１５０２）。ここで、データ範囲特定処理とは、複数のレシートデータに共通するヘッダー範囲とフッター範囲とを特定する処理である。
【０１０９】
そして、データ処理装置１００は、図２５に後述する定義辞書記憶処理を実行する（ステップＳ１５０３）。ここで、定義辞書記憶処理とは、複数のレシートデータの各々のレシートデータに含まれる行の行属性の組み合わせをグループ化して定義して記憶する処理である。
【０１１０】
次に、データ処理装置１００は、定義辞書１２００の定義に対応する変換規則を取得する（ステップＳ１５０４）。そして、データ処理装置１００は、図２９に後述する構造化データ変換処理を実行して（ステップＳ１５０５）、データ処理を終了する。構造化データ変換処理とは、複数のレシートデータの各々のレシートデータに含まれる各々の行のデータ形式を、特定のデータ形式に変換する処理である。
【０１１１】
これにより、データ処理装置１００は、レシートデータのヘッダー範囲およびフッター範囲を、自動で決定することができる。このため、データ処理装置１００の利用者は、レシートデータのヘッダー範囲およびフッター範囲を決定しなくてもよくなる。また、データ処理装置１００は、複数のレシートデータからヘッダー範囲およびフッター範囲を決定するため、ヘッダー範囲およびフッター範囲の決定精度を向上させることができる。
【０１１２】
また、これにより、データ処理装置１００は、レシートデータのデータ形式を、レシートデータの統計処理のための特定のデータ形式に変更することができる。そして、データ処理装置１００は、データ形式が変換された構造化データに基づいて、レシートデータの統計処理を実行することができる。
【０１１３】
（行パターン作成処理手順の一例）
次に、図１６を用いて、ステップＳ１５０１に示した、データ処理装置１００の行パターン作成処理手順の一例について説明する。
【０１１４】
図１６は、行パターン作成処理手順の一例を示すフローチャートである。図１６において、データ処理装置１００は、複数のレシートデータのうちのいずれかのレシートデータを取得する（ステップＳ１６０１）。
【０１１５】
次に、データ処理装置１００は、選択したレシートデータに含まれる１行分のデータを取得する（ステップＳ１６０２）。そして、データ処理装置１００は、１行分のデータのうちの１バイト分のデータを取得する（ステップＳ１６０３）。
【０１１６】
次に、データ処理装置１００は、取得した１バイト分のデータに対して、図１７に後述する種類特定処理を実行する（ステップＳ１６０４）。そして、データ処理装置１００は、１行分のデータをすべて取得したか否かを判定する（ステップＳ１６０５）。ここで、取得していない場合（ステップＳ１６０５：Ｎｏ）、データ処理装置１００は、ステップＳ１６０３の処理に戻る。
【０１１７】
一方で、取得した場合（ステップＳ１６０５：Ｙｅｓ）、データ処理装置１００は、作業バッファから１バイト分のデータを取得する（ステップＳ１６０６）。次に、データ処理装置１００は、取得した１バイト分のデータに対して、図１８に後述する文字変換処理を実行する（ステップＳ１６０７）。
【０１１８】
そして、データ処理装置１００は、１行分のデータをすべて取得したか否かを判定する（ステップＳ１６０８）。ここで、取得していない場合（ステップＳ１６０８：Ｎｏ）、データ処理装置１００は、ステップＳ１６０６の処理に戻る。
【０１１９】
一方で、取得した場合（ステップＳ１６０８：Ｙｅｓ）、データ処理装置１００は、図１９に後述する識別子付与処理を実行する（ステップＳ１６０９）。次に、データ処理装置１００は、すべての行のデータを取得したか否かを判定する（ステップＳ１６１０）。ここで、取得していない場合（ステップＳ１６１０：Ｎｏ）、データ処理装置１００は、ステップＳ１６０２の処理に戻る。
【０１２０】
一方で、取得した場合（ステップＳ１６１０：Ｙｅｓ）、データ処理装置１００は、すべてのレシートデータを取得したか否かを判定する（ステップＳ１６１１）。ここで、取得していない場合（ステップＳ１６１１：Ｎｏ）、データ処理装置１００は、ステップＳ１６０１の処理に戻る。
【０１２１】
一方で、取得した場合（ステップＳ１６１１：Ｙｅｓ）、データ処理装置１００は、行パターン作成処理を終了する。
【０１２２】
（種類特定処理手順の一例）
次に、図１７を用いて、ステップＳ１６０４に示した、データ処理装置１００の種類特定処理手順の一例について説明する。
【０１２３】
図１７は、種類特定処理手順の一例を示すフローチャートである。図１７において、データ処理装置１００は、１バイト文字であるか否かを判定する（ステップＳ１７０１）。ここで、１バイト文字である場合（ステップＳ１７０１：Ｙｅｓ）、データ処理装置１００は、１バイト分シフトして（ステップＳ１７０２）、ステップＳ１７０４の処理に移行する。
【０１２４】
一方で、１バイト文字ではない場合（ステップＳ１７０１：Ｎｏ）、データ処理装置１００は、２バイト分シフトして（ステップＳ１７０３）、ステップＳ１７０４の処理に移行する。
【０１２５】
ステップＳ１７０４において、データ処理装置１００は、通常文字か否かを判定する（ステップＳ１７０４）。ここで、通常文字である場合（ステップＳ１７０４：Ｙｅｓ）、作業バッファにＣを書き込んで（ステップＳ１７０５）、種類特定処理を終了する。
【０１２６】
一方で、通常文字ではない場合（ステップＳ１７０４：Ｎｏ）、データ処理装置１００は、数値か否かを判定する（ステップＳ１７０６）。ここで、数値である場合（ステップＳ１７０６：Ｙｅｓ）、作業バッファにＮを書き込んで（ステップＳ１７０７）、種類特定処理を終了する。
【０１２７】
一方で、数値ではない場合（ステップＳ１７０６：Ｎｏ）、データ処理装置１００は、空白文字か否かを判定する（ステップＳ１７０８）。ここで、空白文字である場合（ステップＳ１７０８：Ｙｅｓ）、作業バッファにＢを書き込んで（ステップＳ１７０９）、種類特定処理を終了する。
【０１２８】
一方で、空白文字ではない場合（ステップＳ１７０８：Ｎｏ）、データ処理装置１００は、記号文字か否かを判定する（ステップＳ１７１０）。ここで、記号文字である場合（ステップＳ１７１０：Ｙｅｓ）、作業バッファに＠を書き込んで（ステップＳ１７１１）、種類特定処理を終了する。一方で、記号文字ではない場合（ステップＳ１７１０：Ｎｏ）、データ処理装置１００は、種類特定処理を終了する。
【０１２９】
（文字変換処理手順の一例）
次に、図１８を用いて、ステップＳ１６０７に示した、データ処理装置１００の文字変換処理手順の一例について説明する。
【０１３０】
図１８は、文字変換処理手順の一例を示すフローチャートである。図１８において、データ処理装置１００は、直前に取得した１バイト分のデータと同一か否かを判定する（ステップＳ１８０１）。ここで、同一ではない場合（ステップＳ１８０１：Ｎｏ）、データ処理装置１００は、文字変換処理を終了する。
【０１３１】
一方で、同一である場合（ステップＳ１８０１：Ｙｅｓ）、データ処理装置１００は、直前に＊を書き込んだか否かを判定する（ステップＳ１８０２）。ここで、書き込んだ場合（ステップＳ１８０２：Ｙｅｓ）、データ処理装置１００は、文字変換処理を終了する。
【０１３２】
一方で、書き込んでいない場合（ステップＳ１８０２：Ｎｏ）、データ処理装置１００は、作業バッファに＊を書き込んで（ステップＳ１８０３）、文字変換処理を終了する。
【０１３３】
（識別子付与処理手順の一例）
次に、図１９を用いて、ステップＳ１６０９に示した、データ処理装置１００の識別子付与処理手順の一例について説明する。
【０１３４】
図１９は、識別子付与処理手順の一例を示すフローチャートである。図１９において、データ処理装置１００は、作業バッファの内容が既存の行パターンと一致するか否かを判定する（ステップＳ１９０１）。ここで、一致する場合（ステップＳ１９０１：Ｙｅｓ）、データ処理装置１００は、既存の行パターンの識別子を選択して（ステップＳ１９０２）、ステップＳ１９０４の処理に移行する。
【０１３５】
一方で、一致しない場合（ステップＳ１９０１：Ｎｏ）、データ処理装置１００は、新たな識別子を生成して選択して（ステップＳ１９０３）、ステップＳ１９０４の処理に移行する。ステップＳ１９０４において、データ処理装置１００は、行に選択した識別子を付与して（ステップＳ１９０４）、識別子付与処理を終了する。
【０１３６】
（データ範囲特定処理手順の一例）
次に、図２０を用いて、ステップＳ１５０２に示した、データ処理装置１００のデータ範囲特定処理手順の一例について説明する。
【０１３７】
図２０は、データ範囲特定処理手順の一例を示すフローチャートである。図２０において、データ処理装置１００は、行パターンデータをデータ長の昇順にソートする（ステップＳ２００１）。次に、データ処理装置１００は、図２１に後述する暫定ヘッダー範囲特定処理を実行する（ステップＳ２００２）。そして、データ処理装置１００は、図２２に後述する暫定フッター範囲特定処理を実行する（ステップＳ２００３）。
【０１３８】
次に、データ処理装置１００は、図２３に後述するヘッダー範囲特定処理を実行する（ステップＳ２００４）。そして、データ処理装置１００は、図２４に後述するフッター範囲特定処理を実行して（ステップＳ２００５）、データ範囲特定処理を終了する。
【０１３９】
（暫定ヘッダー範囲特定処理手順の一例）
次に、図２１を用いて、ステップＳ２００２に示した、データ処理装置１００の暫定ヘッダー範囲特定処理手順の一例について説明する。
【０１４０】
図２１は、暫定ヘッダー範囲特定処理手順の一例を示すフローチャートである。図２１において、データ処理装置１００は、読み取りポインタを、各々の行パターンデータの先頭行に設定する（ステップＳ２１０１）。次に、データ処理装置１００は、各々の行パターンデータの読み取りポインタの行の行属性が一致するか否かを判定する（ステップＳ２１０２）。ここで、一致する場合（ステップＳ２１０２：Ｙｅｓ）、データ処理装置１００は、読み取りポインタを次の行に設定して（ステップＳ２１０３）、ステップＳ２１０２の処理に戻る。
【０１４１】
一方で、一致しない場合（ステップＳ２１０２：Ｎｏ）、データ処理装置１００は、先頭行から読み取りポインタの直前の行までのデータ範囲を暫定ヘッダー範囲に特定して（ステップＳ２１０４）、暫定ヘッダー範囲特定処理を終了する。
【０１４２】
（暫定フッター範囲特定処理手順の一例）
次に、図２２を用いて、ステップＳ２００３に示した、データ処理装置１００の暫定フッター範囲特定処理手順の一例について説明する。
【０１４３】
図２２は、暫定フッター範囲特定処理手順の一例を示すフローチャートである。図２２において、データ処理装置１００は、読み取りポインタを、各々の行パターンデータの最終行に設定する（ステップＳ２２０１）。次に、データ処理装置１００は、各々の行パターンデータの読み取りポインタの行の行属性が一致するか否かを判定する（ステップＳ２２０２）。ここで、一致する場合（ステップＳ２２０２：Ｙｅｓ）、データ処理装置１００は、読み取りポインタを直前の行に設定して（ステップＳ２２０３）、ステップＳ２２０２の処理に戻る。
【０１４４】
一方で、一致しない場合（ステップＳ２２０２：Ｎｏ）、データ処理装置１００は、読み取りポインタの次の行から最終行までのデータ範囲を暫定フッター範囲に特定して（ステップＳ２２０４）、暫定フッター範囲特定処理を終了する。
【０１４５】
（ヘッダー範囲特定処理手順の一例）
次に、図２３を用いて、ステップＳ２００４に示した、データ処理装置１００のヘッダー範囲特定処理手順の一例について説明する。
【０１４６】
図２３は、ヘッダー範囲特定処理手順の一例を示すフローチャートである。図２３において、データ処理装置１００は、読み取りポインタを各々の行パターンデータのヘッダー範囲の最下行に設定する（ステップＳ２３０１）。
【０１４７】
次に、データ処理装置１００は、各々の行パターンデータの読み取りポインタの行の行属性が、暫定ヘッダー範囲および暫定フッター範囲とは異なるデータ範囲に含まれる行の行属性と一致するか否かを判定する（ステップＳ２３０２）。ここで、一致する場合（ステップＳ２３０２：Ｙｅｓ）、データ処理装置１００は、読み取りポインタを直前の行に設定して（ステップＳ２３０３）、ステップＳ２３０２の処理に戻る。
【０１４８】
一方で、一致しない場合（ステップＳ２３０２：Ｎｏ）、データ処理装置１００は、ヘッダー範囲を、先頭行から読み取りポインタの行までのデータ範囲に更新して（ステップＳ２３０４）、ヘッダー範囲特定処理を終了する。
【０１４９】
（フッター範囲特定処理手順の一例）
次に、図２４を用いて、ステップＳ２００５に示した、データ処理装置１００のフッター範囲特定処理手順の一例について説明する。
【０１５０】
図２４は、フッター範囲特定処理手順の一例を示すフローチャートである。図２４において、データ処理装置１００は、読み取りポインタを各々の行パターンデータのフッター範囲の最上行に設定する（ステップＳ２４０１）。
【０１５１】
次に、データ処理装置１００は、各々の行パターンデータの読み取りポインタの行の行属性が、暫定ヘッダー範囲および暫定フッター範囲とは異なるデータ範囲に含まれる行の行属性と一致するか否かを判定する（ステップＳ２４０２）。ここで、一致する場合（ステップＳ２４０２：Ｙｅｓ）、データ処理装置１００は、読み取りポインタを次の行に設定して（ステップＳ２４０３）、ステップＳ２４０２の処理に戻る。
【０１５２】
一方で、一致しない場合（ステップＳ２４０２：Ｎｏ）、データ処理装置１００は、フッター範囲を、読み取りポインタの行から最終行までのデータ範囲に更新して（ステップＳ２４０４）、フッター範囲特定処理を終了する。
【０１５３】
（定義辞書記憶処理手順の一例）
次に、図２５を用いて、ステップＳ１５０３に示した、データ処理装置１００の定義辞書記憶処理手順の一例について説明する。
【０１５４】
図２５は、定義辞書記憶処理手順の一例を示すフローチャートである。図２５において、データ処理装置１００は、図２６に後述する第１ブロック作成処理を実行する（ステップＳ２５０１）。次に、データ処理装置１００は、図２７に後述する第２ブロック作成処理を実行する（ステップＳ２５０２）。そして、データ処理装置１００は、図２８に後述する定義辞書作成処理を実行して（ステップＳ２５０３）、定義辞書記憶処理を終了する。
【０１５５】
（第１ブロック作成処理手順の一例）
次に、図２６を用いて、ステップＳ２５０１に示した、データ処理装置１００の第１ブロック作成処理手順の一例について説明する。
【０１５６】
図２６は、第１ブロック作成処理手順の一例を示すフローチャートである。図２６において、データ処理装置１００は、行パターンデータを選択する（ステップＳ２６０１）。次に、データ処理装置１００は、選択した行パターンデータにおいて、連続する２行分の行の行属性を選択してブロックとして定義して、識別子を生成する（ステップＳ２６０２）。
【０１５７】
そして、データ処理装置１００は、すべての行パターンデータに対して、定義したブロックを、生成した識別子に置換する（ステップＳ２６０３）。次に、データ処理装置１００は、すべての連続する２行分の行の行属性を選択したか否かを判定する（ステップＳ２６０４）。ここで、選択していない場合（ステップＳ２６０４：Ｎｏ）、データ処理装置１００は、ステップＳ２６０２の処理に戻る。
【０１５８】
一方で、選択した場合（ステップＳ２６０４：Ｙｅｓ）、データ処理装置１００は、すべての行パターンデータを選択したか否かを判定する（ステップＳ２６０５）。ここで、選択していない場合（ステップＳ２６０５：Ｎｏ）、データ処理装置１００は、ステップＳ２６０１の処理に戻る。
【０１５９】
一方で、選択した場合（ステップＳ２６０５：Ｙｅｓ）、データ処理装置１００は、第１ブロック作成処理を終了する。
【０１６０】
（第２ブロック作成処理手順の一例）
次に、図２７を用いて、ステップＳ２５０２に示した、データ処理装置１００の第２ブロック作成処理手順の一例について説明する。
【０１６１】
図２７は、第２ブロック作成処理手順の一例を示すフローチャートである。図２７において、データ処理装置１００は、行パターンデータを選択する（ステップＳ２７０１）。次に、データ処理装置１００は、選択した行パターンデータにおいて、連続する、ブロックと行の行属性との組み合わせを選択して新たなブロックとして定義して、識別子を生成する（ステップＳ２７０２）。
【０１６２】
そして、データ処理装置１００は、すべての行パターンデータに対して、定義したブロックを、生成した識別子に置換する（ステップＳ２７０３）。次に、データ処理装置１００は、すべての連続する２行分の行の行属性を選択したか否かを判定する（ステップＳ２７０４）。ここで、選択していない場合（ステップＳ２７０４：Ｎｏ）、データ処理装置１００は、ステップＳ２７０２の処理に戻る。
【０１６３】
一方で、選択した場合（ステップＳ２７０４：Ｙｅｓ）、データ処理装置１００は、すべての行パターンデータを選択したか否かを判定する（ステップＳ２７０５）。ここで、選択していない場合（ステップＳ２７０５：Ｎｏ）、データ処理装置１００は、ステップＳ２７０１の処理に戻る。
【０１６４】
一方で、選択した場合（ステップＳ２７０５：Ｙｅｓ）、データ処理装置１００は、第２ブロック作成処理を終了する。
【０１６５】
（定義辞書作成処理手順の一例）
次に、図２８を用いて、ステップＳ２５０３に示した、データ処理装置１００の定義辞書作成処理手順の一例について説明する。
【０１６６】
図２８は、定義辞書作成処理手順の一例を示すフローチャートである。図２８において、データ処理装置１００は、行パターンデータを選択する（ステップＳ２８０１）。次に、選択した行パターンデータに対して、定義したブロックを当てはめる（ステップＳ２８０２）。
【０１６７】
そして、データ処理装置１００は、すべての行パターンデータを選択したか否かを判定する（ステップＳ２８０３）。ここで、選択していない場合（ステップＳ２８０３：Ｎｏ）、データ処理装置１００は、ステップＳ２８０１の処理に戻る。
【０１６８】
一方で、選択した場合（ステップＳ２８０３：Ｙｅｓ）、データ処理装置１００は、当てはめられなかったブロックを削除する（ステップＳ２８０４）。次に、データ処理装置１００は、定義辞書１２００を作成する（ステップＳ２８０５）。そして、データ処理装置１００は、定義辞書作成処理を終了する。
【０１６９】
（構造化データ変換処理手順の一例）
次に、図２９を用いて、ステップＳ１５０５に示した、データ処理装置１００の構造化データ変換処理手順の一例について説明する。
【０１７０】
図２９は、構造化データ変換処理手順の一例を示すフローチャートである。図２９において、データ処理装置１００は、分析対象データになるレシートデータを選択する（ステップＳ２９０１）。次に、データ処理装置１００は、分析対象データから１行分のデータを取得する（ステップＳ２９０２）。そして、データ処理装置１００は、取得したデータから行の行属性を特定する（ステップＳ２９０３）。
【０１７１】
次に、データ処理装置１００は、特定した行属性が先頭にあるブロックを特定する（ステップＳ２９０４）。そして、データ処理装置１００は、分析対象データから１行分のデータを取得する（ステップＳ２９０５）。次に、データ処理装置１００は、取得したデータから行の行属性を特定する（ステップＳ２９０６）。そして、データ処理装置１００は、特定した行属性が続くブロックを特定する（ステップＳ２９０７）。
【０１７２】
次に、データ処理装置１００は、特定したブロックが一つか否かを判定する（ステップＳ２９０８）。ここで、特定したブロックが一つではない場合（ステップＳ２９０８：Ｎｏ）、データ処理装置１００は、ステップＳ２９０５の処理に戻る。
【０１７３】
一方で、特定したブロックが一つである場合（ステップＳ２９０８：Ｙｅｓ）、データ処理装置１００は、特定したブロックに対応する複数の行の行データをＸＭＬデータに変換する（ステップＳ２９０９）。次に、データ処理装置１００は、すべての行の行データを取得したか否かを判定する（ステップＳ２９１０）。ここで、取得していない場合（ステップＳ２９１０：Ｎｏ）、データ処理装置１００は、ステップＳ２９０２の処理に戻る。
【０１７４】
一方で、取得した場合（ステップＳ２９１０：Ｙｅｓ）、データ処理装置１００は、すべてのレシートデータを選択したか否かを判定する（ステップＳ２９１１）。ここで、選択していない場合（ステップＳ２９１１：Ｎｏ）、データ処理装置１００は、ステップＳ２９０１の処理に戻る。
【０１７５】
一方で、選択した場合（ステップＳ２９１１：Ｙｅｓ）、データ処理装置１００は、構造化データ変換処理を終了する。
【０１７６】
以上説明したように、データ処理プログラムによれば、各々のレシートデータの先頭行からの行の行属性が、複数のレシートデータにおいて一致するデータ範囲を特定することができる。これにより、データ処理プログラムは、レシートデータのヘッダー範囲を、自動で決定することができる。このため、データ処理プログラムの利用者は、レシートデータのヘッダー範囲を決定しなくてもよくなる。また、データ処理プログラムは、複数のレシートデータからヘッダー範囲を決定するため、ヘッダー範囲の決定精度を向上させることができる。
【０１７７】
また、データ処理プログラムによれば、データ範囲の最下行の行属性が、データ範囲とは異なるデータ範囲に含まれる行の行属性と一致する場合は、データ範囲から最下行を除外することができる。これにより、データ処理プログラムは、ヘッダー範囲の決定精度を向上させることができる。
【０１７８】
また、データ処理プログラムによれば、各々のレシートデータの最終行からの行の行属性が、複数のレシートデータにおいて一致するデータ範囲を特定することができる。これにより、データ処理プログラムは、レシートデータのフッター範囲を、自動で決定することができる。このため、データ処理プログラムの利用者は、レシートデータのフッター範囲を決定しなくてもよくなる。また、データ処理プログラムは、複数のレシートデータからフッター範囲を決定するため、フッター範囲の決定精度を向上させることができる。
【０１７９】
また、データ処理プログラムによれば、データ範囲の最上行の行属性が、データ範囲とは異なるデータ範囲に含まれる行の行属性と一致する場合は、データ範囲から最上行を除外することができる。これにより、データ処理プログラムは、フッター範囲の決定精度を向上させることができる。
【０１８０】
また、データ処理プログラムによれば、レシートデータの記述内容とともに、データ範囲と、レシートデータに含まれる各々の行の行属性と、を出力することができる。これにより、データ処理プログラムは、利用者が、行属性の行のデータ形式を特定のデータ形式に変換する、行属性に対応する変換規則を作成することを支援することができる。
【０１８１】
また、データ処理プログラムによれば、変換規則に基づいて、レシートデータのデータ形式を特定のデータ形式に変換することができる。これにより、データ処理プログラムは、レシートデータの統計処理のための特定のデータ形式に変更された構造化データに基づいて、レシートデータの統計処理を実行することができる。
【０１８２】
ここで、従来、作業者が、複数のレシートデータを観察して比較し、複数のレシートデータに共通するヘッダー範囲およびフッター範囲を特定する場合が考えられる。しかしながら、この場合、作業者の負担が増大してしまい、作業時間が増大してしまう。また、レシートデータが数枚であると、作業者がサンプルとなるレシートデータが少ないために誤ったヘッダー範囲およびフッター範囲を特定してしまうおそれがある。また、作業者のミスが発生するおそれがある。一方で、本実施の形態にかかるデータ処理装置１００は、複数のレシートデータから自動的にヘッダー範囲およびフッター範囲を特定することができ、作業者の負担および作業時間の増大を抑制することができ、作業者のミスを発生させないようにすることができる。
【０１８３】
ここで、従来のデータ処理装置が、レシートデータの行データに対して文字列のパターンマッチングを行って、レシートデータのデータ形式を特定のデータ形式に変換する場合が考えられる。しかしながら、この場合、同一の文字列パターンであって、記述内容が異なる行データのデータ形式を、誤って変換してしまうおそれがある。例えば、行データが通常文字の文字列にパターンマッチングしたときに行データのデータ形式を商品名についてのデータ形式に変換する場合、店舗名が記述された行データのデータ形式を商品名についてのデータ形式に変換してしまうおそれがある。一方で、本実施の形態にかかるデータ処理装置１００は、レシートデータのヘッダー範囲、明細範囲、およびフッター範囲を区別して、各々の範囲に含まれる行の変換規則を受け付けることができる。このため、データ処理装置１００は、ヘッダー範囲と明細範囲とに同一の文字列パターンの行があっても、別のデータ形式に変換することができる。
【０１８４】
なお、本実施の形態で説明したデータ処理方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本データ処理プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本データ処理プログラムは、インターネット等のネットワークを介して配布してもよい。
【０１８５】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０１８６】
（付記１）コンピュータに、
複数のレシートデータの各々のレシートデータに含まれる複数の行の各々の行に存在する文字の属性に基づいて、前記各々の行の行属性を決定し、
決定した前記各々の行の行属性を比較して、前記各々のレシートデータの先頭行または最終行からの行属性が前記複数のレシートデータにおいて一致するデータ範囲を特定し、
特定した前記データ範囲の最下行または最上行の行属性が、前記複数のレシートデータの少なくともいずれかのレシートデータの前記データ範囲とは異なるデータ範囲に含まれるいずれかの行の行属性と一致したことに応じて、前記データ範囲から最下行または最上行を除外する、
処理を実行させることを特徴とするデータ処理プログラム。
【０１８７】
（付記２）前記除外する処理は、
前記データ範囲の最下行または最上行の行属性が、前記異なるデータ範囲に含まれるいずれの行の行属性とも一致しなくなるまで、前記データ範囲の最下行または最上行の行属性が、前記異なるデータ範囲に含まれるいずれかの行の行属性と一致したことに応じて、前記データ範囲から最下行または最上行を除外することを特徴とする付記１に記載のデータ処理プログラム。
【０１８８】
（付記３）前記特定する処理は、
前記各々の行の行属性を比較して、前記各々のレシートデータの先頭行からの行属性が前記複数のレシートデータにおいて一致する第１データ範囲を特定し、
前記各々の行の行属性を比較して、前記各々のレシートデータの最終行からの行属性が前記複数のレシートデータにおいて一致する第２データ範囲を特定し、
前記除外する処理は、
特定した前記第１データ範囲の最下行の行属性が、前記いずれかのレシートデータの前記第１データ範囲および前記第２データ範囲とは異なるデータ範囲に含まれるいずれかの行の行属性と一致したことに応じて、前記第１データ範囲から前記最下行を除外し、
特定した前記第２データ範囲の最上行の行属性が、前記いずれかのレシートデータの前記第１データ範囲および前記第２データ範囲とは異なるデータ範囲に含まれるいずれかの行の行属性と一致したことに応じて、前記第２データ範囲から前記最上行を除外する、
ことを特徴とする付記１に記載のデータ処理プログラム。
【０１８９】
（付記４）前記除外する処理は、
前記第１データ範囲の最下行の行属性が、前記異なるデータ範囲に含まれるいずれの行の行属性とも一致しなくなるまで、前記第１データ範囲の最下行の行属性が、前記異なるデータ範囲に含まれるいずれかの行の行属性と一致したことに応じて、前記第１データ範囲から最下行を除外し、
前記第２データ範囲の最上行の行属性が、前記異なるデータ範囲に含まれるいずれの行の行属性とも一致しなくなるまで、前記第２データ範囲の最上行の行属性が、前記異なるデータ範囲に含まれるいずれかの行の行属性と一致したことに応じて、前記第２データ範囲から最上行を除外する、
ことを特徴とする付記３に記載のデータ処理プログラム。
【０１９０】
（付記５）前記コンピュータに、
行の行属性に対応付けて前記行属性の行のデータ形式を特定のデータ形式に変換する変換規則を記憶する記憶部に基づいて、前記複数のレシートデータのうちのいずれかのレシートデータの前記行属性の行のデータ形式を前記特定のデータ形式に変換する、
処理を実行させることを特徴とする付記３または４に記載のデータ処理プログラム。
【０１９１】
（付記６）前記変換する処理は、
レシートデータにおいて連続する複数の行の行属性のパターンに対応付けて前記複数の行の各々の行のデータ形式を前記特定のデータ形式に変換する変換規則を記憶する記憶部に基づいて、前記複数のレシートデータのうちのいずれかのレシートデータの前記行属性のパターンに対応する複数の行の各々の行のデータ形式を前記特定のデータ形式に変換する、
ことを特徴とする付記５に記載のデータ処理プログラム。
【０１９２】
（付記７）前記コンピュータに、
前記複数のレシートデータのうちのいずれかのレシートデータに含まれるいずれかの行の記述内容と行属性とを対応付けて出力し、
前記いずれかの行の行属性と、前記いずれかの行を特定のデータ形式に変換する変換規則と、を受け付け、
受け付けた前記行属性と前記変換規則とを対応付けて前記記憶部に記憶する、
処理を実行させることを特徴とする付記５または６に記載のデータ処理プログラム。
【０１９３】
（付記８）前記出力する処理は、前記いずれかのレシートデータに含まれるいずれかの行の記述内容と行属性とを対応付けて出力するとともに、前記第１データ範囲と前記第２データ範囲とを表す情報を出力することを特徴とする付記７に記載のデータ処理プログラム。
【０１９４】
（付記９）コンピュータが、
複数のレシートデータの各々のレシートデータに含まれる複数の行の各々の行に存在する文字の属性に基づいて、前記各々の行の行属性を決定し、
決定した前記各々の行の行属性を比較して、前記各々のレシートデータの先頭行または最終行からの行属性が前記複数のレシートデータにおいて一致するデータ範囲を特定し、
特定した前記データ範囲の最下行または最上行の行属性が、前記複数のレシートデータの少なくともいずれかのレシートデータの前記データ範囲とは異なるデータ範囲に含まれるいずれかの行の行属性と一致したことに応じて、前記データ範囲から最下行または最上行を除外する、
処理を実行することを特徴とするデータ処理方法。
【符号の説明】
【０１９５】
１００  データ処理装置
４０１  決定部
４０２  特定部
４０３  除外部
４０４  出力部
４０５  受付部
４０６  記憶部
４０７  変換部
【図１】
2015075905.tif 000003
【図２】
2015075905.tif 000004
【図３】
2015075905.tif 000005
【図４】
2015075905.tif 000006
【図５】
2015075905.tif 000007
【図６】
2015075905.tif 000008
【図７】
2015075905.tif 000009
【図８】
2015075905.tif 000010
【図９】
2015075905.tif 000011
【図１０】
2015075905.tif 000012
【図１１】
2015075905.tif 000013
【図１２】
2015075905.tif 000014
【図１３】
2015075905.tif 000015
【図１４】
2015075905.tif 000016
【図１５】
2015075905.tif 000017
【図１６】
2015075905.tif 000018
【図１７】
2015075905.tif 000019
【図１８】
2015075905.tif 000020
【図１９】
2015075905.tif 000021
【図２０】
2015075905.tif 000022
【図２１】
2015075905.tif 000023
【図２２】
2015075905.tif 000024
【図２３】
2015075905.tif 000025
【図２４】
2015075905.tif 000026
【図２５】
2015075905.tif 000027
【図２６】
2015075905.tif 000028
【図２７】
2015075905.tif 000029
【図２８】
2015075905.tif 000030
【図２９】
2015075905.tif 000031