以下、本発明の実施例を、図面に基づいて説明する。
まず最初に本実施例の概要について説明し、その後、全体構成図の説明をする。
本実施例における文書処理システムは、紙の世界と電子の世界を結びつけるものである。例えばWeb画面上でフォーム開き、それにキーボードで入力し、最後にSubmitボタンを押すことにより、入力データがサーバ上に送られて、その後の処理(例えばショッピング等)が行われているシステムがある。
これと同様に、文書処理システムは、紙文書のフォームにペンで筆記することにより、ペンで筆記された筆記情報がサーバに送られて、全く同じようにその後の処理が行われるシステムを実現するためのものである。すなわち、文書処理システムは、電子の世界では画面とキーボードで行っていた作業を、紙文書とペンとで作業を行うことにより等価的に実現するものである。
このような処理を行う文書処理システムの全体構成図を、図1を用いて説明する。図1には、帳票作成用PC101と、印刷装置102と、帳票処理用PC103と、スキャナ105と、デジタルPAD(以下、D−PADと記す)104と、画像取得装置500と、データサーバ106と、ネットワーク107とが示されている。
帳票作成用PC101は、筆記される紙文書のフォームを作成するものである。印刷装置102は、紙文書である帳票を印刷するものである。帳票処理用PC103は、筆記された紙文書から、帳票のフォームに従って、筆記されたデータに関する処理を行うものである。スキャナ105は、筆記された帳票を読み込むものである。D−PAD104は、連続的に手書き座標を取得するものであり、結果的に帳票に筆記された筆記情報を取得する。データサーバ106は、帳票処理用のデータベースである。画像取得装置500は、エリアCCDを撮像デバイスとして用いて画像を取得する。
以下の説明において、スキャナ105で読み込んだ帳票すなわちスキャンイメージと、D−Pad104で取得した手書き座標すなわちストロークデータを総称したものを筆記情報と表現する。
また、以下の説明において帳票作成用PC101と印刷装置102をまとめて帳票作成装置108、帳票処理用PC103とスキャナ105とD−PAD104と画像取得装置500をまとめて帳票処理装置109、データサーバ106を記憶装置100と表現することがある。
次に、図1に示される各PCのハードウェア構成を、図2を用いて説明する。図2に示されるハードウェア構成は、それぞれバスBで相互に接続されている入力装置31と、表示装置32と、ドライブ装置33と、記録媒体34と、補助記憶装置35と、メモリ装置36と、演算処理装置37と、インタフェース装置38とを含むように構成される。
入力装置31は、PCのユーザが操作するキーボード及びマウスなどで構成され、PCに各種操作信号を入力するために用いられる。表示装置32は、PCを操作するのに必要な各種ウィンドウやデータ等を表示する。インタフェース装置38は、PCをネットワークに接続する為のインタフェースであり、例えばNIC(Network Interface Card)やモデム等で構成される。
そして、PCを動作させるためのプログラムは、CD−ROM等の記録媒体34によって提供されるか、ネットワークを通じてダウンロードされる。また、記録媒体34は、ドライブ装置33にセットされ、データやプログラムが記録媒体34からドライブ装置33を介して補助記憶装置35にインストールされる。
ストレージである補助記憶装置35は、データやプログラムを格納すると共に、必要なファイル等を格納する。メモリ装置36は、PCの起動時に補助記憶装置35からプログラムを読み出して格納する。演算処理装置37は、メモリ装置36に読み出され格納されたプログラムに従って処理を実行する。
以上説明した図1に示される全体構成は一例であって、文書処理システムは、図3で説明する要素が含まれると良いので、他の構成もあり得る。
図3は、文書処理システムを構成する要素A〜Kとそれらの関係、並びにユーザと後述する外部処理プログラムとストレージとの関係を示す図である。
図3に示されるユーザ110は、文書処理システムを使用するユーザである。また、外部処理プログラムは、筆記内容から所定の動作をするプログラムであり、このプログラムは予め用意しておく必要がある。ストレージ112は、情報を保存する記憶装置であり、例えば上記ハードディスク、MOドライブ、半導体ディスクなどが含まれる。
次に、各要素について説明する。要素A121は、紙に紙IDを付与・印刷し、紙IDと文書IDおよび処理IDを関連付けるものである。これら各IDについては後に説明する。要素B122は、紙IDを管理し、フォームが定まっている電子文書に対して割り当てられる文書IDと紙IDとを関連付けるものである。
要素C123は、紙IDの付与された紙文書であり、この紙文書にユーザ110は筆記する。要素D124は、紙文書からデータ並びに紙IDを取得するものである。要素E125は、紙IDをデコードするものである。要素F126は、紙IDをエンコードするものである。要素G127は、紙IDである。要素H128は、処理IDと外部処理プログラム111を関連付け、処理IDを管理するものである。要素I129は、フォームのレイアウト情報および処理方法を編集・管理するものである。要素J130は、フォームのレイアウト情報および処理方法から、筆記情報に分解・保存するものである。要素K131は、紙IDから文書ID及び処理方法に変換するものである。
これらの要素は、図1の場合、要素A、B、Eが帳票作成装置108に搭載され、要素Iが記憶装置100に搭載され、要素D、F、J、Kが帳票処理用PC109に搭載されている。
なお、印刷手段と処理紙ID関連手段と文書紙ID関連手段は要素Aに対応する。紙ID管理手段は、要素Bに対応する。情報取得手段は、要素Dに対応する。デコード手段は、要素Eに対応する。エンコード手段は、要素Fに対応する。筆記画像情報抽出手段は、要素Jに対応する。筆記画像情報管理手段は、筆記情報管理テーブルに対応する。また、符号化紙IDは、紙IDを要素Fでエンコードしたものに対応する。
なお、2次元コードやコード、あるいは符号化紙IDであることが図面などから明らかな場合、符号化紙IDを単に紙IDと表現することもある。
以上説明した要素は、ソフトウェアやハードウェアとして実現することが可能である。そのため、以下の説明では、それらを構成するものを説明する際にモジュールという表現を用いることがある。また、各IDであるが、紙IDとは、それぞれの紙に一意的に割り当てられるものであり、全ての紙のIDは、異なったIDとなっている。あるいは、同一の文書ID、同一ページのものを複数枚印刷する際は、これらは同一の紙IDとしてもよい。
処理IDとは、文書管理システムで行われる筆記情報に対する処理に割り当てられるIDである。文書IDとは、電子文書に対して割り当てられるIDであり、原文書IDと表現することもある。
次に、上述した要素と関連して、一連の文書処理の詳細な説明をする。
まず、外部処理プログラムと文書処理システムについて説明する。外部処理プログラムと文書処理システムとのインタフェースはあらかじめ定められているので、それに応じた外部処理プログラムを作成する。
このようにして作成される外部処理プログラムは、2種類に分類することができ、1つは筆記情報そのものを処理する非定型処理を行う外部処理プログラムであり、もう1つは筆記情報を紙文書のフォームに従ってデータに分解し、そのデータに対する定型処理を行う外部処理プログラムである。
ここで、定型処理とは、いわゆる帳票処理とよばれているもので、あらかじめ記入する欄、すなわちフォームが設けられており、どこに記入されたかで、あとの処理が定まるもののことを言う。たとえば、住所欄に記入されたものは住所として扱われる。すなわち筆記場所によって処理が定まるもののことをさす。また、ここで非定型処理とは、前述の定型処理以外のものをさす。
本実施例において、非定型処理では所定のフォルダに筆記情報が記述されたデータファイルが保存される。非定型処理を行う外部処理プログラムは、このフォルダやデータベースを定期的に監視し、新しいファイルができていればそれを取得して、新しいファイルを処理するようなプログラムである。
あるいはフォルダやデータベースに新たなファイルが保存されるとイベントが発生するようなOS(Operating System)を用いて、このイベントをキャッチして処理を行うプログラムである。
このような非定型処理を行う外部処理プログラムの例としては、電子文書に筆記情報を重畳させ、それをあらかじめ定められた人に添付ファイルとしてメールを行う、というものがあげられる。
次に、定型処理であるが、本実施例では所定のデータベースに筆記情報などのデータが保存されるため、定型処理をする外部処理プログラムは、データベースを定期的に監視し、新しいデータができていればそれを取得して処理するようなプログラムとして作成される。
あるいはデータベースに新たなデータが登録されるとイベントが発生するようなデータベースを用いて、このイベントをキャッチして処理を行うプログラムとして定型処理の外部処理プログラムは作成される。このような定型処理の外部処理プログラムとしてはアンケート処理といったものをあげることができる。
なお、非定型処理を行う外部処理プログラムと定型処理を行う外部処理プログラムの両方は必ずしも必要ではないが、何らかの処理をするために少なくとも一つは必要である。また、以下の説明で、非定型処理を行う外部処理プログラムを非定型処理プログラムと表現し、定型処理を行う外部処理プログラムを定型処理プログラムと表現する。
以上説明した外部処理プログラムは、文書処理システムと関連付けるために、文書処理システムに登録される。
まず、非定型処理プログラムを登録するためのモジュールの詳細は要素Hに記述されている。このモジュールを用いて、処理情報は登録される。
この処理情報とは本システムと非定型処理プログラムとのインタフェースの方法を表すものであり、例えばデータが保存されるフォルダ名がある。このとき、データのフォーマットはあらかじめ定められている。また、後述するように印刷時にはどの外部処理プログラムを起動するかを選択しなければならないので、そのために必要な説明文なども登録する。登録することにより、要素H内では処理IDが自動的に振られ、それは後述するように再利用される。
次に、定型処理について説明する。定型処理を行うためにはまずフォームを設計しなければならない。そのためのモジュールの詳細は要素Iに記述されている。これはフォームの各要素のレイアウト情報と処理情報を編集し、登録するものである。なお、この実施例では定型処理は処理IDが0としてあらかじめ登録されている。また、ここでのレイアウト情報は、例えば紙での入力欄の位置などを表し、処理情報は、どの要素をどのデータベースに登録するか、および文字認識を行うか、行うとすれば文字種は何であるかなどを表す。
文書処理システムを利用するユーザは、まず紙文書を印刷する。そのためには、まず印刷したい電子文書を、要素Aを使って印刷する。この電子文書はファイルとして保存されており、そのファイル名には、ファイルがどんな性質のファイルなのかを判断するために通常用いられる拡張子が含まれる。
定型処理用の電子文書は、ある特定の拡張子を持っているので、印刷しようとする電子文書の拡張子によって、定型処理か非定型処理かが定まる。
非定型処理の場合、上記モジュールに対して印刷を指示すると、このモジュールは要素Hに登録済みの外部処理プログラムに関する情報をユーザに提示し、筆記後に行われる処理の選択を求める。ユーザがどの処理を行うか選択することにより、処理IDが定まる。
処理IDが定まると、モジュールは、電子文書のIDと処理IDを要素Bに登録し、紙IDを取得する。その後、紙文書にこのIDを付与し印刷を行い、紙IDが付与された紙文書、すなわち要素Cが得られる。
また、定型処理の場合、モジュールに対して印刷を指示すると、非定型処理の場合とは異なり、処理IDは0と定められているので、ユーザに処理の選択を求めることはなく、要素Bに電子文書のIDと処理IDを登録し、紙IDを取得する。その後は先ほどと同様、印刷が行われ、要素Cが得られる。
以上の処理によって、紙文書とその電子文書および筆記に行うべき処理の関連付けが行われたことになる。つまり紙文書には紙IDが付けられ、これに文書IDと処理IDが関連付けられ、この紙に筆記したときに、どの紙に筆記したか、および筆記した後、どのような処理を行うかが、文書処理システムに登録されたことになる。なお、上記原文書とは、筆記情報がまだ記述されていない文書を表す。
次に、紙に筆記後の動作について説明する。ユーザは、作成された要素Cである紙文書に筆記し、この紙文書を要素Dに対応するスキャナや、例えばMFP(Multi Function Printer)のスキャナ部を用いて画像として入力させる。これにより、要素D内の要素Eで紙IDが取得される。これらの紙IDと画像は要素Kに送られる。
あるいは、ユーザは、作成された要素Cである紙文書を要素Dに対応する座標入力装置上に設置し、筆記を行う。すると要素Dで筆記情報が、要素D内の要素Eで紙IDが取得される。これらの紙IDと筆記情報は要素Kに送られる。
要素Kでは取得された紙IDから要素Bに問い合わせることにより文書IDと処理IDが特定される。このように特定することが可能なことは、要素Bで文書IDと処理IDを登録し、紙IDを取得しているためである。
次に、要素Hに問い合わせることによって処理IDから筆記情報をどこのフォルダに保存するかが得られるので、そこに文書IDと画像があわせて保存される。
次に、処理IDが0の場合について説明する。処理IDが0の場合は定型処理が行われる。まず、文書IDと画像が要素Jに渡される。要素Jでは要素Iに問い合わせて、文書IDからフォームのレイアウト情報と処理情報を得る。ここでの処理情報は、データの保存先や筆記情報の文字認識・マーク認識等である。
そこで、まずレイアウト情報を元に、画像をフィールドである記入欄毎に分解し、要素Dとしてスキャナを用いた場合は、電子文書の画像と筆記された紙文書の画像とを比較して筆記情報のみの画像を得る。あるいは、要素Dとして座標入力装置を用いた場合は、筆記された座標列がそのまま得られている。その後、処理情報に従って文字認識やマーク認識等が行われ、その結果がデータベースに保存される。
以上が一連の文書処理の詳細な説明である。次に、各要素の詳細について説明していく。
まず、要素Aから説明する。この要素Aの説明では5つの実施例を説明する。最初に図4を用いて第1の実施例を説明する。
図4に示されるフローチャートは、ネットワークを介さずスタンドアロンのPC上で文書を独自に印刷する場合の処理を示している。
まずステップS101で、レイアウトエディタを起動し作成済み電子文書を表示する。このレイアウトエディタは、処理IDの閲覧/選択と、紙IDの取得、電子文書の表示/編集/印刷が行える。具体的には要素B・F・Hや、定型文書の場合は要素I「帳票作成プログラム」が、非定型文書の場合はワープロソフトなどが連携し上記の機能を実現する。ステップS102では必要に応じて電子文書の編集を行う。
次のステップS103ではユーザが印刷要求を行った際に、上述のとおり電子文書の拡張子により定型文書/非定型文書の判別を行い、非定型処理の場合、要素Hに登録済みの外部処理プログラムに関する情報をユーザに提示し、筆記後に行われる処理の処理IDの決定を行う。また、定型処理の場合、印刷の指示が行われると、非定型処理の場合とは異なり、処理IDは0と定められているので、ユーザに処理の選択を求めることはない。
次のステップS104で、紙IDが取得される。ステップS105で、紙IDが2次元コードにエンコードされ、ステップS106で、2次元コードが電子文書中の所定の位置に貼り付けられる。ステップS107で電子文書が印刷される。
この処理での紙IDの取得には、要素Bが用いられ、紙IDと電子文書の各ページ、そして処理IDとの関連付けを行うとともに、それらを管理データベースが利用される。また、紙IDを取得したのちに紙IDから2次元コードを作成するのは、要素Fにより行なわれる。
作成された2次元コードは、重畳位置の指定があった場合は電子文書内の指定位置に、重畳位置の指定がなかった場合は予め定められている電子文書内の所定の位置に重畳される。このID取得から文書に2次元コードを挿入するまでの一連の流れは、ユーザがワープロソフトで印刷を実行したときに自動的に行われる。あるいはメニューに用意してユーザが明示的に任意の時点で実行させる。
その為には、ワープロソフトにマクロ機能が備わっている場合、そのマクロ機能を用いれば実現することができる。この場合では要素Bと要素Gがソフトウエアモジュールであり、Windows(登録商標)のCOMという形式であれば、マクロ機能からこれらのモジュールを呼び出すことができ、さらにWordObjectLibraryというモジュールのAddPictureメソッドを用いれば画像を電子文書の任意の位置に挿入することができる。このようにして要素Cである紙文書が印刷される。
なお、ステップS104は、紙ID管理段階、処理紙ID管理段階、文書紙ID関連段階、紙ID付与段階に対応する。このステップS104において紙IDを取得する際、まず、要素Bが用いられる。このとき要素Bにより、紙IDの管理も行われる。さらに、処理IDと紙ID、文書IDと紙IDの関連付けも行われる。ステップS105は、エンコード段階に対応する。ステップS107は、印刷段階に対応する。
次に、図5を用いて第2の実施例を説明する。図5は、文書を作成・編集した後に印刷サービスによって印刷する場合の処理を示すフローチャートである。まず、ステップS201でユーザは電子文書を作成する。この電子文書内には各構成要素(オブジェクト)とその特性が記述されている。
ステップS202で、ユーザは、必要に応じてレイアウトエディタを起動/表示/修正を行う。次のステップS203で、レイアウトエディタの機能を利用して処理IDの選択/紙IDの取得が行われる。この処理において、処理IDの選択には要素Hが、紙IDの取得には要素Bが用いられ、紙IDと電子文書の各ページ、そして処理IDとの関連付けを行うとともに、それらを管理するデータベースが利用される。なお処理IDの選択が行われるのは非定型文書の場合のみで、定型処理の場合には、処理IDは0と定められているので、ユーザに処理の選択を求めることはない。
ステップS204で、要素Fにより、紙IDから2次元コードが作成される。ステップS205で、作成された2次元コードは、重畳位置の指定があった場合は電子文書内の指定位置に、重畳位置の指定がなかった場合は予め定められている電子文書内の所定の位置に重畳される。
次のステップS206で、作成された2次元コード重畳済みの電子文書または電子文書の保存場所をSOAP(Simple Object Access Protocol)を使用して印刷サービスに送信する。なお、電子文書の保存場所を送信する場合は、2次元コード重畳済みの電子文書を印刷サービスからアクセス可能な場所に保存する。
ステップS207では、送信されたのが電子文書か電子文書の保存場所かで、処理が分岐する。電子文書の場合は、レイアウトエディタまたはビューワの機能によりステップS209で電子文書が印刷される。
電子文書の保存場所を送信した場合は、ステップS208で印刷サービス内部において受信した保存場所から電子文書が取得され、ステップS209で電子文書が印刷される。
以上説明した第2の実施例は、レイアウトの編集を行うPCにプリンタドライバ等の印刷環境が導入されていない場合でも印刷を可能とする。
なお、印刷サービスは、所定のPCで動作しており、そのPCに導入されている印刷環境はサービスとして他のPCに公開されているので、印刷サービスにアクセスできるPCであれば、その機能を使用して電子文書を印刷することができる。つまり、印刷環境がないPCでも電子文書の印刷命令を発行することができる。また、印刷サービス内部では編集する必要がないので、印刷コマンドを持ったビューワが、印刷サービスが動作するPCに導入されていればよい。
次に、図6を用いて第3の実施例の説明をする。図6は、電子文書の編集を行わず印刷サービスを使用して印刷する処理を示すフローチャートである。
ステップS301で、ユーザが電子文書を作成した後、ステップS302で、その電子文書または電子文書の保存場所、それに加え処理IDがSOAPを使用して印刷サービスに送信される。このとき、電子文書の保存場所を送信する場合は、印刷したい電子文書を印刷サービスからアクセス可能な場所に保存する。
送信される処理IDの決定は、電子文書が非定型文書の場合、要素Hにより処理IDの一覧を取得しユーザに処理IDの選択を促すことで行われ、電子文書が定型文書の場合、処理IDは0が用いられる。
ステップS303では、送信されたのが電子文書か電子文書の保存場所かで、処理が分岐する。電子文書が送信された場合には、ステップS303からステップS305へ処理は進む。電子文書の保存場所が送信された場合には、ステップS303からステップS304へ処理は進み、印刷サービス内部において受信した保存場所から電子文書が取得される。
電子文書を取得または受信すると、ステップS305で、印刷サービスが稼動するPCが紙IDの取得を行う。この処理での紙IDの取得には、要素Bが用いられ、紙IDと電子文書の各ページ、そして処理IDとの関連付けを行うとともに、それらを管理するデータベースが利用される。
次のステップS306で、要素Fにより、紙IDから2次元コードが作成される。ステップS307で、作成された2次元コードは、重畳位置の指定があった場合は電子文書内の指定位置に、重畳位置の指定がなかった場合は予め定められている電子文書内の所定の位置に重畳される。
そして、ステップS308で、2次元コードが重畳された電子文書の印刷用イメージファイルが紙に印刷される。このうち、紙ID取得、2次元コード作成、2次元コード貼り付け、印刷には、印刷サービスが稼動するPCに導入済みのレイアウトエディタの機能が使用される。
以上説明した第3の実施例は、レイアウトエディタをインストールしていないPCで電子文書作成を行っても印刷することを可能とする。印刷サービスは、所定のPCで動作しておりそのPCにのみレイアウトエディタをインストールしていれば、その機能を使用して電子文書を印刷することができる。つまり、レイアウトエディタがないPCでも電子文書の印刷命令を発行することができる。
次に、図7を用いて第4の実施例について説明する。図7は、電子文書の編集を行わず印刷サービスを使用して印刷する処理を示すフローチャートである。
ステップS401で、ユーザが電子文書を作成した後、ステップS402で、その電子文書または電子文書の保存場所、それに加え処理IDがSOAPを使用して印刷サービスに送信される。このとき、電子文書の保存場所を送信する場合は、印刷したい電子文書を印刷サービスからアクセス可能な場所に保存する。また送信される処理IDの決定は、電子文書が非定型文書の場合は、要素Hにより処理IDの一覧を取得しユーザに処理IDの選択を促すことで決定し、電子文書が定型文書の場合、処理IDは0が用いられる。
ステップS403では、送信されたのが電子文書か電子文書の保存場所かで、処理が分岐する。電子文書が送信された場合には、ステップS403からステップS405へ処理は進む。電子文書の保存場所が送信された場合は、ステップS404で、印刷サービス内部において受信した保存場所から電子文書が取得される。
取得または受信された電子文書は、ステップS405で、印刷サービス内部において、レイアウトエディタまたはビューワの機能により、印刷用イメージファイルに変換される。次のステップS406で、印刷サービスが稼動するPCが紙IDの取得を行う。この処理での紙IDの取得には、要素Bが用いられ、紙IDと電子文書の各ページ、そして処理IDとの関連付けを行うとともに、それらを管理するデータベースが利用される。
次のステップS407で、要素Fにより、紙IDから2次元コードが作成される。ステップS408で、作成された2次元コードは、電子文書と同様に、印刷用イメージファイルに変換され、重畳位置の指定があった場合は電子文書内の指定位置に、重畳位置の指定がなかった場合は予め定められている電子文書内の所定の位置に重畳される。ステップS409で、2次元コードが重畳された電子文書の印刷用イメージファイルが紙に印刷される。
以上説明した第4の実施例は、レイアウトエディタをインストールしていないPCで電子文書作成を行っても印刷することを可能とする。印刷サービスは、所定のPCで動作しておりそのPCにのみレイアウトエディタをインストールしていれば、その機能を使用して電子文書を印刷することができる。
つまり、レイアウトエディタがないPCでもレイアウトファイルの印刷命令を発行することができる。また、印刷サービス内部では電子文書そのものに編集されるわけではなく、印刷用イメージファイルに対して画像重畳操作を行うので、印刷コマンドによるファイル出力等の機能を持ったビューワが、印刷サービスが動作するPCに導入されていればよい。
さらに印刷サービス内部での2次元コード重畳操作は印刷用イメージファイルに変換した後に変換後のファイルに対して行われるので、元の電子文書がどのような形式であろうと、統一的な操作で2次元コードデータの重畳と紙への出力を行える事も第4の実施例のメリットである。
次に、図8を用いて第5の実施例について説明する。図8は、印刷サービスを使用して印刷する処理を示すフローチャートである。ステップS501でユーザがレイアウトエディタを使用し電子文書を作成・編集した後、ステップS502で、その文書からプラットフォームに依存しない印刷イメージ又はページ記述言語等(以下、ページ記述言語等も含め印刷イメージと記す)を作成する。また既存の電子文書を編集せずにそのまま用いる場合は、レイアウトビューワなどの印刷命令を使用し、電子文書から印刷イメージを作成する。なお、印刷イメージとは、実際に紙に印刷された紙文書のイメージを表す。
このようにして作成された電子文書の印刷イメージが、ステップS503で、SOAPを使用して印刷サービスに送信される。この際、ユーザが選択した処理IDと電子文書の保存先を示す文書IDが一緒に印刷サービスに対して送信される。印刷サービスが稼動するPCでは印刷イメージと文書ID及び処理IDを受信した後に、ステップS504で紙IDの取得が行われる。この処理での紙IDの取得には、要素Bが用いられ、紙IDと電子文書との関連付けを行うとともに、それらを管理するデータベースが利用される。
次のステップS505で、要素Fにより、紙IDから2次元コードが作成される。ステップS506で、作成された2次元コードは、先に受信した電子文書の印刷イメージの形式にあわせて変換され、重畳位置の指定があった場合は電子文書内の指定位置に、重畳位置の指定がなかった場合は予め定められている電子文書内の所定の位置に重畳される。
そして、ステップS507で、2次元コードが重畳された電子文書の印刷用イメージファイルが紙に印刷される。
以上説明した第5の実施例は、元の電子文書の保存先が、印刷サービスからのアクセスが不可能な場所にある場合でも2次元コード付き印刷を可能とする。また印刷サービスは、電子文書の印刷イメージを受信した後に2次元コードと電子文書の重畳を行うが、この重畳処理にはレイアウトエディタを用いないので、レイアウトエディタがPCにインストールされている必要はない。
さらに編集する必要の無い既存の電子文書を印刷する場合には、電子文書を作成するPCは印刷イメージを作成するために必要なレイアウトファイルの印刷命令さえ発行できればよく、そのPCに編集機能を有するレイアウトエディタがインストールされている必要は無い。
つまり、やり取りする2つのPCともにレイアウトエディタを使用せずに電子文書に2次元コードを重畳することが可能となる。例えばPDFファイルの場合は、電子文書を作成するPCとなるコンピュータにアドビ社のAcrobat(登録商標)のような編集アプリケーションがインストールされている必要は無く、Acrobat(登録商標) Readerのような印刷命令が発行可能なアプリケーションのみがインストールされていれば良い。
次に、紙IDを管理する要素Bについて説明する。図9、図10は、紙IDと文書とを関連づけ、それを管理する要素Bにおいて用いられる紙ID管理テーブルの各例を示している。
要素Bは、他の要素から紙出力に対して、紙IDの登録要求をされたとき、少なくとも電子文書を一意に指定できる情報を受けとり、それに対して紙ID管理テーブル内で唯一である紙IDを割り当て、文書情報を紙ID管理テーブルに格納する。
この紙ID管理テーブルの説明をする。図9、図10において、行145に示すようなまとまりである各行が、登録された紙IDに対応する文書情報の一単位であり、各列が紙IDの登録要素となっている。
列141には割り当てた紙IDが格納される。列142には電子文書を一意に指定する情報が格納されている。図9では電子文書を一意に指定する情報としてパス名が指定されているが、異なるPCに格納されている電子文書までを扱う場合は、図10に示されるように、ネットワークパス名であったり、URI(Uniform Resource Identifiers)であったりしてもよい。複数ページの電子文書を扱う場合、各ページ毎に文書情報が存在し、列142にはページ数に関する情報も含まれる。また、図10に示されるように、列142にページ数に関する情報を格納しない場合、別の列146に格納する。その場合、列142と列146により電子文書が一意に指定される。
また、電子文書の格納先が文書管理システムである場合はその管理IDであってもよい。さらには図10のように電子文書の格納先システムが異なっているものでも格納された電子文書を識別可能であれば格納先システムが複数あってもかまわない。また、登録要求を受け付ける際に、電子文書そのものを受け取り、それを他のものと区別可能なファイル名にして保存した上で紙IDを割り当てて登録する形態であってもかまわない。
紙ID管理テーブルではさらに、その紙文書や紙文書上の筆記に対してどのような処理プログラムが処理するかを示した処理IDが割り当てられている列143をもっている。処理IDについての詳細な説明は要素Hで行う。
また、文書情報は、電子文書がどのようなアプリケーションから作成されたものかを示す列144をもつ。このような電子文書、または紙文書に関する属性情報を列144以下にいくつ持っていてもかまわない。
また、紙IDを指定され、管理情報の要求である参照要求をされたとき、要素Bでは図9における列141の紙IDから該当する紙IDを検索し、検索された紙IDに対応し、列142に示される電子文書を一意に指定する情報を要求元に渡す。要素Bは、同時に列143以降の属性情報も渡してもかまわないが、少なくとも列142の情報を渡す。図10の場合は少なくとも列142および列146の情報を渡す。
また、図9、図10などの紙ID管理テーブルの内容は、要素Bがプログラムである場合、そのプログラムが動作するメモリ内で保持していても良いし、あるタイミングでファイルシステムのファイルとして保存していても良い。また、紙ID管理テーブルの内容をデータベースに電子的情報として格納する形態もある。この場合、紙IDとその属性情報を1レコードとして格納し、紙IDをキーとして文書などの情報を保存したり、取出したりすることにより紙IDと電子文書とを関連づけ、それを管理するものでもよい。
このように、要素Bが管理している紙ID管理テーブルを、プログラム動作を行っているメモリ上のみではなく、ハードディスクのファイルなどの不揮発性ストレージなどへ保存することで、要素Bが一度停止してもそれまで管理していた関連づけ情報を利用することが可能な文書処理システムとなる。
また、管理している紙IDと電子文書との関連づけ情報を不揮発性ストレージ装置にネットワークアクセス可能なデータベースとして保存することで、システム上にそのデータベースへ関連づけ情報を参照する要素Bを複数存在させることが可能な文書処理システムとなる。このような不揮発性ストレージ装置は、不揮発性記憶手段に対応する。
さらに、要素Bは他の要素とは独立した装置に存在し、他の要素の装置からアクセス可能なネットワークで接続された形態であってもかまわない。このとき特に要素BはRPC(Remote Procedure Call)やWebサービスなどの形態で存在し、ネットワーク経由で他の手段からの登録要求や参照要求を受けつけることになる。
このように、要素Bが他の要素とネットワークで接続されており、要素Bがシステムで唯一に紙文書に対して識別子を発行するものであることを保障すると、さらにネットワーク的に離散した他の要素装置から登録要求、管理情報の参照要求を受けることが可能なシステムとなる。
さらに、電子文書の情報を受信したときに、ネットワーク上に同一の電子文書名が存在していても、その名称をネットワークパス名などの格納されるPC名を含めることで区別して管理することが可能なシステムとなる。また、登録する電子文書を受信して保存し、その保存した電子文書名を割り当てた紙IDと関連づけて管理することで、同じ電子文書名も登録毎に区別して管理することが可能なシステムとなる。
次に、紙IDが付与された紙文書である要素Cの説明をする。まず、紙文書の例を図11にて説明する。図11はサークル等の脱会・入会登録用紙40としての紙文書の例であり、この紙文書は、コンピュータ上で管理されている電子文書がプリンタによって印刷されることで生成される。なお、この脱会・入会登録用紙40は、普通紙である。
脱会・入会登録用紙40には、電子文書で定義されたコンテンツ46と機械読み取り可能な2次元コード45、並びに4つのタイミングマーク41、42、43、44が印刷されている。タイミングマーク41、42、43、44は筆記情報を読み取る際に位置合わせのために利用されるが、形・数・大きさ・色などは限定されない。また、タイミングマークが存在しない場合もありうる。
ちなみに、脱会・入会登録用紙40には、脱会・入会登録用紙47に示されるように、適切な筆記具にて記入される。
また、図12に示される紙文書のように、コンテンツの中にデータを埋め込むような紙文書もありうる。図12には、紙文書例59と、4つのタイミングマーク48、49、50、51と、コンテンツの一部52を拡大したコンテンツの一部の拡大図53と、識別子54と、コード枠兼アライメントドット55と、データドット56とが示されている。このように、紙文書例59には、コンテンツの中にデータが埋め込まれている。
なお、本実施例において、要素Cを紙文書と表現しているが、要素Cは筆記具にて筆記可能ものであればよく、紙やシート状のプラスチックフィルムなどを用いることができる。
次に、紙文書から筆記情報を取得する要素Dについて説明する。
要素Dの一例であるデジタルカメラ等のエリアCCDを撮像デバイスとして用いた画像取得装置について説明する。
この画像取得装置の場合、例えばA4サイズの紙文書を300万画素クラスのエリアCCD(画素数2048×1536(pixels))で一度に取り込むとすると、換算実効解像度は約170(dpi)程度となる。2次元コード等の情報量の多い画像を取り込み、それをデコードする為には相応の高い解像力が必要になり、170(dpi)では不十分な場合がある。この場合、エリアCCDの集積度を上げて解像度の向上を図ることも考えられるが、半導体製造技術のプロセス上の限界がある。
そこで、本実施例では、エリアCCDを撮像デバイスとし、撮像倍率が可変なズームレンズを有する撮像手段を有し、その撮像手段を移動させる駆動手段により被写体の部分領域をズームアップして分割領域として取り込み、画像合成することで高解像度化を実現し、2次元コード等の読取を可能とした画像取得装置について説明する。
この画像取得装置の構成例を図49に示す。図49に示される画像取得装置は、撮像部201と、駆動部202と、支柱203と、制御手段と接合手段と符号化紙ID検出手段に対応する制御部205と、インタフェース204と、支持台206と、2つの操作スイッチ207で構成される。
駆動部202は、撮像部201を点線で示されるように回転駆動させる。支柱203は、撮像部201と駆動部202を支持する。制御部205は、画像取得装置の制御を行うとともに、支持台206とともに支柱203を支える構造となっている。操作スイッチ207は、画像取得装置の操作をするためのものである。紙文書208のA〜Iの点線で示された部分領域は、画像取得装置が撮影する各部分領域を表している。
次に、上述した撮像部201、駆動部202、制御部205のさらに詳細な構成を図50に示す。
制御部205は、システムコントローラ211と、CPU(Central Processing Unit)210と、SDRAM(Synchronous Dynamic Random Access Memory)212と、PCI(Peripheral Component Interconnect)バス213と、PCMCIA(Personal Computer Memory Card International Association)214と、I/O(Input/Output)入出力デバイス215と、IDE217と、PCI/ISA(Industry Standard Architecture)ブリッジIDE(Integrated Drive Electronics)USB(Universal Serial Bus)変換インタフェース218と、USB219と、ハードディスク216と、ISAバス220と、I/Oコントローラ221と、シリアル222と、パラレル234と、LAN(Local Area Network)インタフェース235より構成される小型のボードコンピュータユニットである。
制御部205は、撮像部201の動作制御、撮像装置201から転送された画像の画像処理や編集、記録等を行い、外部機器へインタフェース204(図49参照)を介して接続され、外部機器との通信を行なう。
インタフェース204としては、PC用の汎用インタフェース、例えば、RS−232C、USB、IEEE1394、ネットワークアダプタ、IrDA(Infrared Data Association)を用いる。本実施例では、制御部205を用いる構成を示しているが、制御部205により行う処理や記録を、撮像部201内のMPU236で代用するような構成としても構わない。
次に、駆動部202の説明をする。駆動部202は、ステッピングモータX255、ステッピングモータY256及び回転量検出用のロータリエンコーダX244、ロータリエンコーダY257と、検出回路258と、駆動回路243で構成される。
なお、所定の回転位置で静止するような基準位置を設けてステッピングモータの回転位置をキャリブレーションすれば、各ロータリエンコーダと検出回路は設けなくてもよい。
次に撮像部201を説明する。この撮像部201の説明は、撮像部201とともにレンズも図示されている図51を用いて説明する。
図51には、CDS(Correlated Double Sampling:相関二重サンプリング)241と、A/D変換器242と、IPP(Image Pre-Processor)281と、メモリ240と、TG(Timing Generator)280と、MPU236と、I/Oコントローラ237と、I/Oデバイス261と、固定レンズ267、268と、ズームレンズ266と、絞り機構265と、シャッタ264と、フォーカスレンズ263と、撮像素子262で構成される。なお、I/Oデバイス261は、図50で説明したシリアル238とUSB239とを、まとめて表現したものである。
被写体の像は、固定レンズ267、268、ズームレンズ266、絞り機構265、フォーカスレンズ263を通して、シャッタ264により露光時間が制御され、撮像素子262上に形成される。撮像素子262からの画像信号はCDS241でサンプリングされた後、A/D変換器242でデジタル信号化される。この時のタイミングはTG280で生成される。画像信号はその後、IPP281でアパーチャ補正などの画像処理、圧縮などが行われ、メモリ240に保存される。
各ユニットの動作は、MPU236にて制御される。また、I/Oコントローラ237はI/Oデバイス261を介して、外部の機器と接続され、画像の入出力、撮影制御信号の通信等に用いられる。
次に、一枚の被写体を分割して撮影する場合の制御部205の動きについて、再び図50を用いて説明する。
(1)制御部205は、I/O入出力デバイス215より駆動部202の駆動回路243にパルス電圧を印加し、所定の角度になるように検出回路258の回転検出値をフィードバックする。
(2)制御部205は、USB219より撮像部201のUSB239へ撮影コントロール信号を送信する。
(3)必要に応じて(1)、(2)が繰り返される。画像転送が指示されるとUSB239を介して撮像装置201から画像が制御部205に転送され、その画像を制御部205は、LANインタフェース235を介してネットワークに送信する。
(4)紙文書208(図49参照)は、図52に示されるように、後述する2次元コード290等のデータ識別情報が印字されているものとする。この符号化紙IDである2次元コードは、要素Eによりデコードされ、デコードが成功し、紙IDが取得できたなら、デバイスタイプ、紙ID、画像等の情報は、XML形式のデータとして要素Kへ送信される。
次に、紙文書上の画像の撮影から、撮影により得られた画像へ2次元コードをデコードした結果を対応づけるまでの画像取得装置の処理を、図53のフローチャートを用いて説明する。
ステップS1401で、画像取得装置は、ズームレンズを調整し、被写体と撮像面がほぼ正対した位置関係において、被写体となる紙文書の全体が写るように全体画像撮影を行う。ステップS1402で、画像取得装置は、撮影した画像より2次元コード等のコードの存在するコード領域を検出する。次に、画像取得装置は、ステップS1403で、コード領域の領域座標と重心位置を算出する。この場合、予めコードの存在する領域を規定しておくことで、ステップS1403の高速化を図るようにしても良い。あるいは、領域はコード領域の外接矩形領域とし、外接矩形領域の重心位置を算出するようにしても良い。
ステップS1403で得られた領域座標とその重心位置の座標から、画像取得装置はステップS1404で、データを識別する情報をより大きい撮像画像として取得する為のズーム倍率と駆動部202の駆動量を線形演算により算出する。この駆動量は、光軸をロール軸としたパン(左右)、チルト(上下)の2方向から算出する。
算出された結果に基づき、画像取得装置は、ステップS1405で、駆動部202を駆動する。次のステップS1406で、画像取得装置は、駆動させた位置で撮影する。ステップS1407で、画像取得装置は、読み込んだコードを要素Eによりデコードする。そして、ステップS1408で、画像取得装置は、全体撮影画像に対してデコード結果を対応付ける。
これによりコード領域のみを高解像で取得し、高速に取り込んだ全体画像に対して、信頼性の高い紙IDを付与できるようになる。
次に、実際の撮影について説明する。上述したように、画像取得装置は、撮像部を駆動することで、紙文書を分割撮影し、分割撮影した各画像を1つの画像に合成するようになっている。
そこでまず分割撮影について説明する。既に説明した図49に示されるように、撮像部201が、点線で示された左右方向へ駆動をすることで、領域A、B、Cを撮影することができる。
さらに、撮像部201が、図54に示されるように、上下方向へ駆動することでA〜Iまでの全ての領域を撮影領域にすることができる。なお、図54は、撮像部201が紙文書208を撮影する様子を示すものであり、撮像部201は、紙文書208の2つの領域301、302を撮影している。
上述したように、被写体を高解像に撮影する場合は、撮像系の画角をできるだけ狭くし、複数の位置で撮影する。この場合、被写体のすべての部分が分割画像のいずれかに撮影されるように撮影を行う。
このようにして撮影された分割画像と、分割画像を接合することで合成した合成画像を図55と図56を用いて説明する。分割画像は、図55に示されるように、アルファベットが描かれた画像が6分割されたものである。この図55に示されるように、図の下方向の文字ほど、小さくなっていることが分かる。これら6つの分割画像を、接合した画像が、図56に示される画像である。
このような方法で画像を接合する場合に限らず、分割せずに1枚で被写体を撮影する場合でも、図56のような台形上の歪(あおり歪)が生じる。従って、図57に示されるような、正対した画像にする必要がある。図57に示される画像は、図56の画像に、あおり歪の補正、ノイズ除去を行った画像である。
このようなあおり歪の補正は、被写体に正対した位置での正対画像を基準とし、正対画像と他の画像との間の射影変換行列を予め求め、それを用いて画像を再配置することにより得られる。
この撮影の説明を簡単にするため、図54に示した2つの領域301、302を分割撮影する場合について説明する。まず、領域301上の点と領域302上の点をそれぞれ、数1が示す2点とする。
、
このとき、被写体が平面の場合、両者には、次に示す数2、数3の関係が成り立つ。
数2、数3の各hは、以下の行列で定まるものである。
数4に示される行列は、射影変換行列であり、画像が撮影される2つの位置が同じ場合、この関係は一定である。従って、予め既知の組(u1,v1)、(u2,v2)からh1〜h8を算出すれば良い。
数1、数2、数3を用いることにより、領域302上の各点が領域301上の位置で撮影された場合の位置を算出することができるため、領域301上を基準とし、領域301上に領域302上の画素をマッピングすることができる。分割画像が3枚以上の場合も、例えば1つの領域と他の領域との射影変換行列を予め算出しておく。そうすることで、正対された分割画像が得られ、順次接合していくことで、図57に示した正対された画像を得ることができる。
以上が画像取得装置の構成や処理内容である。次に、この画像取得装置の6つの変形例について説明する。なお、以下の説明において、図49で説明した符号など、既に説明した符号についての説明は省略する。
第1の変形例である図58に示される画像取得装置は、図49に示した画像取得装置に、2次元コード等のコードを読み取る為の撮像部310を紙文書を取り込む為の撮像装置201とは別に設けたものである。
この図58に示した画像取得装置は、コードの存在する小領域を高解像で取り込む目的で設けた為、撮像部201よりも小型で安価な画像入力装置で構成すれば良い。また、この場合の画像取得装置は、撮像部201により取り込んだ画像に対応させて、撮像部310により取り込んだ画像上のコード311のデコード結果を記録するものとする。
次の図59に示される第2の変形例は、撮像部310の代わりに紙ID情報読み取り部312を設けたものである。この紙ID情報読み取り部312は、汎用のバーコードリーダ等で使用されている撮像ユニットを用いることを想定している。
次に、図60を用いて、第3の変形例について説明する。図60に示される画像取得装置は、入力する紙文書208の下敷き313上にコード311を設けた装置構成であり、支柱203は、支持台315に支持される。これによりコードの付与されていない紙に対してコードを付与できるようにできるとともに、プリンタなどと組み合わせ、再度、紙に出力することで、コードを付与することも可能である。
次の図61に示される第4の変形例は、支持台315に収納可能な平面部材上にコード314を設けた装置構成となっている。この平面部材は、符号化紙ID表示手段に対応する。
また、図62に示される第5の変形例は、撮像部201上に投影部316を設けることで、点線で示された投影領域317にコード316を投影できる装置構成とする。そして、ユーザが自由に投影するコードを電子データとして編集可能なものとする。この投影部316は、光学投影手段に対応する。
この投影部316は、図62において撮像部201上に設けられているが、別な部位に固定するものであっても構わない。また、投影部316は光源、集光レンズ、ミラー、液晶パネル、投射レンズから構成される代表的な液晶プロジェクタと同様の構成のものやDMD(Digital Mirror Device)を用いたDLP(Digital Light Processing)による構成等いずれの構成のものでも良いが、小型なものとしたほうがよい。
図63に示される第6の変形例は、点線で示された撮像範囲に液晶ディスプレイ等の表示デバイスを有する携帯情報端末318を設け、この表示デバイス上にコードを表示させることで、取り込む紙文書208に対応させたコードを付与できるようにする。この携帯情報端末318は、表示手段に対応する。
以上が6つの変形例であるが、図60〜図63において駆動部を図示していないのは、駆動部を有する構成に限定されないことを示している。
次に、要素Dの他の実施例である筆記情報入力装置60を図13に示す。筆記情報入力装置60は、紙への筆記情報を取得するデジタイザなどの座標入力装置74と、紙に印刷されている情報と電子的な情報とを対応付け識別するための紙ID情報読取装置75と、取得した情報を保持する記憶装置71と、取得・保持された情報をPCに送信する通信装置72と、これらの装置を制御する制御装置73とを有する。
座標入力装置74は、手書き座標を連続的に取得するデジタイザなどを用いることができる。デジタイザを用いた場合、その方式には公知のものとして電磁誘導方式、超音波距離計の原理を用いた三角測量方式などのものがあるが、いずれもセンサと専用入力ペンによって紙に行われた筆記動作を検出し、筆記情報、この場合は筆記された軌跡の座標である筆記座標を計測する装置である。このようにして計測された筆記座標の集合が筆記情報となる。
専用入力ペンのペン先には実際に紙に筆記することの可能なペン先が備わり、電子的に筆記座標を検出すると同時に紙に筆記軌跡を記入できるように構成することが望ましい。
紙ID情報読取装置75は例えばプリンタによって紙に印刷された符号化紙IDを読み取り、解読する装置であり、公知のものとして2次元コードリーダ、1次元バーコードリーダなどを用いる。ここで、紙ID情報読取装置に2次元コードリーダを用いた場合には、たとえばコード化に公知のQRコード(登録商標)を用いた場合には、英数字で最大4296文字の情報を識別することが可能であり、一般にユーザが印刷した書類を識別するためには十分な容量を得ることができる。
記憶装置71はハードディスクや、不揮発性メモリであり、コンパクトフラッシュ(登録商標)ディスクなどの取り外し可能なメモリなどを用いることもでき、上記紙ID情報読取装置75によって取得された筆記座標、印刷条件情報、電子文書情報を保存する。このとき、PCとのデータのやり取りは、メモリを直接に接続することで可能となり、通信装置72を省くこともできる。
通信装置72は、蓄えられた情報を送信する装置であり、イーサネット(登録商標)、無線LANなどのネットワーク技術や、USBやブルートゥース、シリアル接続技術などが用いられる。
制御装置73は、例えばマイクロコンピュータによって構成され、上記の装置を後述する動作にしたがって動作制御する。
これらの装置は一体に構成することも可能であるし、個々の装置に分かれて構成することも可能である。また、一体型に構成した場合、バッテリ駆動とすることで、さまざまな場所に移動して利用することが可能になる。印刷した紙への筆記作業は、オフィスのデスクの上だけとは限らないため、筆記情報入力装置を一体かつ可搬型に構成することが望ましい。
一体型に成形した筆記情報入力装置60の外観例を図14に示す。図示した例では、紙ID情報読取装置75(図13参照)を2次元コードリーダ62として実現しており、また設置された紙文書には印刷された文書本文65と、紙ID63が、あらかじめ印刷されている。座標取得装置61は超音波式のデジタイザによって実現しており、専用入力ペン66によって実際に筆記情報64を加えると共に、座標データを取得することが可能になっている。
次に、可搬型のデジタイザ型の筆記情報入力装置を用いた場合の処理について図15を用いて説明する。まず、筆記情報入力装置内の座標入力装置は、ステップS601で、専用入力ペンによって筆記が開始されると同時にペン先の紙文書への接触(ペンダウン)を検出し、ステップS602で筆記座標を検出する。
次のステップS603で、筆記情報入力装置は、2次元コードリーダにより、専用入力ペンが筆記座標を読み取っている間、あるいは専用入力ペンが筆記面に接したときなど適宜、2次元コードを読み取る。
次のステップS604で、筆記情報入力装置は、読み取った2次元コードをデコードし、紙IDなどを読み取る。
こうして読み取られた筆記座標、紙IDからなるデータは、一旦、ステップS605で、記憶装置に保存され、次のステップS606で、適宜、通信装置によってPCへ送信される。
ここで、保存され、送信されるデータは、例えば図16に示すような形式で構成される。図16には、「装置識別番号」と、「紙ID番号」と、「筆記X座標」と、「筆記Y座標」と、「ペンU/D」の項目を有する表が示されている。
「装置識別番号」は、筆記情報入力装置を識別するための番号である。「紙ID番号」は、筆記情報入力装置が読み取った紙の紙IDである。「筆記X座標」と「筆記Y座標」は、筆記座標情報のX座標とY座標である。「ペンU/D」は、専用入力ペンのアップ/ダウンを示すものである。このような形式のデータにより、筆記座標、紙IDを送信している。
次に、要素Dの他の実施例について説明する。この実施例は、記入が終わった紙文書から、スキャナなどを用いて紙文書の電子画像を取得し、要素Eへデータを渡す実施例である。
最初に、図17を用いて画像入力装置について説明する。画像入力装置88は、画像入力装置88内の各装置を制御するための制御装置82と、プログラムや画像を記憶するための記憶装置83と、外部接続されたスキャナ80やMFP86と通信してそれらを制御するためのスキャナ制御装置81と、画像を処理するための画像処理装置84と、外部ネットワークとの通信を制御するネットワーク制御装置85とを有する。
この画像入力装置88には、直接接続されたスキャナ80や、ネットワーク87を介して通信可能なMFP86を利用して画像を入力することができる。
この画像入力装置の処理を、図18のフローチャートを用いて説明する。図18に示されるフローチャートは、紙IDを取得する処理を示している。
ステップS701は、画像の読み取りである。これは、ユーザが記入を終えた文書をスキャナ80またはMFP86を用いて画像の読み取りを行う処理である。この場合の読み取り条件は、例えば600dpi、白黒2値画像である。画像の2値化は通常のスキャナが有している2値化機能を使用する。
読み取られた紙文書の画像は、ステップS702で、記憶装置83の所定のフォルダに画像ファイルとして蓄えられ、次処理へのキューに入る。この読み取った画像を所定のフォルダに画像ファイルとして蓄えるように制御するのはスキャナ制御装置81の役割であり、スキャナ80やMFP86のボタンが押され、画像がそれらから転送されることを検知し、転送された画像を記憶装置83の所定のフォルダに格納する。
画像処理装置84は、スキャナ80やMFP86から入力される画像が保存される記憶装置83のフォルダを監視し、キューの先頭にある画像から順番に、ステップS703で画像正立処理を行い、ステップS704で領域抽出処理を行い、ステップS705でデコード処理を行う。ステップS706で、デコードができたかどうか判断し、デコードできた場合は、紙IDの取得を行い、処理を終了する。また、デコードできなかった場合も処理を終了する。
この図18に示したフローチャートは、情報取得段階の処理を示すものである。また、このようにして取得された紙IDは、後述する管理テーブルにより、文書ID及び処理IDに変換することができる。この処理は、紙文書処理ID変換段階での処理に対応する。
なお、ステップS702の処理で、キュー方式を使用するのは、ADF(Auto Document Feeder)等を使用して多数の画像が入力されたとき、同時に複数の画像が処理されると画像処理装置84の負荷が非常に高くなり動作が不安定になりかねないことと、処理の速度が遅くなることが理由として挙げられる。
また、ステップS703の画像正立処理は、次のステップ704の領域抽出処理が正立された画像から領域を抽出するようになっているため、スキャナから読み取られた方向の分らない画像を正立する処理である。
この画像正立処理の詳細について図19のフローチャートを用いて説明する。まず、ステップS801では、読み取った画像についてOCR処理が行われ、その結果が保存される。次のステップS802、ステップS803、ステップS801のループでは、画像を90度ずつ回転させてOCR処理が行われ、それらの結果も保存される。
90度ずつ回転させた4方向でOCR処理がなされると、ステップS804で、OCR処理結果の尺度のひとつである確信度を用いて画像の方向が判定される。この確信度とは認識した文字の確からしさであり、この画像方向判定に使用する確信度は、各文字の確信度の平均である。この平均の確信度がもっとも大きい値を持つ方向での画像が正立であると判定する。
このようにして画像正立処理を終えると、図18のステップS704の処理である紙IDを有する2次元コードの検出・デコードするための領域抽出処理が行われる。領域抽出処理は、画像中の白画素で囲まれた黒画素を含む領域を検出する。この領域抽出の詳細を図20のフローチャートを用いて説明する。
まず、ステップS901の連結黒画素のラベル付け処理では、画像を左上の原点から走査する。そして、左上、上、左の画素が白画素であり、現在着目している画素が黒画素である場合に、その黒画素に新たなラベルをつける。それ以外の画素の場合は左上、上、左のいずれかにある黒画素のラベルを画素につける。
具体的に、図21を用いて説明する。まず、図21に示される数字が書かれた四角形は、全て黒画素であるとする。これを踏まえ、上記処理を図21の画素90、91、92、93を用いて説明する。このとき走査される順番は、画素90、91、92、93の順である。
まず、画素90について着目すると、画素90の左上、上、左の画素が白画素であり、現在着目している画素90が黒画素であるため、ラベル「1」が画素90につけられる。
次に走査される画素91について着目すると、左上、上の画素は白画素であるが、左が白画素ではないため、左上、上、左のいずれかにある黒画素のラベルが画素91につけられる。従って、画素91には画素90と同じラベル「1」がつけられる。
次に、画素92について着目すると、画素92の左上、上、左の画素が白画素であり、現在着目している画素92が黒画素であるため、新たなラベル「2」が画素92につけられる。
次に走査される画素93について着目すると、左上、上の画素は白画素であるが、左が白画素ではないため、左上、上、左のいずれかにある黒画素のラベルが、現在着目している画素93につけられる。従って、画素93には画素92と同じラベル「2」がつけられる。
このようにして、以下の画素についても、同様の処理が行われる。
次のステップS902で行なわれる連結黒画素の外接矩形座標検出処理では、同一のラベルを有する黒画素群を囲む外接矩形座標を検出する。そのことを示す図が、図22である。図22に示されるように、ラベル「1」の黒画素群の外接矩形94と、ラベル「2」の黒画素群の外接矩形95が検出される。
次のステップS903は、重なり、接触のある外接矩形を統合する処理で、各外接矩形に重なりあるいは接触がある外接矩形同士を統合し、新たな外接矩形が形成される処理である。それが図23の外接矩形96である。
そして、ステップS904で、2次元コードの大きさとしてありえない大きさの外接矩形を排除するため、所定の範囲の大きさの外接矩形が抽出される。以上により、白に囲まれた黒画素を含む領域が検出されたので、検出された矩形領域全てに対して画像処理装置84でデコードを行うことができる。
予め、2次元コードの位置がわかっているならば所定の位置にある矩形領域のみにデコードを行えばよいが、紙文書のレイアウトによってどこに2次元コードが存在するかわからない場合は、検出した矩形領域すべてに対してデコードを行い、デコードできたものを紙IDとして検出するようにする。なお、デコードの詳細は、次の要素Eの説明で行う。
デコードが成功し、紙IDの取得ができたなら、デバイスタイプ、紙ID、筆記情報が要素Kへ送信される。この場合、上記情報は、XML(eXtensible Markup Language)形式のデータとして要素Kへ送信される。
また、ここで使用したスキャナはフラットベッドスキャナ以外にも、デジタルカメラ、書画カメラ等の画像撮像装置も使用できる。
次に、紙IDをデコードする要素Eについて説明する。まず、要素Eの説明として、2次元コードを読み取るバーコード読取装置について説明する。バーコード読取装置は、図24に示されるように、頂点候補検出部11と、コード枠検出部12と、射影変換係数算出部13と、データサンプリング部14と、誤り訂正部15と、フォーマット変換部16とを有する。また、バーコード読取装置は、上述した図14の2次元コードリーダ62に示されるように、斜め上から2次元コードを読み取るようになっている。
頂点候補検出部11は、2次元コードの頂点候補を検出する。コード枠検出部12は、頂点候補に基づき、後述するコード枠を検出する。コード枠が検出されることで、頂点候補は真の頂点と確定される。
射影変換係数算出部13は、コード枠検出部12で検出されたコード枠の各頂点の座標と、2次元コードを作成した時のコード枠の各頂点の規定座標とから、作成した2次元コードの各セルの規定中心座標と読み取った2次元コードの各セルの中心とをマッピングする係数である射影変換係数を求める。
データサンプリング部14は、射影変換係数算出部13で求めた射影変換係数を用いて、2次元コードのデータのサンプリングを行う。誤り訂正部15は、データサンプリング部14が読み取ったデータが誤りかどうか判定し、誤りがないか、あるいは誤り訂正が可能ならば、誤り訂正符号以外の整数型56ビットのデータをフォーマット変換部16へ出力する。フォーマット変換部16ではデータを数字文字列に変換して出力する。
次に、頂点候補検出部11の処理の詳細について説明する。図25は、入力画像の頂点候補を検出する処理を示す図である。図25に示されるように、頂点の検出は、矢印に示される方向に入力画像を走査することで検出するようになっている。具体的には、入力画像の四隅から斜め走査を行い、黒画素を検出し、検出された黒画素をA、B、C、Dとする処理が行われる。
次に、図26を用いてA、B、C、Dが頂点候補かどうかを検出する処理について説明する。図26は、2次元コードを拡大した図である。この2次元コードに対し、頂点候補検出部11は、A、B、C、Dから矢印の方向、例えばAなら右下45度、Bなら左下45度というように、セルの一辺の画素数の1/√2の画素数だけ画素を追跡してそれらがすべて黒画素かどうかを判定する。それらがすべて黒画素であれば、頂点候補検出部11は、A、B、C、Dを頂点候補として検出し、コード枠検出部12に処理を移す。
次に、コード枠検出部12について説明する。コード枠検出部12では、図27のように、頂点候補A、B、C、Dから1/√2の画素数だけ追跡した終端どうしを結ぶ黒枠判定ライン76、77、78、79を通過する画素の黒画素の割合が全ての直線において直線毎に8割以上存在すればそれをコード枠であると判定し、頂点候補A、B、C、Dを2次元コードの頂点A、B、C、Dとして確定する。このとき、同時に頂点A、B、C、Dの座標も検出される。
次に、射影変換係数算出部13について説明する。射影変換係数算出部13では、コード枠検出部12で検出されたコード枠の各頂点の座標と、2次元コードを作成した時のコード枠の各頂点の規定座標とから、作成した2次元コードの各セルの規定中心座標と読み取った2次元コードの各セルの中心とをマッピングする係数である射影変換係数を求める。この射影変換係数の求め方は後に説明する。
次に、データサンプリング部14について説明する。データサンプリング部14には、2次元コード、2次元コードを作成した時点の各セルの規定中心座標、射影変換係数が入力される。データサンプリング部14は、射影変換係数算出部13で求めた射影変換係数を用いて、作成した2次元コードの各セルの規定中心座標を射影変換することにより、読み取った2次元コードの各セルの中心座標を求める。
データサンプリング部14は、求めた中心座標を画像のサンプリング中心座標とし、その座標を中心とする3x3画素の黒画素数が白画素数を上回れば ‘1’、そうでなければ‘0’としてデータを読み出す。読み出された72ビットのデータは誤り訂正部15に入力、配列され、誤り訂正の判定が行われる。誤りがないか、あるいは誤り訂正が可能ならば、誤り訂正部15は、誤り訂正符号以外の整数型56ビットのデータをフォーマット変換部16へ出力する。フォーマット変換部16ではデータを数字文字列に変換して出力することで、数字文字列が復元される。
上述した2次元コードの読取もソフトウェアでおこなってもよく、図28にその処理のフローチャートを示す。ステップS1001で斜め上から2次元コードを撮像した2次元コードが入力される。ステップS1002では、2次元コードの頂点候補が検出される。
このステップS1002では、図25に示すように画像の四隅から斜め走査が行われ、黒画素が検出される。検出された黒画素をA、B、C、Dとする。さらにステップS1002では、図26に示されるように、A、B、C、Dから矢印の方向、例えばAなら右下45度、Bなら左下45度というように、セルの一辺の画素数の1/√2の画素数だけ画素が追跡され、それらすべて黒画素かどうかが判定される。それらがすべて黒画素であればA、B、C、Dが頂点候補として検出され、ステップS1003に処理が移る。
ステップS1003では、図27に示されるように、頂点候補A、B、C、Dから追跡した終端どうしを結ぶ黒枠判定ライン52、53、54、55を通過する画素の黒画素の割合が、全ての直線において直線毎に8割以上存在すればそれをコード枠であると判定される。そして、頂点候補A、B、C、Dが2次元コードの頂点A、B、C、Dとして確定される。このとき、同時に頂点A、B、C、Dの座標も検出される。
このステップS1003で、コード枠が検出できなければ、ステップS1004の分岐処理でエンドに分岐し、読み取りは終了する。コード枠が検出された場合は、次のステップS1005へ処理は進む。
ステップS1005では、ステップS1003で検出されたコード枠の各頂点の座標と、2次元コードを作成した時のコード枠の各頂点の規定座標とから、作成した2次元コードの各セルの規定中心座標と読み取った2次元コードの各セルの中心とをマッピングする係数である射影変換係数が算出される。
次のステップS1006では、データサンプリングが行われる。具体的には、2次元コード、射影変換係数、作成した2次元コードの各セルの規定中心座標が入力され、ステップS1005で求まった射影変換係数を用いて、作成した2次元コードの各セルの規定中心座標を射影変換することにより、読み取った2次元コードの各セルの中心座標を求める。
そして、求めた中心座標を画像のサンプリング中心座標とし、その座標を中心とする3x3画素の黒画素数が白画素数を上回れば‘1’、そうでなければ ‘0’としてデータが読み出される。読み出された72ビットのデータは、ステップS1007で、誤り訂正の判定が行われる。誤りがないか、あるいは誤り訂正が可能ならば、誤り訂正符号以外の整数型56ビットのデータは、ステップS1008で、データを数字文字列にフォーマット変換され、ステップS1009で、数字文字列が出力される。
次に、射影変換係数の求め方について説明する。射影変換とは3次元空間内の図形・物体を2次元平面・スクリーンへと表示したときの変換である。3次元空間内の物体の座標を2次元平面上の座標へと変換するものであり、3次元画像処理の手法として広く知られたものである。
このような射影変換を正確に行うためには、撮像系の位置、光学的特性などが明らかになる必要がある。しかし、さまざまな装置へ対応することを考えると、さまざまな装置すべての撮像系の位置などを特定し、正確に定めることは困難である。
その一方で、斜めから撮像する光学系で読み取りやすくなるという効果を発揮するためには、必ずしも正確な射影変換を施す必要はない。例えば、従来の矩形、一様密度のセルで表現される2次元コードではなく、台形や多様な密度のコードであれば、斜めからの光学系で読取が容易になるという効果を発揮することができる。
こうした台形コードや多様なセルサイズを実現する簡単な例を図29で説明する。図29に示すような光学系において、読み取った画像は、射影変換によって、もともと長方形であった図形が台形に変形する。
このとき、台形の長辺と短辺との比率(X1/X3)は撮像素子からコードのそれぞれの領域への距離の比率の逆数(L3/L1)と等しくなる。本実施例においては、通常は矩形で各セルの大きさが均一である2次元コードの代わりに、上記の射影変換をキャンセルできるようなセルの形状や大きさを持つ2次元コードを作成する。
セルの大きさの決定は、2次元コードの1行ごとに一定の倍率で行う.この変形の倍率は2次元コードの1行の間においても、撮像面からの距離が異なっているが、たとえば1行の中間の位置における倍率で、1行の上部から下部まで等しい倍率で変換する。この操作によって、図30あるいは図31に示されるような階段状のセル境界を持つ形状の2次元コードが得られる。あるいは、厳密に射影変換演算を行って図32のような2次元コードを作成してもよい。なお、図30、図31、図32については、要素Gの説明で詳細な説明をする。
次に、上記射影変換について、図33を用いて説明する。図33には、読み取られた2次元コードを模式的に示した2次元コード67と、電子的に生成された2次元コードを模式的に示した2次元コード68とが示されている。また、2次元コード67のAs、Bs、Cs、Dsと、2次元コード68のAr、Br、Cr、Drは各頂点であり、括弧内のxs1やyr2は、座標を表している。また、PskとPrkは、セルの中心座標を表す。
2次元コード67のAs、Bs、Cs、Dsと、2次元コード68のAr、Br、Cr、Drの頂点は、図34に示される数式を満たす。これらの数式(1)、(2)は、2次元コード68など2次元コードの座標を定めるための座標から、2次元コード67など2次元コードの座標を定める座標への変換式を表しており、Ar、Br、Cr、DrからAs、Bs、Cs、Dsへの座標変換を規定する。
式(1)は、頂点のX座標に関する数式であり、式(2)は、頂点のY座標に関する数式であり、式(1)(2)の添え字iは、1から4まで動く。これらの数式で、b1〜b8は変換パラメータで、未知数である。これら変換パラメータは、Ar〜Dr、As〜Dsの各座標値を式に代入することで得られる八元一次連立方程式を解くことにより求められる。b1〜b8が求められると、電子的に生成された2次元コードの各セルの中心座標Prkを変換して2次元コードのサンプリング中心座標Pskを求めることができる。
次に、紙IDをエンコードする要素Fについて説明する。要素Gに対応する2次元コードを作成するとともに要素Fに対応する2次元コード作成装置について図35を用いて説明する。
2次元コード作成装置は、フォーマット変換部20と、誤り訂正部21と、2次元コード作成部23とを有する。
フォーマット変換部20は、入力された数字文字列をコンピュータ内で通常扱われる整数型56ビットデータに変換する。
誤り訂正部21は、整数型56ビットデータに変換されたデータに、誤り訂正符号16ビットを付加する。
この誤り訂正符号として、リードソロモン符号が用いられる。このリードソロモン符号は、バイト単位の誤りを訂正できる強力な誤り訂正方式であり、誤り訂正符号長の半分以下の誤りを訂正することができる。なお、リードソロモン誤り訂正符号の詳細については、昭晃堂「符号理論(コンピュータ基礎講座18)」宮川、岩垂、今井共著など、多数の書籍に記されている。
本実施例の場合には、誤り訂正符号長が2バイトなので1バイトの誤り訂正が可能である。
2次元コード作成部23は、データおよび誤り訂正符号データを図36に示されるように2次元コードの各セルに割り当てて、2次元コードを作成する。図36の各セルに示される番号は、配置位置を割り振られた番号である。
データおよび誤り訂正符号データのセルへの割り当ては、整数型56ビットデータが1〜56までのセルに、誤り訂正符号のデータ16ビットが57〜72のセルとなっている。なお、2次元コード作成時には、規定された頂点座標、セル中心座標が用いられる。この規定座標は2次元コード読み取り時にも使用される。
2次元コードの作成はソフトウェアで行ってもよく、図37にその処理を示すフローチャートを示す。
まず、ステップS1101で、数字文字列が入力される。ステップS1102では、数字文字列がコンピュータ内で通常扱われる整数型56ビットデータにフォーマット変換される。ステップS1103で、誤り訂正符号16ビットが作成され、整数型データに変換されたデータに付加される。この誤り訂正符号は、先ほどと同様にリードソロモン符号が用いられる。このようにして作成された整数型データおよび誤り訂正符号データは、ステップS1104で、図36や図38に示すように2次元コードの各セルに割り当てられ、2次元コードが作成される。なお、図36と図38については、要素Gの説明で詳細な説明をする。
データのセルへの割り当ては、先ほどと同様に整数型56ビットデータが1〜56までのセルに、誤り訂正符号のデータ16ビットが57〜72のセルとなっている。また、2次元コード作成時には、規定された頂点座標、セル中心座標が用いられる.この規定座標は2次元コード読み取り時にも使用される。
次に、紙IDである要素Gについて説明する。まず、図30で示した2次元コードについて説明する。2次元コードは、図30に示されるように、周囲が黒枠で囲まれ、内部に白または黒で1ビットの情報をあらわす最小単位であり情報領域であるセルが、図36に示したように72個配置されている。従って、この2次元コードは、72ビットの情報を表現することができる。
この2次元コードを斜め上から読み取ると、バーコード読取装置が得る2次元コードはセルが大きい下側の部分が縮小されて、台形の形状となる。2次元コードはこのようにしてゆがむが、バーコード読取装置で撮影された2次元コード内の各セルは撮像素子の複数画素を占め、その面積はセルの位置に関係なく概略等しくなる。
このように上側のセルの大きさは小さく、下側のセルの大きさが大きい2次元コードにより、斜め上から2次元コードを読み取るように設けられたバーコード読取装置の撮像素子は、セルの白黒情報の安定した撮影が可能になる。
また、2次元コードの他の例として、図31に示した台形コード(平面図)がある。この台形コードは、バーコード読取装置が斜め上から読み取る場合、撮像素子と各セルの距離に応じてセルの大きさが大きくなるようにした2次元コードである。
この台形コードの場合、セルは各行に12個配置され、6行あるので、セルの総数は72個ある。このセルの総数は図30の2次元コードのセルの総数と等しいので、この台形コードで表現できるビット数は図30の2次元コードで表現できるビット数と等しい。ちなみに、72ビットのデータは、データの配置を表した図38に示したように配置される。
また、2次元コードの他の例として、図32に示したような矩形の2次元コード57を射影変換し、台形の2次元コード58に変形した2次元コードを使用することもできる.この場合に、斜め上から撮影した場合に得られる2次元コードの画像は、2次元コード57に近いものが得られる。なお、2次元コード58が表現できる情報量は、72ビットである。
上述した3つの2次元コードにおいて共通していることの1つは、それらが横長となっていることである。その理由は、縦長にすると、セルの縦方向の長さが大きくなり、2次元コード全体のサイズが非常に大きくなり、小さい大きさで大容量のデータを表現できるという2次元コードのメリットがなくなるためである。
また、バーコード読取装置からみた場合、2次元コードとの距離は縦方向の変化に比べ横方向の変化の方が大きくなるため、バーコード読取装置から遠いところにあるセルは縦横比が大きい長方形にするのが適当である。したがって、図31、図32の例ではセルの横の長さの変化より縦の長さの変化のほうを大きくすることにより、バーコード読取装置で撮影した2次元コードは正方形に近い形状となる。
次に、処理IDと外部処理プログラムを関連付け、処理IDを管理する要素Hについて説明する。図39は要素Hにおいて用いる管理テーブルの一例である。この管理テーブルは、プログラム処理ID関連付け情報に対応する。
処理IDと外部処理プログラムとを関連づけ、それを管理する要素Hは、他の要素手段からある外部処理プログラムに対して処理IDを要求してきたとき(登録要求)、少なくとも要素Hが搭載されたPCで外部処理プログラムを一意に規定できる情報を受けとり、それに対してこの管理テーブル内で唯一であるIDを割り当て、外部処理プログラム情報を管理テーブルに保存する。
図39において、行155に示すようなまとまりである各行が処理IDに対応する外部処理プログラム情報の一単位であり、列151、152、153、154が登録要素となっている。
このうち、列151には割り当てた処理IDが格納される。また、列152には処理を行う外部処理プログラムを一意に指定する情報が格納されている。列152の一段目では外部処理プログラムのファイルパスが示されている。これにより、処理するプログラムが一意的に定まる。また、列152の二段目では、ジョブが格納されるフォルダ名を示すパス名が指定されている。ここでは、外部処理プログラムは一つのジョブフォルダにあるファイルを処理するものとし、その対応を一対一に規定することで、列151の処理IDと外部処理プログラムを関連づけている。
図39の第2行の例では、処理ID0001が*.docである電子文書を印刷した紙文書からの筆記情報を、c:\JobFolder\WordPrintのフォルダにジョブとして受け取る定型文書の処理を行うプログラムが登録されているということになる。また、列152の三段目では他のコンピュータ上のプログラムがWebサービスのURLとして指定されて、それが処理IDと関連付けられている。
その他、図39ではその外部処理プログラムがどのような電子文書の印刷からの筆記情報を扱えるかを示す属性情報である列153をもつ。また、列154は外部処理プログラムの説明が文字で記述されている。このような、列153、154のような外部処理プログラムに関する属性情報を列153、154以外にいくつ持っていてもかまわない。
また、処理IDが指定され、外部処理プログラムについての管理情報を要求されたとき(参照要求)、要素Hでは図39における列151のIDから該当するIDを検索し、少なくとも対応するID登録の要素である列152のフォルダパス名を一意に指定する情報を要求元に渡す。このとき、同時に列153以降の属性情報も渡してもかまわない。
また、図39の管理テーブルの内容は、要素Hがプログラムである場合、そのプログラムが動作するメモリ内で保持していても良いし、あるタイミングでファイルシステムのファイルとして保存していても良い。また、データベースシステムに電子的情報として格納するものもある。または、処理IDとそれに関する属性情報を1レコードとして格納し、処理IDをキーとして外部処理プログラム情報を保存したり、取出したりすることにより処理IDと電子プログラムとを関連づけ、それを管理するものでもよい。
このように、管理している処理IDと外部処理プログラムとの関連づけ情報を、プログラム動作を行っているメモリ上のみではなく、ハードディスクのファイルなどの不揮発性ストレージ装置などへ保存することで、要素H装置が一度停止してもそれまで管理していた関連づけ情報を利用することが可能なシステムとなる。
また、要素Hにおいて、処理IDとそれに対応する処理プログラムが処理するディレクトリ名が保存され管理されているので、処理プログラム名や処理するプログラム自体が変更されてもそれまでの要素Hにおける管理情報を変更せずに対応可能なシステムとなる。
また、要素Hは他の要素の装置とは独立した装置に存在し、他の要素の装置とはネットワークで接続された形態であってもかまわない。このとき、特に要素Hは、RPC(Remote Procedure Call)やWebサービスなどの形態で存在し、ネットワーク経由で他の要素からの登録要求や参照要求を受けつける。
この場合、管理している処理IDと外部処理プログラムとの関連づけ情報を不揮発性ストレージ装置として、ネットワークアクセス可能なデータベースへ保存することで、システムで統一的に関連づけ情報を登録および参照することができる要素Hを複数存在させることが可能なシステムとなる。
さらにネットワーク上の別の装置における外部処理プログラムを指定することが可能であるので、登録する外部処理プログラムをそのプログラムの動作条件にあうホスト装置にそれぞれ実装することが可能なシステムとなる。
また、システム上で唯一の要素Hの装置が他の要素の装置とネットワークで接続されており、他の要素の装置からネットワークを経由して処理IDと外部処理プログラムとの関連づけをおこない、管理することで、ネットワーク的に離散した他の要素の装置からシステムで統一的に関連づけ情報を登録および参照することが可能なシステムとなる。
次に、フォームのレイアウト情報及び処理方法を編集・管理する要素Iについて説明する。要素Iは、紙文書を読み取り、紙文書で定義されたレイアウトや処理情報を元に、後述する情報テーブルに、認識された筆記情報を情報変換して保存するシステムである。
具体的に、図40、図41を用いて説明する。図40は、図11で説明した脱会・入会申込書に筆記されたものを示している。図40に示されるように、脱会・入会申込書には、記入部として、記入部A170、記入部B171、記入部C172、記入部D173、記入部E174がある。また、脱会・入会申込書には、ラベルとして氏名ラベル175や、その他会員No、依頼項目、コメントが記されている。
また、図41には情報テーブルが示されている。情報テーブルは、登録情報と処理情報からなるテーブルである。登録情報は、IDと氏名と会員番号があり、処理情報は、氏名と会員番号と処理とコメントがある。
このように情報テーブルは、脱会・入会申込書に筆記された情報が記録されるものである。
脱会・入会申込書の記入部A170、記入部B171、記入部E174に筆記された筆記情報は、それぞれ、図41に示される情報テーブル内の氏名、会員番号、コメントに記録され、記入部C172、記入部D173に書き込まれた筆記情報は、チェックされた記入部に従い、「削除」あるいは「登録」が処理に記録される。
次に帳票作成プログラムについて説明するが、以下の説明においては、フォームのレイアウト情報及び処理方法を定義したファイルを帳票定義体と呼び、これを編集するソフトウェアを帳票作成プログラムと呼ぶことにする。
具体的な装置例を、再び図1に基づき説明する。帳票作成用PC101上では帳票作成プログラムが実行される。データサーバ106ではデータベースプログラムが動作する。このデータベースプログラムでは帳票作成プログラムで生成される帳票定義体の入出力管理や帳票処理で使われる情報テーブルの入出力を行っている。
帳票作成プログラムは、図40に示したような帳票のレイアウトや帳票の処理方法を図42のような帳票構造体として定義され、その中身を作成・編集するプログラムである。図42に示される帳票構造体は、記入部A170を、プロパティ群を意味単位ごとにセクション化し、帳票のレイアウト情報を要素ラベル<Layout>で、認識情報を要素ラベル<Input>で、保存先情報を要素ラベル<Registration>で管理し、それらの中身をXMLのプロパティとして記述したものである。
帳票作成プログラムは、図43に示されるようなGUIを持つ。このGUIは、レイアウトエリア155と、ツールボックス156からなる。ツールボックス156には、ラベルツール151、テキストボックス152、チェックボックス153、バーコード154を有する。
帳票作成者は、レイアウトエリア155に、ツールボックス156を用いてラベルやテキストボックスを配置することで帳票の作成を行うことができる。
なお、ラベルツール151は、レイアウトエリア155にラベルを作成するものである。テキストボックス152は、レイアウトエリア155にテキストボックスを作成するものである。チェックボックス153は、レイアウトエリア155にチェックボックスを作成するものである。バーコード154は、レイアウトエリア155にバーコードを作成するものである。
このようにツールボックス156から配置する内容に応じた要素をレイアウトエリア155に配置し、その属性(プロパティ)を画面上で設定する。ここでいう要素とは、ラベルツール151、テキストボックス152、チェックボックス153、バーコード154など配置する目的用途に応じたものである。
例えば、図44に示されるように、氏名を書く欄をテキストボックス152を利用して作成する。
各要素は図45に示すようなプロパティ群を持っており、これらプロパティは実際に帳票が表示している内容やその処理方法などを定義している。このプロパティ群について説明する。図45に示されるプロパティ群は、図40の氏名ラベル175と記入部A170に対応したプロパティ群の例である。プロパティ群は、レイアウト情報(コンテナ開始〜ボーダー)176・認識情報(入力〜認識結果)177・保存先情報(登録サーバ〜登録レコード)178に大別される。
レイアウト情報176は、要素の位置や大きさ、そこに表示する文字や枠線の状態を管理する。認識情報177は、帳票処理時の要素に手書きされた内容の情報変換作法を管理する。ここでは文字認識に用いる諸情報が管理されている。保存先情報178は、帳票処理時に用いる認識情報177で変換された結果の保存先を管理している。
なお、図45に示されるIDが0001の要素は「種類」が「Label」となっていることから、氏名ラベル要素である。この氏名ラベル要素は、「氏名」と言う文字が、「ボーダー」が「なし」となっていることからボーダーなしで表示され、「入力」が「不可」となっていることから、この氏名ラベルに筆記される場合の特別な処理はなく、また、「変換」が「なし」となっていることから入力された文字に対する変換はない。また、保存先情報178が空欄であることからデータの保存もされない。
IDが0002の記入部A170の「種類」が「Textbox」となっていることから、テキストボックスであり、表示する文字は、「文字」が空欄となっていることから無く、「ボーダー」が「囲み」となっていることから、囲み(枠線)を持って表示されている。そして手書きされた場合には、「入力」が「可能」となっていることから、何らかの処理が存在し、「認識知識」1〜3で表現される文字認識「日本語」、「手書き」、「姓名」の情報変換として行う。そして、得られた認識結果は、保存先情報178に記述されている場所に保存されることを意味している。
以上説明したように、帳票構造体にこのようなプロパティ群を持たせ、管理することによりフォームのレイアウトや処理方法を定義している。
次に、フォームのレイアウト情報及び処理方法から、筆記情報をデータに分解し保存する要素Jの説明をする。要素Dとしてスキャナを用いた場合、図46に示される脱会・入会申込書を用いて説明すると、要素Jは、読み取った記入帳票イメージ180と筆記されていない未記入帳票イメージ181との差分をとり、筆記イメージ182を得て、氏名や会員番号など、それぞれの要素に分解し、保存する。
要素Dとして座標入力装置を用いた場合は、筆記された座標列すなわち筆記情報がそのまま得られるので、氏名や会員番号など、それぞれの要素に分解し、保存する。なお、非定型処理の場合は帳票の概念がないので各要素には分解しないで、全体を1つとして保存する。
要素Dとしてスキャナを用いた場合は前述のように未記入の紙文書のイメージと記入済みの紙文書のイメージとの差分を取って、加筆分のみを取り出す。
要素Dとして座標入力装置を用いた場合は、筆記されたデータがそのまま得られる。
この処理を、図47のフローチャートを用いて説明する。なお、このフローチャートは、上述した差分をとる処理を行う手書き処理プログラムの処理を示している。また、筆記情報分解保存段階に対応する処理である。
ステップS1201は、帳票認識である。ステップS1202は、未記入帳票のイメージの生成である。この処理は、ステップS1201で呼び出された帳票定義体から、未記入帳票イメージを生成する処理である。
ステップS1203は、未記入帳票イメージと記入帳票イメージの位置合わせである。この処理は、タイミングマークを用いて未記入帳票のイメージに記入帳票のイメージをあわせる処理である。なお、タイミングマークの位置・形状情報は帳票定義体から取得される。また、タイミングマークが存在しない場合はこのステップは行われない。
ステップS1204は、筆記イメージの生成である。この処理は、未記入帳票イメージと記入帳票イメージの差分をとる処理である。
次のステップS1205からステップS1208までの処理は、帳票定義体に示される要素単位に行われる。まず、ステップS1205は、各要素に対応する部分画像の生成である。この処理は、要素のプロパティ(レイアウト情報)に従って行なわれ、例えば、図46の「山田太郎」、「56-381」などの部分画像を生成する処理である。
ステップS1206は、部分画像の文字認識である。この処理は、要素のプロパティ(認識情報)に従って行なわれる。ステップS1207は、文字認識することにより部分画像から文字へ情報が変換された結果を保存する処理である。
次のステップS1208で、全ての要素に対して処理をしたかどうかの判断がされ、まだ処理されていない要素があれば、ステップS1205へ処理が進み、全ての要素に対して処理をした場合は、終了する。
@
次に、筆記情報をデータに分解し保存する別の実施例を説明する。この実施例は、分解して保存するだけではなく、さらにそれらをブラウザを用いて閲覧することも可能とするものである。
この実施例で対象となる紙文書は、先ほどの実施例のように、記入されることを予定されたフォーマットを有する紙文書ではない。具体的にこの紙文書は、図64、図65、図66に示されるように、普通の文書である。この実施例では、このような紙文書に手書きされた筆記情報に対して行われる処理について説明する。
まず、先ほどの図64、図65、図66について説明する。これら3つの図に示される紙文書321は、帳票作成PC101から同一の電子文書を印刷して得られた紙文書であり、手書きされた筆記情報323を有し、いずれも紙ID322とタイミングマーク324が付与されている。
以下、紙文書321に対する処理について説明する。この説明では、手書きされていない紙文書の画像を原稿画像と表現し、筆記された部分のみの画像を筆記画像と表現し、読み込んだ画像をスキャン画像と表現する。
また、各紙文書321は、以下の処理を行う外部処理プログラムである筆記保存プログラムと、管理テーブル(図39参照)により関連付けられている。
まず、手書きされた紙文書が読み込まれる。紙文書を読み込んだスキャン画像と、紙IDと、文書IDはファイルとして、所定のフォルダに保存される。ここで、フォルダに保存されるファイルは例えばXML形式であり、画像データはbase64形式で文字列にエンコードされたものである。
筆記保存プログラムは、そのフォルダを監視していて、ファイルを見つけるとそれをメモリに読み込み、スキャン画像、紙ID、文書IDを取得する。次に、文書IDから原稿画像を生成し、スキャン画像との差分をとることで、筆記画像を抽出する。
このことを、具体的に図67を用いて説明する。図67には、スキャン画像330と、原稿画像331と、筆記画像332とが示されている。筆記保存プログラムは、スキャン画像330と、生成した原稿画像331との差分をとることで、筆記画像332を抽出する。
次に、これらの情報は、データサーバ106に、それぞれ保存される。筆記画像は、決められたフォルダ、例えばc:\DataFolder\Kahitsu 以下に一意な名前を付けて保存される。スキャン画像は、c:\DataFolder\Scan以下に一意な名前を付けて保存される。原稿画像は、c:\DataFolder\Genkoh 以下に一意な名前を付けて保存される。これらの画像は白黒2値のビットマップ形式である。
保存された筆記画像、原稿画像、スキャン画像のそれぞれのファイル名、紙ID、文書ID、時刻を、データサーバ106の筆記管理情報テーブルに格納する。この筆記管理情報テーブルを、図68を用いて説明する。
筆記管理情報テーブルは、筆記IDと、紙IDと、文書IDと、筆記画像と、スキャン画像と、原稿画像と、筆記取得時刻を含むテーブルである。
筆記IDは、このテーブルでこれらの筆記情報を識別するためのIDであり、早く格納されたものから順に数字が割り当てられる。筆記画像、スキャン画像、原稿画像は、それぞれの画像の位置並びにファイル名を示すものである。筆記取得日時は、筆記画像を取得した日時を示すものである。
このようにして保存された各情報を閲覧する筆記表示ブラウザについて説明する。図69に示される筆記表示ブラウザ340は、スキャン画像表示フレーム341と、筆記画像一覧フレーム342を有する。
スキャン画像表示フレーム341には、スキャン画像343が表示される。筆記画像一覧フレーム342には、筆記取得日時とともに筆記取得時刻筆記画像344が表示される。筆記画像はトリミング処理をして表示してもよい。ユーザが、画面下の筆記画像を選択することで、スキャン画像が、選択した筆記画像に対応するものに切り替わる。
このとき、筆記表示ブラウザは、次のように動作する。まず、ユーザが画面下の筆記画像を選択すると、対応する筆記IDを取得する。そして、筆記情報管理テーブルからその筆記IDに対応するスキャン画像のファイル名を取得して、その画像をスキャン画像表示フレーム341に表示する。
ここで、帳票作成用PC101と帳票処理用PC103とデータサーバ106は、同一の装置であってもよい。
次に説明する図70に示される筆記表示ブラウザ340は、図69に示したブラウザに、紙ID管理テーブルを表示するものである。図70に示される筆記表示ブラウザ340には、紙ID管理テーブル表示フレーム345を有する。
また、図69と異なり、スキャン画像表示フレーム341に表示されるのは、筆記画像と原稿画像を重畳したものである。この筆記表示ブラウザ340の場合、紙ID管理テーブル表示フレーム345で選択された原稿画像と、筆記画像一覧フレーム342に表示されている筆記画像とが重畳されたものを表示することができる。
ここで、筆記表示ブラウザ340が原稿画像と筆記画像の重畳画像を生成する動作を、図71のフローチャートを用いて説明する。
ステップS1501で、ユーザにより、紙ID管理テーブル表示フレームで紙IDが指定される。ステップS1502で、筆記表示ブラウザは、指定された紙IDに対応する文書IDを紙ID管理テーブルから取得する。そして、ステップS1503で、筆記表示ブラウザは、文書IDに対応する電子文書を画像化して、一時画像ファイルに保存する。
ステップS1504は、ループカウンタjの初期化である。このループカウンタjは、ステップS1505とからステップS1509のループ処理に用いられる。このループ処理は、筆記画像ファイルを検索する処理である。
ステップS1505で、筆記表示ブラウザは、筆記情報管理テーブルの筆記IDがj番となるレコードが存在するかどうか判断する。存在しない場合、処理は終了する。
存在する場合、ステップS1506で、筆記表示ブラウザは、筆記IDがj番のレコードに保存されている文書IDが、ユーザにより指定された文書IDを一致するかどうか判断する。
一致しない場合、ステップS1509で、jが増分され、再びステップS1505の処理が行われる。一致する場合、ステップS1507で、筆記表示ブラウザは、筆記画像ファイルを取得する。次のステップS1508で、筆記表示ブラウザは、一時画像ファイルに筆記画像ファイルを重畳する。
なお、筆記画像ファイルを取得した直後に、その画像を筆記画像一覧フレーム342に順に表示すれば、原稿画像と筆記画像の重畳処理が終わるときに、筆記画像一覧フレーム342に筆記画像の一覧が表示される。
この処理において、帳票作成用PC101と帳票処理用PC103とデータサーバ106は、同一の装置であってもよい。
このようにすることで、ユーザによる紙ID管理テーブルの紙IDの選択によって文書IDが指定されると、その文書IDをもつ電子文書になされた筆記画像の一覧を筆記画像一覧フレーム342に表示することができ、スキャン画像表示フレーム341へ加筆重畳画像が表示される。
次に、図72に示される筆記表示ブラウザ340について説明する。筆記表示ブラウザ340は、ユーザが紙IDを指定すると、その原稿画像ファイルになされたすべての筆記画像344、341、352を、色を変えて重畳した画像を表示する。色によって、筆記が同一の紙文書になされたのかどうかが分かる。
このような原稿画像と筆記画像を重畳した画像を生成する筆記表示ブラウザ340の動作は、図71のフローチャートに準ずる。
具体的には、ステップS1503において、白黒の二値のビットマップ形式に画像化した原稿画像を、256色多値のビットマップ形式に変換して、一時画像ファイルとして保存する。また、ステップS1508において、取得した白黒二値の筆記画像を、256色多値に変換してから、一時画像ファイルに合成して、256色多値画像として保存する。
このようにすることで、図72に示される筆記表示ブラウザ340を実現することができる。
なお、筆記表示ブラウザは、内部的に色情報を要素とする配列である色テーブルをもっている。ステップS1508において、筆記画像の色を、その時までに一時画像ファイルに重畳した画像の数により決定する。たとえば、色テーブルが、緑、赤、青、・・・、紫という配列であれば、筆記画像の色も、早く重畳するものから順に、緑、赤、青、・・・、紫となる。重畳する筆記画像の色の数がこの色テーブルの要素数を超えた場合は、重畳する色を最初の要素(ここでは緑)に戻す。
ここで、帳票作成用PC101と帳票処理用PC103とデータサーバ106は、同一の装置であってもよい。
次に、図73に示される筆記表示ブラウザ340について説明する。筆記表示ブラウザ340は、ユーザが紙IDを指定すると、その原稿画像ファイルになされたすべての筆記画像を、筆記者毎に色を変えて重畳した画像を表示する。色によって、筆記が同一の人物によってなされたのかどうかが分かる。スキャン画像表示フレーム341に筆記者名とその色のリストが表示される。
表示される筆記者名は、要素Dが取得する。例えば、画像を取得する際に、処理開始の直後に筆記者がその名前を、コンピュータの表示画面から入力するものとする。要素Kがその文字列を、スキャン画像等とともに、XMLファイルに格納して筆記保存プログラムへ渡す。筆記保存プログラムは筆記者名を表す文字列を取得し、筆記管理テーブルに、スキャン画像等とともに格納する。
このときの筆記管理テーブルが図74に示すものである。この筆記管理テーブルは、図68で示したものに、筆記者を加えたものである。図74に示されるように、他の情報とともに、筆記者が筆記IDごとに設けられている。
筆記表示ブラウザ340が原稿画像と筆記画像の重畳画像を生成する動作は、図72で説明した処理と同じものとなる。
また、図72の場合の筆記表示ブラウザ340も、上述した色テーブルをもっている。ステップS1508において、筆記画像の色を、その時までに一時画像ファイルに重畳した画像の筆記者の数により決定する。例えば、色テーブルが、緑、赤、青、黄、・・・、紫という配列であって、筆記情報管理テーブルの筆記者が、筆記IDが小さいものから順に、satoh, tanaka, tanaka, ono, …であるとする(図74参照)。その場合、筆記画像の色は、早く重畳するもの(筆記IDが小さいもの)から順に、緑、赤、赤、青、・・・となる。重畳する筆記画像の色の数がこの色テーブルの要素数を超えた場合は、重畳する色を最初の要素(ここでは緑)に戻す。
ここで、帳票作成用PC101と帳票処理用PC103とデータサーバ106は、同一の装置であってもよい。
@
次に、紙IDから文書ID及び処理方法に変換する要素Kについて説明する。紙IDから文書IDおよび処理IDに変換する要素Kの処理手順の概要図を図48に示す。図48では、要素Kを中心として、矩形図形は各要素を、吹き出し部はデータやリクエストの内容を、矢印はそのデータやリクエストの方向を、矢印上のステップはその順番を示している。
まず、ステップS1301で、要素Kは、D−PADから紙IDと筆記情報を取得する。あるいは、要素Kは、スキャナまたはMFPのスキャナ部で筆記した紙文書を読み込み、紙IDと画像を取得する。
次のステップS1302で、要素Kは、要素Bに対してその紙IDを送り、その紙文書に関する管理情報を要求する。その結果、ステップS1303で、要素Kは、紙文書に対応するID登録の要素である電子文書を一意に指定する情報や、処理IDなどを取得する。このステップS1303は、プログラム処理ID関連段階に対応する。
次に、要素Kは、ステップS1304で要素Hに対してその処理IDを送り、その紙文書に関する処理プログラムの管理情報を要求する。その結果、ステップS1305で、要素Kは、要素Hより対応する識別子で登録されているフォルダパス名を一意に指定する情報などを取得する。
そして、要素Kは、ステップS1306で、D−PADあるいはスキャナやMFPのような画像入力装置、要素B、要素Hを介して取得したすべての情報をファイルに格納し、上記処理で得たフォルダパス名にファイルとして保存する。
これにより、要素Kは、ステップS1307で、次段階の処理である、筆記情報をフォームのレイアウト表示および処理方法から、データに分解・保存する要素Jもしくは非定型処理プログラムへジョブを受け渡す。