(57)【要約】【課題】電子帳票システムのデータ構造を効率良く設定できるようにする。【解決手段】電子帳票システム１は、入力用端末２から帳票データ２６が入力される。文字抽出部２１が帳票データ２６から文字列を抽出し、文字列判定部２２が固定文字列か可変文字列か判定する。行範囲決定部２３は、１つの行に含まれる文字列が全て固定文字列である行の間を帳票項目の行範囲に設定する。列範囲決定部２４は、行範囲内の可変文字列の左右の範囲を調べて帳票項目の行範囲に設定する。帳票項目の行範囲及び列範囲は、帳票データ２６の検索可能な範囲に設定される。【選択図】図１
2014010795.tif 000002
【特許請求の範囲】
【請求項１】
複数の帳票のデータを取り込む入力装置と、
前記取り込まれた帳票のデータに含まれる文字列を抽出し、複数の前記帳票で共通して使用される文字の集合である固定文字列と、前記固定文字列以外の文字列を含む可変文字列とを区別する文字列判定部と、
前記固定文字列のみを有する行を区切り行とし、前記区切り行同士の間、又は前記区切り行と帳票の終端までの間を、前記帳票の項目の検索可能な行範囲として設定する行範囲決定部と、
を含むことを特徴とする電子帳票システム。
【請求項２】
前記行範囲内に配置される複数の前記可変文字列の両端を比較し、前記行範囲内に配置される全ての前記可変文字列を包含する範囲を、前記前記取り込まれた帳票の項目の検索可能な列範囲として設定する列範囲決定部を含むことを特徴とする請求項１に記載の電子帳票システム。
【請求項３】
複数の前記取り込まれた帳票のデータに含まれる文字列を抽出し、複数の前記取り込まれた帳票で共通して使用される文字の集合である固定文字列と、前記取り込まれた帳票によって変化する文字列を含む可変文字列とを判別し、
前記固定文字列のみを有する行を区切り行とし、前記区切り行同士の間、又は前記区切り行と前記取り込まれた帳票の終端までの間を帳票の項目の行範囲として抽出し、
前記行範囲を検索可能な範囲として設定することを特徴とする電子帳票の管理方法。
【請求項４】
前記行範囲内に配置される複数の前記可変文字列の両端を比較して前記行範囲内に配置される全ての前記可変文字列を包含する列範囲を抽出し、
前記列範囲を検索可能な範囲として設定することを特徴とする請求項３に記載の電子帳票の管理方法。
【請求項５】
複数枚の帳票のデータに含まれる文字列を抽出し、複数の前記帳票で共通して使用される文字の集合である固定文字列と、前記帳票によって変化する文字列を含む可変文字列とを判別するステップと、
前記固定文字列のみを有する行を区切り行とし、前記区切り行同士の間、又は前記区切り行と前記帳票の終端までの間を前記帳票の項目の行範囲として抽出するステップと、
前記行範囲を検索可能な範囲として設定するステップと、
をコンピュータに実行させることを特徴とする電子帳票の管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子帳票システム及び電子帳票の管理方法並びに電子帳票の管理プログラムに関する。
【背景技術】
【０００２】
商取引の記録などに用いられる帳票を電子データとして保存し、必要に応じて検索する電子帳票システムが開発されている。例えば、帳票が売上伝票である場合には、会社名や、帳票を作成した日付、商品名、数量、金額などの帳票項目毎にデータが入力され、システムのユーザに閲覧可能に保存される。このために、電子帳票システムには、ユーザがデータの入力や検索ができるように予め帳票項目の種類や、検索可能なデータの範囲をデータ構造として登録しておく必要がある。
【０００３】
データ構造の登録処理では、同じ種類の帳票を多数用意し、システム管理者が全ての帳票の帳票項目の種類と、検索可能なデータの範囲を確認する。さらに、システム管理者は、電子帳票システム上で、帳票項目を特定する情報と、その帳票項目に分類されるデータが入力される範囲とを手動で指定することによってデータ構造を登録する。
【０００４】
例えば、最初に、紙媒体で作成した帳票をＯＣＲ（Optical Character Recognition）
技術を用いて電子データ化する。この後、システム管理者が、領域情報と文字データを対比させた帳票イメージをコンピュータの画面上に表示させる。続いて、システム管理者は、帳票項目を特定すると共に、その帳票項目に対応するデータの領域をポインティングデバイスを使用することによって帳票イメージ内で指定する。指定した範囲をコンピュータに登録すると、指定された範囲のデータの書式情報がコンピュータによって自動的に抽出される。これによって、帳票項目と検索可能なデータの範囲が対応付けられたデータ構造が作成される。
【０００５】
このようにして帳票の電子データを登録し、データ構造を作成した後は、ユーザによる検索が可能になる。例えば、ユーザが自身の端末から閲覧した帳票を特定するデータ、例えば、帳票の作成日を入力すると、電子帳票システムが日付で帳票の電子データを検索し、該当する範囲のデータを抽出してユーザの端末の画面に表示させる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００５−４４２５６
【特許文献２】特開２０１０−２６７５０
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上記した電子帳票システムでは、データ構造の作成を手動で行う必要があった。このために、１枚の帳票に帳票項目が多数ある場合や、帳票の種類が多数ある場合には、帳票項目を定義する作業が膨大になってしまう。さらに、帳票のフォーマットを変更したり、新しい帳票の使用を開始したりする場合には、データ構造を新たに作成する必要があった。
１つの側面では、本発明は、電子帳票システムのデータ構造を効率良く設定できるようにすることを目的とする。
【課題を解決するための手段】
【０００８】
一態様の電子帳票システムは、帳票のデータを取り込む入力装置と、前記取り込まれた帳票のデータに含まれる文字列を抽出し、複数の前記帳票で共通して使用される文字の集合である固定文字列と、前記固定文字列以外の文字列を含む可変文字列とを区別する文字列判定部と、前記固定文字列のみを有する行を区切り行とし、前記区切り行同士の間、又は前記区切り行と帳票の終端までの間を、帳票の項目の検索可能な行範囲として設定する行範囲決定部と、を有する。
【０００９】
また、一態様の電子帳票の管理方法は、複数の帳票のデータに含まれる文字列を抽出し、複数の前記帳票で共通して使用される文字の集合である固定文字列と、前記帳票によって変化する文字列を含む可変文字列とを判別し、前記固定文字列のみを有する行を区切り行とし、前記区切り行同士の間、又は前記区切り行と前記帳票の終端までの間を帳票の項目の行範囲として抽出し、前記行範囲を検索可能な範囲として設定する。
【００１０】
さらに、一態様の電子帳票の管理プログラムは、複数枚の帳票のデータに含まれる文字列を抽出し、複数の前記帳票で共通して使用される文字の集合である固定文字列と、前記帳票によって変化する文字列を含む可変文字列とを判別するステップと、前記固定文字列のみを有する行を区切り行とし、前記区切り行同士の間、又は前記区切り行と前記帳票の終端までの間を前記帳票の項目の行範囲として抽出するステップと、前記行範囲を検索可能な範囲として設定するステップと、をコンピュータに実行させる。
【発明の効果】
【００１１】
固定文字列のみ行の特定することによって帳票の中で検索可能な行範囲を自動処理で設定することが可能になるので、帳票に帳票項目が多数ある場合や、帳票の種類が多数ある場合でも容易に帳票を検索可能に管理できる。また、帳票のフォーマットの変更や新規作成が容易になる。
【図面の簡単な説明】
【００１２】
【図１】図１は、本発明の実施の形態に係る電子帳票システムの概略構成の一例を示す図である。
【図２】図２は、本発明の実施の形態に係る電子帳票システムで使用される帳票の一例を示す図である。
【図３】図３は、本発明の実施の形態に係る電子帳票システムで使用される帳票データの一例を示す図である。
【図４】図４は、本発明の実施の形態に係る電子帳票システムで使用される帳票項目のデータ構造の一例を示す図である。
【図５】図５は、本発明の実施の形態に係る電子帳票システムで使用される帳票項目のデータ構造の作成処理の一例を示すフローチャートである。
【図６】図６は、本発明の実施の形態に係る電子帳票システムにおける文字列の抽出処理の一例を説明するための図である。
【図７】図７は、本発明の実施の形態に係る電子帳票システムにおける文字列の判定処理の一例を示すフローチャートである。
【図８】図８は、本発明の実施の形態に係る電子帳票システムにおける文字列の判定処理の具体例を説明するための図である。
【図９】図９は、本発明の実施の形態に係る電子帳票システムにおける行範囲の決定処理の一例を示すフローチャートである。
【図１０】図１０は、本発明の実施の形態に係る電子帳票システムにおける行範囲の決定処理の具体例を説明するための図である。
【図１１】図１１は、本発明の実施の形態に係る電子帳票システムにおける列範囲の決定処理の一例を示すフローチャートである。
【図１２】図１２は、本発明の実施の形態に係る電子帳票システムにおける列範囲の決定処理の具体例を説明するための図である。
【図１３】図１３は、本発明の実施の形態に係る電子帳票システムにおける帳票項目のデータ構造の作成結果の一例を示す図である。
【図１４】図１４は、本発明の実施の形態に係る電子帳票システムにおける検索処理のフローチャートである。
【発明を実施するための形態】
【００１３】
発明の目的及び利点は、請求の範囲に具体的に記載された構成要素及び組み合わせによって実現され達成される。
前述の一般的な説明及び以下の詳細な説明は、典型例及び説明のためのものであって、本発明を限定するためのものではない。
【００１４】
図１に電子帳票システムの概略構成の一例を示す。電子帳票システム１は、帳票を作成する入力用端末２と、入力用端末２で作成した帳票のデータを管理する帳票管理サーバ３と、帳票管理サーバ３のデータを閲覧可能な閲覧用端末４とを含んで構成されている。
【００１５】
入力用端末２は、例えば、店舗や会社の管理部門、営業所などに少なくとも１つ設置されており、商品名や金額などを入力可能に構成された帳票データ作成装置である。入力用端末２は、例えば、図示を省略する入力フォーマットにユーザが商品名や金額などを入力するように構成しても良いし、紙で作成した帳票をＯＣＲ機能によって電子データ化する装置でも良い。
【００１６】
閲覧用端末４は、例えば、店舗や会社の管理部門、営業所などに少なくとも１つ設置されており、帳票管理サーバ３に登録されている帳票を閲覧したり、商品名や金額などで特定の帳票を検索したりする帳票データ閲覧装置である。ここで、入力用端末２と閲覧用端末４は、同じ店舗や管理部門、営業所に設置しても良い。さらに、入力用端末２と閲覧用端末４は、１つのコンピュータにそれぞれのプログラムを実行させることで実現させても良い。
【００１７】
帳票管理サーバ３は、入力用端末２や閲覧用端末４との間でデータの授受が可能に構成され、例えば電子帳票の管理プログラムを実行させることによって各種の処理が可能になるコンピュータである。具体的には、帳票管理サーバ３は、ＣＰＵ（Central Processing
Unit）１１と、メモリ１２と、ＨＤＤ（Hard disk drive）などの記録装置１３と、表示制御部１４及び表示装置１５と、出力装置１６と、入力装置１７と、外部記憶装置１８と、通信制御部１９とがバス接続された構成を有する。
【００１８】
ＣＰＵ１１は、メモリ１２に記録装置１３からプログラムやデータを読み出して実行することによって、各種の機能を実現する。この実施の形態において、ＣＰＵ１１は、帳票データを管理するデータ管理部２０と、帳票のデータから文字を抽出する文字抽出部２１と、固定文字列と可変文字列の判定をする文字列判定部２２と、帳票中で検索可能な行範囲を決定する行範囲決定部２３と、帳票中で検索可能な列範囲を決定する列範囲決定部２４と、所定条件に合致する帳票を検索する検索制御部２５とに機能分割される。
【００１９】
メモリ１２は、ＲＯＭ（Read Only Memory）やＲＡＭ（Random Access Memory）などを有し、データやアプリケーション・プログラムが一時的に格納される。
記録装置１３は、帳票管理サーバ３のオペレーティング・システム（ＯＳ）やアプリケーション・プログラムが保存される。さらに、帳票を電子データ化した帳票データ２６や、帳票の項目と検索可能なデータの範囲、データの書式などの情報から形成されるデータ構造２７も記録装置１３に格納される。ここで、アプリケーション・プログラムには、この実施の形態における帳票の管理処理を実行させる電子帳票の管理プログラムが含まれる。
【００２０】
表示制御部１４は、ディスプレイなどの表示装置１５の表示処理を制御する。出力装置１６としては、例えばプリンタなどがある。入力装置１７は、キーボードやマウスなど、システム管理者がデータを入力するために使用する機器である。入力装置１７は、タッチパネル式のディスプレイでも良い。外部記憶装置１８は、リムーバブル・ディスクなどの外部記録媒体１０にデータを読み書きするための装置である。外部記録媒体１０には、例えば、電子帳票の管理プログラムや、その他のアプリケーション・プログラムが予め格納されており、必要に応じてアプリケーション・プログラムを記録装置１３にインストール可能になっている。
【００２１】
通信制御部１９は、ネットワークを介して入力用端末２や閲覧用端末４との間の通信を制御する。また、ネットワークを介してアプリケーション・プログラムをダウンロードして記録装置１３にインストールすることも可能である。ネットワークは、専用回線を用いて構築しても良いし、公衆の回線を利用しても良い。
【００２２】
ここで、通信制御部１９や外部記憶装置１８は、帳票のデータを帳票管理サーバ３に入力するための入力装置として機能する。また、表示制御部１４及び表示装置１５、出力装置１６、入力装置１７、外部記憶装置１８は、実施形態に必須の構成要素ではない。また、帳票管理サーバ３は、図１に示す構成要素以外の装置を含んでも良い。
【００２３】
次に、電子帳票システム１で取り扱う帳票のフォーマットの一例を図２に示す。帳票３１は、請求書、発注書、受注書、売上伝票などの帳簿類又は伝票類である。図２に示す帳票３１は、入力用端末２で作成される電子データを画面表示させたものであり、閲覧用端末４の画面に表示させたり、外部記録媒体１０に出力させたりすることが可能である。
【００２４】
帳票３１は、上側の中央に帳票の種類を示すタイトル３２が配置されている。この例におけるタイトルは、「売上伝票」である。その下には、相手先のデータ欄３３と、自社のデータ欄３４とが左右に分かれて配列されている。これらのデータ欄３３，３４には、住所や会社名などが入力又は表示される。右側の自社のデータ欄３４の下には、帳票を特定する情報として、売上日の欄３５と、伝票番号の欄３６と、帳票３１を作成した担当者の欄３７が順番に配置されている。各欄３５〜３７には、項目３５Ａ，３６Ａ，３７Ａと、各項目の具体的な内容を入力又は表示するデータ欄３５Ｂ，３６Ｂ，３７Ｂが上下に分割して配置されている。
【００２５】
さらに、各項目３５Ｂ〜３７Ｂの下方には、リスト欄３８が配置されている。リスト欄３８は、売上として計上される商品の情報が１行ずつ配置される。リスト欄３８の項目は、左側から配列順に、行番号の項目４１、商品コードの項目４２、商品名の項目４３、数量の項目４４、単価の項目４５、金額の項目４６がある。これらの項目４２〜４６のそれぞれの下には、各項目４２〜４６の具体的な内容を入力又は表示する行番号のデータ欄４７、商品コードのデータ欄４８、商品名のデータ欄４９、数量のデータ欄５０、単価のデータ欄５１及び金額のデータ欄５２が配列されている。
【００２６】
ここで、この帳票３１では、リスト欄３８に７つの欄３８Ａ，３８Ｂ，３８Ｃ，３８Ｄ，３８Ｅ，３８Ｆ，３８Ｇが上下に配列されている。このために、帳票３１には、最大で７種類までの商品をリストアップできる。そして、商品が８種類以上あるときには、２ページ目以降の帳票３１が作成される。
【００２７】
このような帳票３１を構成するデータのうち、文字及び数字に関する情報は、帳票データ２６として抽出される。帳票データ２６は、図１に示す帳票管理サーバ３の記録装置１
３に登録される。帳票データ２６の一例について図３を参照して説明する。図３では、帳票３１が１〜ｎ頁の複数枚ある場合を例示している。
【００２８】
帳票データ２６は、複数のデータから構成されており、帳票３１の１ページ目の文字及び数字の情報で形成される個別データ２６Ａを有する。さらに、帳票３１の２ページ目、・・・、ｎページ目の文字及び数字の情報で形成される個別データ２６Ｂ，・・・，２６ｎが付加されている。
【００２９】
各個別データ２６Ａ，２６Ｂ，・・・，２６ｎは、最初にページ情報６１を１つ有する。ページ情報６１は、そのページの帳票３１の行数などの情報が含まれる。具体的には、帳票３１の１ページ目の個別データ２６Ａのページ情報６１は、１ページ目の帳票３１の行数の情報が含まれる。
【００３０】
さらに、各ページ情報６１の後には、文字属性データ６２と文字データ６３が複数配列されている。文字属性データ６２には、帳票３１に含まれる文字のフォントの種類や、文字サイズの情報が含まれる。文字データ６３には、直前に配置された文字属性データ６２で特定される文字の文字コードや文字の位置情報が含まれる。文字の位置情報は、例えば、帳票３１の縦横をＸＹに分割したときのＸ座標とＹ座標である。即ち、帳票３１中の１つの文字に対して１つの文字属性データ６２と、１つの文字データ６３が生成され、一組の文字属性データ６２と文字データ６３によって、１つの文字の内容、位置、フォント、属性が特定される。
【００３１】
例えば、１ページ目の帳票３１中に例えば１００個の文字が含まれる場合には、１００組の文字属性データ６２と文字データ６３が生成され、文字の配列の順番に従って配列される。文字の配列の順番とは、例えば、帳票の左端から右端までを一番上の行から一番下の行まで順番にスキャンする場合のその順番に相当する。
【００３２】
帳票３１は、ページによって文字数が異なるので、各ページのページ情報６１の内容や、文字属性データ６２及び文字データ６３の数は、ページ毎に異なっても良い。さらに、個別データ２６Ａ，２６Ｂ，・・・，２６ｎの数は、帳票３１のページ数に応じて変化する。
【００３３】
ここで、帳票データ２６は、入力用端末２から入力された文字又は数字を配列させた情報のみなので、これらの文字又は数字と、帳票３１のフォーマットを対応付ける必要がある。具体例をあげると、帳票項目である「売上日」として入力されたデータの帳票３１内の場所と、データの種類とを対応付ける必要がある。この実施の形態では、帳票３１の帳票項目に対して入力されるデータの配列や範囲、データの種類を定義するデータとして、帳票項目のデータ構造２７を自動処理によって形成し、帳票３１の再構築やデータ検索を容易に行えるようにしている。そこで、以下に帳票項目のデータ構造２７について以下に説明する。
【００３４】
図４に一例を示すように、帳票項目のデータ構造２７は、最初に帳票項目の個数のデータ７１が配置され、その後に、帳票項目の構造を特定するデータとして、帳票項目範囲７２と、帳票項目名７３と、帳票項目の型７４とが配列される。帳票項目範囲７２、帳票項目名７３及び帳票項目の型７４は、帳票項目の数だけ繰り返して配列される。例えば、帳票項目の個数のデータ７１が「５」の場合、帳票項目範囲７２、帳票項目名７３及び帳票項目の型７４は５セット作成される。
【００３５】
ここで、帳票項目範囲７２は、１つの帳票項目のデータ欄の範囲を示す左上Ｘ座標（帳票項目範囲７２Ａ）、左上Ｙ座標（帳票項目範囲７２Ｂ）、右下Ｘ座標（帳票項目範囲７
２Ｃ）、右下Ｙ座標（帳票項目範囲７２Ｄ）を有する。帳票項目名７３は、帳票項目の名前を特定する文字データが格納され、帳票項目の型７４には、帳票項目のデータ欄に入力されるデータの型、例えば文字列であるか、数字であるか、日付であるかを特定する情報が格納される。
【００３６】
次に、この実施の形態の作用について説明する。
この実施の形態では、従来は手作業で作成されていたデータ構造をコンピュータ処理によって作成することを特徴とする。そこで、最初に、図５のフローチャートを主に参照して帳票項目のデータ構造２７を生成する処理の概略について説明する。
【００３７】
まず、ステップＳ１０１において、データ管理部２０が帳票データ２６を読み込む。帳票データ２６は、入力用端末２で作成され、ネットワークを介して帳票管理サーバ３の通信制御部１９に入力される。データ管理部２０は、帳票データ２６をメモリ１２に一時的に保管する。続くステップＳ１０２では、文字抽出部２１が帳票データ２６から文字列を抽出する。
【００３８】
さらに、ステップＳ１０３で１頁分の帳票データ２６を読み込んだら、ステップＳ１０４で文字列判定部２２が抽出した文字列が固定文字列か可変文字列かを判定する。ステップＳ１０３及びＳ１０４の処理は、ステップＳ１０５において所定の頁数分又は、文字列判定部２２が同一種類の帳票分のデータ処理が完了したと判定するまで繰り返される。ここで、所定の頁数とは、データ構造２６の生成に十分なサンプル数、又は用意された全ての帳票の頁数に相当する。
【００３９】
この後、ステップＳ１０６で、行範囲決定部２３が固定文字列のみの行を抽出することによって帳票項目の行範囲を決定する。ここで抽出される行範囲は、図４のデータ構造２７の帳票項目範囲７２の左上Ｙ座標７２Ｂと右下Ｙ座標７２Ｄに相当する。さらに、ステップＳ１０７で列範囲決定部２４が、帳票項目の列の範囲を決定する。ここで抽出される列範囲は、ステップＳ１０６で抽出された行範囲のそれぞれの列方向の範囲を決定する処理であり、これによって図４のデータ構造２７の帳票項目範囲７２の左上Ｘ座標７２Ａと右下Ｘ座標７２Ｃが決定する。ここまでの処理によって、データ構造２７の帳票項目範囲７２が確定する。
【００４０】
そして、ステップＳ１０８で、帳票項目範囲７２に帳票項目名７３と、帳票項目の型７４を関連付けて帳票項目のデータ構造２７を生成する。帳票項目名７３は、例えば、帳票項目範囲７２の直上の固定文字列を取得する。例えば、商品名の帳票項目では、図２のデータ欄９８の帳票項目範囲の上の行の固定文字列である「商品名」が帳票項目名７３になる。帳票３１のレイアウトによっては、帳票項目範囲７２の右や、左、下の固定文字列が帳票項目名７３になることもある。
【００４１】
さらに、帳票項目の型７４は、帳票項目範囲７２内の座標を有する文字列の文字属性データ６２を取得することで確定する。そして、帳票項目範囲７２の個数が帳票項目の個数のデータ７１として抽出される。このようにして、データ構造２７を自動処理によって作成したら、データ管理部２０は帳票データ２６とデータ構造２７を記録装置１３に格納した後、ここでの処理を終了する。
【００４２】
ここで、ステップＳ１０２の文字列の抽出処理と、ステップＳ１０４の文字列の判定処理と、ステップＳ１０６の行範囲の決定処理と、ステップＳ１０７の列範囲の決定処理の詳細について、以下に順番に説明する。
【００４３】
最初に、ステップＳ１０２の文字列の抽出処理の具体例について、図６を参照して説明
する。図６に例示する帳票３１は、例えば、売上日が、「２０１２年０１月０１日」で、伝票番号が「０００１」、担当者が「１０１」として登録されている。例えば、行番号１の欄３８Ａには、商品コードが「００２０」である「カラーテレビ」を「３台」売上として計上されたことが示され、これと共に、カラーテレビの単価が１２００００円であり、３台の合計金額が３６００００円であることが示される。以下、行番号２の欄３８Ｂでは、「カラオケセット」の売上が、行番号３の欄３８Ｃでは「電気掃除機」の売上が、行番号４の欄３８Ｄでは「電気スタンド」の売上がそれぞれリストアップされている。そして、各列の欄３８Ａ〜３８Ｄにおいて商品コード、数量、単価、金額の情報が入力されている。
【００４４】
各列の欄３８Ａ〜３８Ｄのデータを具体的に調べると、例えば、行番号１の欄３８Ａは、左から、「１」、２つのスペース、「００２０」、２つのスペース、「カラーテレビ」９つのスペース、「３」、３つのスペース、「￥１２０，０００」３つのスペース、「￥３６０，０００」、１つのスペースが配列されることによって形成されている。最初の「１」と、「００２０」の最初の「０」との間は、１文字以上に相当するスペースがある。スペースの有無は、文字抽出部２１が、「１」の文字データに含まれるＸ座標と、「００２０」の最初の「０」の文字データに含まれるＸ座標との間の差を算出することによって判定する。
【００４５】
即ち、文字抽出部２１は、行番号の「１」と、商品コードの「００２０」の間にスペースがあるのでこれらを２つの独立した文字列と判定する。さらに、商品コードの「００２０」の最初の２つの「０」の間と、２番目の「０」と「２」の間、「２」と最後の「０」の間のそれぞれにはスペースが存在せず、最後の「０」の後にスペースがあることから、「００２０」のグループを１つの文字列と判定する。
【００４６】
このようにして、文字抽出部２１は、１つの行の全ての文字に対して隣文字との間隔を調べ、１文字以上の間隔を文字列の区切りとすることによって各欄３８Ａ〜３８Ｂから文字列を抽出する。この例では、「００２０」の最後の「０」と、「カラーテレビ」の「カ」の間に１文字列以上の間隔があるので、「００２０」と「カ」は別の文字列と判定する。そして、「カ」から「ビ」までは文字が隙間なく配列されているので、１つの文字列として取り扱う。以降は、同様にして、「３」、「￥１２０，０００」、「￥３６０，０００」が文字列として抽出される。また、文字抽出部２１は、その他の項目３５Ａ〜３７Ａや、リスト欄３８の各項目４１〜４６についても文字列を抽出する。
【００４７】
次に、図５のステップＳ１０４の文字列の判定処理の詳細について、図７を参照して説明する。
まず、ステップＳ２０１で文字列判定部２２が複数、例えば２つの帳票３１の同一座標の文字列を抽出し、ステップＳ２０２で文字列同士を比較する。文字列が一致していれば（ステップＳ２０３でＹｅｓ）、ステップＳ２０４で２つの文字列の文字属性同士を比較する。文字属性とは、例えば、文字列に使用されているフォントや、文字サイズ、文字飾りなどである。
【００４８】
文字属性が一致していれば（ステップＳ２０５でＹｅｓ）、ステップＳ２０６でその座標の文字列を、各帳票３１で共通して使用される固定文字列と判定する。これに対して、ステップＳ２０３で文字列が一致しない場合と、ステップＳ２０５で文字属性が一致しない場合は、ステップＳ２０７に進んでその座標の文字列を、帳票３１によって変化する可変文字列と判定する。ステップＳ２０６又はステップＳ２０７を実行した後は、ステップＳ２０８に進む。
【００４９】
そして、ステップＳ２０８において、文字列判定部２２は現段階で読み込んでいる全て
の帳票３１に対する比較が終了したか調べる。全ての帳票での比較が終了していない場合（ステップＳ２０８でＮｏ）、ステップＳ２０１に戻って、次の帳票３１の同一座標の文字列を抽出する。例えば、図３の帳票データ２６の例では、１つの帳票データ２６がｎページから構成されているので、ステップＳ２０１からステップＳ２０８がｎ回繰り返される。また、異なる２つ以上の帳票データ２６を用いて固定文字の判定処理を実施してしても良い。また、例えば、ｎページの帳票データ２６が２つある場合には、ステップＳ２０１からステップＳ２０８が２×ｎ回繰り返される。このように、帳票が１枚の場合には、別の帳票を選択し、複数枚の帳票では２ページ以降を選択することが好ましい。
【００５０】
そして、ステップＳ２０８までの処理で、全ての帳票３１を参照した判定処理が終了したら、ステップＳ２０９に進み、帳票３１の１ページ中の最後の文字列の判定処理が終了するまで、文字列を順番に変更しながらステップＳ２０１からステップＳ２０８の処理を繰り返す。
【００５１】
続いて、固定文字列の判定処理の具体例について、図８を参照して説明する。ここで、図８（ａ）は１ページ目の帳票３１Ａのイメージを示し、図８（ｂ）は２ページ目の帳票３１Ｂのイメージを示す。また、固定文字列と判定された文字列がハッチングで示されている。
【００５２】
固定文字列の判定処理では、複数のページのデータを読み込んで、同一座標に同一の文字列、かつ同一の文字属性のデータがあるか調べる。そして、固定文字列でない文字列は、可変文字列と判定する。例えば、（ａ）に示す１ページ目の帳票３１Ａと、（ｂ）に示す２ページ目の帳票３１Ｂの比較では、ハッチングで示す「売上日」、「伝票番号」、「担当者」などの文字列が、位置、文字列の内容及び属性が一致する。このために、これらの文字列は固定文字列であると判定される。同様に、「Ｎｏ．」や、「商品コード」なども固定文字列と判定される。行番号「Ｎｏ．」の下の「１」、「２」、「３」、「４」も固定文字列と判定される。
【００５３】
これに対して、リスト欄３８の商品コードや商品名などの具体的なデータを固定文字列ではなく、可変文字列と判定される。これは、帳票３１Ａ，３１Ｂ毎にデータの内容が異なるためである。さらに、図８（ｂ）に示すように、行番号「Ｎｏ．」の「５」は固定文字列と判定されない。これは、１ページ目の帳票３１Ａには、商品が５つまでしか計上されていないために、「５」の列が存在しないのに対し、２ページ目の帳票３１Ｂには５個目の商品が計上されており、「５」が存在するためである。また、伝票番号のデータ欄３６Ｂは、１ページ目の「０００１」と、２ページ目の「０００２」で異なるので可変文字列と判定されている。
【００５４】
ここで、図８の例は、２ページの帳票の場合を示しているが、１頁しかない帳票も存在する。このために、同じ種類の帳票のデータを複数読み込んで固定文字列の判定処理をすることによって、固定文字列と可変文字列の判定精度を向上させる。
【００５５】
次に、図５のステップＳ１０６の行範囲の決定処理の詳細について、図９を参照して説明する。
最初に、ステップＳ３０１で、行範囲決定部２３が、着目した行に含まれる文字列の種類を判定する。その行に属する文字列の全てが固定文字列であった場合（ステップＳ３０２でＹｅｓ）、ステップＳ３０３に進み、その行を区切り行に設定する。この後、ステップＳ３０４に進む。これに対して、着目した行の中に、１つでも可変文字列が含まれていた場合（ステップＳ３０２でＮｏ）、そのままステップＳ３０４に進む。
【００５６】
ステップＳ３０４では、行範囲決定部２３がページの終端に到達したか否かを判定する
。ページ終端に到達していない場合（ステップＳ３０４でＮｏ）、ステップＳ３０１に戻って前記の処理を繰り返し、別の行に対しても区切り行であるか否かを調べる。これに対して、ページ終端まで処理を終了したら（ステップＳ３０４でＹｅｓ）、ステップＳ３０５に進む。ステップＳ３０５では、区切り行と次の区切り行の間を行範囲に設定する。又は、最後の区切り行とページ終端の間を行範囲に設定する。この後、ここでの処理を終了する。
【００５７】
続いて、行範囲の決定処理の具体例について、図１０を参照して説明する。図１０において、固定文字列と判定された文字列は、ハッチングで示している。
例えば、売上日の項目３５Ａがある行８１は、伝票番号のタイトル３６Ａと、担当者のタイトル３７Ａがあるだけであり、これらの文字列はハッチングによって示すように固定文字列のみで構成されている。従って、この行８１は、行範囲決定部２３によって区切り行と判定される。その下の行８２は、「伝票番号」のデータ欄３６Ｂが帳票３１によって異なる可変文字列である。この行８２において、データ欄３６Ｂの両隣のデータ欄３５Ｂ，３７Ｂは固定文字列と判定されている。この場合には、可変文字列が一箇所含まれているので、区切り行とは判定されない。
【００５８】
さらに、その下のリスト欄３８の最初の行８３は、「行番号」のタイトル４１などの固定文字列のみが配置されている。このために、この行８３は、区切り行と判定される。その結果、１つ目の区切り行（行８１）から次の区切り行（行８３）の間が１つ目の行範囲Ｈ１と判定される。
【００５９】
この後は、リスト欄３８の行番号「１」に相当する行８４から、「４」に相当する最後の行８５までは、固定文字列と、可変文字列が混在している。従って、これらの行８３，８４は、区切り行と判定されない。ここで、帳票３１の最後の行８５までの判定が終了し、かつ先の区切り行８２の後には区切り行が存在しなかったので、区切り行８２から最終行８５の下端８５Ｂまでの間が、２つの目の行範囲Ｈ２と判定される。このようにして行範囲Ｈ１，Ｈ２を決定すると、空白行がある場合でも行の範囲を正確に決定できる。
【００６０】
次に、図５のステップＳ１０７の列範囲の決定処理の詳細について、図１１を参照して説明する。
最初に、ステップＳ４０１で、列範囲決定部２４が、着目した行範囲内の１行目の文字列の左右端の座標を取得する。続いて、ステップＳ４０２で、最初に選択した文字列の右端の座標を列範囲の右端の初期値に設定する。さらに、最初に選択した文字列の左端の座標を列範囲の左端の初期値に設定する。
【００６１】
続くステップＳ４０３で、列範囲決定部２４が、次の行の文字列の左端の座標と、列範囲の左端の座標を比較する。文字列の左端が列範囲の左端以下であれば（ステップＳ４０４でＹｅｓ）、ステップＳ４０５で列範囲の左端の座標を、その文字列の左端の座標に更新する。この後、ステップＳ４０６に進む。これに対して、ステップＳ４０４において、文字列の左端が列範囲の左端より大きい場合は、列範囲の左端の座標を更新することなくステップＳ４０６に進む。
【００６２】
ステップＳ４０６では、文字列の右端の座標と、列範囲の右端の座標を比較する。このときの文字列は、ステップＳ４０３における比較処理で使用した文字列と同じ文字列である。文字列の右端が列範囲の右端以上であれば（ステップＳ４０７でＹｅｓ）、ステップＳ４０８で列範囲の右端の座標を、その文字列の右端の座標に更新する。この後、ステップＳ４０９に進む。これに対して、ステップＳ４０７において、文字列の右端が列範囲の右端より小さい場合は、列範囲の右端の座標を更新することなくステップＳ４０９に進む。
【００６３】
そして、ステップＳ４０９で、注目した列範囲の最終行の処理が終了するまでステップＳ４０３からステップＳ４０８までを繰り返す。さらに、ステップＳ４１０で、全ての帳票３１に対してステップＳ４０３からステップＳ４０８までの処理を繰り返す。このように、複数の帳票３１に対して処理を行い、データを更新することによって、列範囲が精度良く設定される。
【００６４】
続いて、列範囲の決定処理の具体例について、図１２を参照して説明する。ここで、図１２において各行の文字列の開始位置がずれているのは、文字列の割付処理などによって文字列の開始位置が変化する場合を想定したためである。
最初に、列の範囲を決定する行範囲、例えば行範囲Ｈ２を選択する。続いて、行範囲Ｈ２内の一番上の可変文字列を基準にして列範囲を決定する。図１２の例では、一番上の可変文字列である「カラーテレビ」の左端の「カ」の文字のＸ座標がＸ３で、右端の「ビ」のＸ座標がＸ６であるので列の範囲の初期値は、左端がＸ３、右端がＸ６にそれぞれ設定される。
【００６５】
次に、同じ行範囲Ｈ２の２行目の可変文字列である「カラオケセット」のＸ座標と仮に設定した列範囲とを調べる。左端の「カ」のＸ座標がＸ４であり、これは列範囲の左端の初期値であるＸ３より大きい。このために、列範囲の左端の座標はＸ３に維持される。これに対して、「カラオケセット」の右端の「ト」のＸ座標はＸ８であり、これは列範囲の右端の初期値であるＸ６より大きい。このために、列範囲の左端の座標は、Ｘ８に更新される。これによって、仮の列範囲は、Ｘ３以上Ｘ８以下になる。
【００６６】
さらに、３行目の可変文字列である「電気掃除機」は左端のＸ座標がＸ２なので、列範囲の左端がＸ２に更新される。一方、列範囲の右端は「機」のＸ座標がＸ５であるために、Ｘ８が維持される。４行目の可変文字列は、列範囲内に収まっているので、列範囲は更新されずに維持される。このように、同じ行範囲でグループ化された複数の可変文字列の右端同士と左端同士をそれぞれ比較することによって、列範囲Ｗ１が決定される。即ち、この例では、行範囲Ｈ２かつ列範囲Ｗ１の領域が、図２に示す商品名の項目４３の検索可能な範囲になる。
【００６７】
以上の処理によって、図４に示すデータ構造が生成される。データ構成で特定される検索可能な範囲の一例を図１３に示す。図１３には、帳票３１にデータ構造２７として設定された範囲がハッチングで示している。この例では、検索可能な帳票項目として、伝票番号の帳票項目範囲９１と、商品コードの帳票項目範囲９２と、商品名の帳票項目範囲９３と、数量の帳票項目範囲９４と、単価の帳票項目範囲９５と、金額の帳票項目範囲９６とがハッチングされており、これらの領域に入力された文字列を用いた検索が可能になる。
【００６８】
例えば、商品名の帳票項目範囲９２は、直上の商品名の項目４３と関連付けられることで、商品名が入力又は表示され、検索可能な範囲になる。ここで、行番号の一番下に検索範囲９７が存在する。これは、図８に示す１ページ目の帳票３１Ａの列番号に「５」がないのに対し、２ページ目の帳票３１Ｂに「５」が存在していたためである。また、売上日のデータ欄３５Ｂと、担当者のデータ欄３７Ｂは、検索可能な範囲に設定されていない。これは、データ構造２７の生成処理に使用した帳票３１は全て「２０１２年０１月０１日」に作成され、かつ担当者が「１０１」であったためである。売上日のデータ欄３５Ｂ及び担当者のデータ欄３７Ｂについては、データ構造２７を作成する帳票３１の数を増やすことで、帳票項目範囲への追加が可能である。
【００６９】
また、余分な検索範囲９７は、例えば、ステップＳ１０４の固定文字列の判定処理において、判定に使用する閾値を予め設定し、固定文字列の割合が閾値以上であれば、一部に
可変文字列が存在した場合でも固定文字列と判定する処理を追加することによって削除できる。閾値は、僅かに可変文字列が含まれているが、殆ど固定文字列と取り扱えるような値を統計的に算出したものを使用する。また、帳票項目範囲９１〜９７の中には、数種類の文字列のいずれかが入力される場合もあるので、固定文字列の判定において、２通り又は３通りの短い文字列であれば、固定文字列と判定する処理を追加しても良い。
【００７０】
次に、データ構造２７が形成された後の帳票データ２６の利用方法の一例として、ユーザによる検索処理について説明する。
図１４にフローチャートを示すように、まず、ステップＳ５０１で、入力用端末２から帳票のデータを入力し、帳票データ２６を作成する。続いて、ステップＳ５０２で、入力用端末２から送信された帳票データ２６を帳票管理サーバ３が受信し、記録装置１３に登録する。
【００７１】
この後、ステップＳ５０３で、閲覧用端末４からの要求に応じて、検索制御部２５が帳票データ２６を検索する。ユーザは、例えば、売上日の項目３５Ａで日付の範囲を指定して、その範囲に含まれる帳票データ２６の検索を要求する。また、金額の項目４６で例えば「１００，０００円以上」を指定し、その条件に合致する帳票データ２６の検索を要求する。また、商品名の項目４３に例えば「テレビ」と入力し、商品名にテレビが含まれる帳票データ２６の検索を要求する。
【００７２】
帳票データ２６の検索とは、閲覧用端末４から入力された検索条件に基づいて、検索制御部２５が複数の帳票データから検索条件に合致するデータを抽出し、検索要求のあった閲覧用端末４の表示装置に表示させることを言う。また、必要に応じて、抽出した帳票データ２６を紙媒体や磁気記録媒体に出力させることも含まれる。ここで、閲覧用端末４は、図１３に示すような構造を有する検索画面を表示させるとユーザによる帳票検索が容易になる。即ち、閲覧用端末４が帳票項目範囲９１〜９５を表示させると、ユーザが検索可能な項目と領域を容易に認識できるようになる。
【００７３】
以上、説明したように、この実施の形態では、複数の帳票３１のデータからデータ構造２７を自動的に作成するようにしたので、書式のデータがない場合でも自動処理によって検索可能な範囲の設定が可能になる。また、帳票３１に帳票項目が多数ある場合や、帳票３１の種類が多数ある場合でも容易に帳票３１を検索可能に管理できるようになる。さらに、帳票３１のフォーマットの変更や新規作成が容易になる。
【００７４】
特に、帳票３１は、データ入力される領域や検索対象となる領域に可変文字列が多く含まれるので、固定文字列と可変文字列を識別することによって、帳票項目の検索可能な行方向の範囲を容易に抽出することができる。また、行範囲内の可変文字列の左右の広がりを比較することによって、帳票項目の検索可能な列方向の範囲を容易に抽出ことができる。列範囲を抽出することによって、１行に複数の帳票項目が配列される場合に、各帳票項目を分離することが可能になる。そして、複数の帳票データ２６を用いて可変文字列のグループを形成することによって、帳票項目の範囲を自動的に決定するようにしたので、検索可能な範囲を精度良く設定できる。
【００７５】
また、１ページ帳票など、ページ数が少ない帳票３１の場合には、複数の帳票３１を指定することによってデータ構造２７を高精度に作成することが可能である。
さらに、予め記録装置１３に登録してある帳票データ２６であって、帳票のフォーマットが同一の帳票を選択してデータ構造２７を形成しても良い。
【００７６】
ここで、コンピュータを帳票管理サーバ３として機能させる電子帳票の管理プログラムもこの実施の形態に含まれる。電子帳票の管理プログラムは、コンピュータをデータ管理
部２０と、文字抽出部２１と、文字列判定部２２と、行範囲決定部２３と、列範囲決定部２４と、検索制御部２５として機能させる構成を有する。さらに、電子帳票の管理プログラムを実行可能に記録装置１３に保存することや、コンピュータにインストール可能に保存した記録媒体や、ダウンロード可能な状態におくことも実施の形態に含まれるものとする。
【００７７】
ここで挙げた全ての例及び条件的表現は、発明者が技術促進に貢献した発明及び概念を読者が理解するのを助けるためのものであり、ここで具体的に挙げたそのような例及び条件に限定することなく解釈するものであり、また、明細書におけるそのような例の編成は本発明の優劣を示すこととは関係ない。本発明の実施形態を詳細に説明したが、本発明の精神及び範囲から逸脱することなく、それに対して種々の変更、置換及び変形を施すことができる。
【００７８】
以下に、前記の実施の形態の特徴を付記する。
（付記１）  帳票のデータを取り込む入力装置と、前記取り込まれた帳票のデータに含まれる文字列を抽出し、複数の前記帳票で共通して使用される文字の集合である固定文字列と、前記固定文字列以外の文字列を含む可変文字列とを区別する文字列判定部と、前記固定文字列のみを有する行を区切り行とし、前記区切り行同士の間、又は前記区切り行と帳票の終端までの間を、帳票の項目の検索可能な行範囲として設定する行範囲決定部と、を含むことを特徴とする電子帳票システム。
（付記２）  前記行範囲内に配置される複数の前記可変文字列の両端を比較し、前記行範囲内に配置される全ての前記可変文字列を包含する範囲を、前記取り込まれた帳票の項目の検索可能な列範囲として設定する列範囲決定部を含むことを特徴とする付記１に記載の電子帳票システム。
（付記３）  前記取り込まれた帳票のデータの１つの行において連続して配置されている文字のグループを１つの文字列として判定し、スペースで分けられた文字を異なる文字列と判定する文字抽出部を含むことを特徴とする付記１又は付記２に記載の電子帳票システム。
（付記４）  複数の帳票のデータに含まれる文字列を抽出し、複数の前記取り込まれた帳票で共通して使用される文字の集合である固定文字列と、前記取り込まれた帳票によって変化する文字列を含む可変文字列とを判別し、前記固定文字列のみを有する行を区切り行とし、前記区切り行同士の間、又は前記区切り行と前記取り込まれた帳票の終端までの間を帳票の項目の行範囲として抽出し、前記行範囲を検索可能な範囲として設定することを特徴とする電子帳票の管理方法。
（付記５）  前記行範囲内に配置される複数の前記可変文字列の両端を比較して前記行範囲内に配置される全ての前記可変文字列を包含する列範囲を抽出し、前記列範囲を検索可能な範囲として設定することを特徴とする付記４に記載の電子帳票の管理方法。
（付記６）  前記文字列を抽出するにあたり、前記帳票データの１つの行において連続して配置されている文字のグループを１つの文字列として判定し、スペースで分けられた文字を異なる文字列と判定することを特徴とする付記４又は付記５に記載の電子帳票の管理方法。
（付記７）  複数枚の帳票のデータに含まれる文字列を抽出し、複数の前記帳票で共通して使用される文字の集合である固定文字列と、前記帳票によって変化する文字列を含む可変文字列とを判別するステップと、前記固定文字列のみを有する行を区切り行とし、前記区切り行同士の間、又は前記区切り行と前記帳票の終端までの間を前記帳票の項目の行範囲として抽出するステップと、前記行範囲を検索可能な範囲として設定するステップと、をコンピュータに実行させることを特徴とする電子帳票の管理プログラム。
（付記８）
前記行範囲内に配置される複数の前記可変文字列の両端を比較して前記行範囲内に配置される全ての前記可変文字列を包含する列範囲を抽出するステップと、前記列範囲を検索
可能な範囲として設定するステップと、をコンピュータに実行させることを特徴とする付記７に記載の電子帳票の管理プログラム。
【符号の説明】
【００７９】
１  電子帳票システム
２  入力用端末
３  帳票管理サーバ
４  閲覧用端末
１３  記録装置
１６  通信制御部
２１  文字抽出部
２２  文字列判定部
２３  行範囲決定部
２４  列範囲決定部
２６  帳票データ
３１  帳票
３５Ａ  売上日の項目（帳票項目）
３６Ａ  伝票番号の項目（帳票項目）
２７Ａ  担当者の項目（帳票項目）
４１  列番号の項目（帳票項目）
４２  商品コードの項目（帳票項目）
４３  商品名の項目（帳票項目）
４４  数量の項目（帳票項目）
４５  単価の項目（帳票項目）
４６  金額の項目（帳票項目）
８１  行（区切り行）
８３  行（区切り行）
Ｈ１，Ｈ２  行範囲
Ｗ１  列範囲
【図１】
2014010795.tif 000003
【図２】
2014010795.tif 000004
【図３】
2014010795.tif 000005
【図４】
2014010795.tif 000006
【図５】
2014010795.tif 000007
【図６】
2014010795.tif 000008
【図７】
2014010795.tif 000009
【図８】
2014010795.tif 000010
【図９】
2014010795.tif 000011
【図１０】
2014010795.tif 000012
【図１１】
2014010795.tif 000013
【図１２】
2014010795.tif 000014
【図１３】
2014010795.tif 000015
【図１４】
2014010795.tif 000016