(57)【要約】【課題】帳票の印刷内容に対応する画像データから帳票の発行元を自動的に特定できる情報特定プログラム、及び情報特定方法を提供する。【解決手段】ＣＰＵは、レシート画像の画像データを受信し、取得する（Ｓ１）。ＣＰＵ１０は、公知のＯＣＲ処理を実行することによって、受信した画像データからテキストデータを取得する（Ｓ２）。ＣＰＵは、テキストデータから電話番号を示す文字列を検索して抽出する（Ｓ４）。ＣＰＵは、抽出した電話番号列を位置情報サービスサーバへ送信する（Ｓ６）。ＣＰＵは、ＨＴＴＰリクエストに対応する有効な位置情報を含むＸＭＬファイルを受信した場合（Ｓ７：ＹＥＳ）、ＸＭＬファイルを解析して、位置情報に対応するレシート１１０の発行元である店舗名を特定する（Ｓ１１、Ｓ１３）。【選択図】図５
2016189174.tif 000002
【特許請求の範囲】
【請求項１】
情報特定装置を構成するコンピュータによって実行される情報特定プログラムであって、
前記コンピュータに、
前記情報特定装置に接続された画像読取装置から、発行元毎に異なるフォーマットで発行された帳票を読み取った画像データを取得する画像データ取得ステップと、
前記画像データからテキストデータを取得するテキストデータ取得ステップと、
前記テキストデータにおける文字の配列を解析することで、前記テキストデータの一部を検索キーとして抽出する抽出ステップと、
前記情報特定装置にネットワークを介して接続されるデータベースに前記検索キーを送信する送信ステップと、
前記検索キーに対応する、前記発行元を識別可能な情報を含む識別情報を前記データベースから受信する受信ステップと、
前記識別情報に基づいて前記発行元を特定する特定ステップと、
帳票の印刷レイアウト情報及び前記帳票に印刷される項目を示す項目情報を前記発行元に対応付けた帳票テンプレートを複数記憶する記憶手段から、前記特定ステップにおいて特定された前記発行元に対応する帳票テンプレートを取得するテンプレート取得ステップと、
前記テンプレート取得ステップにおいて取得された前記帳票テンプレートを参照して、前記テキストデータ取得ステップにおいて取得された前記テキストデータを解析することによって、前記項目情報に対応する値である項目値を取得する項目値取得ステップと、
前記項目値取得ステップにおいて取得された前記項目値を、前記特定ステップにおいて特定された前記発行元に対応付けて記憶する項目値記憶ステップと
を実行させることを特徴とする情報特定プログラム。
【請求項２】
発行元毎に異なるフォーマットで発行された帳票の印刷内容に対応する画像データから、前記発行元を特定する情報特定装置を構成するコンピュータによって実行される情報特定プログラムであって、
前記コンピュータに、
前記画像データからテキストデータを取得するテキストデータ取得ステップと、
前記テキストデータにおける文字の配列を解析することで、前記テキストデータの一部を検索キーとして抽出する抽出ステップと、
前記検索キーに基づいて、前記発行元を識別可能な情報を含む識別情報を取得する識別情報取得ステップと、
前記識別情報取得ステップにおいて取得された前記識別情報に基づいて前記発行元を特定する特定ステップと
を実行させることを特徴とする情報特定プログラム。
【請求項３】
前記抽出ステップは、特定の配列を有する数字列を含む文字列を前記テキストデータから検索することで、前記テキストデータから電話番号を示す文字列を前記検索キーとして抽出する電話番号検索ステップを含むことを特徴とする請求項２に記載の情報特定プログラム。
【請求項４】
前記抽出ステップは、ＵＲＬを示す特定の配列の文字列を前記テキストデータから検索することで、前記テキストデータからＵＲＬを示す文字列を前記検索キーとして抽出するＵＲＬ検索ステップを含むことを特徴とする請求項２に記載の情報特定プログラム。
【請求項５】
前記抽出ステップは、前記テキストデータにおけるテキスト開始位置から所定の範囲内に配列される単語を示す文字列を複数切り出すことで、前記テキストデータから単語を示す複数の文字列のそれぞれを前記検索キーとして抽出する単語抽出ステップを含むことを特徴とする請求項２に記載の情報特定プログラム。
【請求項６】
前記識別情報取得ステップは、
データベースに前記検索キーを送信する送信ステップと、
前記検索キーに対応する前記識別情報を前記データベースから受信する受信ステップと
を含むことを特徴とする請求項２から５のいずれかに記載の情報特定プログラム。
【請求項７】
前記識別情報取得ステップは、
電話番号に対応する位置を示す位置情報を提供可能な位置情報サービスを提供する外部の位置情報サービスサーバに、前記電話番号検索ステップにおいて前記検索キーとして抽出された電話番号を示す文字列を送信する電話番号送信ステップと、
前記電話番号を示す文字列に対応する位置情報を前記位置情報サービスサーバから受信する位置情報受信ステップと
を含むことを特徴とする請求項３に記載の情報特定プログラム。
【請求項８】
前記抽出ステップは、ＵＲＬを示す特定の配列の文字列を前記テキストデータから検索することで、前記テキストデータからＵＲＬを示す文字列を前記検索キーとして抽出するＵＲＬ検索ステップを含み、
前記ＵＲＬ検索ステップは、前記電話番号検索ステップにおいて前記検索キーとして電話番号を示す文字列を抽出できない場合、または前記位置情報受信ステップにおいて前記位置情報を受信できない場合に、ＵＲＬを示す文字列を前記検索キーとして抽出することを特徴とする請求項７に記載の情報特定プログラム。
【請求項９】
前記識別情報取得ステップは、
任意の文字列に対応する情報を、ネットワークを介してアクセス可能なウェブページから検索する検索サービスを提供する外部の検索サービスサーバに、前記単語抽出ステップにおいて前記検索キーとして抽出された単語を示す複数の文字列のそれぞれを送信する単語送信ステップと、
前記単語を示す複数の文字列のそれぞれに対して検索されたウェブページの数を示す検索ヒット数を特定可能な検索結果情報を前記検索サービスサーバから受信する検索結果受信ステップと
を含むことを特徴とする請求項５に記載の情報特定プログラム。
【請求項１０】
前記識別情報取得ステップは、
前記ＵＲＬ検索ステップにおいて前記検索キーとして抽出されたＵＲＬを示す文字列の示す外部のウェブサーバにＨＴＴＰリクエストを送信するＨＴＴＰリクエスト送信ステップと、
前記ＨＴＴＰリクエストに対応するＨＴＴＰレスポンスを前記ウェブサーバから受信するＨＴＴＰレスポンス受信ステップと
を含むことを特徴とする請求項４に記載の情報特定プログラム。
【請求項１１】
前記抽出ステップは、前記テキストデータにおけるテキスト開始位置から所定の範囲内に配列される単語を示す文字列を複数切り出すことで、前記テキストデータから単語を示す複数の文字列のそれぞれを前記検索キーとして抽出する単語抽出ステップを含み、
前記単語抽出ステップは、前記ＵＲＬ検索ステップにおいて前記検索キーとしてＵＲＬを示す文字列を抽出できない場合、または前記ＨＴＴＰレスポンス受信ステップにおいて前記ＨＴＴＰレスポンスを受信できない場合に、単語を示す文字列を前記検索キーとして抽出することを特徴とする請求項１０に記載の情報特定プログラム。
【請求項１２】
前記特定ステップは、前記検索結果受信ステップにおいて受信した前記検索結果情報のうち前記検索ヒット数が最大の検索結果情報から前記発行元を特定することを特徴とする請求項９に記載の情報特定プログラム。
【請求項１３】
前記特定ステップは、前記位置情報受信ステップにおいて受信した前記位置情報から前記発行元を特定することを特徴とする請求項７に記載の情報特定プログラム。
【請求項１４】
現在位置の位置情報を示す現在位置情報を取得する現在地取得ステップを備え、
前記特定ステップは、前記位置情報受信ステップにおいて前記位置情報サービスサーバから複数の前記位置情報を受信した場合、前記複数の位置情報のうち前記現在位置情報に対して最も近い位置関係を示す位置情報から前記発行元を特定することを特徴とする請求項１３に記載の情報特定プログラム。
【請求項１５】
前記特定ステップは、前記ＨＴＴＰレスポンス受信ステップにおいて受信した前記ＨＴＴＰレスポンスのヘッダ情報から前記発行元を特定することを特徴とする請求項１０に記載の情報特定プログラム。
【請求項１６】
帳票の印刷レイアウト情報及び前記帳票に印刷される項目を示す項目情報を前記発行元に対応付けた帳票テンプレートを複数記憶する記憶手段から、前記特定ステップにおいて特定された前記発行元に対応する帳票テンプレートを取得するテンプレート取得ステップと、
前記テンプレート取得ステップにおいて取得された前記帳票テンプレートを参照して、前記テキストデータ取得ステップにおいて取得された前記テキストデータを解析することによって、前記項目情報に対応する値である項目値を取得する項目値取得ステップと、
前記項目値取得ステップにおいて取得された前記項目値を、前記特定ステップにおいて特定された前記発行元に対応付けて記憶する項目値記憶ステップと
を備えたことを特徴とする請求項２から１５のいずれかに記載の情報特定プログラム。
【請求項１７】
発行元毎に異なるフォーマットで印刷された帳票の印刷内容に対応する画像データから、前記発行元を特定する情報特定装置を構成するコンピュータによって実行される情報特定方法であって、
画像読取装置から帳票を読み取った画像データを取得する画像データ取得ステップと、
前記画像データから文字認識処理によってテキストデータを取得するテキストデータ取得ステップと、
前記テキストデータにおける文字の配列を解析することで、前記テキストデータの一部を検索キーとして抽出する抽出ステップと、
前記検索キーに基づいて、前記発行元を識別可能な情報を含む識別情報を取得する識別情報取得ステップと、
前記識別情報取得ステップにおいて取得された前記識別情報に基づいて前記発行元を特定する特定ステップと
を備えたことを特徴とする情報特定方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報特定プログラム、及び情報特定方法に関する。
【背景技術】
【０００２】
従来、店舗毎に異なるフォーマットで印刷されたレシート等の帳票のデータを収集する店舗別レシートデータ収集装置が知られている。特許文献１に開示されたレシートデータ収集装置は、レシートの印刷レイアウト情報とレシートに印刷される項目名称とを含む店舗情報を、店舗ごとの識別コードに対応付けて記憶する。レシートデータ収集装置は、店舗ごとの識別コードを示すコード画像が表示されたレシート挟持用シートに挟まれたレシートをスキャナで読み取ることで、店舗情報とレシートの画像情報とを取得する。取得されたレシートの画像情報に対し、Optical Character Recognition（ＯＣＲ）処理及び店舗情報に応じた処理がなされる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１２−３２９７９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１に記載のレシートデータ収集装置を使用するには、店舗情報を特定するために、店舗ごとのレシート挟持用シートを準備する必要がある。テナント管理部門ではなく、例えば個人ユーザがレシートデータ収集装置を使用する場合が考えられるが、個人ユーザが利用する店舗は、テナント管理部門の管理対象店舗ように、予め定められているとは限らない。このため、個人ユーザが、レシート挟持用シートを、それぞれの店舗に対して準備するのは繁雑である。このため、レシート挟持用シートに表示された店舗毎の識別コードを用いずに、帳票の画像情報から直接に店舗情報を特定できるのが望ましい。店舗情報の特定において、帳票の画像情報に対してＯＣＲ処理を行い、処理結果に基づいて店舗名等を抽出することにより、店舗情報を特定することが考えられる。しかしながら、帳票に印刷される店舗名は店舗毎に固有のものであり、店舗名の印刷に特殊なフォントが使用されていたり、ロゴマーク等の飾り文字で店舗名が印刷されていたりすることがある。このような店舗名をＯＣＲ処理によって特定することは、金額を表す数字列やレシートに印刷される項目名称としてありふれたものの文字列（例えば「合計金額」、「消費税金額」等）を特定することと比較して非常に困難であるといった問題がある。
【０００５】
本発明は、帳票の印刷内容に対応する画像データから帳票の発行元を自動的に特定できる情報特定プログラム、及び情報特定方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明に係る情報特定プログラムは、情報特定装置を構成するコンピュータによって実行される情報特定プログラムであって、前記コンピュータに、前記情報特定装置に接続された画像読取装置から、発行元毎に異なるフォーマットで発行された帳票を読み取った画像データを取得する画像データ取得ステップと、前記画像データからテキストデータを取得するテキストデータ取得ステップと、前記テキストデータにおける文字の配列を解析することで、前記テキストデータの一部を検索キーとして抽出する抽出ステップと、前記情報特定装置にネットワークを介して接続されるデータベースに前記検索キーを送信する送信ステップと、前記検索キーに対応する、前記発行元を識別可能な情報を含む識別情報を前記データベースから受信する受信ステップと、前記識別情報に基づいて前記発行元を特定する特定ステップと、帳票の印刷レイアウト情報及び前記帳票に印刷される項目を示す項目情報を前記発行元に対応付けた帳票テンプレートを複数記憶する記憶手段から、前記特定ステップにおいて特定された前記発行元に対応する帳票テンプレートを取得するテンプレート取得ステップと、前記テンプレート取得ステップにおいて取得された前記帳票テンプレートを参照して、前記テキストデータ取得ステップにおいて取得された前記テキストデータを解析することによって、前記項目情報に対応する値である項目値を取得する項目値取得ステップと、前記項目値取得ステップにおいて取得された前記項目値を、前記特定ステップにおいて特定された前記発行元に対応付けて記憶する項目値記憶ステップとを実行させることを特徴とする。
【０００７】
本発明に係る情報特定プログラムによれば、コンピュータは、帳票の印刷内容に対応する画像データからテキストデータを取得すると、帳票の発行元を識別可能な情報を含む識別情報を検索するための検索キーを抽出する。コンピュータは、検索キーに基づいてデータベースから識別情報を取得し、識別情報から発行元を特定する。コンピュータは、特定した発行元に対応付けられた帳票テンプレートを用いて、帳票に印刷される項目情報に対応する項目値を自動的に収集できる。従って、本発明の第一態様に係る情報特定プログラムは、帳票の印刷内容に対応する画像データから帳票の発行元を自動的に特定できる。
【図面の簡単な説明】
【０００８】
【図１】情報特定システム１００の全体構成図である。
【図２】レシート１１０の具体例である。
【図３】テンプレートＤＢ５０のデータ構成を示す図である。
【図４】レシート解析結果ＤＢ６０のデータ構成を示す図である。
【図５】情報特定処理を示すフローチャートである。
【図６】情報特定処理を示すフローチャートである。
【図７】レシート解析処理を示すフローチャートである。
【図８】ＸＭＬ文書７０の具体例である。
【図９】ＨＴＭＬ文書８０の具体例である。
【図１０】読取完了画面１３０の具体例である。
【発明を実施するための形態】
【０００９】
本発明の実施形態について、図面を参照して説明する。まず、図１を参照して、情報特定システム１００のシステム構成を説明する。情報特定システム１００は、情報特定装置１、画像読取装置（以下、「スキャナ」という）２、管理サーバ３、及びサービスサーバ４を含む。情報特定装置１は、インターネット８を介して、ＬＡＮ９に接続された管理サーバ３及びサービスサーバ４、またはインターネット８に接続されたサービスサーバ４と、データ及びコマンドを送受信可能である。
【００１０】
情報特定装置１の構成について説明する。情報特定装置１は、発行元毎に異なるフォーマットで発行された帳票の印刷内容に対応する画像データから、帳票の発行元を特定可能な装置である。ここでいう帳票は、レシート、領収書、携帯電話・ガス・水道・電気等の料金明細書等、消費活動の内容を示す伝票であればよい。特に断らない限り、以下、帳票はレシートであるとして説明する。情報特定装置１は、情報特定専用の装置であってもよいし、所謂パーソナルコンピュータ等の汎用型の装置であってもよい。本実施形態では、汎用型の情報特定装置１を例示する。図１に示すように、情報特定装置１は、情報特定装置１の制御を司るコントローラであるＣＰＵ１０を備えている。ＣＰＵ１０は、ＲＯＭ１１、ＲＡＭ１２、ハードディスクドライブ（以下、「ＨＤＤ」という。）１３、及び入出力インターフェース（以下、「入出力Ｉ／Ｆ」という。）１４と、データバスを介して電気的に接続する。ＲＯＭ１１は、情報特定装置１を動作させるためのＢＩＯＳ等のプログラム、及び初期値等を記憶している。ＲＡＭ１２は、ＣＰＵ１０による演算処理で得られた演算結果等、各種のデータを一時的に記憶する。
【００１１】
ＨＤＤ１３は、不揮発性の記憶装置であり、ＣＰＵ１０に後述の情報特定処理（図５及び図６参照）を実行させるプログラムを記憶する。ＨＤＤ１３は、各種情報を管理するためのデータベース（以下、「ＤＢ」という。）として、後述のテンプレートＤＢ５０（図３参照）及びレシート解析結果ＤＢ（図４参照）を記憶する。ＨＤＤ１３は、非一時的な記憶媒体の一例である。非一時的な記憶媒体は、情報を記憶する期間に関わらず、情報を記憶可能な記憶媒体であればよい。非一時的な記憶媒体は、一時的な記憶媒体（例えば、伝送される信号）を含まなくてもよい。本実施形態における記憶装置はＨＤＤ１３であるが、記憶装置は、情報を記憶する時間の長さに関わらずデータを保持できる、他の非一時的な記憶媒体、例えば、フラッシュメモリ、ＲＡＭ等で構成されてもよい。
【００１２】
入出力Ｉ／Ｆ１５は、データの受け渡しの仲介を行う。入出力Ｉ／Ｆ１５には、外部通信インターフェース（以下、「外部通信Ｉ／Ｆ」という。）１５と、画像を表示する表示部１６と、キーボード及びマウス等の操作部１７と、汎用の画像読取装置であるスキャナ２とが電気的に接続されている。外部通信Ｉ／Ｆ１５は、情報特定装置１をインターネット８に接続する。
【００１３】
情報特定処理（図５及び図６参照）は、家計簿の管理を行う家計簿管理ソフトウェアの処理の一部である。入出力Ｉ／Ｆ１５は、情報特定装置１とスキャナ２等の外部機器とを接続するための、所定の規格（例えば、Universal Serial Bus (USB)）に適合したインターフェース素子である。ＣＰＵ１０は、入出力Ｉ／Ｆ１５を介して、スキャナ２等の外部機器とのデータの送受信を行う。スキャナ２は、情報特定装置１からの指示によって、レシート１１０等の画像を撮像する読取動作を行い、画像データを形成して、情報特定装置１に送信する。スキャナ２は、シートフィードスキャナ、又は、フラットベッドスキャナである。なお、スキャナ２は、レシート１１０の読取専用のスキャナであってもよいし、汎用のスキャナであってもよい。
【００１４】
管理サーバ３は、汎用のサーバであってもよい。管理サーバ３は、管理サーバ３の制御を司るＣＰＵ３０を備えている。ＣＰＵ３０は、ＲＯＭ３１、ＲＡＭ３２、ＨＤＤ３３、及び入出力Ｉ／Ｆ３４と、データバスを介して電気的に接続する。ＲＯＭ１１は、管理サーバ３を動作させるためのＢＩＯＳ等のプログラム、及び初期値等を記憶している。ＲＡＭ３２は、ＣＰＵ３０による演算処理で得られた演算結果等、各種のデータを一時的に記憶する。ＨＤＤ３３は、各種設定等を記憶する。入出力Ｉ／Ｆ３４には、外部通信Ｉ／Ｆ３５が接続されている。外部通信Ｉ／Ｆ３５は、管理サーバ３をＬＡＮ９に接続する。
【００１５】
サービスサーバ４は、各種のウェブサービスを提供する汎用のサーバである。サービスサーバ４は、位置情報サービスサーバ４１、検索サービスサーバ４２等の外部サービスサーバを含む。位置情報サービスサーバ４１は、文字列に対応する位置情報を提供可能な位置情報サービスを提供する外部サービスサーバである。位置情報サービスの一例として、例えばＧｏｏｇｌｅ（登録商標）の提供するＧｏｏｇｌｅ  Ｐｌａｃｅｓ  ＡＰＩがある。Ｇｏｏｇｌｅ  Ｐｌａｃｅｓ  ＡＰＩは、電話番号等を示す任意の文字列に対応する施設、地理的位置、有名なスポットについて情報を、インターネットユーザに送信可能な外部アプリケーション・プログラミング・インターフェース（ＡＰＩ）である。検索サービスサーバ４２は、任意の文字列に対応する情報をインターネット８でアクセス可能なウェブページから検索する検索サービスを提供する外部サービスサーバである。検索サービスの一例として、例えばＧｏｏｇｌｅ（登録商標）の提供する検索エンジンがある。検索エンジンによる検索結果として、検索エンジンが検索に用いられた検索文字列に合致すると判断したウェブページが提示される他、検索文字列に合致すると検索エンジンが判断したウェブページの数に対応する検索ヒット数が提示される。
【００１６】
図２を参照して、レシート１１０について説明する。レシート１１０は、ユーザが店舗名「ＸＸＸ  ＳＴＯＲＥ」である店舗で買い物をした場合に、店舗の店員から受け取るレシートの一例である。レシート１１０には、消費活動の内容を示す様々な項目情報が含まれている。ロゴ欄１１１は、店舗のロゴマークを示す。レシート１１０のロゴ欄１１１は、「ＸＸＸ  ＳＴＯＲＥ」という店舗名の店舗で買い物がされたことを示している。住所欄１１２は店舗の住所、電話番号欄１１３は店舗の電話番号をそれぞれ示す。日付欄１１４は、購入日付を示す。品目欄１１５は購入商品名、単価欄１１６は商品毎の購入価格を示す。支払総額欄１１７は支払総額、税額欄１１８は消費税等の税額を示す。支払方法欄１１９は、支払方法を示す。宣伝欄１２１，１２２は、消費者に対する宣伝、お知らせ等を示す。レシート１１０では、宣伝欄１２２に店舗のＵＲＬを示すＵＲＬ情報１２３が含まれている。
【００１７】
図３を参照して、ＨＤＤ１３に記憶されるテンプレートＤＢ５０について説明する。テンプレートＤＢ５０には、レシート１１０に印刷される項目を示す項目情報を、レシート１１０の発行元である店舗名に対応付けたレシートテンプレート（以下、単に「テンプレート」という。）が複数登録されている。図３に示す例では、テンプレートＤＢ５０には、レシート１１０に含まれる項目情報のうち、家計簿管理に必要な項目情報である「支払総額」、「税額」、「日付」、「支払方法」が登録されている。テンプレートＤＢ５０は、図３に示す例以外の項目情報を登録内容に含んでもよい。なお、Ｔ−ＩＤは、テンプレートＤＢ５０にテンプレートが登録される毎にＣＰＵ１０によって付与されるＩＤである。
【００１８】
レシート１１０の発行元毎に、レシート１１０に項目情報「支払総額」を印刷する様式は様々である。テンプレートＤＢ５０において、図２に示すように、店舗名「ＸＸＸ  ＳＴＯＲＥ」のレシート１１０において、「支払総額」は「合計」の項目名称で印刷されている。このため、図３に示すように、Ｔ−ＩＤが「Ｔ０００１」のテンプレートには、項目情報「支払総額」に項目名称「合計」が対応付けられている。Ｔ−ＩＤが「Ｔ０００２」〜「Ｔ０００５」のテンプレートについても同様に、項目情報「支払総額」に項目名称「Ｔｏｔａｌ」、「ＡＭＯＵＮＴ」、「ｔｏｔａｌ」、「合計」が、それぞれ対応付けられている。項目情報「税額」、「日付」、「支払方法」についても同様に、それぞれの店舗発行のレシート１１０において項目情報に対応して印刷される項目名称が登録されている。
【００１９】
なお、テンプレートＤＢ５０は、項目情報「日付」については、対応する項目名称である日付の印刷様式を正規表現で表現することとして、レシート１１０からの日付の読み取りを正確に行えるように工夫している。具体的には、Ｔ−ＩＤ「Ｔ０００１」には、項目情報「日付」がレシート１１０に「（４桁の数字）／（１桁又は２桁の数字）／（１桁又は２桁の数字）」の様式（例えば、「西暦／月／日」の様式）で印刷されることが対応付けられている。Ｔ−ＩＤ「Ｔ０００２」には、項目情報「日付」がレシート１１０に「（４桁の数字）  （１桁又は２桁の数字）  （１桁又は２桁の数字）  （２桁の数字）：（２桁の数字）：（２桁の数字）」の様式（例えば、「西暦  月  日  時：分：秒」の様式）で印刷されることが対応付けられている。また、項目情報「支払方法」については、現金、ＢＢカード、ＣＣカード、ＤＤカード等の複数の支払方法のうちのいずれがレシート１１０に印刷され得るかが対応付けられている。ここで、「ＢＢカード」「ＣＣカード」「ＤＤカード」は、クレジットカードの種別を示している。
【００２０】
レシート１１０の印刷レイアウトは、一般に「レジ」等と呼ばれる金銭登録機のメーカによって異なる場合がある。また、レシート１１０の発行元毎に、レシート１１０に含まれる項目情報の種類、及びそれぞれの項目情報の印刷位置が異なる場合がある。図示しないが、テンプレートＤＢ５０は、レシート１１０の印刷開始位置、レシート１１０から画像を読み取る読取範囲、読取範囲における各項目情報の印刷位置等の印刷レイアウト情報を、テンプレート毎に設定している。
【００２１】
図４を参照して、ＨＤＤ１３に記憶されるレシート解析結果ＤＢ６０について説明する。レシート解析結果ＤＢ６０には、後述する情報特定処理（図５及び図６参照）の中で行われるレシート解析処理（図７参照）においてレシート１１０の項目情報に対応する項目値として取得された各値が、レシート１１０毎に記憶される。レシート解析結果ＤＢ６０には、Ｒ−ＩＤ、Ｔ−ＩＤ、支払総額、税額、日付、及び支払方法が対応付けられて記憶されている。Ｒ−ＩＤは、レシート解析結果ＤＢ６０に情報が記憶される場合に、レシート１１０毎にＣＰＵ１０によって付与されるＩＤである。Ｔ−ＩＤは、レシート１１０の発行元を示す店舗名に対応するテンプレートがいずれのテンプレートであるかを示す。Ｔ−ＩＤの替わりに、レシート１１０の発行元の店舗名が記憶されてもよい。支払総額は、レシート１１０に印刷された支払総額の値である。税額は、レシート１１０に印刷された税額の値である。日付は、レシート１１０に印刷された日付である。支払方法は、レシート１１０に印刷された支払方法である。この他、レシート解析結果ＤＢ６０には、レシート毎１１０にレシート１１０をスキャナ２で読み取った画像データが、Ｒ−ＩＤ等とともに対応付けられて記憶されてもよい。
【００２２】
図５から図１０を参照して、本実施形態における情報特定処理について説明する。情報特定処理は、レシート１１０が撮像されたレシート画像の画像データに基づき、レシート１１０に記載されている情報からレシート１１０の発行元である店舗名を特定する処理である。また、情報特定処理は、特定された店舗名に対応するテンプレートを参照して項目情報に対応する項目値をレシート１１０から取得し、取得した各項目値をレシート１１０毎にレシート解析結果ＤＢ６０に記憶する処理である。以下では、レシート１１０（図２参照）をスキャナ２で読み取り、各項目値をレシート１１０毎にレシート解析結果ＤＢ６０に記憶する場合を具体例として説明する。具体例では、レシート解析結果ＤＢ６０に情報が記憶されていない状態から、図４に示すＲ−ＩＤ「Ｒ０００１」に対応付けられた情報を記憶する過程を示す。
【００２３】
図５に示すように、情報特定処理が開始されると、ＣＰＵ１０は画像読取を実行する（Ｓ１）。具体的には、ＣＰＵ１０はスキャナ２に対して画像読取動作を行う指示を送信する。指示を受信したスキャナ２は、レシート１１０を撮像して、レシート画像の画像データを生成し、ＣＰＵ１０に送信する。ＣＰＵ１０は、スキャナ２から送信された画像データを受信し、ＲＡＭ１２に記憶する。
【００２４】
ＣＰＵ１０は、受信した画像データからテキストデータを取得する（Ｓ２）。テキストデータは、レシート１１０の画像データに含まれる文字を示し、且つ、レシート１１０の項目情報に対応する情報を示すデータである。即ち、ＣＰＵ１０は、文字の輪郭に対応する特徴を画像から抽出し、文字の標準パターンとの比較を行う公知のＯＣＲ処理を実行することによって、ＲＡＭ１２に記憶された画像データから文字を抽出する。ＣＰＵ１０は、抽出された文字を分析して、レシート１１０に印刷されている文字を特定する。ＣＰＵ１０は、特定した文字を示すテキストデータを生成し、ＲＡＭ１２に記憶する。また、この時、ＣＰＵ１０は、特定されたテキストデータに対応するテキスト開始座標とテキスト終了座標を取得する。ＯＣＲ処理においては、周知のエッジ検出技術等の特徴抽出ステップと、抽出した特徴を文字のテンプレートと比較するマッチングステップとを含む、周知のライブラリを利用可能である。
【００２５】
図２に示すように、ロゴ欄１１１において、店舗名「ＸＸＸ  ＳＴＯＲＥ」を示す文字のうち「ＸＸＸ」の部分について、それぞれの文字に縁取りの設けられた特殊なフォントが使用されている。また、「ＳＴＯＲＥ」の部分について、手書き風の特殊なフォントが使用されている。また、「ＳＴＯＲＥ」の文字の一部に、弓形の図柄が重なるように配置されている。文字に特殊なフォントが使用されたり、文字と図柄とが結合されたりするこのようなロゴマークについてＯＣＲ処理が行われた場合、店舗名を示す「ＸＸＸ  ＳＴＯＲＥ」の文字がロゴマークから特定され難いことがある。以下では、ロゴ欄１１１のロゴマークからＯＣＲ処理によって店舗名を示す「ＸＸＸ  ＳＴＯＲＥ」の文字が特定されておらず、テキストデータに「ＸＸＸ  ＳＴＯＲＥ」を示す文字が含まれていないとして説明する。
【００２６】
ＣＰＵ１０は、取得されたテキストデータに含まれる文字列のうち、所定範囲の文字列を切り出して取得する（Ｓ３）。ＣＰＵ１０は、取得した文字列をＲＡＭ１２に記憶する。本実施形態において所定範囲は、テキストデータのテキスト開始座標からテキスト終了座標方向における所定の範囲、及びテキスト終了座標からテキスト開始座標方向における所定の範囲である。即ち、ＣＰＵ１０は、テキストデータに含まれる文字列のうち、レシート１１０の上端に近い側に印刷された情報に基づく文字列、及びレシート１１０の下端に近い側に印刷された情報に基づく文字列を切り出す。本実施形態において、ＣＰＵ１０が切り出した文字列を含むデータを、第一テキストデータとする。
【００２７】
Ｓ３の処理は、レシート１１０の画像データから得られたテキスト情報から、レシート１１０の発行元である店舗名を特定するための前処理として行われる。図２に示すように、レシート１１０の品目欄１１５、単価欄１１６、支払総額欄１１７、税額欄１１８、支払方法欄１１９に印刷される情報は、店舗名とは関連しない情報であることが多く、これらの欄の情報からは、店舗名は特定されにくい。レシート１１０の印刷レイアウトは様々であるが、これら品目欄１１５、単価欄１１６、支払総額欄１１７、税額欄１１８、支払方法欄１１９は、レシート１１０において上下方向（例えば、長手方向）の中央部に印刷されることが比較的多い。このため、レシート１１０の中央部以外に印刷される項目情報に基づいて、以降の店舗名を特定するための処理を行うことが好ましい。このため、ＣＰＵ１０は、Ｓ２の処理において取得したテキストデータのうち、レシート１１０の中央部に印刷される文字列を除外した第一テキストデータを、Ｓ３の処理において取得する。なお、テキストデータから第一テキストデータを取得する手法はこれに限られない。例えば、ＣＰＵ１０は、テキストデータを取得する際に、テキストデータにおける文字列の行数を合わせて取得してもよい。この場合、ＣＰＵ１０は、テキストデータの開始位置から終了位置に向けた所定行数に含まれる文字列、及びテキストデータの終了位置から開始位置に向けた所定行数に含まれる文字列に対応するデータを、第一テキストデータとして取得できる。
【００２８】
ＣＰＵ１０は、ＲＡＭ１２に記憶された第一テキストデータを参照して、第一テキストデータから電話番号を示す文字列を検索する（Ｓ４）。図２に示すように、レシート１１０の電話番号欄１１３には、「０５２−３３３−ＸＸＸＸ」の様式で発行元の電話番号が印刷されている。レシート１１０毎に、電話番号欄１１３における電話番号の印刷様式は、「−（ハイフン）」の有無、「（）（カッコ）」の有無、用いるカッコの種類等によって様々である。本実施形態では、ＣＰＵ１０は、電話番号を表記するための数字を含む文字列における特有の文字の配列を用いて、第一テキストデータから電話番号を示す文字列を検索する。ＣＰＵ１０は、例えば、
（\d{2,4}）-(\d{2,4})-(\d{4})
（\d{2,4}） (\d{2,4}) (\d{4})
（\d{2,4}）-(\d{2,4})-(\d{4})
[（\d{2,4}）](\d{2,4})-(\d{4})
等の、正規表現を用いたパターンマッチングによって、第一テキストデータに含まれる文字列から、電話番号を示す文字列を検索する。ＣＰＵ１０は、電話番号を示す文字列を検索できた場合には、第一テキストデータから電話番号を示す文字列を抽出し、ＲＡＭ１２に記憶する。以下、電話番号を示す文字列を、「電話番号列」という。即ち、ＣＰＵ１０は、位置情報サービスを用いて店舗名を識別可能な位置情報を取得するための検索キーとして、第一テキストデータから電話番号列を抽出する。
【００２９】
レシート１１０によっては、電話番号欄１１３が設けられていないので、ＣＰＵ１０は、第一テキストデータから、電話番号列を必ず抽出できるとは限らない。ＣＰＵ１０は、電話番号列を抽出できたか否かを判断する（Ｓ５）。ＣＰＵ１０は、電話番号列を抽出できた場合（Ｓ５：ＹＥＳ）、抽出した電話番号列を位置情報サービスサーバ４１へ送信する（Ｓ６）。例えば、位置情報サービスサーバ４１が前述のＧｏｏｇｌｅ  Ｐｌａｃｅｓ  ＡＰＩを提供するサービスサーバ４の場合、ＣＰＵ１０は、電話番号列に基づくＨＴＴＰリクエストを、位置情報サービスサーバ４１を示す所定のＵＲＬへ送信する。
【００３０】
位置情報サービスサーバ４１は、例えば、電話番号列等の文字列にかかるＨＴＴＰリクエストに対するＨＴＴＰレスポンスとして、ＸＭＬ形式のデータファイル（以下、「ＸＭＬファイル」という。）を出力する。このＸＭＬファイルには、ＨＴＴＰリクエストに対応する位置情報が含まれる。ＣＰＵ１０は、位置情報サービスサーバ４１からＨＴＴＰレスポンスとして位置情報を含むＸＭＬファイルが送信された場合、送信されたＸＭＬファイルを受信する。
【００３１】
電話番号列の示す電話番号に誤りがある場合、位置情報サービスサーバ４１に電話番号列の示す電話番号に対応する情報が記憶されていない場合等、電話番号列に基づくＨＴＴＰリクエストに対応する有効な位置情報を含むＸＭＬファイルが、位置情報サービスサーバ４１からＣＰＵ１０に送信されないことがある。また、何らかの理由で、電話番号列に対応する位置情報が、ＡＰＩによって複数件検出されることがある。ＣＰＵ１０は、ＨＴＴＰリクエストに対応する有効な位置情報を含むＸＭＬファイルを受信したか否かを判断する（Ｓ７）。ＣＰＵ１０は、ＲＡＭ１２に記憶したＸＭＬファイルを参照し、有効な位置情報を含むＸＭＬファイルを受信した場合（Ｓ７：ＹＥＳ）、ＣＰＵ１０は、受信したＸＭＬファイルに複数件の位置情報が含まれるか否かを判断する（Ｓ８）。
【００３２】
ＸＭＬファイルに複数件の位置情報が含まれる場合（Ｓ８：ＹＥＳ）、ＣＰＵ１０は、複数件の位置情報を含むＸＭＬファイルを取得する（Ｓ９）。ＣＰＵ１０は、取得したＸＭＬファイルをＲＡＭ１２に記憶する。即ち、ＣＰＵ１０は、店舗名を識別するための識別情報として、複数件の位置情報を含むＸＭＬファイルを取得する。次いで、ＣＰＵ１０は、現在位置の位置情報を示す現在位置情報を取得する（Ｓ１０）。情報特定装置１の現在位置情報は、ウェブの標準化団体であるＷ３Ｃ（登録商標）が規定するＧｅｏｌｏｃａｔｉｏｎ  ＡＰＩ等を利用する等の周知の手法によって、無線ＬＡＮ、ＷｉＦｉ、携帯電話基地局、ＧＰＳ、ＩＰアドレス等を介して取得できる。ＣＰＵ１０は、ＸＭＬファイルを解析して、複数件の位置情報のうち、Ｓ１０の処理において特定した現在位置情報に対して最も近い位置を示す位置情報に対応するレシート１１０の発行元である店舗名を特定する（Ｓ１１）。その後、ＣＰＵ１０は、処理をＳ２０へ移行する。
【００３３】
一方、ＸＭＬファイルに含まれる位置情報が１件の場合（Ｓ８：ＮＯ）、ＣＰＵ１０は、１件の位置情報を含むＸＭＬファイルを取得する（Ｓ１２）。ＣＰＵ１０は、取得したＸＭＬファイルをＲＡＭ１２に記憶する。即ち、ＣＰＵ１０は、店舗名を識別するための識別情報として、１件の位置情報を含むＸＭＬファイルを取得する。ＣＰＵ１０は、ＸＭＬファイルを解析して、ＸＭＬファイルに含まれる位置情報に対応するレシート１１０の発行元である店舗名を特定する（Ｓ１３）。その後、ＣＰＵ１０は、処理をＳ２０へ移行する。
【００３４】
Ｓ６からＳ１３の処理における電話番号列を用いた店舗名特定について、具体的に説明する。図８は、ＣＰＵ１０が位置情報サービスサーバ４１に送信した電話番号列に基づくＨＴＴＰリクエストに対して、位置情報サービスサーバ４１から送信されるＨＴＴＰレスポンスであるＸＭＬファイルの内容を示すＸＭＬ文書７０の一例である。ＸＭＬ文書７０は、Ｓ６の処理においてＣＰＵ１０が位置情報サービスサーバ４１へ送信した電話番号列に対応する有効な位置情報を含むＸＭＬファイルの内容を示すものとする。ＸＭＬ文書７０は、電話番号列に対応してＡＰＩが検索した検索結果を示す。
【００３５】
ＸＭＬファイルが有効な位置情報を含む場合、ＸＭＬ文書７０には、「<name>」と「</name>」とに囲まれたｎａｍｅ要素７１、「<geometry>」と「</geometry>」とに囲まれたｇｅｏｍｅｔｒｙ要素７２が、それぞれ含まれる。ｎａｍｅ要素７１及びｇｅｏｍｅｔｒｙ要素７２は、電話番号列に対応する位置情報の検索結果の一部を示す要素である。ｎａｍｅ要素７１には、位置情報の検索結果に対応する店舗、サービス等の名称が主に含まれる。ｇｅｏｍｅｔｒｙ要素７２には、電話番号列に対応する位置情報の経度及び緯度を示す値が含まれる。図８に示すように、ｎａｍｅ要素７１は、電話番号列に対応してＡＰＩが検索した店舗名である「ＸＸＸ  ＳＴＯＲＥ」が含まれている。また、ｇｅｏｍｅｔｒｙ要素７２は、電話番号列に対応してＡＰＩが検索した位置情報の経度及び緯度を示す値が含まれている。ＣＰＵ１０は、位置情報を含むＸＭＬファイルを取得する（Ｓ１２）。ＣＰＵ１０は、取得したＸＭＬファイルをＲＡＭ１２に記憶する。ＣＰＵ１０は、取得したＸＭＬファイルを参照し、ｎａｍｅ要素７１及びｇｅｏｍｅｔｒｙ要素７２の記載に着目して、位置情報に対応するレシート１１０の発行元である店舗名を特定する（Ｓ１３）。
【００３６】
また、ＸＭＬ文書７０に、複数のｎａｍｅ要素７１及びｇｅｏｍｅｔｒｙ要素７２が含まれることがある。このような場合、ＣＰＵ１０は、ＸＭＬファイルに複数件の位置情報が含まれると判断する（Ｓ８：ＹＥＳ）。ＣＰＵ１０は、複数件の位置情報を含むＸＭＬファイルを取得する（Ｓ９）。ＣＰＵ１０は、取得したＸＭＬファイルをＲＡＭ１２に記憶する。ＣＰＵ１０は、取得したＸＭＬファイルを参照して、複数のｇｅｏｍｅｔｒｙ要素７２の示す経緯を示す値のうち、現在地から最も近い経緯を示すｇｅｏｍｅｔｒｙ要素７２を抽出する。ＣＰＵ１０は、抽出したｇｅｏｍｅｔｒｙ要素７２に対応するｎａｍｅ要素７１から、店舗名を特定する（Ｓ１１）。
【００３７】
本実施形態では、ＣＰＵ１０は、ｎａｍｅ要素７１及びｇｅｏｍｅｔｒｙ要素７２に着目して、レシート１１０の発行元である店舗名を特定しているが、ＸＭＬ文書７０には、これら以外にも電話番号列に対応する様々な要素情報が含まれている。ＣＰＵ１０は、ＸＭＬ文書７０に含まれる他の要素情報に基づいて、店舗名を特定してよい。
【００３８】
なお、ＸＭＬ文書７０のフォーマットは、位置情報サービス毎に異なる場合がある。また、位置情報サービスサーバ４１は、ＸＭＬ形式以外の形式で位置情報検索結果をＣＰＵ１０に送信する場合がある。ＣＰＵ１０は、位置情報サービスサーバ４１から送信される位置情報検索結果に応じて、検索結果内容を解析して、レシート１１０の店舗名を特定すればよい。位置情報サービスサーバ４１には様々なものが存在する。ＣＰＵ１０は、Ｓ６の処理において電話番号列を送信する位置情報サービスサーバ４１を、予め特定のものに統一しておくことで、店舗名特定のための位置情報検索結果の解析を画一的に行うことができる。
【００３９】
図５の説明に戻る。一方、ＣＰＵ１０は、第一テキストデータから電話番号列を抽出できなかった場合（Ｓ５：ＮＯ）、又は電話番号列に対応する有効な位置情報を含むＸＭＬファイルを受信できなかった場合（Ｓ７：ＮＯ）、処理をＳ１４に移行する。以下では、ＣＰＵ１０が、第一テキストデータから電話番号列が抽出できなかったか、電話番号列に対応する有効な位置情報を含むＸＭＬファイルを受信できなかったとして説明する。ＣＰＵ１０は、ＲＡＭ１２に記憶された第一テキストデータを参照して、第一テキストデータからＵＲＬを示す文字列を検索する（Ｓ１４）。図２に示すように、レシート１１０の宣伝欄１２２は、ＵＲＬ情報１２３を含む。一般に、ＵＲＬの表記には、「http://」、「https://」、「www.」等の、特有の文字列が用いられる。ＣＰＵ１０は、このようなＵＲＬの表記に用いられる特有の文字列を用いて、第一テキストデータからＵＲＬ情報１２３を検索する。ＣＰＵ１０は、ＵＲＬ情報１２３を検索できた場合には、第一テキストデータからＵＲＬ情報１２３の示すＵＲＬを示す文字列を抽出し、ＲＡＭ１２に記憶する。即ち、ＣＰＵ１０は、ウェブサービスを用いて店舗名を識別可能なＨＴＴＰレスポンスを取得するための検索キーとして、第一テキストデータからＵＲＬを示す文字列を抽出する。
【００４０】
レシート１１０によっては、ＵＲＬ情報１２３が印刷されていないので、ＣＰＵ１０は、第一テキストデータから、ＵＲＬ情報１２３を必ず抽出できるとは限らない。ＣＰＵ１０は、ＵＲＬ情報１２３を抽出できたか否かを判断する（Ｓ１５）。ＣＰＵ１０は、ＵＲＬ情報１２３を抽出できた場合（Ｓ１５：ＹＥＳ）、抽出したＵＲＬ情報１２３の示すＵＲＬへアクセスするため、ＵＲＬに対応するサービスサーバ４へＨＴＴＰリクエストを送信する（Ｓ１６）。
【００４１】
ＵＲＬ情報１２３の示すＵＲＬに対応するサービスサーバ４が有効に動作している場合、サービスサーバ４はＣＰＵ１０にＨＴＴＰレスポンスを送信する。ＣＰＵ１０は、ＵＲＬに対応するサービスサーバ４からＨＴＴＰレスポンスが送信された場合、送信されたＨＴＴＰレスポンスを受信する。
【００４２】
ＣＰＵ１０は、ＵＲＬに対応するサービスサーバ４からＨＴＴＰレスポンスを受信したか否かを判断する（Ｓ１７）。ＣＰＵ１０は、ＨＴＴＰレスポンスを受信した場合（Ｓ１７：ＹＥＳ）、ＨＴＴＰレスポンスのヘッダ情報を取得する（Ｓ１８）。ＣＰＵ１０は、取得したＨＴＴＰレスポンスのヘッダ情報をＲＡＭ１２に記憶する。即ち、ＣＰＵ１０は、店舗名を識別するための識別情報として、ＨＴＴＰレスポンスのヘッダ情報を取得する。ＣＰＵ１０は、取得したＨＴＴＰレスポンスのヘッダ情報を参照して、レシート１１０の発行元である店舗名を特定する（Ｓ１９）。その後、ＣＰＵ１０は、処理をＳ２０へ移行する。
【００４３】
Ｓ１９の処理におけるＨＴＴＰレスポンスのヘッダ情報に基づく店舗名特定について、具体的に説明する。図９は、ＣＰＵ１０がＵＲＬに対応するサービスサーバ４に送信したＨＴＴＰリクエストに対して、サービスサーバ４から送信されるＨＴＴＰレスポンスに対応するＨＴＭＬ形式のデータファイル（以下、「ＨＴＭＬファイル」という。）の内容を示すＨＴＭＬ文書８０の一例である。ＨＴＭＬ文書８０は、Ｓ１５の処理においてＣＰＵ１０がＵＲＬに対応するサービスサーバ４に送信したＨＴＴＰリクエストに対して、有効に動作するサービスサーバ４から送信されたＨＴＴＰレスポンスに対応するＨＴＭＬファイルの内容を示すものとする。なお、図９において、ＨＴＭＬ文書８０は、ＨＴＴＰレスポンスを構成するＨＴＭＬファイルのうち、主にウェブページ表示のために必要な情報を格納する部分であるレスポンスボディ（「<body>」と「</body>」とに囲まれた部分）については記載を省略している。
【００４４】
図９に示すように、ＨＴＴＰレスポンスのヘッダ情報は、ＨＴＭＬファイルのうち「<head>」と「</head>」とに囲まれた部分である。ヘッダ情報は、ＨＴＴＰレスポンスの内容、属性等を示すものである。ヘッダ情報には、原則としてｔｉｔｌｅ要素８１が含まれる。ヘッダ情報のｔｉｔｌｅ要素８１は、ウェブページのタイトルを表す要素であり、検索エンジンでの検索結果に示されたり、ブラウザのタイトルバーに表示されたりする文言に対応する。このため、店舗の紹介のためのウェブページを開設する者は、ｔｉｔｌｅ要素８１について、ｔｉｔｌｅ要素８１に店舗名を盛り込む等の工夫をしていると考えられる。このため、本実施形態では、ＣＰＵ１０は、ヘッダ情報のｔｉｔｌｅ要素８１に着目して、ｔｉｔｌｅ要素８１に記載の「ＸＸＸ  ＳＴＯＲＥ」をレシート１１０の発行元である店舗名と特定する。
【００４５】
なお、ウェブページには様々なものがあるので、レスポンスボディに含まれる画像等のデータを検索することで、レシート１１０の発行元である店舗名を特定できる場合も考えられる。このため、ＣＰＵ１０は、ＨＴＴＰレスポンスのＨＴＭＬファイルのうち、レスポンスボディを参照し、内容を解析することで、レシート１１０の発行元である店舗名を特定してもよい。
【００４６】
図５の説明に戻る。一方、ＣＰＵ１０は、第一テキストデータからＵＲＬ情報１２３を抽出できなかった場合（Ｓ１５：ＮＯ）、又はＨＴＴＰレスポンスを受信できなかった場合（Ｓ１７：ＮＯ）、処理をＳ２１（図６参照）に移行する。以下では、ＣＰＵ１０が、第一テキストデータからＵＲＬ情報１２３を抽出できなかったか、抽出したＵＲＬ情報１２３に対応するＵＲＬに対応するサービスサーバ４からＨＴＴＰレスポンスを受信できなかったとして説明する。
【００４７】
図６に示すように、ＣＰＵ１０は、第一テキストデータのうち、上部テキストデータから単語を示す文字列を複数抽出する（Ｓ２１）。前述したように、本実施形態において、第一テキストデータは、テキストデータに含まれる文字列のうち、レシート１１０の上端に近い側に印刷された情報に基づく文字列、及びレシート１１０の下端に近い側に印刷された情報に基づく文字列を含む。上部テキストデータは、第一テキストデータのうち、レシート１１０の上端に近い側に印刷された情報に基づく文字列からなるデータをいう。
【００４８】
図２に示すように、レシート１１０の上端に近い側には、宣伝欄１２１、住所欄１１２等、店舗についての直接的な内容が印刷される場合がある。一方、レシート１１０の下端に近い側には、宣伝欄１２２等、店舗についての間接的な内容が印刷される場合がある。このため、本実施形態では、上部テキストデータに着目して、上部テキストデータに含まれる文字列から単語を示す複数の文字列を切り出し、切り出した単語を示す複数の文字列を用いて、店舗名の特定を試みている。なお、上部テキストデータから単語を示す文字列を切り出す手法については、公知の形態素解析ツールを用いて文字列を意味のある単語毎に区切る、また、正規表現を用いて文字列を漢字、ひらがな、カタカナ、英数字の境目で区切る等、種々の手法を採用できる。即ち、ＣＰＵ１０は、検索サービスを用いて店舗名を識別可能な検索結果を取得するための検索キーとして、上部テキストデータから複数の単語を抽出する。
【００４９】
なお、レシート１１０の印刷フォーマットは様々であり、上部テキストデータ以外のテキストデータから、レシート１１０発行店舗名を特定するための有効な単語が得られやすい場合もある。このため、単語を切り出す対象とするテキストデータは上部テキストデータに限られない。情報特定装置１の開発者は、事前の実験等に基づいて、単語を切り出す対象とするテキストデータの範囲を定めてよい。
【００５０】
図２の示すレシート１１０の場合、ＣＰＵ１０は、上部テキストデータから、例えば宣伝欄１２２から「洋菓子」「ＸＸＸ  ＳＴＯＲＥ」、住所欄１１２に印刷されている店舗の住所等を単語として抽出できる。ＣＰＵ１０は、Ｓ２１の処理において抽出したこれらの単語のそれぞれを、検索サービスサーバ４２へ送信する（Ｓ２２）。ＣＰＵ１０は、それぞれの単語に対応する検索サービスによる検索結果を受信し、単語毎に取得する（Ｓ２３）。ＣＰＵ１０は、単語毎に取得した検索結果をＲＡＭ１２に記憶する。即ち、ＣＰＵ１０は、店舗名を識別するための識別情報として、それぞれの単語に対応する検索サービスによる検索結果を取得する。ＣＰＵ１０は、Ｓ２１の処理において抽出したすべての単語を検索サービスサーバ４２へ送信したか否かを判断する（Ｓ２４）。ＣＰＵ１０は、抽出したすべての単語を検索サービスサーバ４２へ送信していない場合（Ｓ２４：ＮＯ）、Ｓ２２及びＳ２３の処理を繰り返す。
【００５１】
ＣＰＵ１０は、抽出したすべての単語を検索サービスサーバ４２へ送信した場合（Ｓ２４：ＹＥＳ）、単語毎の検索結果を参照して、検索ヒット数が最大である検索結果に対応する単語を、レシート１１０の発行元である店舗名と特定する（Ｓ２５）。本実施形態において、上部テキストデータから「ＸＸＸ  ＳＴＯＲＥ」の単語が抽出されており、単語「ＸＸＸ  ＳＴＯＲＥ」に対応する検索ヒット数が、抽出された他の単語よりも高い場合、ＣＰＵ１０は、「ＸＸＸ  ＳＴＯＲＥ」を店舗名と特定する。その後、ＣＰＵ１０は、処理をＳ１９（図５参照）へ移行する。
【００５２】
図５の説明に戻る。ＣＰＵ１０は、レシート解析処理を実行する（Ｓ１９）。レシート解析処理は、Ｓ１１、Ｓ１２、Ｓ１８、Ｓ２５のいずれかの処理において特定された店舗名に対応するテンプレートに基づいて、テキストデータを解析して、解析結果をレシート解析結果ＤＢ６０に登録する処理である。
【００５３】
図７を参照して、レシート解析処理（Ｓ２０、図５参照）について説明する。図７に示すように、レシート解析処理が開始されると、ＣＰＵ１０は、ＨＤＤ１３に記憶されているテンプレートＤＢ５０を参照して、Ｓ１１、Ｓ１２、Ｓ１８、Ｓ２５（図５参照）のいずれかの処理で特定された店舗名に対応するテンプレートを取得する（Ｓ４１）。ＣＰＵ１０は、取得したテンプレートをＲＡＭ１２に記憶する。本実施形態では、Ｓ１１、Ｓ１２、Ｓ１８、Ｓ２５（図５参照）のいずれかの処理で店舗名「ＸＸＸ  ＳＴＯＲＥ」が特定されているとする。この場合、ＣＰＵ１０は、テンプレートＤＢ５０から、店舗名「ＸＸＸ  ＳＴＯＲＥ」に対応付けられているＴ−ＩＤ「Ｔ０００１」のテンプレートを取得する。
【００５４】
ＣＰＵ１０は、テキストデータに含まれる文字列のうち、テンプレートの項目情報に対応する文字、数字等の値である項目値のそれぞれを、取得したＴ−ＩＤ「Ｔ０００１」のテンプレートに基づいて取得する（Ｓ４２）。ＣＰＵ１０は、Ｓ４２で取得した項目値のそれぞれを対応付けて、ＨＤＤ１３のレシート解析結果ＤＢ６０に格納する（Ｓ４３）。この場合、ＣＰＵ１０は、Ｒ−ＩＤ「Ｒ０００１」に対応したデータ領域をレシート解析結果ＤＢ６０に作成する。
【００５５】
ＣＰＵ１０は、ＨＤＤ１３のレシート解析結果ＤＢ６０に格納されたＲ−ＩＤ「Ｒ０００１」に対応した項目値を表示するための読取完了画面１３０（図１０参照）を、表示部１６に表示する（Ｓ４４）。図１０に示すように、読取完了画面１３０は、結果表示欄１３１、ＯＫボタン１３３、及び修正ボタン１３４とを含む。ＣＰＵ１０は、レシート１１０から取得されてレシート解析結果ＤＢ６０に格納された項目値のそれぞれを、結果表示欄１３１に表示する。ＣＰＵ１０は、操作部１７を介した修正ボタン１３４の操作によって、レシート解析結果ＤＢ６０のＲ−ＩＤ「Ｒ０００１」に対応したデータ領域について、項目値の修正等の編集操作を受け付ける。ＣＰＵ１０は、操作部１７を介したＯＫボタン１３３の操作によって、レシート解析結果ＤＢ６０への項目値の保存を終了する。ＣＰＵ１０は、処理を情報特定処理（図５参照）へ戻す。その後、ＣＰＵ１０は、情報特定処理を終了する。
【００５６】
以上説明したように、情報特定装置１のＣＰＵ１０は、スキャナ２に対して画像読取動作を行う指示を送信し、レシート１１０が撮像されたレシート画像の画像データをスキャナ２から受信する（Ｓ１）。ＣＰＵ１０は、画像データからＯＣＲ処理によってテキストデータを取得すると（Ｓ２）、レシート１１０の発行元の店舗名を識別可能な位置情報を取得するための検索キーとして、第一テキストデータから電話番号列を抽出する（Ｓ４）。また、ＣＰＵ１０は、ウェブサービスを用いて店舗名を識別可能なＨＴＴＰレスポンスを取得するための検索キーとして、第一テキストデータからＵＲＬを示す文字列を抽出する（Ｓ１４）。また、ＣＰＵ１０は、検索サービスを用いて店舗名を識別可能な検索結果を取得するための検索キーとして、上部テキストデータから複数の単語を抽出する（Ｓ２１）。ＣＰＵ１０は、それぞれの検索キーに基づいて、レシート１１０の発行元である店舗名を識別可能な識別情報を取得し（Ｓ９、Ｓ１２、Ｓ１８、Ｓ２３）、識別情報から店舗名を特定する（Ｓ１１、Ｓ１３、Ｓ１９、Ｓ２５）。従って、情報特定装置１は、帳票の印刷内容に対応する画像データから、レシート１１０の発行元の店舗名を自動的に特定できる。
【００５７】
レシート１１０には、レシート１１０の発行元の電話番号が印刷されていることがある。電話番号は、特定の配列を有する数字列を含む文字列として印刷されることがある。ＣＰＵ１０は、レシート１１０の画像データに対応するテキストデータから、特定の配列を有する数字列を含む文字列を検索することで、電話番号を示す文字列を検索キーとして抽出できる（Ｓ４）。従って、情報特定装置１は、電話番号を示す文字列を検索キーとして位置情報サービスを利用することで、レシート１１０の発行元を特定できる。
【００５８】
レシート１１０には、レシート１１０の発行元を示すＵＲＬが印刷されていることがある。ＵＲＬは、例えば、「http://」、「www」等、特定の配列を有する文字列を含んだ文字列として印刷されることがある。ＣＰＵ１０は、レシート１１０の画像データに対応するテキストデータから、ＵＲＬを示す特定の配列の文字列を検索することで、ＵＲＬを示す文字列を検索キーとして抽出できる（Ｓ１４）。ＣＰＵ１０は、抽出したＵＲＬへＨＴＴＰリクエストを送信し（Ｓ１６）、ＨＴＴＰレスポンスを受信する（Ｓ１７）。従って、情報特定装置１は、ＨＴＴＰレスポンスのヘッダ情報を解析して、レシート１１０の発行元を特定できる。
【００５９】
レシート１１０には、レシート１１０の発行元を示す種々の文字（例えば、店舗名）が印刷されていることがある。特に、レシート１１０の発行元店舗名に関連する文字列は、レシート１１０の上端に近い側に印刷されることが比較的多い。ＣＰＵ１０は、第一テキストデータのうち、レシート１１０の上端に近い側に印刷された情報に基づく文字列からなる上部テキストデータから、単語を示す文字列を検索キーとして複数抽出する（Ｓ２１）。ＣＰＵ１０は、抽出した単語のそれぞれを、検索サービスサーバ４２へ送信し（Ｓ２２）、それぞれの単語に対応する検索サービスによる検索結果を受信して、検索結果を単語毎に取得する（Ｓ２３）。従って、情報特定装置１は、単語毎の検索結果を参照して、検索ヒット数が最大である検索結果に対応する単語を、レシート１１０の発行元である店舗名と特定できる。
【００６０】
情報特定装置１は、インターネット８又はＬＡＮ９を介して取得可能な様々な情報を、レシート１１０の発行元の店舗名を識別可能なするための識別情報として用いることができる。
【００６１】
情報特定装置１のＣＰＵ１０は、レシート１１０の発行元を特定するための識別情報として、検索キーとして抽出した電話番号列に対応する位置情報を含むＸＭＬファイルを、位置情報サービスサーバ４１から受信して取得できる（Ｓ９、Ｓ１２）。
【００６２】
レシート１１０に印刷される電話番号列の配列は、定型的である場合がある。また、ＵＲＬは、電話番号列よりもレシート１１０に印刷されることが少ない可能性がある。ＣＰＵ１０は、ＵＲＬを示す文字列に優先して電話番号列を検索キーとして抽出する（Ｓ５：ＮＯ、又はＳ７：ＮＯ、Ｓ１３）。従って、情報特定装置１は、レシート１１０の発行元特定の精度を向上できる。
【００６３】
情報特定装置１のＣＰＵ１０は、レシート１１０の発行元を特定するための識別情報として、検索キーとして抽出した単語を示す複数の文字列のそれぞれに対応する検索結果を、検索サービスサーバ４２から受信して取得できる（Ｓ２３）。
【００６４】
ＣＰＵ１０は、検索キーとして抽出したＵＲＬを示す文字列に対応するサービスサーバ４へＨＴＴＰリクエストを送信することで（Ｓ１６）、ＨＴＴＰレスポンスをサービスサーバ４から受信する（Ｓ１７）。従って、情報特定装置１は、受信したＨＴＴＰレスポンスのヘッダ情報をレシート１１０の発行元を特定するための識別情報として取得できる。
【００６５】
検索キーとして第一テキストデータから抽出される単語を示す複数の文字列には、レシート１１０の発行元の特定に寄与しない文字列も含まれる可能性がある。一方、レシート１１０に印刷されたＵＲＬを示す文字列は、レシート１１０の発行元についての情報を示す可能性がある。ＣＰＵ１０は、単語を示す複数の文字列に優先してＵＲＬを示す文字列を検索キーとして抽出する（Ｓ１５：ＮＯ、又はＳ１７：ＮＯ、Ｓ２１）。従って、情報特定装置１は、レシート１１０の発行元特定の精度を向上できる。
【００６６】
サービスサーバ４は、レシート１１０の発行元についての情報を提供するウェブページを開設していることがある。単語を示す文字列がレシート１１０の発行元を示す店舗名等に対応する文字列である場合、単語を示す文字列が発行元を示さない場合よりも、検索結果情報の示す検索ヒット数が高くなると考えられる。ＣＰＵ１０は、複数の検索結果情報のうち検索ヒット数が最大の検索結果情報から発行元を特定する（Ｓ２５）。従って、情報特定装置１は、レシート１１０の発行元特定の精度を向上できる。
【００６７】
位置情報サービスサーバ４１から送信されるＸＭＬファイルには、ＣＰＵ１０が送信した電話番号列に対応する位置情報が含まれる。従って、情報特定装置１は、位置情報サービスを利用して、レシート１１０の発行元特定の精度を向上できる。
【００６８】
レシート１１０の発行元を特定しようとするユーザは、現在位置から最も近い位置関係を示す位置情報に対応する店舗名を有する発行元からレシート１１０の発行を受けた可能性がある。このため、ＣＰＵ１０は、情報特定装置１の現在位置情報を取得し（Ｓ１０）、取得した現在位置情報に対して最も近い位置関係を示す位置情報から発行元を特定する（Ｓ１１）。従って、情報特定装置１は、レシート１１０の発行元特定の精度を向上できる。
【００６９】
ＨＴＴＰレスポンスのヘッダ情報は、例えば、ウェブページのタイトルを指定するｔｉｔｌｅ要素８１等の情報を含む。情報特定装置１は、ＨＴＴＰレスポンスのヘッダ情報からレシート１１０の発行元を特定することで、発行元特定の精度を向上できる。
【００７０】
ＣＰＵ１０は、Ｓ１１、Ｓ１３、Ｓ１９、Ｓ２５の各ステップにおいて特定した店舗名に対応するテンプレートをテンプレートＤＢ５０から取得する（Ｓ４１）。ＣＰＵ１０は、取得したテンプレートに基づいて、テンプレートの項目情報に対応する項目値を取得する（Ｓ４２）。ＣＰＵ１０は、取得した項目値をレシート解析結果ＤＢに格納する（Ｓ４３）。
従って、情報特定装置１は、レシート１１０に印刷されている項目情報に対応する項目値を、特定した店舗名に対応付けて自動的に収集できる。
【００７１】
情報特定装置１のＣＰＵ１０は、上記の実施形態の情報特定方法に倣って、スキャナ２から受信したレシート１１０の印刷内容に対応する画像データからレシート１１０の発行元を特定することができる。
【００７２】
上記実施形態において、情報特定装置１が、本発明の「情報特定装置」に相当する。スキャナ２が、本発明の「画像読取装置」に相当する。テンプレートＤＢ５０及びレシート解析結果ＤＢ６０を記憶するＨＤＤ１３が、本発明の「記憶手段」に相当する。インターネット８及びＬＡＮ９が、本発明の「ネットワーク」に相当する。サービスサーバ４が、本発明の「データベース」に相当し、位置情報サービスサーバ４１が、本発明の「位置情報サービスサーバ」に相当し、検索サービスサーバ４２が、本発明の「検索サービスサーバ」に相当する。
【００７３】
Ｓ１の処理が、本発明の「画像データ取得ステップ」に相当する。Ｓ２の処理が、本発明の「テキストデータ取得ステップ」に相当する。Ｓ４、Ｓ１４、Ｓ２１の処理が、本発明の「抽出ステップ」に相当し、Ｓ４の処理が、本発明の「電話番号検索ステップ」に相当し、Ｓ１４の処理が、本発明の「ＵＲＬ検索ステップ」に相当し、Ｓ２１の処理が、本発明の「単語抽出ステップ」に相当する。Ｓ６〜Ｓ１３、Ｓ１６〜Ｓ１９、Ｓ２２及びＳ２３の処理が、本発明の「識別情報取得ステップ」に相当する。Ｓ６、Ｓ１６、Ｓ２２の処理が、本発明の「送信ステップ」に相当し、Ｓ６の処理が、本発明の「電話番号送信ステップ」に相当し、Ｓ１６の処理が、本発明の「ＨＴＴＰリクエスト送信ステップ」に相当し、Ｓ２２の処理が、本発明の「単語送信ステップ」に相当する。Ｓ７、Ｓ８、Ｓ１７、Ｓ２３の処理が、本発明の「受信ステップ」に相当し、Ｓ７、Ｓ８の処理が、本発明の「位置情報受信ステップ」に相当し、Ｓ１７の処理が、本発明の「ＨＴＴＰレスポンス受信ステップ」に相当し、Ｓ２３の処理が、本発明の「検索結果受信ステップ」に相当する。Ｓ１１、Ｓ１３、Ｓ１９、Ｓ２５の処理が、本発明の「特定ステップ」に相当する。Ｓ１０の処理が、本発明の「現在地取得ステップ」に相当する。Ｓ４１の処理が、本発明の「テンプレート取得ステップ」に相当する。Ｓ４２の処理が、本発明の「項目値取得ステップ」に相当する。Ｓ４３の処理が、本発明の「項目値記憶ステップ」に相当する。
【００７４】
なお、本発明は上記の実施形態に限定されるものではなく、種々の変更が可能である。本発明の情報特定装置１は、上記実施形態のパーソナルコンピュータ等の汎用型の装置に限られない。例えば、情報特定装置１は、携帯端末であってもよい。携帯端末は、携帯端末に内蔵されたカメラ等の撮像装置でレシート１１０を撮像して画像データを取得し（Ｓ１）、Ｓ２以降の処理を実行してもよい。また、帳票の印刷内容に対応する画像データを取得する手法は、スキャナ２による帳票の読み取りを行うことに限られず、帳票の印刷内容を撮像可能なカメラ等の撮像装置を用いて帳票画像データを取得してもよい。
【００７５】
また、管理サーバ３が情報特定装置１として機能してもよい。この場合、管理サーバ３のＣＰＵ３０は、上記実施形態においてパーソナルコンピュータである情報特定装置１、又はその他の装置からインターネット８及びＬＡＮ９を介して送信されるレシート１１０を撮像した画像データを受信することで取得してもよい（Ｓ１）。ＣＰＵ３０は、画像データに対して公知の文字認識処理を実行することで、画像データからテキストデータを取得して（Ｓ２）、Ｓ３以降の処理を実行してもよい。
【００７６】
上記実施形態では、ＣＰＵ１０は、店舗名を識別可能な位置情報、ＨＴＴＰレスポンス、検索エンジンの検索結果を取得するための検索キーを、第一テキストデータから抽出している（Ｓ４、Ｓ１３、Ｓ２１）。抽出された検索キーは、位置情報サービスサーバ４１、検索サービスサーバ４２等の外部のサービスサーバ４に送信されるが、本発明の構成はこれに限られない。例えば、情報特定装置１は、予めＨＤＤ１３に記憶されているデータベースから、検索キーに対応する店舗名を識別可能な識別情報を取得してもよい。この場合、ＨＤＤ１３に記憶されるデータベースとして、レシート１１０の発行店舗の電話番号リスト、レシート１１０の発行店舗のＵＲＬリスト、レシート１１０の発行店舗が必ずレシート１１０に印刷している特定の文字列を発行店舗毎に対応付けたリスト等が該当する。これらのデータベースは、位置情報サービスサーバ４１、検索サービスサーバ４２等から提供される情報と同等の情報を記憶するものでもよいし、レシート１１０の発行元を特定するためにカスタマイズされた情報を記憶するものでもよい。また、このようなデータベースが管理サーバ３のＨＤＤ３３等に記憶されていてもよい。ＣＰＵ１０は、検索キーを管理サーバ３のＣＰＵ３０に送信することで、インターネット８又はＬＡＮ９を介して識別情報を取得してもよい。
【００７７】
テンプレートＤＢ５０及びレシート解析結果ＤＢ６０のいずれか一方又は両方が、管理サーバ３のＨＤＤ３３に記憶されていてもよい。
【００７８】
上記実施形態では、Ｓ２１の処理において、ＣＰＵ１０は、取得した第一テキストデータのうち上部テキストデータから単語を示す文字列を抽出しているが、これに限られず、第一テキストデータの全体から単語を示す文字列を抽出してもよい。また、Ｓ４、Ｓ１４、Ｓ２１のそれぞれの処理において、ＣＰＵ１０は、検索キーの抽出を第一テキストデータから行っているが、これに限られず、Ｓ２の処理で取得したテキストデータの全体から検索キーを抽出してもよい。
【００７９】
上記実施形態では、ＣＰＵ１０は、Ｓ２５の処理において、検索ヒット数が最大である検索結果に対応する単語を、レシート１１０の発行元である店舗名と特定している。この処理において、ＣＰＵ１０は、例えば、検索結果のうち最上位の検索結果を示すウェブページのＨＴＭＬファイルのヘッダ情報等に基づいて、店舗名を特定してもよい。
【００８０】
上記実施形態では、検索キーとして電話番号列を用いる店舗名特定を、検索キーとしてＵＲＬを示す文字列を用いる店舗名特定よりも優先して行っている。また、検索キーとしてＵＲＬを示す文字列を用いる店舗名特定を、検索キーとしてＵＲＬを示す文字列を用いる店舗名特定よりも優先して行っている。これらの優先順位は、レシート１１０の印刷内容の傾向等に応じて適宜変更できる。また、情報特定装置１は、これらそれぞれの特定方法の全てを実行する必要はなく、特定方法を適宜取捨選択してよい。
【００８１】
ＣＰＵ１０は、ＨＤＤ１３に記憶されたプログラムをＲＡＭ１２上で展開することで、情報特定処理を実行するプロセッサとして機能する。ＣＰＵ１０として、汎用的なプロセッサが用いられてもよい。マイクロコンピュータ、ＡＳＩＣ、ＦＰＧＡ等が、ＣＰＵ１０の代わりにプロセッサとして用いられてもよい。管理サーバ３が情報特定装置１として機能する場合には、ＣＰＵ３０は、ＨＤＤ３３に記憶されたプログラムをＲＡＭ３２上で展開することで、情報特定処理を実行するプロセッサとして機能する。上記と同様に、マイクロコンピュータ、ＡＳＩＣ、ＦＰＧＡ等が、ＣＰＵ３０の代わりにプロセッサとして用いられてもよい。
【００８２】
情報特定処理は、複数の電子機器（つまり、複数のＣＰＵ）によって分散処理されてもよい。例えば、情報特定処理の一部が、インターネット８に接続した管理サーバ３等の他のサーバで実行されてもよい。プログラムは、例えば、インターネット８に接続した管理サーバ３等の他のサーバからダウンロードされて、情報特定装置１のＨＤＤ１３に記憶されてもよい。
【符号の説明】
【００８３】
１    情報特定装置
２    スキャナ
３    管理サーバ
４    サービスサーバ
８    インターネット
９    ＬＡＮ
１０    ＣＰＵ
１３    ＨＤＤ
４１    位置情報サービスサーバ
４２    検索サービスサーバ
５０    テンプレートＤＢ
６０    レシート解析結果ＤＢ
【図１】
2016189174.tif 000003
【図２】
2016189174.tif 000004
【図３】
2016189174.tif 000005
【図４】
2016189174.tif 000006
【図５】
2016189174.tif 000007
【図６】
2016189174.tif 000008
【図７】
2016189174.tif 000009
【図８】
2016189174.tif 000010
【図９】
2016189174.tif 000011
【図１０】
2016189174.tif 000012