以下、本発明の実施の形態を図面を参照して説明する。
(第1の実施の形態)
図1Aは、従来の帳票読取システムのブロック図である。
従来の帳票読取システムは、帳票読取装置0102、業務制御装置0104及び業務データベース装置(業務DB装置)0106を備える。また、従来の帳票読取システムは、帳票定義辞書0103、テキスト変換定義辞書0105及びデータベース定義辞書(DB定義辞書)0107等を含む複数の辞書を管理する。
帳票定義辞書0103は、当該帳票読取システムによって処理される帳票に関する定義を管理する辞書である。例えば、帳票定義辞書0103は、帳票に記載されている枠の構造及び帳票に記載されている罫線の構造に関する定義を含む。また、帳票定義辞書0103は、枠、罫線及び文字列の帳票における座標等を含む。
テキスト変換定義辞書0105は、帳票に記載されている内容に関する定義を管理する辞書である。例えば、テキスト変換定義辞書0105は、帳票の読取対象領域と当該読取対象領域の記載内容との対応を含む。
DB定義辞書0107は、業務DB装置0106がデータベースにデータを格納する際に使用する定義を管理する辞書である。
次に、従来の帳票読取システムの処理を説明する。本実施の形態では、紙の帳票及び紙の文書をまとめて紙帳票と呼ぶ。
まず、従来の帳票読取システムに紙帳票0101が入力される。すると、帳票読取装置0102が、入力された紙帳票0101を撮像することによって、当該紙帳票の画像データを取得する。次に、帳票読取装置0102は、帳票定義辞書0103に基づいて、帳票上の読取対象領域を特定する。なお、読取対象領域は、帳票読取装置0102によって読み取られるデータ(項目記載内容)が記載されている領域である。
次に、帳票読取装置0102は、読取対象領域の項目記載内容の表記に応じて、画像データの読取対象領域を読み取る。例えば、項目記載内容が氏名であれば、標準的な姓名の表記が定義された辞書を参照しながら、画像データの読取対象領域を読み取る。そして、帳票読取装置0102は、読取結果を業務制御装置0104に送る。
すると、業務制御装置0104は、テキスト処理によって、帳票読取装置0102の読取結果を変換する。具体的には、一行に複数の項目記載内容が記載されている場合、業務制御装置0104は、一行のテキストデータを項目記載内容ごとに分割する。例えば、業務制御装置0104は、一行のテキストデータを、項目名と金額とに分割したり、住所と名前とに分割したりする。次に、業務制御装置0104は、帳票読取装置0102の読取結果に、テキストの属性のタグを付ける。これによって、業務制御装置0104は、帳票読取装置0102の読取結果を、データベースに格納し易いデータ形式に変換する。
なお、タグ付けには、例えば、XML等のタグ言語が用いられる。また、読取結果は、CSV等の区切り記号によって分割されたテキストデータとして表現されてもよい。なお、タグを付された(構造化テキストで表現された)データを、インスタンスと呼ぶ。
次に、業務DB装置0106は、DB定義辞書0107に基づいて、インスタンスの中の必要なデータをデータベースに格納する。例えば、インスタンスがXMLインスタンスであれば、業務DB装置0106は、タグを参照しながら、インスタンスの中の必要なデータをデータベースに格納する。また、インスタンスがCSVであれば、業務DB装置0106は、テキストが何番目の区切りであるかを考慮しながら、インスタンスの中の必要なデータをデータベースに格納する。
図1Bは、本発明の第1の実施の形態の帳票読取システムのブロック図である。
本実施の形態の帳票読取システムは、帳票読取装置0108及び業務処理装置0109を備える。また、帳票読取システムは、XSLスタイルシート0110を管理する。なお、具体的な処理の内容については後述する。
XSLスタイルシート0110は、図5で後述するが、帳票に記載されている項目の半順序構造を含む。
業務処理装置0109は、帳票のデータが必要になると、読取クエリを帳票読取装置0108へ送信する。読取クエリには、帳票の読み取りに必要な情報が含まれる。つまり、読取クエリには、XSLスタイルシート0110の内容が反映されている。
すると、帳票読取装置0108は、XSLスタイルシート0110に基づいて、紙帳票0101の読取対象領域を特定する。次に、特定した読取対象領域を読み取る。次に、読取結果をインスタンスに変換する。そして、当該インスタンスを業務処理装置0109に送信する。
業務処理装置0109は、帳票読取装置0108からインスタンスを受信する。そして、受信したインスタンスを解析することによって、帳票読取装置0108の読取結果をデータベースへ格納する。このとき、業務処理装置0109は、DB定義を参照しながら、帳票読取装置0108の読取結果をデータベースへ格納する。DB定義は、業務処理装置0109がデータベースにデータを格納する際に使用する情報である。
なお、業務処理装置0109は、帳票のデータが必要になると、読取クエリを帳票読取装置0108に逐次送信する。帳票読取装置0108は、読取クエリを受信する度に読取処理(オンライン駆動)を行ってもよいし、複数の読取クエリを受信した後にまとめて読取処理(バッチ駆動)を行ってもよい。
本実施の形態の帳票読取システムは、帳票定義、テキスト定義及びDB定義に関する情報を一元化した情報と同等なXSLスタイルシート0110を管理する。これによって、帳票読取装置0108と業務処理装置0109とが連携して動作する。
図2は、本発明の第1の実施の形態の帳票読取システムの処理の説明図である。
まず、帳票提出側のシステム0201の処理を説明する。
帳票提出側のシステム0201は、データベースA0202、帳票提出側業務処理装置0203及び印刷装置0205を備える。データベースA0202には、帳票提出側の業務等に関するデータが格納されている。
また、帳票提出側のシステム0201は、XSLスタイルシート0110を管理している。XSLスタイルシート0110は、例えば、印刷フォーマットを定めるXML−FOに基づくものである。
帳票提出側のシステム0201の処理について説明する。
まず、帳票提出側業務処理装置0203は、必要なデータをデータベースA0202から抽出する。次に、抽出したデータをXMLに変換する。これによって、抽出したデータをインスタンス0204に変換する。
次に、帳票提出側業務処理装置0203は、インスタンス0204を印刷装置0205に送信する。
すると、印刷装置0205は、受信したインスタンス0204とXSLスタイルシート0110とを掛け合わせたものを印刷する。これによって、印刷装置0205は、紙帳票0101を印刷する。
帳票提出側のシステム0201のユーザは、印刷された紙帳票0101を帳票受付側のシステム0208のユーザへ郵便等で送る。
次に、帳票受付側のシステム0208を説明する。
帳票受付側のシステム0208は、例えば、本実施の形態の帳票読取システムである。帳票受付側のシステム0208は、データベースB0209、業務処理装置0109及び帳票読取装置0108を備える。データベースB0209には、紙帳票0101から読み取られたデータが格納されている。
また、帳票受付側のシステム0208は、XSLスタイルシート0110を管理している。
帳票受付側のシステム0208の処理を説明する。
まず、業務処理装置0109は、データベースB0209にアクセスすることによって、必要なデータを決定する。
このとき、業務処理装置0109は、XSLスタイルシート0110を解釈することによって、紙帳票0101の内容及び体裁を把握する。次に、業務処理装置0109は、把握した紙帳票0101の内容及び体裁を参照して、読取クエリ0211を作成する。そして、作成した読取クエリ0211を帳票読取装置0108に送信する。なお、当該読取クエリは、業務処理装置0109が必要とするデータの読み取り要求である。
帳票読取装置0108は、業務処理装置0109から読取クエリ0211を受信する。すると、帳票読取装置0108は、紙帳票0101を撮像することによって、紙帳票0101の画像データを取得する。なお、帳票読取装置0108は、紙帳票0101を予め撮像しておいてもよいし、読取クエリを受けてから紙帳票0101を撮像してもよい。
次に、帳票読取装置0108は、XSLスタイルシート0110を参照して、読取対象領域を特定する。次に、特定した読取対象領域を画像データから読み取る。次に、帳票読取装置0108は、読取結果をインスタンス0212に変換する。そして、当該インスタンスを業務処理装置0109に送信する。
業務処理装置0109は、帳票読取装置0108からインスタンス0212を受信する。次に、受信したインスタンス0212のデータをデータベースB0209へ格納する。
以上のように、帳票提出側のシステム0201と帳票受付側のシステム0208とが、同一のXSLスタイルシート0110を管理することによって、別個にXSLスタイルシート0110を作成する手間を省略できる。このため、システムのユーザは、業務を効率よく遂行できる。また、システムのユーザは、印刷形式のデータに基づいてXSLスタイルシート0110を作成する。よって、システムのユーザは、帳票定義辞書、テキスト変換辞書定義及びDB定義辞書よりも容易に、XSLスタイルシート0110を作成できる。
図3は、本発明の第1の実施の形態の帳票読取システムのブロック図である。
帳票読取システムは、前述した図2においては、帳票受付側のシステム0208に該当する。
帳票読取システムは、帳票読取装置0108及び業務処理装置0109を備える。
帳票読取装置0108は、画像撮像部0301、操作部0302、表示部0303、外部記憶装置0304、メモリ0305、中央演算部0306及び通信部0307を備える。
画像撮像部0301、操作部0302、表示部0303、外部記憶装置0304、メモリ0305、中央演算部0306及び通信部0307は、内部バス0308によって相互に接続されている。
画像撮像部0301は、紙帳票0101を撮像することによって、紙帳票0101の画像データを取得する。そして、画像撮像部0301は、取得した画像データを外部記憶装置0304又はメモリ0305に格納する。
操作部0302は、ユーザによって操作されることによって、各種情報が入力される。表示部0303は、各種情報を表示する。
外部記憶装置0304は、各種情報を記憶する。メモリ0305は、プログラムを含む各種情報を記憶する。
例えば、外部記憶装置0304又はメモリ0305は、帳票形式の定義、帳票に含まれる項目名及び帳票に含まれる項目記載内容の表記等を記憶している。これらの情報は、文書構造解析処理において使用される。
また、メモリ0305は、データベースクエリ処理のデーモンプログラムを記憶している。データベースクエリ処理のデーモンプログラムは、読取クエリを受けると、当該読取クエリの処理に必要なプログラムを起動する。
中央演算部0306は、メモリ0305に記憶されているプログラムを実行することによって、各種処理を行う。
通信部0307は、外部通信線0309を介して業務処理装置0109に接続されている。
業務処理装置0109は、操作部0315、表示部0316、外部記憶装置0310、メモリ0311、中央演算部0312及び通信部0313を備える。
操作部0315、表示部0316、外部記憶装置0310、メモリ0311、中央演算部0312及び通信部0313は、内部バス0314によって相互に接続されている。
操作部0315は、ユーザによって操作されることによって、各種情報が入力される。表示部0316は、各種情報を表示する。
外部記憶装置0310は、各種情報を記憶する。メモリ0311は、プログラムを含む各種情報を記憶する。
例えば、外部記憶装置0310又はメモリ0311は、データベース、XSLスタイルシート0110及び帳票読取装置0108に送信する読取クエリを記憶している。
通信部0313は、外部通信線0309を介して帳票読取装置0108に接続されている。
中央演算部0312は、メモリ0311に記憶されているプログラムを実行することによって、各種処理を行う。
例えば、業務処理装置0109の中央演算部0312は、業務遂行のタイミングに合わせて、XSLスタイルシート0110に関する情報又は読取クエリを帳票読取装置0108に送信する。
すると、帳票読取装置0108の中央演算部0306は、受信したXSLスタイルシート0110に関する情報又は読取クエリを、メモリ0305に格納する。
次に、帳票読取装置0108の中央演算部0306は、メモリ0305に格納されているXSLスタイルシート0110に関する情報及び読取クエリに基づいて、帳票の画像データの読取対象領域を特定する。そして、特定した読取対象領域を読み取る。
次に、読取結果をインスタンスに変換する。そして、当該インスタンスを業務処理装置0109に送信する。
業務処理装置0109の中央演算部0312は、受信したインスタンスをメモリ0311に格納する。
次に、業務処理装置0109の中央演算部0312は、メモリ0311に格納されているインスタンスのデータを、データベースへ格納する。また、メモリ0311に格納されているインスタンスを用いて、業務処理を行ってもよい。
そして、業務処理装置0109の中央演算部0312は、これらの処理の結果を表示部0316に表示させる。ユーザは、表示部0316に表示された画像データを閲覧する。そして、ユーザは、必要に応じて、業務処理に関する指示を操作部0315に入力する。
なお、帳票読取装置0108及び業務処理装置0109は、一つの装置で実現されてもよい。
次に、帳票読取装置0108が業務処理装置0109に送信するインスタンスの一例として、XMLインスタンスを説明する。
図4は、本発明の第1の実施の形態のXMLインスタンス0402の説明図である。
行番号0401は、XMLインスタンス0402の説明のために付されたものであり、実際には付されていない。
本説明図のXMLインスタンス0402では、日立製作所が品物を送った取引先に関する情報がXMLタグ付きで記載されている。
1行目には、当該XMLによって扱われる言語体系が記載されている。
2行目には、当該データを表示又は印刷する際に使われるスタイルシートの名称が記載されている。3行目の<取引一覧>タグから20行目の</取引一覧>タグの間には、取引先に関するデータが記載されている。
5行目の<取引>タグから11行目の</取引>タグの間には、ある取引先に関するデータが記載されている。同様に、12行目の<取引>タグから18行目の</取引>タグの間にも、他の取引先に関するデータが記載されている。
6行目及び13行目には、当該取引先の郵便番号が記載されている。また、7行目及び14行目には、当該取引先の住所が記載されている。また、8行目及び15行目には、当該取引先の名称が記載されている。また、9行目及び16行目には、日立製作所が当該取引先に送った品物の金額が記載されている。また、10行目及び17行目には、当該取引先の区分の一意な識別子が記載されている。
すべての取引先に関する情報が記載された後に、</取引一覧>タグが記載される。</取引一覧>タグは、取引一覧の終了を示すタグである。本説明図では、20行目に</取引一覧>タグが記載されている。
図5は、本発明の第1の実施の形態のXSLスタイルシート0502の説明図である。
行番号0501は、XSLスタイルシート0502の説明のために付されたものであり、実際には付されていない。
XSLスタイルシート0502には、データベースのデータを視覚化する方法が定義されている。
本説明図のXSLスタイルシート0502は、XMLインスタンス0402(図4)をHTML形式に変換する。
1行目には、当該XMLによって扱われる言語体系が記載されている。
2行目には、当該XSLスタイルシート0502によって変換する旨の宣言が記載されている。3行目には、XMLインスタンス0402のルートノード以下のデータを変換する旨の宣言が記載されている。なお、ルートノードは、すべてのタグを束ねる最上位の概念である。
4行目には、データをHTMLへ変換する旨の宣言が記載されている。
5行目から7行目は、ヘッダ部である。なお、一般的に、HTMLのヘッダ部は、表示されない。
6行目には、XMLインスタンス0402の「取引一覧/社名」を挿入する旨が記載されている。なお、XMLインスタンス0402は、「/」記号で区切られたタグのツリー表記で記載される。従って、XMLインスタンス0402の「取引一覧/社名」とは、図4の3行目の<取引一覧>タグと図4の20行目の</取引一覧>タグとに囲まれ、且つ、<社名>と</社名>とに囲まれている情報である。図4のXMLインスタンス0402の場合、「取引一覧/社名」は、「株式会社日立製作所」を示す。
8行目から29行目は、ボディー部である。
9行目には、「取引一覧表:」という表示に続いて、XMLインスタンス0402の「取引一覧/社名」を表示する旨が記載されている。
10行目には、「table」というHTMLの予約語が記載されている。更に、10行目には、線の太さが3である表を表示する旨が記載されている。
10行目の<table>タグから28行目の</table>タグの間には、表の詳細な内容が記載されている。
11行目には、<tr>タグが記載されている。<tr>タグは、表の行を区切る旨のタグである。
なお、11行名の<tr>タグから16行目の</tr>タグまでの間には、表の一行目に関する記載が記載されている。
12行目から15行目には、表の一行目のそれぞれのカラムに格納する情報が記載されている。なお、それぞれのカラムに格納される情報は、<td>タグと</td>タグとで囲まれている。12行目から15行目には、<td>と</td>とで囲まれている情報が4つ存在する。よって、表は四列から構成される。
表の一行目のそれぞれのカラムには、「区分」、「送付先」、「郵便番号 送付先住所」及び「購入額」の順に格納される。つまり、表の一行目は、項目名となる。
17行目の<xsl:for−each>タグから27行目の</xsl:for−each>タグの間には、表の二行目以降に関する定義が記載されている。17行目の<xsl:for−each>タグは、すべてのXMLインスタンス0402を走査して、指定条件にあったデータをHTMLに挿入する旨のタグである。つまり、17行目の<xsl:for−each>タグから27行目の</xsl:for−each>タグの間の処理を繰り返す。
更に、17行目には、表に格納するデータの条件が指定されている。なお、表に格納するデータの条件は、selectという指定子によって指定されている。具体的には、17行目には、「select=“取引一覧/取引”」が記載されている。つまり、XMLインスタンス0402の<取引>タグと</取引>タグとで囲まれるすべてのすべての部分に対して、「for」以下(18行目から26行目まで)を繰り返す。これによって、XMLインスタンス0402がHTMLに変換される。
18行目には、<tr>タグが記載されている。また、26行目には、</tr>タグが記載されている。よって、それぞれの取引先に関する情報は、一行で表される。
18行目の<tr>タグと26行目には、</tr>タグの間には、<td>タグと</td>タグとで囲まれている情報が四つ存在する。よって、表は、四列から構成される。
19行目から25行目には、表の二行目以降のそれぞれのカラムに格納する情報が記載されている。
表の一列目のカラムには、XMLインスタンス0402の<区分>と</区分>とで囲まれている情報が格納される。また、表の二列目のカラムには、<名前>と</名前>とで囲まれている情報が格納される。
また、表の三列目のカラムには、<郵便>と</郵便>とで囲まれている情報及び<住所>と</住所>とで囲まれている情報が格納される。なお、22行目には、<br>タグが記載されている。<br>タグは、改行を挿入するタグである。よって、表の三列目のカラムには、<郵便>と</郵便>とで囲まれている情報の後に、改行が格納される。
また、表の四列目のカラムには、<金額>と</金額>とで囲まれている情報が格納される。
以上のように、XSLスタイルシート0502には、項目名の半順序構造及び項目記載内容の半順序構造が定義される。なお、半順序構造とは、並び順が緩く定義された構造である。例えば、半順序構造では、項目A、項目B、項目C・・・という順で左から右へ並ぶ構造が定義されてもよい。また、半順序構造では、項目A、項目B、項目C・・・という順で上から下へ並ぶ構造が定義されてもよい。なお、半順序構造では、項目が省略されてもよい。例えば、項目Bが省略された場合、半順序構造は、項目A、項目C・・・という順で並ぶことを意味する。
なお、XSLスタイルシート0502は、項目の並びの半順序構造だけでなく、項目の位置座標等を含んでいてもよい。
例えば、帳票読取装置0108は、XSLスタイルシート0502を解釈することによって、項目の半順序構造を取得する。そして、取得した半順序構造に基づいて、読取対象領域を特定する。
これよって、帳票読取装置0108は、項目名の配置と項目記載内容の配置との対応が不規則な帳票であっても、読取対象領域を特定できる。また、帳票読取装置0108は、帳票の差異を吸収しながら、帳票の読取範囲を特定できる。帳票の差異は、例えば、帳票の位置のずれ又は帳票のサイズのずれ等である。
なお、XSLスタイルシート0502は、従来の枠構造定義と似ている。しかし、従来の枠構造定義は、項目の並びを厳密に定義している。また、従来の枠構造定義は、項目を分割する枠又は罫線の構造を定義している。また、従来の枠構造定義は、繰り返しの構造を定義できない。
一方、XSLスタイルシート0502は、項目の並びを緩く規定する半順序構造が記述されている。また、XSLスタイルシート0502は、項目を分割する枠及び罫線の有無に関係なく、項目の並びを定義できる。また、XSLスタイルシート0502は、繰返しの構造を定義できる。これによって、帳票読取装置0108は、一つのXSLスタイルシート0502に基づいて、項目の省略、罫線の有無又は項目の配置の違いなどから生じる複数の非定型の帳票を読み取ることができる。
図6は、本発明の第1の実施の形態の帳票読取システムが表示した表の説明図である。
本説明図の表は、XSLスタイルシート0502(図5)によって、XMLインスタンス0402(図4)をHTML形式に変換されたものである。
表の上には、表の見出し0601として「取引一覧表:・・・」が表示されている。また、表は四列から構成される。
表の一行目には、項目名が格納されている。表の二行目以降には、それぞれの取引先に関するデータが格納されている。
表は、区分0602、送付先0603、郵便番号及び送付先住所0604並びに購入額0605を含む。
区分0602には、当該取引先の区分の一意な識別子が格納される。送付先0603には、当該取引先の名称が格納される。郵便番号及び送付先住所0604には、当該取引先の郵便番号及び当該取引先の住所が格納される。なお、郵便番号と住所との間には、改行が挿入される。購入額0604は、日立製作所が当該取引先に送った品物の金額が格納される。
図7は、本発明の第1の実施の形態の帳票読取装置0108のデータ読取プログラム0702の説明図である。
行番号0701は、データ読取プログラム0702の説明のために付されたものであり、実際には付されていない。
本説明図のデータ読取プログラム0702は、帳票読取装置0108と業務処理装置0109とが連携する帳票読取システムにおけるプログラムである。また、データ読取プログラム0702は、帳票読取装置が読取クエリを受信する度に読取処理(オンライン駆動)を行う場合のプログラムである。
なお、データ読取プログラム0702は、業務処理装置0109の外部記憶装置0310又はメモリ0311に記憶されている。そして、業務処理装置0109の中央演算部0312が、データ読込プログラム0702を実行する。
データ読取プログラム0702の2行目には、XMLPaperというクラスによってクエリ対応型の帳票読取装置0108を制御する旨が記載されている。3行目には、XMLPaperQueryAnswerというクラスによってクエリの回答を制御する旨が記載されている。
6行目には、画像データをメモリに取り込むコマンドが記載されている。帳票読取装置0108は、このコマンドを受けると、画像データを自身のメモリ0305に格納する。このとき、帳票読取装置0108は、画像撮像部0301を用いて、紙帳票から画像データを取得してもよい。
7行目では、読取処理(クエリ処理)を行う条件が、セッション開始条件によって指定されている。なお、セッションとは、仮想の処理単位である。本説明図のデータ読取プログラムでは、XSLスタイルシートが指定されている。つまり、業務処理装置0109は、XSLスタイルシートを帳票読取装置0108に送信する。すると、帳票読取装置0108は、受信したXSLスタイルシートに基づいて、帳票定義を作成する。そして、作成した帳票定義を、外部記憶装置0304又はメモリ305に格納する。なお、当該処理の詳細は、図9で説明する。
8行目から11行目では、読取クエリに対応して読取処理を行う旨が記載されている。読取クエリは、業務処理装置0109が帳票読取装置0108に送信する。9行目によると、XMLPaperオブジェクトに対してクエリ文が入力される。そして、その結果がXMLPaperQueryAnswerオブジェクトとして返される。つまり、帳票読取装置0108は、読取クエリを受信し、受信した読取クエリに対応する処理を行う。そして、処理結果を業務処理装置0109に送信する。すると、業務処理装置0109は、受信した処理結果を自身のメモリ0311に格納する。
第10行では、読取クエリの処理結果を出力する旨が記載されている。出力の対象は、ファイル、画面、プロセス間を繋ぐパイプ、共有メモリ又はデータベース等である。ここでは、業務処理装置0109が、帳票読取装置0108の処理結果を表示部0316に表示する。なお、業務処理装置0109は、帳票読取装置0108の処理結果をインスタンスとして受信する。よって、業務処理装置0109は、受信したインスタンスのデータをを容易にデータベースに格納できる。
図8は、本発明の第1の実施の形態の帳票読取システムのタイミングチャートである。
まず、業務処理装置0109には、帳票読取システムで処理される帳票に対応するXSLスタイルシートが設定される(0803)。帳票読取システムで処理される帳票は、例えば、年金帳票、申し込み帳票又はレセプト等である。
次に、業務処理装置0109は、設定されたXSLスタイルシートのデータを帳票読取装置0108に送信する。
帳票読取装置0108は、XSLスタイルシートのデータを業務処理装置0109から受信する(0805)。次に、帳票読取装置0108は、受信したXSLスタイルシートのデータを解釈する(0806)。そして、XSLスタイルシートのデータを、読取処理に適した形に変換する。なお、XSLスタイルシートのデータ変換については、図9で詳細を説明する。
次に、業務処理装置0109は、読み取りを要求する帳票の画像データを帳票読取装置0108に送信する。なお、業務処理装置0109は、帳票の画像データを送信する代わりに、帳票の読取要求を帳票読取装置0108に送信してもよい(0807)。
帳票読取装置0108は、帳票の画像データ又は帳票の読取要求を受信する(0809)。帳票読取装置0108は、帳票の画像データを受信すると、受信した画像データをメモリ0305に格納する。一方、帳票読取装置0108は、帳票の読取要求を受信すると、画像撮像部0301を用いて紙帳票の画像データを取得する。そして、取得した紙帳票の画像データをメモリ0305に格納する。
次に、帳票読取装置0108は、メモリ0305に格納されている画像データに対して読取前処理を行う(810)。読取前処理0810は、図9で詳細を説明する。
なお、業務処理装置0109は、ステップ0803及びステップ0807のいずれを先に実行してもよい。例えば、帳票読取装置0108が同一の帳票を連続して読み取る場合、業務処理装置0109は、ステップ803を先に実行する。そして、業務処理装置0109は、連続して読み取る同一の帳票に対して、ステップ807を繰り返せばよい。
また、帳票読取装置0108が異なる帳票を順番に読み取る場合、業務処理装置0109は、ステップ807を先に実行する。その後に、業務処理装置0109には、XSLスタイルシートが設定される。
次に、業務処理装置0109は、読取クエリを帳票読取装置0108に送信する(811)。なお、読取クエリでは、画像データから読み取られる領域(読取対象領域)又は画像データから読み取られるデータの項目等が指定される。
帳票読取装置0108は、読取クエリを業務処理装置0109から受信する(0813)。帳票読取装置0108は、受信した読取クエリに基づいて、画像データの読取対象領域を特定する。そして、帳票読取装置0108は、特定した読取対象領域を読み取る(0814)。
次に、帳票読取装置0108は、読取結果をインスタンスへ変換する。そして、当該インスタンスを業務処理装置0109へ送信する(0817)。
業務処理装置0109は、インスタンスを帳票読取装置0108から受信する(0815)。業務処理装置0109は、受信したインスタンスのデータをデータベースに格納する(0818)。
次に、業務処理装置0109は、読み取りを要求するデータが同一の画像データ中に存在するかどうかを判定する(0819)。読み取りを要求するデータが存在する場合には、ステップ811に戻る。そして、読取クエリを再度送信する。
一方、読み取りを要求するデータが存在しない場合には、業務処理装置0109は、他に処理する帳票が存在するかどうかを判定する(0820)。他に処理する帳票が存在すると、ステップ0807に戻る。そして、当該他の帳票を処理する。
一方、他に処理する帳票が存在しないと、本処理を終了する。
図9は、本発明の第1の実施の形態の帳票読取装置0108の機能のブロック図である。
帳票読取装置0108は、画像撮像部0301を備える。また、帳票読取装置0108のメモリ0305は、帳票定義、帳票理解モジュール0908及びXSL解釈モジュール0913を記憶している。帳票定義は、構造定義0910、項目定義0911及び読取定義0912を含む。また、読取定義0912は、文字識別辞書及び表記定義を含む。なお、文字識別辞書及び表記定義は、図11で詳細を説明する。
構造定義0910は、帳票に記載されている枠及び罫線の配置に関する情報を含む。項目定義0911は、項目名と項目記載内容との対応に関する情報を含む。なお、項目記載内容は、例えば、年月日文字列、金額文字列、ID数字文字列又は一般単語文字列等である。
帳票読取装置0108の中央演算部0306は、メモリ0305に記憶されている帳票理解モジュール0908及びXSL解釈モジュール0913を実行する。そして、当該モジュール0908、0913の実行結果を業務処理装置0109に送信する。
まず、帳票読取装置0108の画像撮像部0301は、紙帳票を撮像することによって、紙帳票の画像データを取得する。
次に、帳票理解モジュール0908は、画像撮像部0301が取得した画像データを処理する。帳票理解モジュール0908は、帳票定義を用いて、画像データを処理する。
XSL解釈モジュール0913は、指定されたXSLスタイルシートを解釈する。これによって、XSL解釈モジュール0913は、XSLスタイルシートを、構造定義0910、項目定義0911及び読取定義0912に変換する。
なお、帳票読取装置0108は、XSLスタイルシートを指定されない場合、従来技術と同様に、帳票定義に関する辞書を用いる。
帳票理解モジュール0908は、要素抽出モジュール0902、帳票判別モジュール0903、構造解析モジュール0904、項目解析モジュール0905、文字列読取モジュール0906及びクエリ解釈モジュール0907を含む。
要素抽出モジュール0902は、画像データから帳票の構成要素を抽出する。なお、帳票の構成要素は、図10で詳細を説明するが、線候補、セル候補、枠候補、空白罫線候補、文字要素候補、文字候補及び文字列候補等を含む。
帳票判別モジュール0903は、帳票ID又はバーコード等を画像データから読み取る。これによって、帳票判別モジュール0903は、読取対象の帳票の種類を判別する。なお、画像データに帳票IDが存在しない場合、帳票判別モジュール0903は省略される。
構造解析モジュール0904は、画像データから罫線及び枠を抽出する。そして、構造解析モジュール0904は、当該画像データに対応する構造定義0910を用いて、抽出した罫線及び枠を構造解析する。これによって、構造解析モジュール0904は、読取対象となる枠の位置を特定する。なお、構造解析モジュール0904には、例えば、特許文献1に記載されている技術が用いられる。
なお、画像データに対応する構造定義0910が存在しない場合又は項目解析モジュール0905のみによって処理を実行する場合、構造解析モジュール904は省略される。
構造解析モジュール0904が枠構造を一意に特定できない場合、項目解析モジュール0905及び文字列読取モジュール0906の少なくとも一方が、処理を行う。
項目解析モジュール0905は、項目定義0911を用いて、項目名に対応する文字列を(項目名文字列)特定する。文字列読取モジュール0906は、文字列表記定義0912を用いて、項目記載内容に対応する文字列を読み取る。
クエリ解釈モジュール0907は、読取クエリに応じて、読取結果をマッピングする。そして、クエリ解釈モジュール0907は、読取クエリに対する回答を、インスタンスとして業務処理装置0109に送信する。
これらのモジュール0902〜0907は、それぞれ独立して動作するのでなく、必要なタイミング(イベント駆動型)で動作する。例えば、項目定義0911が表記知識によって定義されている場合、項目解析モジュール0905は、文字列読取モジュール0906を起動する。そして、文字列読取モジュール0906が、読取範囲の文字列候補を読み取る。そして、項目解析モジュール0905は、文字列読取モジュール0906の読取結果を用いて、項目名文字列を特定する。
次に、XSL解釈モジュール0913及び帳票理解モジュール0908の処理を具体的に説明する。ここでは、インスタンスは、図4で説明したXMLインスタンス0402とする。また、図5で説明したXSLスタイルシート0502が指定されたとする。また、帳票の画像データは、図6で説明した表とする。
まず、XSL解釈モジュール0913は、指定されたXSLスタイルシート0502を解釈する。これによって、XSL解釈モジュール0913は、帳票の構造を解釈する。具体的には、XSL解釈モジュール0913は、当該帳票が四列N行(Nは不定)の表構造であると解釈する。そこで、XSL解釈モジュール0913は、四列N行の表形式を構造定義0910に登録する。
次に、XSL解釈モジュール0913は、XSLスタイルシート0502の12行目から15行目を解釈することによって、「区分」、「送付先」、「郵便番号 送付先住所」及び「購入額」を項目名として項目定義0911に登録する。次に、XSL解釈モジュール0913は、XSLスタイルシート0502の19行目から25行目を解釈することによって、それぞれの項目名に対して、「区分」、「名前」、「郵番 住所」及び「金額」を項目記載内容として項目定義0911に登録する。更に、XSL解釈モジュール0913は、項目名と項目記載内容とが上下で対応することを、項目定義0911に登録する。
例えば、帳票理解モジュール0908が、住所に関する読取クエリを受信すると、画像データ(図6)の表の三列目のカラムを選択する。次に、選択したカラムの二行目以下の文字列を抽出する。なぜなら、XSLスタイルシート0502の22行目及び23行目によると、画像データの表の三列目には住所及び郵便番号列が格納される。そして、郵便番号と住所との間には、改行が挿入されるからである。
次に、帳票理解モジュール0908は、抽出した文字列を、XMLインスタンス0402に変換する。そして、変換したXMLインスタンス0402を業務処理装置0109に送信する。
図10は、本発明の第1の実施の形態の帳票理解モジュール0908が処理するデータの階層の説明図である。
帳票理解モジュール0908は、画像データを徐々に抽象化することによって、データベースに格納しやすい形式のデータに変換する。そして、変換したデータを業務処理装置0109に送信する。
要素抽出モジュール0902は、画像データ1001から、ラン1002及び連結成分1003などの要素を抽出する。次に、要素抽出モジュール0902は、抽出したラン1002及び連結成分1003に基づいて、線候補1004及び文字要素候補1007を作成する。線候補1004は、ラン1002の集まりで表現される。また、線候補1004は、端点の座標及び線の太さを持つ数字の組み合わせとして表現されてもよい。文字要素候補1007は、ラン1002の集まりで表現される。また、文字要素候補1007は、当該文字要素候補1007を包含する外接矩形座標として表現されてもよい。
要素抽出モジュール0902は、線候補1004の並びを解析することによって、セル候補1005を作成する。例えば、上下四隅に罫線が存在する最小の空間をセルと定義したとする。この場合、要素抽出モジュール0902は、座標的に上下に隣接する罫線のペア及び座標的に左右に隣接する罫線のペアをセル候補1005とする。
文字候補1008は、文字要素候補1007の集まりで構成される。要素抽出モジュール0902は、文字要素候補1007の上下の空白の大きさ、文字要素候補1007の外接矩形の重なり度合い及び文字要素候補1007同士のサイズ比等に基づいて、文字要素候補1007同士の近接度合いを算出する。そして、算出した近接度合いに応じて、文字要素候補1007同士を融合又は離散する。これによって、文字候補1008を作成する。
枠候補1006は、セル候補1005の集まりを含む表構造である。また、文字列候補1009は、近接する文字候補1008の集まりで構成される文字列である。
要素抽出モジュール0902は、連結成分1003に基づいて、空白罫線候補1010を求める。空白罫線候補1010は、行間空白、列間空白及び文字間空白等を含む。また、空白罫線候補1010は、文字列候補1009が分割される際のセパレータとして使われる。また、空白罫線候補1010は、枠候補1006が作成される際のセパレータとして使われる。
帳票理解モジュール0908は、空白罫線候補1010をセパレータとして使用することによって、項目記載内容を分割する罫線又は枠が存在しない帳票からでも必要なデータを読み取ることができる。
以上のような要素候補の集まりによって帳票が構成される。
帳票判別モジュール0903は、文字列候補1009の中から、読取対象となる帳票の帳票IDを読み取る。帳票IDは、帳票の種別の一意な識別子である。
また、構造解析モジュール0904は、構造定義0910を参照して、枠候補1006、セル候補1005及び文字列候補1009の中から読取対象領域を特定する。読取対象領域は、読取対象のデータセル1012の領域又は読取対象のデータ文字列1014の領域である。
項目解析モジュール0905は、項目定義0911を参照して、項目名文字列1013を確定する。文字列読取モジュール0906は、読取定義0912を参照して、データ文字列1014を読み取る。クエリ解釈モジュール0907は、読取クエリに応じて、データセル1012、項目名文字列1013及びデータ文字列1014をマッピングする。
帳票理解モジュール0908は、コンポーネントを扱う。コンポーネントは、画像1001、ラン1002、連結成分1003、線候補1004、文字要素候補1007、セル候補1005、文字候補1008、枠候補1006及び文字列候補1009等である。また、帳票理解モジュール0908は、明示的に区切られないデータを区分するために、空白罫線候補1010を使用する。
コンポーネントは、本説明図の右側に行くほど抽象度が高い。抽象度の高いコンポーネントは、多くの情報が含まれているので扱いやすいが、抽出及び認識に失敗する可能性が高い。逆に、コンポーネントは、本説明図の左側に行くほど抽象度が低い。よって、読取対象領域を指定する場合、これらのコンポーネントに対応した指定方法が選択されるとよい。
帳票1011は、これらのコンポーネントによって構成される。帳票1011は、読取クエリに対して構造が一意に確定する。
図11は、本発明の第1の実施の形態の文字列読取モジュール0906の処理のフローチャートである。
文字列読取モジュール0906の処理の前には、項目名理解処理及び項目記載内容理解処理が行われる。これによって、読取対象領域(文字ブロック)が指定される。
文字列読取モジュール0906は、指定された読取対象領域を順に選択する(1101)。次に、選択した読取対象領域から文字パタン候補を切り出す(1102)。
次に、文字識別辞書1106を参照して、切り出した文字パタン候補を識別する(1103)。次に、表記定義1107を参照して、表記解析を行う(1104)。具体的には、識別した文字パタン候補に対応する文字コードを一意に確定する。なお、帳票読取装置0108のメモリ0305は、文字識別辞書1106及び表記定義1107を記憶している。
次に、文字列読取モジュール0906は、読み取った文字パタン候補の尤度を算出する。例えば、文字識別の尤度及び文字の並びの尤度に基づいて、文字パタン候補の尤度を算出する。そして、算出した尤度の大きい順に、文字パタン候補を並び替え、読取結果とする(1105)。
次に、文字列読取モジュール0906の具体的な処理を説明する。
図12Aは、本発明の第1の実施の形態の文字列読取モジュール0906が読み取る文字列の説明図である。
以下、文字列読取モジュール0906が、本説明図の文字列(読取対象文字列)を読み取る場合を説明する。文字列読取モジュール0906は、読取対象文字列から、文字パタンと推定される部分を様々に切り出す。これによって、文字パタン候補を作成する。そして、作成した文字パタン候補を文字識別することによって、文字列仮説を作成する。
図12Bは、本発明の第1の実施の形態の文字列読取モジュール0906が作成した文字列仮説の説明図である。
文字列仮説は、文字パタン候補、文字識別文字コード1203及び文字パタン候補間の接続関係の情報を含む。なお、文字識別文字コード1203は、文字識別の類似度に応じて順位付けされている。
文字列仮説では、文字パタン候補がアーク1201として表現される。また、文字パタンの境界が有向グラフであるノード1202として表現される。
それぞれの文字パタン候補には、境界ID、文字識別文字コード1203及び識別類似度1204が含まれる。境界IDは、ノード1202の一意な識別子である。
有向グラフとして表現された文字列仮説を、候補文字ネットワークと呼ぶ。
次に、文字列読取モジュール0906は、表記定義1107を参照して、文字列仮説から文字列パスを特定する。なお、文字列パスは、一意に確定した文字コード及び文字コードに対応する文字パタンの並びを含む。
具体的には、文字列読取モジュール0906は、文字列仮説と表記定義1107とを比較する。そして、表記定義1107に含まれる文字列を文字列仮説の中から検索する。
図12Cは、本発明の第1の実施の形態の表記定義1107の一例の説明図である。
表記定義1107は、表記知識に関する定義である。本説明図の表記定義1107によると、「明治」、「大正」又は「昭和」のいずれかが元号1205として記載される。また、元号1205に続いて、数字列1206が記載される。また、数字列1206に続いて、「年」、「・」又は「/」のいずれかが区切り記号として記載される。
また、本説明図の表記定義1107では、元号1205及び数字列1206に下線が引かれている。これは、元号1205及び数字列1206が読取りの際に区分されるべき情報であることを意味する。
表記定義1107は、本説明図以外の方法で表現されていてもよい。表記定義1107を表現する方法として、トライ法又は文脈自由文法などが知られている(例えば、特許文献4参照。)。
文字列読取モジュール0906は、文字列仮説上で文字識別類似度が最大となるコストパス問題を解くことによって、文字列コード及び文字列パスを特定する。
更に、表記定義1107は、文字列の区分先に関する定義を含むので、項目記載内容の文字列を分割する処理に使用される。
図12Dは、本発明の第1の実施の形態の文字列パスの説明図である。
文字列読取モジュール0906は、このような処理によって、本説明図のような文字列パスを特定する。そして、特定した文字列パスが読取結果となる。
次に、読取クエリを説明する。
図13は、本発明の第1の実施の形態の読取クエリの種類の説明図である。
XMLに対するクエリは、ロケーションパスによってXML文書におけるノードの位置を指定する。以下、XMLに対するクエリの一例を記載する。
/ロケーションステップ
/ロケーションステップ
/・・・
/軸::ノードテスト[述語(条件式)]
一方、XMLPaperに対するクエリ1301には、領域指定クエリ1302、セル指定クエリ1303、表記読取クエリ1304、マーク指定クエリ1305、項目読取クエリ1306及び表読取クエリ1307等の要素クエリが含まれる。
領域指定クエリ1302は、読取対象領域(又は読取対象座標)を指定した読取要求である。セル指定クエリ1303は、表のカラムを指定した読取要求である。表記読取クエリ1304は、特定の表記列に関する読取要求である。マーク指定クエリ1305は、チェックマークなどのマーキング項目を指定した読取要求である。項目読取クエリ1306は、項目名に対応するデータの読取要求である。表読取クエリ1307は、表構造の二次元的な位置を指定した読取要求である。
読取対象は、単独のクエリで指定されてもよいし、複数のクエリを組み合わせによって指定されてもよい。例えば、「XXセルの中にあるYYというキーワード」のように読取対象が指定されてもよい。また、「複合セルで、セルXXの中にはYYという項目名がある」のように、読取対象が指定されてもよ。
クエリ1301は、単独の要素クエリであってもよいし、複数の要素クエリの組み合わせであってもよい。XMLPaperに対するクエリ1301は、入れ子状に括弧が連なる単独のクエリのリストで記述されてもよいし、論理演算AND又はORなどの連結子でクエリを結んだ形式で記述されてもよい。例えば、クエリ1301では、「/Cell(/Area・・・)」又は「/Cell(・・・)&/Area(・・・)」等のようにセルの領域が指定される。
業務処理装置0109は、単純な読取処理を要求する場合には、単独のクエリ1301を帳票読取装置0108に送信する。一方、業務処理装置0109は、複雑な読取処理を要求する場合には、複数のクエリ1301を組み合わせたものを、帳票読取装置0108に送信する。つまり、業務処理装置0109は、要求する処理のレベルに応じたクエリ1301を帳票読取装置0108に送信できる。
本実施の形態によれば、帳票読取装置0108は、XSLスタイルシートを参照することによって、帳票の画像データから適切な情報を読み取ることができる。これによって、ユーザは、帳票定義辞書を作成する手間を省略できる。
(第2の実施の形態)
第2の実施の形態では、帳票読取装置は、XSLスタイルシートを参照せずに、帳票を読み取る。
図14は、本発明の第2の実施の形態の帳票読取システムのブロック図である。
第2の実施の形態の帳票読取システムは、XSLスタイルシートを管理しない。第2の実施の形態の帳票読取システムのそれ以外の構成は、第1の実施の形態の帳票読取システム(図2)と同一である。同一の構成には同一の番号を付し、説明を省略する。
また、第2の実施の形態の帳票提出側の装置は、第1の実施の形態の帳票提出側のシステム0201と同一なので、図示を省略する。
読取クエリでは、読取座標又は半順序構造が指定されてもよい。この場合、読取クエリは、第1の実施の形態のXSLスタイルシートと同様に、配置構造が定義されている。
ただし、第1の実施の形態のXSLスタイルシートには、帳票全体の配置構造が定義されるので、複雑な定義が必要となる。一方、読取クエリには、帳票の部分的な配置構造が定義されるので、複雑な定義が不要である。つまり、帳票読取装置0108がXSLスタイルシートを参照しない場合、帳票の配置構造に関する複雑な定義が不要になる。
しかし、帳票読取装置0108は、XSLスタイルシートを参照しない場合、項目記載内容の領域(読取対象領域)を特定できない。そこで、帳票読取装置0108は、読取クエリに基づいて、読取対象領域を特定しなければならない。
例えば、領域指定クエリ1302及び表読取クエリ1304は、項目名の配置と項目記載内容の配置との対応に関する情報を含むことができる。よって、帳票読取装置0108は、領域指定クエリ1302又は表読取クエリ1304に基づいて、読取対象領域を特定できる。
また、項目読取クエリ1306は、項目記載内容の配置に関する情報を含まない。帳票読取装置0108は、項目読取クエリ1306を受けると、暗黙的知識に基づいて、読取対象領域を特定する。
図15は、本発明の第2の実施の形態の帳票読取装置0108の暗黙的知識の説明図である。
暗黙的知識は、項目名の配置と項目記載内容の配置との対応に関する情報である。
本説明図は、暗黙的知識名1501及び暗黙的知識1502を含む。
暗黙的知識名1501は、暗黙的知識1502の名称である。
本説明図の(A)に示される一対一対応では、項目名と項目記載内容とが左右又は上下に対応する。本説明図の(B)に示される一体多対応では、一つの項目名に対して複数の項目記載内容が対応する。本説明図の(C)に示される階層対応では、複数の項目名を含む。そして、階層対応に含まれるそれぞれの項目名に一つの項目記載内容が対応する。
本説明図の(D)に示されるリスト対応では、一つの項目名に対して複数の項目記載内容が連なっている。そして、同一の項目名に対応する複数の項目記載内容は、上下または左右で一纏まりになっている。
本説明図の(E)に示される二次元対応では、二つの項目名によって項目記載内容が一意に特定される。
本説明図の(F)に示される非直行対応は、例えば、財務諸表等に使用される。非直行対応については、図16で後述する。
帳票読取装置0108は、項目読取クエリを受けると、暗黙的知識の中から、尤もらしい配置関係の暗黙的知識を選択する。例えば、項目名の並びの直線関係及び項目名の配置間隔の一定性などを引数とする尤度関数に基づいて、尤もらしい配置関係の暗黙的知識を選択する。
次に、帳票読取装置0108は、選択した暗黙的知識を用いることによって、画像データの読取対象領域を特定する。そして、読取対象領域を読み取る。
また、読取クエリでは、暗黙的知識と同様の配置関係が指定できてもよい。
図16は、本発明の第2の実施の形態の非直行対応の配置の説明図である。
本説明図では、財務諸表を例として、非直行対応の配置を説明する。
財務諸表には、「決算」、「資本の部」、「不動産」、「現金」及び「株式」が項目名として記載されている。項目名の「不動産」と項目記載内容の「X」とは、左右に対応している。同様に、項目名の「現金」と項目記載内容の「Y」とは、左右に対応している。また、項目名の「株式」と項目記載内容の「Z」とは、左右に対応している。
しかし、項目名の「資本の部」と項目記載内容の「S」とは、左右に対応して配置されていない。同様に、項目名の「決算」と項目記載内容の「T」とは、左右に対応して配置されていない。
つまり、財務諸表は、項目名の配置と項目記載内容の配置との対応が不規則である。
このような場合であっても、帳票読取装置0108は、読取クエリに基づいて、読取対象領域を特定できる。当該読取クエリは、表読取クエリ1307、項目読取クエリ1306及び非直行関係が指定されたクエリの組み合わせである。
例えば、当該読取クエリは、「/TagData(/Tag 資産の部)&非直行対応(/Tag(1、1)、/TagData(X,/Table(/ColNum)−1))」のように記述される。当該読取クエリには、項目名が「資産の部」であると記述されている。また、項目名と項目記載内奥とが非直行対応関係であると記述されている。また、項目名が1行1列であり、項目記載内容が任意の行(X行)のY列にありと記述されている。更に、Y列が「表の列数−1」であると記述されている。
帳票読取装置0108は、このようなクエリを受信すると、非定型の帳票であっても、読取対象領域を特定できる。
以上のように、帳票読取装置0108は、XSLスタイルシートを参照せずに、読取クエリを解釈することによって、帳票を読み取ることができる。