図1は、帳票作成装置の構成の一例を示す図である。
帳票作成装置1は、帳票定義格納部2と、データ格納部3と、作成部4と、帳票出力データ格納部5と、メタ情報処理部6と、メタ情報付き帳票格納部9とを含む。メタ情報処理部6は、同定処理部7と、埋め込み処理部8とを含む。メタ情報付き帳票格納部9は、メタ情報付き換言すればメタ情報を埋め込まれた帳票出力データ90、メタ情報91を含む。
帳票定義格納部2は、帳票を定義する情報である帳票定義情報を格納する。帳票定義情報は、複数の部分定義情報を含む。複数の部分定義情報は、例えば、複数の罫線座標値と、複数の文字列情報を含む。換言すれば、1本の罫線について、その始点を表す座標値とその終点を表す座標値の対を含む、1個の部分定義情報が存在する。また、1個の文字列について、1個の部分定義情報が存在する。また、帳票定義情報は、複数の部分定義情報の各々に対応するメタ情報を含む。帳票定義格納部2に格納された帳票定義情報は、作成部4に読み出され、帳票出力データの作成処理に用いられる。また、帳票定義格納部2に格納された帳票定義情報は、メタ情報処理部6に読み出され、メタ情報の同定処理及び埋め込み処理に用いられる。
データ格納部3は、データを格納する。データは、帳票の作成のためのデータであって、例えば、売上を示す数値や、「売上日」のような文字列である。データは、実際に帳票を印刷出力するためのデータである帳票出力データと区別される。データ格納部3に格納されたデータは、作成部4に読み出され、帳票出力データの作成処理に用いられる。
作成部4は、データ格納部3から読み出したデータと、帳票定義格納部2から読み出した帳票定義情報とに基づいて、帳票出力データを作成する。作成された帳票出力データは、帳票出力データ格納部5に格納される。帳票出力データは、前述したように、実際に帳票を印刷出力するためのデータであり、電子帳票であると考えても良い。
作成部4は、作成された帳票出力データを、例えばプリンタから印刷出力する。換言すれば、作成部4は、帳票を紙の上に印刷出力する。なお、作成部4による印刷出力を省略するようにしても良い。
帳票出力データ格納部5は、データと帳票定義情報とに基づいて作成された帳票出力データを格納する。帳票出力データは、複数の部分出力データを含む。複数の部分帳票出力情報は、例えば、複数の罫線についての情報と、複数の文字列についての情報を含む。換言すれば、1本の罫線について、1個の部分帳票出力情報が存在する。また、1個の文字列について、1個の部分帳票出力情報が存在する。
なお、帳票出力データは、作成部4以外の他の文書作成装置により作成されたものを、帳票出力データ格納部5に読み込んだものであっても良い。また、帳票出力データは、作成部4により作成されたものを、スキャナ装置により読み込んで文字認識することにより得たものであっても良い。
メタ情報処理部6は、帳票定義格納部2から読み出した帳票定義情報からメタ情報を抽出して、抽出したメタ情報を帳票出力データ格納部5から読み出した帳票出力データに埋め込む。これにより、メタ情報を埋め込まれた帳票出力データ90が生成される。メタ情報を埋め込まれた帳票出力データ90は、メタ情報付き帳票格納部9に格納される。
メタ情報処理部6において、同定処理部7は、帳票定義格納部2から読み出した帳票定義情報に含まれる複数の部分定義情報と、帳票出力データ格納部5から読み出した帳票出力データに含まれる複数の部分出力データとの同定を行う。この時、同定処理部7は、罫線座標値と罫線とを相互に同定し、文字列情報と文字列とを相互に同定する。
ここで、部分定義情報と部分出力データとの同定とは、部分定義情報と部分出力データとを比較して、相互に一致するものを抽出することである。換言すれば、部分定義情報に同定された部分出力データは、部分定義情報と一致した部分出力データであり、部分出力データに同定された部分定義情報は、部分出力データと一致した部分定義情報である。部分定義情報と部分出力データとが一致するか否かは、後述するように、同定処理部7において、部分定義情報の特徴情報と、部分出力データの特徴情報とを用いて判断される。
メタ情報処理部6において、埋め込み処理部8は、帳票定義情報の複数の部分定義情報からメタ情報を抽出し、同定の結果に基づいて、抽出したメタ情報を、当該メタ情報が抽出された部分定義情報に同定された部分出力データに埋め込む。
メタ情報は、帳票定義情報に含まれる情報であって、当該帳票又は帳票出力データのデザインに用いられる情報である。メタ情報の一例を挙げると、メタ情報には、例えば、後述するように、項目名、項目種別、罫線の座標、文字列の座標原点、文字列の領域長等が含まれる。メタ情報は、当該帳票又は帳票出力データのデザインに用いられる情報であれば、項目名等以外の情報であっても良い。
この時、埋め込み処理部8は、同定処理部7において部分定義情報と部分出力データとが同定された場合に、部分出力データに同定された部分定義情報からメタ情報を抽出し、抽出したメタ情報を、部分定義情報に同定された部分出力データに埋め込む。従って、部分出力データに同定されない部分定義情報からはメタ情報は抽出されず、また、部分定義情報に同定されない部分出力データにはメタ情報は埋め込まれない。
メタ情報付き帳票格納部9は、メタ情報91を含む、換言すれば、メタ情報が埋め込まれた帳票出力データ90を格納する。メタ情報91は、相互に同定された部分定義情報から抽出され、相互に同定された部分出力データに埋め込まれる。従って、メタ情報91は、実際には、メタ情報付き帳票格納部9において1個存在するのではなく、部分出力データ毎に、部分出力データに埋め込まれた形式で存在する。
図2は、帳票作成装置のハードウェア構成の一例を示す図である。
CPU11は、ROM13に格納された制御プログラムに従って、帳票作成装置1を制御する。CPU11は、例えば主メモリであるRAM12上の帳票作成プログラムを実行する。換言すれば、作成部4及びメタ情報処理部6が実現される。帳票作成プログラムは、例えば、CD−ROMやDVD等の記録媒体17に格納され、記録媒体17からハードディスク16に入力され、ハードディスク16からRAM12にロードされる。
帳票定義格納部2、データ格納部3、帳票出力データ格納部5、メタ情報付き帳票格納部9は、例えばハードディスク16に設けられる。換言すれば、帳票定義情報、データ、帳票出力データ、及び、メタ情報を埋め込まれた帳票出力データ90は、例えばハードディスク16に格納される。帳票定義情報、データ、及び、帳票出力データは、例えば、CD−ROMやDVD等の記録媒体17に格納され、記録媒体17からハードディスク16に入力され、必要に応じてハードディスク16からRAM12にロードされ、作成部4及びメタ情報処理部6により処理される。メタ情報を埋め込まれた帳票出力データ90は、例えばハードディスク16から記録媒体17に出力される。
入力装置14は、例えばキーボードであり、マウス等を含んでも良い。出力装置15は、例えばディスプレイであり、プリンタ等の出力装置を含んでも良い。CPU11、ROM13、RAM12、入力装置14、出力装置15、及び、ハードディスク16は、バス18を介して、相互に接続される。
次に、作成部4による、帳票出力データの作成について、図3〜図5を参照して、簡単に説明する。前述したように、帳票出力データ格納部5に格納される帳票出力データは、帳票定義格納部2に格納された帳票定義情報とデータ格納部3に格納されたデータとに基づいて作成され、帳票出力データ格納部5に格納される。
図3は、帳票の一例を示す図である。換言すれば、図3は、図3の帳票を出力する帳票出力データであって、帳票出力データ格納部5に格納された帳票出力データの一例を示すと考えて良い。
図3の帳票又は帳票出力データは、前述したように、データと帳票定義情報とに基づいて作成される。データは、データ格納部3から作成部4により読み出される。帳票定義情報は、帳票定義格納部2から作成部4により読み出される。
データは、例えば数値である。数値は、例えば、売上日である「 1/ 5」のような数値、売上げである「3,500,000」のような数値を含む。従って、データ格納部3が格納するデータは、図3の帳票又は帳票出力データにおける数値である。データ格納部3が格納するデータにおいて、数値は、対応する項目名に対応して格納される。これにより、後述するように、データ格納部3が格納するデータが、図3の帳票又は帳票出力データに示すように、予め定められた位置に格納される。
帳票定義情報は、例えば罫線の位置、矩形の位置、角丸矩形の位置、数値の位置、文字列及びその位置、画像の位置等である。帳票定義情報は、例えば座標値で定義される。文字列は、図3に示すように、「部署別売上げ一覧」「売上げ集計表」「売上日」等の項目名である。
図3の帳票又は帳票出力データは、前述したように、複数の部分出力データを含む。換言すれば、帳票出力データは、各々が別個の複数の部分出力データの集合である。複数の部分出力データは、複数の罫線と、複数の文字列とを含む。例えば、「売上日」と言う項目名を囲む矩形は、4本の罫線を含む。これらの4本の罫線の各々が、部分出力データである。また、「 1/ 5」のような数値等の各々、及び、「売上日」等の項目名の各々が、1個の部分出力データである。
なお、図3の帳票又は帳票出力データにおいては、文字列の検索のみが可能である。例えば、図3の帳票又は帳票出力データにおける、「営業1課」「3,000,000」という文字列は、検索することができる。しかし、図3の帳票又は帳票出力データにおいて、例えば営業1課について3,000,000円「以上」の売上げのある日という指定した範囲についての検索は、不可能である。
図4は、帳票定義情報の一例を示す図である。実際には、図4は、図3の帳票を定義する帳票定義情報であって、帳票定義格納部2に格納された帳票定義情報により定義された画面を示す。図4の画面と帳票定義情報とは1対1に対応するので、図4は、帳票定義情報の一例を示すと考えて良い。
図4の帳票定義情報は、前述したように、例えば罫線の位置、矩形の位置、角丸矩形の位置、数値の位置、文字列及びその位置、画像の位置等を含む。帳票定義情報は、例えば座標値、換言すれば、ドットの位置で定義される。文字列は、図4に示すように、「部署別売上げ一覧」「売上げ集計表」「売上日」等の項目名である。
例えば、罫線の位置は、その始点の座標値と、終点の座標値とにより定義される。矩形の位置は、その原点の座標値と、原点の対角の座標値とにより定義される。角丸矩形の位置は、当該角丸矩形の要素である4本の直線により定義され、4角の丸い部分は定義に使用されない。当該4本の直線の位置は、各々、その始点の座標値と、終点の座標値とにより定義される。数値の位置は、その始点の座標値と、終点の座標値とにより定義される。文字列の位置は、その始点の座標値と、終点の座標値とにより定義される。画像の位置は、その原点の座標値と、原点の対角の座標値とにより定義される。
図4の帳票定義情報は、前述したように、複数の部分定義情報を含む。換言すれば、帳票定義情報は、各々が別個に定義された、複数の部分定義情報の集合である。複数の部分定義情報は、複数の罫線座標値と、複数の文字列とを含む。例えば、「売上日」と言う項目名を囲む矩形は、4本の罫線を含む。これらの4本の罫線の座標値の各々が、部分定義情報である。また、「売上日」等の項目名の各々が、1個の部分定義情報である。
例えば、図5(A)及び図5(B)は、図4において「営業1課」の売上日「Z9/Z9」における売上げ「¥−−,−−−,−−9」についての部分定義情報を示す。なお、「¥−−,−−−,−−9」の末尾の数字「9」は、当該行が売上日の数だけ繰返すことが可能であることを示す制御記号である。
図5(A)は、「¥−−,−−−,−−9」についての部分定義情報において、項目名が「営業1課売上げ」であること、小数部の桁数が「0」であること、項目長が「7」であること、文字列の座標原点が(90,926)であること、文字列の領域長が「1176」であること等を定義する情報を含むことを示す。文字列の座標原点は、当該帳票の原点Oを基準とした場合における、原点から当該文字列までの距離を表し、当該文字列が印刷出力される矩形の原点、換言すれば、当該矩形の左上の角の座標を表す。当該帳票の原点Oは、図4において、項目名「部署別売上げ一覧」のすぐ上の実線の罫線において、Y座標値が「0」の位置である。文字列の座標原点において、「90」はX座標、換言すれば、縦方向の座標を表し、「926」はY座標、換言すれば、横方向の座標を表す。文字列の座標原点及び文字列の領域長の単位は、「ドット」である。
また、図5(B)は、当該部分定義情報が、項目分類が「通貨」であること、編集形式が「¥−−−,−−9」であること、負の数は「−」で表示されること、通貨記号は「¥」であること等を定義する情報を含むことを示す。
なお、図5(A)は、タブ「プロパティ」に属する項目について示す。また、図5(B)は、タブ「編集形式」に属する項目について示す。従って、項目名「営業1課売上げ」についての部分定義情報は、実際には、例えばタブ「フォント」に属する項目等によっても定義される。従って、「¥−−,−−−,−−9」についての部分定義情報は、実際には、例えばタブ「プロパティ」に属する項目等によっても定義される。
図4の帳票定義情報において、抽出可能な情報は、「売上日」「営業1課」等の項目名、項目種別、罫線の座標、文字列の座標原点、文字列の領域長等である。
具体的には、図5(A)において、例えば、「営業1課売上げ」という項目名、「営業1課売上げ」という文字列の座標原点(90,926)、「営業1課売上げ」という文字列の領域長「1176」が、抽出可能な情報である。また、図5(B)において、例えば、「通貨」という項目分類、編集形式「¥−−,−−−,−−9」、通貨記号「¥」が、抽出可能な情報である。この例では、例えば「営業1課売上げ」という項目名、「通貨」という項目分類、換言すれば、項目種別が、メタ情報として抽出される。なお、項目名や項目種別以外の情報をメタ情報として抽出するようにしても良い。
例えば、作成部4は、帳票定義格納部2から読み出した帳票定義情報に基づいて、図3の帳票又は帳票出力データのフォーマットを生成する。例えば、「営業1課売上げ」という文字列が、その部分定義情報に従って、座標原点(90,926)の矩形に配置される。また、複数の罫線が、それらの部分定義情報に従って、配置される。
更に、例えば、作成部4は、データ格納部3から読み出したデータに基づいて、図3の帳票又は帳票出力データのフォーマットに数値を当て嵌める。例えば、記号「/」を2桁の数字で挟んだ形式のデータが、売上日「Z9/Z9」に当て嵌められる。また、先頭の記号「¥」に7桁の数字が続く形式のデータが、売上げ「¥−−,−−−,−−9」に嵌められる。
ここで、部分定義情報は、図4に示すように、「Z9/Z9」「¥−−,−−−,−−9」・・・の1行しか存在しない。一方、部分出力データは、図3に示すように、「 1/ 5」〜「 1/19」の10行分が存在する。なお、これは、後述するように、帳票定義情報と帳票出力データとを直接対比できない一因となる。
実際には、作成部4は、データ格納部3から読み出したデータにおいて、例えば「営業1課売上げ」と「 1/ 5」と「¥3,500,000」とが記号「,」で区切られている場合に、「営業1課売上げ」の「 1/ 5」の欄に「3,500,000」を当て嵌める。そして、更に、その次に、「営業1課売上げ」と「 1/ 9」と「¥1,000,000」とが記号「,」で区切られている場合に、「営業1課売上げ」の「 1/ 9」の欄に「1,000,000」を当て嵌める。これにより、1行の部分定義情報に対応して、複数の部分出力データが生成される。
次に、メタ情報処理部6による、メタ情報を埋め込まれた帳票出力データ90の作成について、図6〜図15を参照して、説明する。前述したように、メタ情報付き帳票格納部9に格納されるメタ情報を埋め込まれた帳票出力データ90は、帳票定義格納部2に格納された帳票定義情報と帳票出力データ格納部5に格納された帳票出力データとに基づいて作成され、メタ情報付き帳票格納部9に格納される。
実際の同定処理に先立って、同定処理部7は、同定処理の前処理を実行する。同定処理の前処理としては、用紙サイズについての処理、余白についての処理、及び、拡大縮小についての処理がある。同定処理の前処理は、メタ情報処理部6が実行するようにしても良い。
同定処理の前処理において、同定処理部7は、用紙サイズについての処理を実行する。例えば、帳票定義情報がA4版の帳票について定義しており、一方、帳票出力データがB5版の帳票についてのものであるとする。この場合、両者は、異なる帳票についての情報又はデータである可能性が高く、同定処理が無駄になる可能性が高い。そこで、同定処理部7は、帳票定義情報の用紙サイズと帳票出力データの用紙サイズとが一致する場合に、同定処理を実行する。用紙の大きさは、例えば、帳票定義情報及び帳票出力データにおいて、用紙の版数を用いて規定される。
具体的には、同定処理部7は、帳票定義格納部2から読み出した帳票定義情報から、用紙の版数に基づいて、第1の用紙サイズを算出する。また、同定処理部7は、帳票出力データ格納部5から読み出した帳票出力データから、用紙の版数に基づいて、第2の用紙サイズを算出する。第1の用紙サイズと第2の用紙サイズとが一致する場合に、同定処理部7は、帳票定義情報の複数の部分定義情報と帳票出力データの複数の部分出力データとの同定を行う処理を実行する。
また、同定処理の前処理において、同定処理部7は、余白についての処理を実行する。例えば、帳票定義情報には存在しない余白が、帳票出力データに付加される場合がある。これは、例えば、帳票出力データを印刷出力する形式に変換する場合に、プリンタにより付加される領域であり、印刷が不可能な領域である。
この余白の存在により、図6及び図7に示すように、帳票定義情報における罫線の開始位置と、帳票出力データにおける罫線の開始位置とが異なる場合がある。罫線の開始位置とは、図6の帳票定義情報における罫線の左上の角の位置、又は、図7の帳票出力データにおける罫線の左上の角の位置である。具体的には、図6及び図7において、丸で囲んだ数字1により示すように、帳票定義情報の原点座標から罫線の開始位置までの距離と、帳票出力データの原点座標から罫線の開始位置までの距離とが異なる場合がある。
なお、例えば、図面において丸で囲んだ「数字1」を、明細書においては「符号#1」ということとする。他の丸で囲んだ数字についても、同様である。
この場合、帳票定義情報に含まれる部分定義情報と、帳票出力データに含まれる部分出力データとを、直接比較しても、両者が一致しない可能性が高く、同定処理が無駄になる可能性が高い。そこで、同定処理部7は、帳票定義情報における罫線の開始位置左上の角の位置と、帳票出力データにおける罫線の開始位置とが一致する場合に、同定処理を実行する。
具体的には、同定処理部7は、帳票定義格納部2から読み出した帳票定義情報における予め定められた位置の第1の座標を抽出する。第1の座標は、例えば、図6の帳票定義情報において最初に現れる罫線の開始位置である。また、同定処理部7は、帳票出力データ格納部5から読み出した帳票出力データにおける予め定められた位置の第2の座標を抽出する。第2の座標は、例えば、図7の帳票出力データおいて最初に現れる罫線の開始位置である。
最初に現れる罫線は、帳票定義情報又は帳票出力データにおいて、最小のX座標を有し、かつ、最小のY座標を有する罫線である。以上は、文字列等の罫線以外のものの抽出についても同様である。
更に、同定処理部7は、第1の座標と第2の座標との誤差を算出する。この誤差が余白に相当する。更に、同定処理部7は、誤差に基づいて、帳票定義格納部2から読み出した帳票定義情報を補正した後に、帳票定義情報の複数の部分定義情報と帳票出力データの複数の部分出力データとの同定を行う処理を実行する。
更に、同定処理の前処理において、同定処理部7は、拡大縮小についての処理を実行する。例えば、帳票定義情報において定義されたサイズよりも、帳票出力データが拡大又は縮小されている場合がある。
この拡大又は縮小により、図6の帳票定義情報における罫線の定義された位置と、図7の帳票出力データにおける罫線の位置とが異なる場合がある。具体的には、図6及び図7において符号#1により示すように、帳票定義情報の原点座標から罫線の開始位置までの距離と、帳票出力データの原点座標から罫線の開始位置までの距離とが異なる場合がある。
この場合、帳票定義情報に含まれる部分定義情報と、帳票出力データに含まれる部分出力データとを、直接比較しても、両者が一致しない可能性が高く、同定処理が無駄になる可能性が高い。そこで、同定処理部7は、帳票定義情報における罫線の位置と、帳票出力データにおける罫線の位置とが一致する場合に、同定処理を実行する。
具体的には、同定処理部7は、帳票定義格納部2から読み出した帳票定義情報において、最初に現れる第1の罫線から次に存在する第2の罫線までの第1の距離を算出する。第1の距離は、例えば、図6の帳票定義情報において、最初に現れる縦方向の罫線と、次に現れる縦方向の罫線との間の距離である。換言すれば、第1の距離は、図6において、文字列「売上日」を挟む左右の罫線の距離である。また、同定処理部7は、帳票出力データ格納部5から読み出した帳票出力データにおいて、最初に現れる第3の罫線から次に存在する第4の罫線までの第2の距離を算出する。第2の距離は、例えば、図7の帳票出力データにおいて、最初に現れる縦方向の罫線と、次に現れる縦方向の罫線との間の距離である。換言すれば、第2の距離は、図7において、文字列「売上日」を挟む左右の罫線の距離である。
なお、第1の距離として、図6の帳票定義情報において、最初に現れる横方向の罫線と、次に現れる横方向の罫線との間の距離を用いるようにしても良い。この場合、第2の距離として、図7の帳票出力データにおいて、最初に現れる横方向の罫線と、次に現れる横方向の罫線との間の距離が用いられる。
更に、同定処理部7は、第1の距離と第2の距離との比を算出する。更に、同定処理部7は、この比に基づいて、帳票定義格納部2から読み出した帳票定義情報を補正した後に、帳票定義情報の複数の部分定義情報と帳票出力データの複数の部分出力データとの同定を行う処理を実行する。
同定処理の前処理の後に、同定処理部7は、図6及び図7に示すように、例えば罫線についての同定処理を実行する。帳票定義情報又は帳票出力データのいずれかに全く罫線が存在しない場合、罫線についての同定処理は実行されない。
具体的には、同定処理部7は、予め定められた順で、図6の帳票定義情報における罫線についての部分定義情報と、図7の帳票出力データにおける罫線についての部分帳票出力データとの同定を行う。ここで、前述したように、例えば、図6における「売上日」の行数よりも図7における「売上日」の行数が多く、従って、図6の罫線の数よりも図7の罫線の数が多い。このため、同定処理部7は、実際には、図7の帳票出力データにおける罫線についての部分帳票出力データを1個取り出して、図6の帳票定義情報における罫線についての部分定義情報と比較する。
例えば、同定処理部7は、縦方向の罫線についての同定処理を実行し、その後、横方向の罫線についての同定処理を実行する。横方向の罫線についての同定処理を先に実行するようにしても良い。更に、縦方向の罫線についての同定処理において、同定処理部7は、図6及び図7において符号#1〜#3により示すように、始点のY座標の値が小さい罫線から順に同定処理を実行し、始点のY座標の値が同一である場合には、始点のX座標の値が小さい罫線から順に同定処理を実行する。また、横方向の罫線についての同定処理において、同定処理部7は、始点のX座標の値が小さい罫線から順に同定処理を実行し、始点のX座標の値が同一である場合には、始点のY座標の値が小さい罫線から順に同定処理を実行する。
X座標及びY座標は、後述するように、部分定義情報又は部分出力データに含まれる。X座標及びY座標は、原点座標からのX方向及びY方向の距離を表す。帳票定義情報の原点座標は、帳票定義情報に含まれる。帳票出力データの原点座標は、帳票出力データに含まれる。
以上から、同定処理部7は、最初に、図7の帳票出力データにおいて、項目名「売上日」の矩形の左辺である罫線、「 1/ 5」の矩形の左辺である罫線、・・の順で、このY座標を有する縦方向の罫線について、同定処理を実行する。この後、同定処理部7は、図7の帳票出力データにおいて、項目名「売上日」の矩形の右辺である罫線、「 1/ 5」の矩形の右辺である罫線、・・の順で、このY座標を有する縦方向の罫線について、同定処理を実行する。
また、前述したように、部分定義情報における「Z9/Z9」の1行に対して、部分出力データは、「 1/ 5」〜「 1/19」の10行分が存在する。従って、「Z9/Z9」についての1個の部分定義情報に対して、複数の罫線についての部分出力データが同定されることになる。この場合、同定処理部7は、帳票出力データにおいて、複数の罫線についての部分出力データに対して、同一の罫線名に罫線番号を付加して区別する。文字列等の罫線以外の物についても同様である。
更に、同定処理部7は、図7の帳票出力データにおいて、Y座標の最も大きい縦方向の罫線について同定処理を終了した後、更に、図7の帳票出力データにおいて、項目名「部署別売上げ一覧」の下線である罫線、項目名「売上日」の矩形の上辺である罫線、「営業1課」の矩形の上辺である罫線、・・の順で、このX座標を有する横方向の罫線について、同定処理を実行する。この後、同定処理部7は、図7の帳票出力データにおいて、項目名「 1/ 5」の矩形の上辺である罫線、「¥3,500,000」の矩形の上辺である罫線、・・の順で、このX座標を有する横方向の罫線について、同定処理を実行する。
前述したように、帳票定義情報における文字列と帳票出力データにおける文字列が一致するとしても、余白や拡大縮小により、両者の位置が異なる場合がある。また、例えば、部分定義情報「Z9/Z9」と部分出力データ「 1/ 5」とは、文字列としては、直接には一致しない。このような場合でも、全ての罫線について同定処理を実行することにより、罫線についての同定処理に基づいて、文字列の同定を容易にすることができる。
同定処理の前処理の後であって、罫線についての同定処理の後、同定処理部7は、図8及び図9に示すように、例えば文字列についての同定処理を実行する。
具体的には、同定処理部7は、予め定められた順で、図8の帳票定義情報における文字列についての部分定義情報と、図9の帳票出力データにおける文字列についての部分帳票出力データとの同定を行う。ここで、前述したように、例えば、図8における「売上日」の行数よりも図9における「売上日」の行数が多い。このため、同定処理部7は、実際には、図9の帳票出力データにおける文字列についての部分帳票出力データを1個取り出して、図8の帳票定義情報における文字列についての部分定義情報と比較する。
例えば、同定処理部7は、図9において符号#1〜#3により示すように、上の行から下の行の方向へ、順に文字列についての同定処理を実行する。換言すれば、X座標の小さい順に同定処理が実行される。更に、同定処理部7は、同一の行において、左から右の方向へ、順に同定処理を実行する。換言すれば、X座標が同一である場合には、Y座標の小さい順に同定処理が実行される。
この時、文字列についての同定処理において、罫線についての同定処理の結果が用いられる。帳票定義情報及び帳票出力データにおいて、相互に同定された2本の罫線に挟まれた文字列は、同一の文字列である可能性が高い。一方、本来は同一の文字列であるにも拘わらず、帳票定義情報における文字列と帳票出力データにおける文字列とが異なる場合がある。そこで、同定処理部7は、異なる文字を含む文字列であっても、当該文字列が帳票定義情報及び帳票出力データにおいて相互に同定された2本の罫線に挟まれている場合には、当該文字列の同定を行う。
以上から、同定処理部7は、最初に、図9の帳票出力データにおいて、文字列「部署別売上げ一覧」「○○○○株式会社」「売上げ集計表」「単位:円」「売上日」「営業1課」「営業2課」・・の順で、同定処理を実行する。
次に、埋め込み処理部8が実行するメタ情報の埋め込み処理について、図10〜図15を参照して、説明する。
埋め込み処理部8は、同定処理部7において部分定義情報と部分出力データとが同定された場合に、部分出力データに同定された部分定義情報からメタ情報を抽出する。例えば、埋め込み処理部8は、図10に示すように、項目名「営業1課売上げ」の部分定義情報が部分出力データと同定された場合、項目名「営業1課売上げ」の部分定義情報から、メタ情報を抽出する。メタ情報としては、例えば、項目名、文字列の座標原点、文字列の領域長が抽出される。なお、図10の項目名「営業1課売上げ」についての部分定義情報は、図5(A)の項目名「営業1課売上げ」についての部分定義情報、換言すれば、図4における、営業1課の売上げである「¥−−,−−−,−−9」についての部分定義情報を示す。埋め込み処理部8は、抽出されたメタ情報を、項目名「営業1課売上げ」の部分定義情報に同定された部分出力データに埋め込む。
メタ情報を部分定義情報から抽出できるのは、図11に示すように、各々の部分定義情報がメタ情報を含むからである。図11において、文字列特徴情報、矩形特徴情報、画像特徴情報、直線特徴情報、角丸矩形特徴情報が、各々、部分定義情報である。換言すれば、例えば、文字列の部分定義情報が、帳票定義情報における文字列特徴情報である。
例えば、帳票定義情報における文字列特徴情報は、項目定義属性情報として、文字列、文字列開始座標等を含み、メタ情報として、項目名、項目種別等を含む。従って、帳票定義情報における文字列特徴情報に基づいて、項目名を抽出し、文字列開始座標を文字列の座標原点として抽出し、文字列長を文字列の領域長として抽出することができる。
なお、図11において、直線特徴情報は、矩形特徴情報と角丸矩形特徴情報とから、直線項目名を用いて参照される。従って、実際には、矩形特徴情報及び角丸矩形特徴情報は、各々、4個の直線特徴情報を参照する。
これに対して、図12に示すように、各々の部分出力データは、メタ情報を含まない。
図12において、文字列特徴情報、矩形特徴情報、画像特徴情報、直線特徴情報、角丸矩形特徴情報が、各々、部分出力データである。換言すれば、例えば、文字列の部分出力データが、帳票出力データにおける文字列特徴情報である。
例えば、帳票出力データにおける文字列特徴情報は、項目定義属性情報として、文字列、文字列開始座標等を含むが、メタ情報を含まない。従って、帳票出力データにおける文字列特徴情報からはメタ情報を抽出することができない。
また、帳票出力データにおける文字列特徴情報は、図11に示すように、その末尾にメタ情報を付加することができない。例えば、PDF(Portable Document Format)に従う帳票出力データにおいては、そのフォーマットの規定により、文字列特徴情報の末尾にメタ情報を付加することができない。
そこで、埋め込み処理部8は、帳票出力データにおける部分出力データの内部に、メタ情報を埋め込む。これにより、帳票出力データのフォーマットの規定に従いつつ、帳票出力データにメタ情報を持たせることができる。
図13〜図15は、帳票出力データへのメタ情報の埋め込みについての説明図である。
例えば、図13(A)に示す部分定義情報の全体を示すと、図13(B)に示すようになるとする。図13(A)の部分定義情報は、図4における「営業1課」の売上高の「合計」を示す「¥−−,−−−,−−−,−−9」についての部分定義情報を示すものとする。
ここで、帳票出力データにおいて、「営業1課」の売上高の「合計」が、図14(A)及び図14(B)に示すように、「¥77,200,000」であるとする。なお、図14(A)は及び図14(B)は、図4における「営業1課」の売上高の「合計」に関連する部分を抜粋して示す。
この場合、帳票出力データにおいて、「営業1課」の売上高の「合計」についての部分出力データは、図14(C)に示すようになる。図14(C)から判るように、「営業1課」の売上高の「合計」についての部分出力データは、メタ情報を含まない。
これに対して、メタ情報付き帳票格納部9に格納された、メタ情報が埋め込まれた帳票出力データ90は、図15に示すようになる。図14(C)と図15との対比から判るように、「営業1課」の売上高の「合計」についての部分出力データには、その中間部分に、メタ情報「営業1課売上げ合計―001」が埋め込まれている。これにより、PDFのような帳票出力データのフォーマットに従いつつ、帳票出力データにメタ情報を持たせることができる。
図16は、メタ情報の埋め込み処理フローであり、図17及び図18は、同定処理フローである。
図16において、同定処理部7は、帳票定義格納部2から帳票定義情報(Fd)を読み込み(ステップS11)、帳票出力データ格納部5から帳票出力データ(Fo)を読み込む(ステップS12)。ステップS11とステップS12は、いずれの処理を先に実行しても良い。
この後、同定処理部7は、帳票定義情報(Fd)の用紙サイズを算出すると共に、帳票定義情報(Fd)の原点座標を取得する(ステップS13)。また、同定処理部7は、帳票出力データ(Fo)の用紙サイズを算出すると共に、帳票出力データ(Fo)の原点座標を取得する(ステップS14)。ステップS13とステップS14は、いずれの処理を先に実行しても良い。
なお、実際には、ステップS13及びステップS14の実行の後、同定処理部7は、前述したように、帳票定義情報(Fd)の用紙サイズと帳票出力データ(Fo)の用紙サイズとを比較し、両者が一致しない場合には、処理を終了する。両者が一致する場合には、ステップS15が実行される。
この後、同定処理部7は、帳票定義情報(Fd)において、左上の端部にある、換言すれば、最少のX座標及び最少のY座標を有する部分定義情報を取得して、取得した座標を処理対象座標(A1)とする(ステップS15)。また、同定処理部7は、帳票出力データ(Fo)において、左上の端部にある、換言すれば、最少のX座標及び最少のY座標を有する部分出力データを取得して、取得した座標を処理対象座標(B1)とする(ステップS16)。ステップS15とステップS16は、いずれの処理を先に実行しても良い。
この後、同定処理部7は、帳票定義情報(Fd)における処理対象座標(A1)と、帳票出力データ(Fo)における処理対象座標(B1)との誤差を算出し、これを補正値(C)とし、帳票出力データ(Fo)の全座標を、補正値(C)により補正する(ステップS17)。
なお、実際には、ステップS17において、補正値(C)による補正処理の実行の後、同定処理部7は、前述したように、帳票定義情報(Fd)と帳票出力データ(Fo)との拡大縮小の比を算出し、これを用いて、再度、帳票出力データ(Fo)の全座標を補正する。これにより、帳票定義情報(Fd)と帳票出力データ(Fo)とを比較することができる。
以上により、同定処理部7は、同定処理の前処理を終了して、罫線の同定処理を実行し、その後、文字列等の罫線以外のものの同定処理を実行する。換言すれば、同定処理部7は、同定処理の対象を罫線としてステップS18〜S114を実行し、その後、同定処理の対象を文字列等の罫線以外のものとしてステップS18〜S114を実行する。同定処理の対象が罫線であるか罫線以外であるかは、部分定義情報又は部分出力データに基づいて判断される。
同定処理部7は、帳票定義情報(Fd)における処理対象座標(A1)を有する部分定義情報から、当該部分定義情報の終点を抽出し、処理対象座標(A2)とする(ステップS18)。また、同定処理部7は、帳票出力データ(Fo)における処理対象座標(B1)を有する部分出力データから、当該部分定義情報の終点を抽出し、処理対象座標(B2)とする(ステップS19)。ステップS18とステップS19は、いずれの処理を先に実行しても良い。
この後、同定処理部7は、処理対象座標(A1)及び処理対象座標(A2)と、処理対象座標(B1)及び処理対象座標(B2)とが一致するか否かを判断する(ステップS110)。一致判断において、処理対象座標(A1)及び処理対象座標(A2)として、後述する図17の処理により帳票定義情報(Fd)から抽出された特徴情報に含まれる座標が用いられる。また、処理対象座標(B1)及び処理対象座標(B2)として、後述する図18の処理により帳票出力データ(Fo)から抽出された特徴情報に含まれる座標が用いられる。なお、一致判断において、後述する図17の処理により帳票定義情報(Fd)から抽出された特徴情報と、後述する図18の処理により帳票出力データ(Fo)から抽出された特徴情報とを用いるようにしても良い。
ステップS110において、両者が一致しない場合(ステップS110 No)、ステップS111は省略され、ステップS113が実行される。
ステップS110において、両者が一致する場合(ステップS110 Yes)、同定処理部7は、両者が相互に同定されたと判断し、この同定結果に基づいて、埋め込み処理部8が、帳票定義情報(Fd)における処理対象座標(A1)を有する部分定義情報からメタ情報を抽出し、帳票出力データ(Fo)における処理対象座標(B1)を有する部分出力データに埋め込む(ステップS111)。
この後、同定処理部7は、帳票定義情報(Fd)において、Y方向、換言すれば、縦方向に、処理対象座標の次の候補点を探索し、抽出された候補点を新たな処理対象座標(A1)とし(ステップS112)、ステップS18を繰り返す。また、同定処理部7は、帳票出力データ(Fo)において、Y方向、換言すれば、縦方向に、処理対象座標の次の候補点を探索し、抽出された候補点を新たな処理対象座標(B1)とする(ステップS113)。ステップS111の後、ステップS112とステップS113は、いずれの処理を先に実行しても良い。ステップS112については、図17を参照して後述する。ステップS113については、図18を参照して後述する。
ステップS113の後、同定処理部7は、ステップS113において、候補点が有るか否かを判断する(ステップS114)。候補点が有る場合(ステップS114 Yes)、ステップS19が繰り返される。候補点が無い場合(ステップS114 No)、処理を終了する。
図17において、同定処理部7は、帳票定義情報(Fd)において、左上から右下の方向に向けて、開始座標から、新たな処理対象(オブジェクト)を探索する(ステップS21)。探索は、左上から右下の方向に向けて、換言すれば、X座標又はY座標が大きくなる方向へ向けて、実行される。開始座標は、処理対象座標(A1)の終点の座標(A2)である。以下の説明において、処理対象を単に「オブジェクト」と言うこととする。
この後、同定処理部7は、探索したオブジェクトの種類が何であるかを判断する(ステップS22)。
オブジェクトの種類が文字、換言すれば、文字列である場合、同定処理部7は、当該文字列の部分定義情報から、当該文字列の開始座標及び終点座標を抽出し(ステップS23)、更に、当該文字列の特徴情報を抽出する(ステップS24)。終点座標は、ステップS18における終点座標として用いられる。当該文字列の特徴情報としては、前記開始座標及び終点座標に加えて、例えば、文字コード、フォントのサイズ、フォントの種別、文字の色等がある。
オブジェクトの種類が直線、換言すれば、罫線である場合、同定処理部7は、当該直線の部分定義情報から、当該直線の始点座標及び終点座標を抽出し(ステップS25)、更に、当該直線の特徴情報を抽出する(ステップS26)。終点座標は、ステップS18における終点座標として用いられる。当該直線の特徴情報としては、前記始点座標及び終点座標に加えて、例えば、線幅、線種、線の色等がある。
なお、前述したように、罫線についての処理が、文字列等の罫線以外のオブジェクトについての処理よりも、先行して実行される。罫線についての処理においてはステップS25が選択され、罫線以外のオブジェクトについての処理においてはステップS23、S27、S210、S213が選択される。
オブジェクトの種類が矩形である場合、同定処理部7は、当該矩形を4本の直線に分解し(ステップS27)、当該矩形の部分定義情報から、4本の直線の各々について、当該直線の始点座標及び終点座標を抽出し(ステップS28)、更に、当該矩形の特徴情報を抽出する(ステップS29)。4本の直線の終点座標のいずれかが、ステップS18における終点座標として用いられる。当該矩形の特徴情報としては、前記4本の直線の始点座標及び終点座標に加えて、例えば、矩形の原点座標、原点座標の対角の座標、矩形の色、矩形の線種、矩形の線幅等がある。
オブジェクトの種類が角丸矩形である場合、同定処理部7は、当該角丸矩形から4本の直線成分のみを抽出し(ステップS210)、当該角丸矩形の部分定義情報から、4本の直線の各々について、当該直線の始点座標及び終点座標を抽出し(ステップS211)、更に、当該角丸矩形の特徴情報を抽出する(ステップS212)。4本の直線の終点座標のいずれかが、ステップS18における終点座標として用いられる。当該角丸矩形の特徴情報としては、前記4本の直線の始点座標及び終点座標に加えて、例えば、角丸矩形の原点座標、原点座標の対角の座標、角丸矩形の色、角丸矩形の線種、角丸矩形の線幅等がある。
オブジェクトの種類が画像である場合、同定処理部7は、当該画像の部分定義情報から、当該画像の矩形領域を抽出し(ステップS213)、更に、当該画像の特徴情報を抽出する(ステップS214)。矩形領域の終点座標は、ステップS18における終点座標として用いられる。当該画像の特徴情報としては、前記矩形領域に加えて、例えば、当該画像それ自体がある。
ステップS24、S26、S29、S212、S214の後、同定処理部7は、ステップS24、S26、S29、S212、S214において抽出したオブジェクトの原点座標を、帳票出力データ(Fo)における開始座標として(ステップS215)、処理を終了する。
一方、ステップS22において、オブジェクトの種類が、文字列(図17においては「文字」と表示)、直線、矩形、角丸矩形、又は、画像でない場合、同定処理部7は、次のオブジェクトを探索する(ステップS216)。これにより、ステップS21が繰り返される。
図18に示す処理は、基本的には、図17に示す処理と同様の処理である。従って、図18について、図17の説明と重複する説明は、省略する。
図18において、同定処理部7は、帳票出力データ(Fo)において、左上から右下の方向に向けて、開始座標から、新たなオブジェクトを探索する(ステップS31)。開始座標は、始点の座標(B1)を有するオブジェクトの終点の座標(B2)である。
この後、同定処理部7は、探索したオブジェクトの種類が何であるかを判断する(ステップS32)。
オブジェクトの種類が文字、換言すれば、文字列である場合、同定処理部7は、当該文字列の部分出力データから、当該文字列の開始座標及び終点座標を抽出し(ステップS33)、更に、当該文字列の特徴情報を抽出する(ステップS34)。終点座標は、ステップS19における終点座標として用いられる。
オブジェクトの種類が直線、換言すれば、罫線である場合、同定処理部7は、当該直線の部分出力データから、当該直線の始点座標及び終点座標を抽出し(ステップS35)、更に、当該直線の特徴情報を抽出する(ステップS36)。終点座標は、ステップS19における終点座標として用いられる。
なお、前述したように、罫線についての処理が、文字列等の罫線以外のオブジェクトについての処理よりも、先行して実行される。罫線についての処理においてはステップS35が選択され、罫線以外のオブジェクトについての処理においてはステップS33、S37、S310、S313が選択される。
オブジェクトの種類が矩形である場合、同定処理部7は、当該矩形を4本の直線に分解し(ステップS37)、当該矩形の部分出力データから、4本の直線の各々について、当該直線の始点座標及び終点座標を抽出し(ステップS38)、更に、当該矩形の特徴情報を抽出する(ステップS39)。4本の直線の終点座標のいずれかが、ステップS19における終点座標として用いられる。
オブジェクトの種類が角丸矩形である場合、同定処理部7は、当該角丸矩形から4本の直線成分のみを抽出し(ステップS310)、当該角丸矩形の部分出力データから、4本の直線の各々について、当該直線の始点座標及び終点座標を抽出し(ステップS311)、更に、当該角丸矩形の特徴情報を抽出する(ステップS312)。4本の直線の終点座標のいずれかが、ステップS19における終点座標として用いられる。
オブジェクトの種類が画像である場合、同定処理部7は、当該画像の部分出力データから、当該画像の矩形領域を抽出し(ステップS313)、更に、当該画像の特徴情報を抽出する(ステップS314)。矩形領域の終点座標は、ステップS19における終点座標として用いられる。
ステップS34、S36、S39、S312、S314の後、同定処理部7は、ステップS34、S36、S39、S312、S314において抽出したオブジェクトの原点座標を、帳票出力データ(Fo)における開始座標として(ステップS315)、処理を終了する。
一方、ステップS32において、オブジェクトの種類が、文字列(図18においては「文字」と表示)、直線、矩形、角丸矩形、又は、画像でない場合、同定処理部7は、次のオブジェクトを探索する(ステップS316)。これにより、ステップS31が繰り返される。