以下、本発明の実施の形態を図面を参照して詳細に説明する。
図1は、本発明の実施形態に係る画像処理装置を含む画像処理システムの概略構成を示す図である。
図1において、画像処理システムは、管理サーバ100と、複数のスキャナ300と、複数のクライアントコンピュータ200とで構成され、これらがLAN等の通信網500を介して通信可能に接続されている。管理サーバ100は、スキャナ300で読み取られた文書や帳票の画像データを受信してデータベース(DB)101に格納し、該画像データを一括して管理している。クライアントコンピュータ200は、ユーザが利用する情報処理装置である。管理サーバ100及びクライアントコンピュータ200上では、不図示のOSやアプリケーションが稼動している。なお、DB101は、クライアントコンピュータ200に実装する構成であってもよい。
画像読取装置であるスキャナ300は、直接またはクライアントコンピュータ200を介して通信網500に接続され、クライアントコンピュータ200や管理サーバ100との通信が可能である。スキャナ300は、例えば、バーコードや一意の番号が付与された文書や帳票を連続して読み取って、得られた画像データをクライアントコンピュータ200や管理サーバ100に送信することができる。
図示例の画像処理システムでは、例えば、クライアントコンピュータ200上でオペレータによる画像読取要求を受け付けると、スキャナ300が帳票等をスキャンし、得られた画像データをクライアントコンピュータ200に送信するように構成されている。クライアントコンピュータ200は、オペレータの要求により、受信した画像データを管理サーバ100に送信するように構成され、管理サーバ100が受信した画像データをDB101に格納するように構成されている。なお、クライアントコンピュータ200上でオペレータによる画像読取要求を受け付けた際に、スキャナ300が読み取った画像データを管理サーバ100に送信するように構成されていてもよい。また、スキャナ300については、これに限定されず、画像読取機能があれば複写機や複合機であってもよい。
図2は、図1におけるクライアントコンピュータ200を構成するハードウェアの概略を示すブロック図である。なお、クライアントコンピュータ200は、管理サーバ100と略同一の構成を有することから、代表してクライアントコンピュータ200について説明する。
クライアントコンピュータ200は、CPU201と、RAM202と、ROM203と、LANアダプタ204と、ビデオアダプタ205と、キーボード206と、マウス207と、ハードディスク(HDD)208と、記憶媒体ドライブ209とを備え、これらがシステムバス210を介して互いに接続されている。
CPU201は、ROM203又はHDD208、記憶媒体ドライブ209(内のCD−ROM等)に記憶されたプログラムをRAM202に順次読み出して後述する各種制御処理を実行する。RAM202は、オペレーティングシステム(OS)の一部やアプリケーションプログラムがロードされると共に、CPU201の制御の下でアプリケーションプログラムを実行する際に使用される配列や変数を含む各種データ等を一時保存するためのメモリである。ROM203には、各ハードウェアの制御プログラム(いわゆるBIOS)等が記憶されている。なお、ROM203は、OSの一部を記憶することもできる。
LANアダプタ(ネットワークインタフェースカード)204は、通信網500等のネットワークに接続するための通信インタフェースである。クライアントコンピュータ200は、画像入力手段としてのLANアダプタ204を介してスキャナ300等から画像を入力する。ビデオアダプタ205は、いわゆるビデオグラフィックアダプタ(VGA)であり、不図示の液晶ディスプレイ等の各種ディスプレイが接続される。
HDD208は、OSや画面情報(itmlやCGI等で記述された、ディスプレイに画面を表示させるための情報)を含む各種アプリケーションプログラムを記憶する。また、HDD208には、画像データ及び該画像データを管理する管理情報と、画像データの送受信(転送含む)プログラム等が記憶されている。さらに、後述するフローチャートのステップを実現するアプリケーションプログラムが記憶されている。記憶媒体ドライブ209は、CD−ROM、DVD−ROM等の記憶媒体からデータやプログラムを読み出し可能な駆動装置である。なお、管理サーバ100の場合は、DB101がHDD208内に設定されていても、外部の記憶装置(不図示)内に設定されていてもよい。
図3は、図1におけるスキャナ300を構成するハードウェアの概略を示すブロック図である。
スキャナ300は、CPU301と、RAM302と、ROM303と、LANアダプタ304と、液晶パネル&I/F305と、通信回線I/F306と、スキャンエンジン307と、ハードディスク(HDD)308とを備え、これらがシステムバス310を介して互いに接続されている。
CPU201は、ROM303又はHDD308に記憶されたプログラムをRAM302に順次読み出して各種制御処理を実行する。RAM302は、CPU301が使用する各種データ等を一時保存するためのメモリである。ROM303には、各種制御プログラムが記憶されている。
LANアダプタ304は、通信網500等のネットワークを介してクライアントコンピュータ200や管理サーバ100に接続するための通信インタフェースである。液晶パネル&I/F305は、タッチパネルを含み、表示機能及びデータ入力機能を有している。通信I/F306は、USBなどのインタフェースを司り、クライアントコンピュータ200との接続を行うことができる。
スキャンエンジン307は、文書や帳票の画像を光学的に読み取って画像データに変換する。HDD308には、システムプログラム等の他に、クライアントコンピュータ200や管理サーバ100へ通信I/F306やLANアダプタ304を介して画像データを転送する転送プログラムが記憶されている。
図4は、クライアントコンピュータ200にて実行される帳票認識処理の全体の流れを示すフローチャートである。
本実施形態における帳票認識処理は、フォーム情報登録処理(ステップS400)と、スキャンニング処理(ステップS401〜S405)とに分けられる。認識処理の対象となる帳票には、マークシート方式(マーク認識処理)と記述方式(文字認識処理)の両方を用いた健康診断の問診票や解答用紙などを含むものとする。
フォーム情報登録処理では、図19に示すようなフォーム(帳票)の原紙画像1900からのタイミングマークの位置情報の取得や、図20に示すような書き込み済みフォームの画像(認識対象の画像)2000に対するOCR処理/OMR処理時に必要な情報の生成(定義)が行われる。なお、OMRは予め決められた位置(記入箇所)をユーザが塗りつぶしたものを認識する技術であるが、これに限ることなく、ユーザが手書きでチェック形式のマークを記入箇所に記入したものを認識する技術を用いても構わない。つまり、認識可能な記号(塗りつぶし記号、チェック記号などのマーク)であれば、どのような形態で記入されたものを認識するように構成してもよい。
スキャンニング処理では、まず、認識対象の画像に対してフォーム認識処理が行われ、認識パターン(OCRパターンともいう)が決定される(ステップS401)。次に、決定した認識パターンに対応するフォーム情報(定義)に従って認識処理(OMR(Optical Mark Reader)処理(マーク認識処理)及びOCR(Optical Character Reader)処理(文字認識処理))が行われる(ステップS402)。次に、ステップS402で得られた認識処理の結果から認識結果表示処理が行われる(ステップS403)。つづいて、認識結果訂正処理(ステップS404)及び登録処理(ステップS405)が順次実施される。これら各処理の詳細については後述する。
図5は、図4のステップS400におけるフォーム情報登録処理の詳細を示すフローチャートである。本処理は、HDD208や記憶媒体ドライブ209から読み出されたプログラムに基づいてCPU201により実行される処理である。なお、スキャナ300で読み取られたフォームとなる画像(原紙画像)またはフォーム作成アプリケーションで生成されたフォームをイメージ化した画像(原紙画像)が記憶媒体ドライブ209(またはHDD208)に画像データとして記憶されているものとする。
図5において、CPU201は、記憶媒体ドライブ209(またはHDD208)からフォームの原紙画像を取得し、不図示の液晶ディスプレイ等に図14に示すようなフォーム定義画面1100を表示する(ステップS501)。
フォーム定義画面1100には、図19に示すようなフォームの原紙画像が表示される表示部1110と、ゾーンIDを入力するためのゾーンID設定欄1200と、ゾーン名称を入力するためのゾーン名称設定欄1201と、ゾーン読み取り属性設定欄1202と、重ね合わせ設定欄1203と、リスト表示設定欄1204と、リスト内容設定欄1205と、キャンセルボタン1120と、登録ボタン1121と、完了ボタン1122とが配置されている。ここでゾーン(領域)とは、フォームの原紙画像において認識処理(OCR処理(文字認識処理)/OMR処理(マーク認識処理))の対象となる領域を意味し、表示部1110に表示された原紙画像上でユーザにより指定される。
ゾーンID設定欄1200では、ユーザが原紙画像上に指定したゾーンの識別情報として、任意のIDを入力することができる。なお、ゾーンID設定欄1200にIDが入力されなかった場合には、CPU201により自動的にゾーンIDが付与される。ゾーン名称設定欄1201では、ユーザが指定したゾーンに対する任意の名称を入力することができる。ゾーン読み取り属性設定欄1202では、ユーザが指定したゾーンに対して実行する処理として「OCR」又は「OMR」を選択することができる。ここで「OCR」が選択されると当該ゾーンがOCR処理され、「OMR」が選択されると当該ゾーンがOMR処理される。重ね合わせ設定欄1203では、ユーザが指定したゾーンとOMR又はOCR処理された認識結果とを重ね合わせて表示するか否かを「ON」又は「OFF」で設定することができる。「ON」が設定された場合には、当該ゾーンの認識結果が、原紙画像のゾーンに対応する位置に重ね合わせて表示される。
リスト表示設定欄1204では、リスト表示の「ON」又は「OFF」を設定することができるが、ゾーン読み取り属性設定欄1202で「OMR」が選択された場合は、自動的にリスト表示が「ON」となる。リスト表示を「OFF」とすることが可能となる場合は、ゾーン読み取り属性設定欄1202で「OCR」が選択された場合である。なお、リスト表示設定欄1204では、リスト表示が「OFF」に設定された場合には、リスト内容設定欄1205に入力できないように構成される。
リスト内容設定欄1205では、例えば、図16(a)に示すように、指定されたゾーン1209に対応する項目名1221を入力することができる。このリスト内容設定欄1205に入力された内容は、例えば、後述する図17に示す認識結果訂正画面1700上のリストボックスに表示される。具体的には、図16(a)において、ゾーン1209〜1211がグループ化されてAAAグループとして設定された場合、リスト内容設定欄1205に入力された項目名1221〜1223(「毎日食べている」、「時々食べている」、「ほとんど食べていない」)がリストボックス1505にリスト表示される。認識結果が誤っていた場合、ユーザはリストボックスに表示されたリストから訂正項目を選択することができる。なお、リスト内容設定欄1205についてはユーザが任意に入力する構成であるが、文字認識を行った結果を入力できるように構成してもよい。
図5に戻り、ステップS501では、CPU201は、ステップS501で取得したフォームの原紙画像に対するフォームIDと、フォーム名称と、フォームイメージ格納情報(原紙画像の保存先パス)をRAM202に一時保存する。フォームIDは、自動付与又はユーザにより入力される。フォーム名称は、ユーザにより入力される。RAM202に一時保存されたフォームID、フォーム名称、及びフォームイメージ格納情報については、後述するステップS515で図12(a)に示すフォーム定義テーブルtb01に保存される。このフォーム定義テーブルtb01は、DB101に保存(登録)されるテーブル情報である。
次に、ステップS502では、CPU201は、原紙画像上のタイミングマークの位置を読み取って、タイミングマークの位置情報(X軸座標、Y軸座標)としてRAM202に一時保存する。タイミングマークは、OCR/OMR処理の対象となるゾーンの位置を特定するための基準値として使用され、例えば、図19に示す原紙画像上のタイミングマーク1901を指す。RAM202に一時保存されたタイミングマーク位置情報については、後述するステップS515で図12(a)に示すフォーム定義テーブルtb01に保存される。なお、図示例のように、フォームの原紙上に複数のタイミングマークを設け、これらからゾーンの位置を特定するように構成してもよい。また、X軸座標を原紙画像の垂直方向とし、Y軸座標を原紙画像の水平方向とする。
ステップS503では、CPU201は、フォーム定義画面1100上の表示部1110に表示された原紙画像上でOCR/OMR処理の対象となるゾーンの指定をユーザから受け付ける。ゾーンの指定については、表示部1110に表示された原紙画像上でユーザがマウス207等を利用して行う。ユーザが画面上でゾーン指定を行うと、例えば、図16(a)に示すように、指定されたゾーン1209〜1220が点線で表示される。
CPU201は、指定されたゾーンの位置をタイミングマーク1901に基づいて特定し、ゾーン位置情報(X軸座標、Y軸座標)としてRAM202に一時保存する。ゾーン位置情報については、後述するステップS515で図12(c)に示すゾーン定義テーブルtb03に保存される。ゾーン定義テーブルtb03は、DB101に保存(登録)されるテーブル情報である。なお、タイミングマーク1901からの相対位置でゾーン位置情報の保存を行うことにより、スキャンニング処理時の補正処理が可能となる。
次に、ステップS504では、CPU201は、フォーム定義画面1100上でユーザにより指定されたゾーンに対するゾーン名称設定欄1201、ゾーン読み取り属性設定欄1202、重ね合わせ設定欄1203、リスト表示設定欄1204、及びリスト内容設定欄1205への入力(または設定)を受け付け、それらゾーン設定情報をRAM202に一時保存する。入力(または設定)された内容は、後述するステップS515で図12(c)に示すゾーン定義テーブルtb03に保存される。
ステップS505では、CPU201は、フォーム定義画面1100上の表示部1110に表示された原紙画像上でのゾーンの指定及びゾーン設定情報の設定がすべて終了したか否かを判定する。ここでは、フォーム定義画面1100上で完了ボタン1122が押下された場合、CPU201は、フォーム情報登録処理が終了したと判定して、本処理を終了する。キャンセルボタン1120が押下された場合、CPU201は、フォーム定義画面1100を閉じる。登録ボタン1121が押下されたときは、CPU201はゾーン設定が終了したと判定し、不図示の液晶ディスプレイ等に図15に示すフォーム定義画面1500を表示して、ステップS506へ進む。
図15において、フォーム定義画面1500には、フォームの原紙画像が表示される表示部1110と、グループID設定欄1400と、グループ名称設定欄1401と、グループ内ゾーン数設定欄1402と、最大選択可能数設定欄1403と、必須選択数設定欄1404と、キャンセルボタン1520と、登録ボタン1521と、完了ボタン1522とが配置されている。
ステップS506では、CPU201は、フォーム定義画面1500上の表示部1110に表示された原紙画像上で、ステップS503で指定された複数のゾーンをグループにまとめるための指定をユーザから受け付ける。これは、例えば、問診票等において複数の回答を有する問いに対応するためである。グループの指定については、表示部1110に表示された原紙画像上でユーザがマウス207等を利用して複数のゾーンを指定することでグループ指定を行う。例えば、図16(b)に示すように、設定されたグループ1_1406、2_1407が点線で表示される。
次に、CPU201は、グループ指定の有無を判定する(ステップS507)。ここでは、ユーザがフォーム定義画面1500上で複数のゾーンをグルーピングすることで、グループ指定の有無が判定される。グループ指定がなされていない場合は、ステップS511へ移行する一方、グループ指定がなされていた場合、CPU201は、グループ指定有りと判定して、ステップS508へ進む。
ステップS508では、CPU201は、フォーム定義画面1500上でユーザにより指定されたグループに対するIDを入力するためのグループID設定欄1400、グループ名称を入力するためのグループ名称設定欄1401、グループ内ゾーン数設定欄1402、最大選択可能数設定欄1403、及び必須選択数設定欄1404への入力(または設定)を受け付け、それらグループ設定情報をRAM202に一時保存する。
グループID設定欄1400では、ユーザが原紙画像上に指定したグループの識別情報として、任意のIDを入力することができる。なお、グループID設定欄1400にIDが入力されなかった場合には、CPU201により自動的にグループIDが付与される。グループ名称設定欄1401では、ユーザが指定したグループに対する任意の名称を入力することができる。
グループ内ゾーン数設定欄1402では、1グループ内のゾーン数が表示される。なお、CPU201がグループ内のゾーン数を検出して、当該グループのグループ内ゾーン数設定欄1402にその値を表示するように構成しても、ユーザ自身が入力するように構成してもよい。最大選択可能数設定欄1403では、グループ内の最大選択可能項目数(ユーザが選択(マーク)できる個数)を入力することができる。例えば、図19に示す問診票で「複数回答可、最大3つまで」と設定されていた場合、最大選択可能数設定欄1403には「3」と入力される。必須選択数設定欄1404では、グループ内で必ず選択(マーク)される項目数が入力される。例えば、複数の回答の中からいずれか1つを選択する問いに対しては、「1」と入力される。最大選択可能数設定欄1403及び必須選択数設定欄1404における値(最大選択可能数と必須選択数)は、後述するステップS509の設定情報の整合性チェック(整合性判定)における基準値として使用される。
なお、フォーム定義画面1500上でグループID設定欄1400〜必須選択数設定欄1404への入力が行われなかった場合は、図12(b)に示すグループ定義テーブルtb02には何の値も保存されない。グループ定義テーブルtb02に値が保存されない場合は、後述する図7のステップS712でグループ設定無しと判定される。
次に、ステップS509では、CPU201は、ステップS508で受け付けたグループ設定情報の整合性をチェック(判定)する。具体的には、CPU201は、最大選択可能数設定欄1403に入力された値がグループ内ゾーン数設定欄1402に入力された値以下であるか否かを判定し、また、必須選択数設定欄1404に入力された値がグループ内ゾーン数設定欄1402に入力された値以下で、且つ最大選択可能数設定欄1403に入力された値以下であるかのチェックを行う。その結果、整合性がないと判定した場合(NG)は、エラー内容を表示した後、ステップS508に戻る一方、整合性がある場合(OK)は、ステップS510へ移行する。
ステップS510では、フォーム定義画面1500上の表示部1110に表示された原紙画像上でのグループの指定及びグループ設定情報の設定がすべて終了したか否かを判定する。ここでは、フォーム定義画面1500上で登録ボタン1521または完了ボタン1522が押下された場合、ステップS511へ移行する。キャンセルボタン1520が押下された場合、CPU201は、フォーム定義画面1100を閉じる。
ステップS511では、CPU201は、フォームの原紙画像とフォーム定義画面1100,1500上で入力(または設定)された値及びRAM202に一時保存された値を、フォーム定義情報としてDB101に保存(登録)して、本処理を終了する。なお、フォーム定義情報は、図12(a)に示すフォーム定義テーブルtb01、図12(b)に示すグループ定義テーブルtb02、図12(c)に示すゾーン定義テーブルtb03、及び図12(d)に示すリスト定義テーブルtb04を含むものとする。
次に、認識対象の画像に対するフォーム認識処理について説明する。
図6は、図4のステップS401におけるフォーム認識処理の詳細を示すフローチャートである。本処理は、HDD208や記憶媒体ドライブ209から読み出されたプログラムに基づいてCPU201により実行される処理である。なお、図20に示すような、スキャナ300で読み取られた認識対象の画像が記憶媒体ドライブ209(またはHDD208)に画像データとして記憶されているものとする。
まず、ステップS601では、CPU201は、認識対象の画像を記憶媒体ドライブ209から取得すると共に、DB101からフォームの原紙画像(フォームイメージデータ)を取得する。
次に、ステップS602、S603では、CPU201は、取得した認識対象の画像とフォームイメージデータとのマッチング(比較)を行い、認識対象の画像と一致するフォームイメージデータの有無をチェックする。一致するフォームイメージデータが存在しない場合、フォーム認識エラー処理(ステップS605)を実施した後に、本処理を終了する。
一方、ステップS603において、認識対象の画像と一致するフォームイメージデータが存在する場合は、CPU201は、複数の認識パターン(OCRやOMRの設定を行った文字認識等をする際のテンプレート)の中から一致したフォームイメージデータの認識パターンを決定する(ステップS604)。認識パターンとは、上述したフォーム情報登録処理でDB101に保存(登録)されたフォーム定義情報であって、図12(a)に示すフォーム定義テーブルtb01〜図12(d)に示すリスト定義テーブルtb04の情報である。フォームイメージデータと認識パターンとは1対1で対応するものである。そのため、認識対象の画像と一致するフォームイメージデータが存在すれば、自動的に認識パターンも決定する。
ステップS603では、認識対象の画像が、予め指定された保存先(例えば、HDD208内の一時保存領域)に保存される。また、認識対象の画像と一致するフォームイメージの認識パターンがRAM202上に保持される。RAM202に保持された認識パターンが、後述する認識結果表示処理の際に使用される。
なお、上述したフォーム認識処理については、既存の一般的な技術を使用して実現することが可能である。このフォーム認識処理は、例えば、取得したフォームイメージデータと認識対象の画像からそれぞれ罫線を抽出し、罫線間の位置関係をフォームの特徴とみなし、該フォームイメージデータと認識対象の画像の罫線構造を照合してフォームを識別する。そして、そのフォームに対応して認識パターンを用いて後述の認識処理が行われる。
図7は、図4のステップS402における認識処理の詳細を示すフローチャートである。本処理は、HDD208や記憶媒体ドライブ209から読み出されたプログラムに基づいてCPU201により実行される処理である。
図7において、ステップS701では、CPU201は、上記フォーム認識処理にて決定された認識パターンに基づき、OCR/OMR対象ゾーンの抽出を行う。このOCR/OMR対象ゾーンの抽出は、認識パターンからゾーン位置情報(ゾーン定義テーブルtb03のゾーン位置情報(X軸)1312、ゾーン位置情報(Y軸)1313にそれぞれ保存された値)とゾーンサイズ(ゾーン定義テーブルtb03のゾーンサイズ(幅)1314、ゾーンサイズ(高さ)1315にそれぞれ保存された値)とタイミングマーク位置情報(フォーム定義テーブルtb01のタイミングマーク位置情報(X軸)1302、タイミングマーク位置情報(Y軸)1303にそれぞれ保存された値)を取得し、認識対象の画像から認識対象領域の画像を特定して、画像を取得する。
次に、CPU201は、RAM202上に設定されたエラーフラグに「1」をセット(ステップS702)した後、認識パターンからゾーン読み取り属性(ゾーン定義テーブルtb03のゾーン読み取り属性1311の値)を取得し、OCRかOMRかを判定する(ステップS703)。エラーフラグとは、OCR処理又はOMR処理した結果が事前に定義された内容に基づき、妥当か否かを判定するためのフラグであり、エラーフラグが「1」であれば、認識結果を表示する際にエラーと表示させる。ステップS703の判定の結果、ゾーン読み取り属性がOCRであればステップS706へ移行し、OMRであればステップS704へ移行する。
ステップS704では、CPU201は、ステップS701で抽出したOMR対象ゾーンに対してOMR処理を行い、該ゾーン内にマーク(チェックマーク)があるか否かを判定する。マークがあると判定した場合、認識結果としてマーク有のフラグをRAM202に一時保存する一方、マークがないと判定した場合、認識結果としてマーク無のフラグをRAM202に一時保存する。
ステップS706では、CPU201は、ステップS701で抽出したOCR対象ゾーンに対してOCR処理を行い、該ゾーン内に存在する文字列をOCR結果として取得してRAM202に一時保存する。ステップS708では、CPU201は、取得した認識結果の妥当性チェックを行う。この妥当性チェックは、数値項目に数値以外の認識結果が含まれていないか、アルファベット項目に、アルファベット以外の認識結果が含まれていないかのチェックを行うものとする。つまり、ゾーン読み取り属性がOCRの場合には、取得する結果の記号属性(例えば、数値、アルファベット、カナ等)についてもRAM202に保存される。なお、この属性については、図5のフォーム情報登録処理におけるゾーン設定の際に定義されるものとする。
ステップS708の妥当性チェックの結果、OKの場合には、CPU201は、エラーフラグに「0」をセットすると共に、図13(e)に示す認識結果テーブルtb05内の整合性チェック結果1322に正常を示す「0」をセットする。
ステップS710では、CPU201は、OMR処理またはOCR処理にて得られた認識結果を認識結果テーブルtb05内の認識結果1321に保存する。なお、OMR結果については、フラグを用いてマークの有無を保存してもよい。次に、ステップS711では、CPU201は、認識パターンに基づき、すべてのOCR/OMR対象ゾーンに対してOMR/OMR処理が完了したか否かを判定する。この判定の結果、すべてのOCR/OMR対象ゾーンに対するOMR/OCR処理が終了したときは、ステップS717に進む。
ステップS717では、CPU201は、読み取り属性がOMRのゾーンの認識結果を認識結果テーブルtb05から読み込む。つづいて、ステップS712では、CPU201は、認識パターン内のグループ設定情報の有無を判定する。ここでは、グループ定義テーブルtb02に値が保存されているか否かが判定される。この判定の結果、グループ定義テーブルtb02に値が保存されている場合、グループ内の各ゾーンのOMR処理結果を取得(ステップS713)した後、グループ設定情報内の最大選択可能数と必要選択数に基づいて、該OMR処理結果の整合性をチェック(判定)する(ステップS714)。具体的には、CPU201は、グループ内のゾーンの認識結果1321がチェック有となっているゾーン数を算出し、グループ設定情報を元に、OMR処理認識結果(チェック有となっているゾーン数)が最大選択可能数以下か、必須選択数以上かのチェックを実施する。その結果、整合性があると判定した場合(OK)は、エラーフラグに「0」セットする(ステップS715)。
ステップS716では、CPU201は、RAM202に一時保存された整合性チェック結果を認識結果テーブルtb05に保存する。グループ設定情報が複数ある場合は、グループ設定情報の数分ステップS712〜S716を繰り返し実施する。
なお、グループ指定された場合は、グループ定義テーブルtb02にデータが保存されている。また、ステップS712でグループ設定情報で有の場合は(ステップS712でYES)、ゾーン読み取り属性が「OMR」のときであり、「OCR」のときはグループ設定情報は無しとなっている。また、上述したOCR/OMR処理については、既存の一般的な技術を使用して実施できるものとする。
図8a及び図8bは、図4のステップS403における認識結果表示処理の詳細を示すフローチャートである。本処理は、HDD208や記憶媒体ドライブ209から読み出されたプログラムに基づいてCPU201により実行される処理である。
まず、ステップS801では、CPU201は、図12(c)に示すゾーン定義テーブルtb03に保存されたゾーンID1309〜リスト表示有無1318の値を先頭(例えばゾーンIDの小さい方)から順に参照する。次に、ステップS802では、CPU201は、参照したゾーン定義テーブルtb03のリスト表示有無1318の値(ONまたはOFF)を判定する。この判定の結果、リスト表示有無1318の値が「ON」の場合、CPU201は、リスト定義テーブルtb04の内容に従い、リストボックスの設定を行う(ステップS804)。一方、ステップS802でリスト表示有無1318の値が「OFF」の場合、CPU201は、テキストボックスの設定を行う(ステップS804)。
以上の処理を、ゾーン定義テーブルtb03内の先頭列から最終列まで繰り返し行う(ステップS805)。これにより、例えば、図14に示す表示部1110上の範囲1207におけるゾーンのゾーン読み取り属性1311にOCR設定がされていた場合、該ゾーンの認識結果がテキストボックス形式に表示される。一方、表示部1110上の範囲1420におけるゾーンのゾーン読み取り属性1311にOMR設定がされていた場合、該ゾーンの認識結果がリストボックス形式に表示される。
次に、ステップS806では、CPU201は、図13(e)に示す認識結果テーブルtb05に保存されたフォームID1300〜修正フラグ1323の値を先頭(例えばフォームIDの小さい方)から順に参照する。次に、ステップS807では、CPU201は、認識結果テーブルtb05の認識結果1321が空かどうかを判定する。この判定の結果、認識結果1321になにも保存されておらず、空の場合(ステップS807でYES)、認識結果として表示するものがないので、認識結果テーブルtb05内の次の列(ゾーン)に移動する(ステップS811)。
一方、ステップS807において、認識結果1321が空でない場合(ステップS807でNO)、RAM202に設定されたエラーフラグの値、すなわち認識結果テーブルtb05の整合性チェック結果1322の値を判定する(ステップS808)。この判定の結果、整合性チェック結果1322の値が「0」の場合、該当するリストボックスもしくはテキストボックスに認識結果を表示する(ステップS809)。ここで表示される認識結果は、認識結果テーブルtb05の認識結果1321から取得される。テキストボックスとは、ゾーン定義テーブルtb03のリスト表示有無1318の値が「OFF」の場合に、認識結果テーブルtb05の認識結果1321の値を入れるボックスを意味し、訂正処理画面の表示イメージの対応箇所(ゾーン定義テーブルtb03のゾーン位置情報及びサイズに応じた場所)に紐付いている。
ステップS808において、整合性チェック結果1322の値が「1」の場合、認識結果エラーを表示する(ステップS810)。ここで表示される認識結果エラーについては、例えば、予め定められたエラーを示す文字列が表示される。
以上の処理を、認識結果テーブルtb05内の先頭列から最終列まで繰り返し行う(ステップS811)。
図8bにおいて、ステップS812では、CPU201は、ゾーン定義テーブルtb03の重ね合せ有無1316の値を全列検索し、重ね合せ「ON」の数を判定する。この判定の結果、重ね合せ「ON」の数が「0」の場合(つまり、重ね合わせ設定なし)、フォーム認識処理で保存した認識対象の画像を表示し(ステップS813)、本処理を終了する。
ステップS812において、重ね合せ「ON」の数が「1以上」の場合、CPU201は、フォーム定義テーブルtb01のタイミングマーク位置座標(X軸)1302及びタイミングマーク位置情報(Y軸)1303からタイミングマーク位置情報を取得する(ステップS814)。つづいて、ステップS815、S816では、予め定義されている認識結果描画オフセット値及び認識結果描画フォント情報を取得する。ここでいう認識結果描画オフセット値とは、認識結果を描画する開始位置を算出するための値である。ゾーン定義テーブルtb03のゾーン位置情報(X軸)1312及びゾーン位置情報(Y軸)1313に指定されたオフセット値を加算した結果を、実際に認識結果を描画する開始位置とする。また、フォント情報とは、認識結果テキストを描画する際に使用する文字フォントである。
次に、ステップS817では、CPU201は、ゾーン定義テーブルtb03に保存されたゾーンID1309〜リスト表示有無1318の値を先頭(例えばゾーンIDの小さい方)から順に参照する。次に、ステップS818では、CPU201は、参照したゾーン定義テーブルtb03の重ね合せ有無1316の値(ON又はOFF)を判定する。この判定の結果、重ね合わせ有無1316の値が「OFF」の場合、ゾーン定義テーブルtb03内の次の列(ゾーン)に移動し、ステップS817以降の処理が繰り返される。
一方、ステップS818において、重ね合わせ有無1316の値が「ON」の場合、CPU201は、ゾーン定義テーブルtb03からゾーン位置情報(X軸、Y軸)1312,1313、ゾーンサイズ(幅)1314、ゾーンサイズ(高さ)1315の値を取得する(ステップS819)。つづいて、CPU201は、取得したゾーン位置情報(X軸、Y軸)にステップS815で取得したオフセット値を加算する(ステップS820)。このオフセット値は、ゾーン読み取り属性1311の値が「OCR」の場合にのみ適用される。
次に、ステップS821では、CPU201は、ゾーン定義テーブルtb03のゾーン読み取り属性1311の値を判定する。この判定の結果、ゾーン読み取り属性1311の値が「OMR」の場合、認識結果テーブルtb05の整合性チェック結果1322の値を判定し(ステップS822)、原本イメージ(認識対象となる画像(ユーザが記入した紙文書の画像))へ認識結果を描画する(ステップS823又はステップS824)。原本イメージへの認識結果の描画例として、図17におけるグループ1406,1407の拡大図を図18(b)に示す。
ステップS822の判定の結果、整合性チェック結果1322の値が「0」(OK)の場合、CPU201は、OMR処理で認識されたゾーンと同じサイズの矩形(オブジェクト)を予めユーザにより設定された正常色で生成し、認識結果として、原本イメージ(認識対象となる画像)上の当該ゾーンに対応する位置に矩形(オブジェクト)を重ね合わせて描画する(ステップS823)。図18(b)のゾーン1209に描画例を示す。なお、図示例では、正常色として右下がり斜線で記載されている。生成された矩形(オブジェクト)に対して透過設定が行われる。透過設定が行われることによって、矩形を重ねた際に後ろの原本イメージで実際にチェックした内容が確認できるようになる。特に、OMR処理時にノイズを拾って誤認識をしてしまったような場合、オペレータが誤認識を容易に把握することが可能となる。
また、ステップS823では、図17のグループ1703(CCCグループ)の場合、図18(c)に示すように、グループ1703内のゾーン1513,1514,1515それぞれに正常色の矩形(オブジェクト)を重ね合わせて描画される。
また、ステップS823では、リスト定義テーブルtb04のリスト内容1320に保存されたリストが、例えば、認識結果訂正画面1700上のリストボックス1505(AAAグループ)で表示可能となる。なお、グループ化されているゾーンの認識結果をリストに表示させる場合、該ゾーンのリスト内容のすべてをリストボックスに表示させることが可能である。
一方、ステップS822において、整合性チェック結果1322の値が「1」(NG)の場合、CPU201は、OMR処理で認識されたゾーンと同じサイズの矩形(オブジェクト)を予めユーザにより設定された異常色で生成し、認識結果として、原本イメージ(認識対象となる画像)上の当該ゾーンに矩形(オブジェクト)を重ね合わせて描画する(ステップS824)。図18(b)のゾーン1214に描画例を示す。なお、図示例では、異常色として左下がり斜線で記載されている。生成された矩形(オブジェクト)に対しては、ステップS823と同様に、透過設定が行われる。これにより、オペレータが誤認識を容易に把握することが可能となる。
また、ステップS824において、例えば、図17のグループ1703(CCCグループ)でゾーンの選択数が最大可能選択数を越えていた場合、選択されたゾーンがすべて異常色で表示される。つまり、異常の場合には、CPU201は、生成する矩形(オブジェクト)の表示形式を正常の場合と異なるように変更して表示する。正常色と異常色は互いに異なる表示色とし、被視認性のよい色彩が好ましい。
また、ステップS824では、リスト定義テーブルtb04のリスト内容1320に保存されたリストが、例えば、認識結果訂正画面1700上のリストボックス1506(BBBグループ)で表示可能となる。なお、整合性チェック結果1322の値が「1」の場合は、図17に示すように、リストボックス1506が異常色で表示される。
矩形(オブジェクト)は、ゾーン定義テーブルtb03のゾーン読み取り属性1311の値が「OMR」であるゾーンの数だけ生成される。そのうち、認識結果1321が空でなかったものについては上述の色表示が行われる。なお、ゾーンと重ね合わせて描画される矩形(オブジェクト)については矩形でなくてもよく、円形のものを認識した場合は、その形状に合わせたオブジェクトを生成する構成であってもよい。また、矩形(オブジェクト)を描画する際には、矩形(オブジェクト)を原本イメージ(認識対象となる画像)上に配置する以外に、矩形(オブジェクト)を配置したイメージを生成し、この生成されたイメージと原本イメージ(認識対象となる画像)とを合成して描画させるようにしてもよい。
ステップS821において、ゾーン読み取り属性1311の値が「OCR」の場合、認識結果テーブルtb05の整合性チェック結果1322の値を判定し(ステップS825)、図17に示す認識結果訂正画面1700ように、原本イメージへ認識結果を表示する(ステップS826又はステップS827)。原本イメージへの認識結果の表示例として、図17におけるゾーン1503,1504の拡大図を図18(a)に示す。
ステップS825の判定の結果、整合性チェック結果1322の値が「0」(OK)の場合、CPU201は、認識結果テーブルtb05の認識結果1321に保存されたOCRの認識結果(認識文字)を、原本イメージ上の当該ゾーンの近傍(近接)に正常色で表示する(ステップS826)。例えば、図18(a)に示すように、ゾーン1503の近傍に1510のように「12345」の認識文字が表示され、ゾーン1503が正常色で表示される。そして、図17に示す認識結果訂正画面1700上では、OCR対象とされたゾーンのゾーン名称(例えば、市町村コード、受診番号等)とテキストボックス1511,1512が表示され、それらのテキストボックスに認識結果が表示される。
一方、ステップS825において、整合性チェック結果1322の値が「1」の場合、CPU201は、OCR処理結果が認識エラーと識別できるように、原本イメージ上の当該ゾーンを異常色で表示する(ステップS827)。例えば、認識結果として文字列が取得できない場合、図18(a)のゾーン1504のように、認識結果の文字列が表示されない。
以上の処理を、ゾーン定義テーブルtb03内の先頭列から最終列まで繰り返し行い(ステップS828)、その後、本処理を終了する。なお、描画(または表示)する認識結果(矩形(オブジェクト)もしくはテキスト)の表示位置や形式については予めユーザが定義できるものとする。認識結果(矩形(オブジェクト)もしくはテキスト)のサイズについては、ゾーン定義テーブルtb03に保存されたゾーンサイズの幅や高さに基づいて自動的に設定される。
上記処理によって、OMRを用いてマークやチェックを判定するような箇所については、チェックがあるか否かを重ねて(認識した箇所に重ねて)イメージ上に表示させ、OCRを用いて文字列を取得するような箇所については、認識した箇所に文字列を重ねずに表示させる。つまり、認識方法によって表示を切り換える。
このように、OCR処理する領域とOMR処理する領域によって表示方法を切り換えることができるので、認識結果の確認や訂正を行うオペレータがOCRやOMRの認識結果を容易に把握することができる。
図9は、図4のステップS404における認識結果訂正処理の詳細を示すフローチャートである。
まず、ステップS901では、CPU201は、図17の認識結果訂正画面1700に表示されている認識結果を、RAM202又はHDD208上に設定された退避エリアにコピーする。退避エリアのテーブルレイアウトは、認識結果テーブルtb05と同じ形式とする。
認識結果の訂正については、認識結果訂正画面1700上で訂正が必要なリストボックスやテキストボックスを選択して認識結果の訂正を行う。例えば、図18(b)に示すグループ1407(グループBBB)では、「ほとんど毎日食べている」という項目がマークされているにもかかわらず、認識結果が図17のリストボックス1506のように「ほとんど食べていない」となっていた場合、ユーザは該リストボックス1506の「▽」をクリックしてグループBBBに設定されたリスト内容を表示させ、訂正項目(ここでは、「ほとんど毎日食べている」)を選択する。テキストボックスに表示された文字列について訂正が必要な場合は、テキストボックスに直接入力する。なお、テキストボックス1511はゾーン1503に対応し、テキストボックス1512はゾーン1504に対応して認識結果が表示される。訂正された場合は、退避エリアにコピーされた該当する認識結果が破棄される。
ステップS902では、CPU201は、認識結果訂正画面1700上で認識結果が訂正されたか否かを判定する。この判定の結果、認識結果が訂正されたと判定した場合、後述する訂正処理(ステップS907)に移行する。
ステップS903では、CPU201は、認識結果訂正画面1700上でリセットボタン1507が押下されたかを判定する。リセットボタン1507が押下された場合、CPU201は、退避エリアにコピーされた内容をRAM202又はHDD208上に設定されたOCR認識結果エリアにコピーし、OCR認識結果エリアの内容に合わせて画面の再表示を行う(ステップS908)。
ステップS904では、CPU201は、キャンセルボタン1508が押下されたかを判定する。キャンセルボタン1508が押下された場合、CPU201は、OCR認識結果エリア、退避エリアの内容をクリアし、図4に示す帳票認識処理自体を終了する。
ステップS905では、CPU201は、完了ボタン1509が押下されたかを判定する。完了ボタン1509が押下された場合、CPU201は、本処理を終了する。
図10は、図9のステップS907における訂正処理の詳細を示すフローチャートである。
ステップS1001では、CPU201は、例えば、認識結果訂正画面1700における認識対象画像2000上のイメージ(例えば、ゾーン1209,1214等)が選択されたか否かを判定する。この判定の結果、選択された場合は、ステップS1002へ移行する一方、選択されていない場合は、ステップS1003へ処理が移る。
ステップS1003では、CPU201は、認識結果訂正画面1700におけるテキストボックスでテキスト入力がされたか否かを判定する。この判定の結果、テキストボックスへの入力がされた場合、ステップS1007へ移行する一方、入力がされなかった場合は、ステップS1005へ処理が移る。
ステップS1005では、CPU201は、リストボックスが選択されて訂正がされたか否かを判定する。この判定の結果、訂正がされなかった場合は、本処理を終了する一方、訂正がされた場合は、ステップS1008へ処理が移る。
ステップS1008では、CPU201は、選択されたリスト項目に該当する原本イメージへの表示位置の取得を行う。具体的には、選択されたリスト項目に該当するゾーンの表示位置情報をゾーン定義テーブルtb03内のゾーン位置情報(X軸)1312、ゾーン位置情報(Y軸)1313、ゾーンサイズ(幅)1314、ゾーン(高さ)1315から取得する。つづいて、取得したゾーンの表示位置情報に基づき、原本イメージへの訂正結果の描画(ステップS1011)を実施した後、訂正内容をRAM202に保存(ステップS1013)し、本処理を終了する。
ステップS1007では、CPU201は、入力されたテキストのイメージ表示位置情報をゾーン定義テーブルtb03内のゾーン位置情報(X軸)1312、ゾーン位置情報(Y軸)1313、ゾーンサイズ(幅)1314、ゾーン(高さ)1315から取得する。つづいて、取得したゾーンの表示位置情報に基づき、テキスト入力内容を原本イメージに表示(ステップS1011)した後、訂正内容をRAM202に保存(ステップS1013)し、本処理を終了する。
ステップS1002では、CPU201は、選択されたイメージの表示位置情報をゾーン定義テーブルtb03内のゾーン位置情報(X軸)1312、ゾーン位置情報(Y軸)1313、ゾーンサイズ(幅)1314、ゾーン(高さ)1315から取得する。つづいて、CPU201は、複数のイメージ(グループ)が選択されたか否かを判定する(ステップS1004)。具体的には、CPU201は、先に取得したゾーン定義テーブルtb03のゾーンID1309から、グループ定義テーブルtb02内のグループ内ゾーン数1307、最大選択可能数1308、必須選択数1317を取得することで判定を行う。
ステップS1004の判定結果、複数のイメージが選択されていない場合は、ステップ1002で取得した情報を元に、原本イメージへの訂正結果の描画(ステップS1011)を実施した後、訂正内容をRAM202に保存(ステップS1013)し、本処理を終了する。
一方、ステップS1004において複数のイメージが選択されていた場合は、CPU201は、訂正前の認識結果が選択されたか否かを判定する(ステップS1006)。この判定の結果、訂正前の認識結果が選択されていない場合、ステップS1007へ移行する一方、訂正前の認識結果が選択された場合は、選択された原本イメージの表示をクリア(ステップS1009)し、該当リスト項目の表示をクリア(ステップS1012)した後、訂正内容をRAM202に保存(ステップS1013)し、本処理を終了する。
ステップS1007では、CPU201は、訂正した内容が最大選択可能数以内か否かを判定する。この判定の結果が、訂正した内容が最大選択可能数以内である場合、原本イメージへの訂正結果の描画(ステップS1011)を実施した後、訂正内容をRAM202に保存(ステップS1013)し、本処理を終了する。原本イメージに訂正結果が描画される場合、表示されていたオブジェクトの表示を異常色から正常色に切り替える(表示切替)。一方、訂正した内容が最大選択可能数より大きい場合は、グループ定義の不整合と判別し、エラーメッセージを表示し、訂正内容を保存せずに、本処理を終了する。
図11は、図4のステップS405における登録処理の詳細を示すフローチャートである。
ステップS1101では、CPU201は、訂正前認識結果出力の有無を判定する。訂正前認識結果とは、OCR処理をした値そのもの(未訂正の値)であり、図9のステップS901にてRAM202上の退避エリアにコピーされた内容(すなわち認識結果)を意味する。訂正前認識結果出力は必須ではなく、出力する/しないを設定ファイル等で予め定義するようにしてもよい。
ステップS1101の判定の結果、訂正前認識結果出力が「有」の場合(ステップS1101でYES)、図9のステップS901にてRAM202上の退避エリアへコピーされた内容(すなわち認識結果)をDB101に登録、もしくは物理ファイル(CSVやテキスト形式)としてローカルもしくはネットワークフォルダに出力して、ステップS1103に進む。一方、ステップS1101において訂正前認識結果出力が「無」の場合(ステップS1101でNO)、ステップS1103に進む。
ステップS1103では、CPU201は、認識結果テーブルtb05の認識結果1321の値をDB101に登録、もしくは物理ファイル(CSVやテキスト形式)としてローカルもしくはネットワークフォルダに出力する。次に、ステップS1104では、CPU201は、原紙画像の保存の有無を判定する。原紙画像とは、図4のステップS401にて保存された認識対象の画像であり、保存有無の設定は、設定ファイル等で予め定義されているものとする。
ステップS1104の判定の結果、原紙画像が保存されている場合(ステップS1104でYES)、ローカルもしくはネットワークフォルダに原紙画像をファイル出力し(ステップS1105)、ステップS1106に進む。一方、ステップS1104において原紙画像が保存されていなかった場合は、ステップS1106に進む。
ステップS1106では、CPU201は、RAM202上の認識結果退避エリアをクリアする。つづいて、CPU201は、認識結果テーブルtb05をDB101から削除し(ステップS1107)、本処理を終了する。
上記実施形態によれば、入力された原紙画像上の認識処理(OMR処理(マーク認識処理)やOCR処理(文字認識処理))の対象となるゾーン(領域)のフォーム定義情報の設定を受け付ける。そして、設定されたフォーム定義情報に基づいて、認識対象となる画像上の領域に対して認識処理を行い、マーク認識処理された領域に対する認識結果を示すオブジェクトを生成する。そして、生成されたオブジェクトを領域に重ね合わせて表示する。これにより、ユーザが塗りつぶしやチェックなどのマークで記入した紙文書に対する画像の認識結果の確認作業を軽減すると共に、オペレータの訂正作業を容易にする。また、ユーザに選択的に記入させる形式の紙文書の認識結果を容易に訂正可能にする。
上記実施形態では、クライアントコンピュータ200における帳票認識処理について説明したが、上述した処理を管理サーバ100が実行するように構成してもよい。また、クライアントコンピュータ200とスキャナ300を同一筐体とし、例えば、同一筐体となる複合機が実行するように構成してもよい。言い換えると、上記実施の形態では、クライアントコンピュータ200とスキャナ300が別筐体で構成されている。さらに、図12(a)〜図13(d)に示すテーブル情報が保存(登録)されるDB101は、管理サーバ100内に設定されているが、これに限定されず、クライアントコンピュータ200内に設定されていてもよい。
また、本発明の目的は、以下の処理を実行することによっても達成される。即ち、上述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)が記憶媒体に格納されたプログラムコードを読み出す処理である。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施の形態の機能を実現することになり、そのプログラムコード及び該プログラムコードを記憶した記憶媒体は本発明を構成することになる。
また、プログラムコードを供給するための記憶媒体としては、次のものを用いることができる。例えば、フロッピー(登録商標)ディスク、ハードディスク、光磁気ディスク、CD−ROM、CD−R、CD−RW、DVD−ROM、DVD−RAM、DVD−RW、DVD+RW、磁気テープ、不揮発性のメモリカード、ROM等である。または、プログラムコードをネットワークを介してダウンロードしてもよい。
また、コンピュータが読み出したプログラムコードを実行することにより、上記実施の形態の機能が実現される場合も本発明に含まれる。加えて、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているOS(オペレーティングシステム)等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
更に、前述した実施形態の機能が以下の処理によって実現される場合も本発明に含まれる。即ち、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれる。その後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPU等が実際の処理の一部または全部を行う場合である。
また、コンピュータが読み出したプログラムコードを実行することにより、前述した各実施の形態の機能が実現される場合も本発明に含まれる。加えて、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているOSなどが実際の処理の一部または全部を行い、その処理によって前述した実施の形態の機能が実現する場合も含まれる。この場合、上記プログラムは、該プログラムを記憶した記憶媒体から直接、またはインターネット、商用ネットワーク、若しくはローカルエリアネットワーク等に接続された不図示の他のコンピュータやデータベース等からダウンロードすることにより供給される。
上記プログラムの形態は、オブジェクトコード、インタプリタにより実行されるプログラムコード、OS(オペレーティングシステム)に供給されるスクリプトデータ等の形態から成ってもよい。