以下、本発明に係る実施形態を、図面を用いて説明する。
(第1の実施形態)
はじめに、本発明の辞書更新装置に係る第1の実施の形態について、図1〜図12を用いて説明する。
図1は、第1の実施の形態のシステム構成図である。本システムは、サーバ1とクライアント2と複合機3とを備え、これらの間をネットワーク4で接続している。ネットワーク4は、イントラネットでもよいしインターネットでもよい。
サーバ1は、クライアント2と、SMTP(Simple Mail Transfer Protocol)を用いて電子メールをやり取りすることができる。また、サーバ1は、複合機3が備えるスキャナ機能により読み取られた原稿読取データを取り込むことができる。
なお、クライアント2及び複合機3の台数は1台に限定されるものではなく、複数台のクライアント2及び複合機3が、ネットワーク4を介してサーバ1に接続されていてもよい。この場合、サーバ1と各クライアント2とを接続するネットワークと、サーバ1と各複合機3を接続するネットラークとを別系統にしてもよい。
サーバ1は、辞書更新装置として機能する。すなわちサーバ1は、辞書データベース5に登録されている種々の認識用辞書ファイルを、クライアント2や複合機3から受信したデータを基に、グループウェアシステムやWeb辞書システム等を含む1乃至複数の外部システム6を適宜利用して更新する辞書更新機能7を有する。辞書更新機能7は、サーバ1に実装された辞書更新プログラムによって実現される。
辞書更新プログラムは、サーバ1内部の記憶装置に予め記憶されていてもよいし、ネットワークからサーバ1にダウンロードしても良い。また、記録媒体に記憶させたものをサーバ1にインストールしてもよい。記録媒体としては、CD−ROM等プログラムを記憶でき、かつサーバ1が読み取り可能な記録媒体であれば、その形態は何れの形態であっても良い。
図2は、サーバ1において、辞書更新機能7を実現するために必要な構成要素を示すブロック図である。サーバ1は、入力部11、メタデータ生成部12、辞書選択部13、辞書更新部14、関連情報検索部15、前記外部システム6別の外部システム連携部16及びデータベース記憶部17を備えている。
データベース記憶部17は、前記辞書データベース5のほかにルールデータベース20と連携情報データベース30とを記憶している。なお、図1ではサーバ1内の記憶装置にデータベース記憶部17を設けているが、データベース記憶部17は、サーバ1に対して外付けされた補助記憶装置に設けてもよい。あるいは、例えばルールデータベース20と連携情報データベース30はサーバ1内の記憶装置で記憶し、辞書データベース5はサーバ1外の補助記憶装置で記憶するというように、データベースの一部を内部に、残りを外部に設けることも可能である。
辞書データベース5に保存される認識用辞書ファイルの一例を図3に示す。辞書ファイルには、辞書名ファイル71、語ファイル72、辞書・語関連ファイル73等がある。辞書名ファイル71には、辞書IDに関連付けて辞書タイプ及び辞書名などが記録されている。語ファイル72には、語IDに関連付けて語などが記録されている。辞書・語関連ファイル73には辞書ID及び語IDに関連付けて出現頻度等が記録されている。
辞書IDは、対応する辞書タイプ及び辞書名の辞書を識別するためのコードである。語IDは、対応する語を識別するためのコードである。出現頻度は、対応する辞書IDによって特定される辞書において、対応する語IDによって特定される語が出現する頻度である。
ルールデータベース20に保存されるルールファイルには、辞書選択ルールファイル21、辞書連結ルールファイル22及び辞書更新ルールファイル23がある。辞書選択ルールファイル21に記録されるルールデータの一例を図4に示す。図示するように、辞書選択ルールファイル21には、固有のルールIDに1対1で対応して、対象データコード、属性、比較値、条件、外部連携ID、選択辞書IDが少なくとも記録されている。
対象データコードは、比較対象となるデータを指定するコードであり、コード“0”は、比較対象データがメタデータであることを示し、コード“1”は、比較対象データが外部システムから取得したデータであることを示し、コード“2”は、比較対象データがメタデータと外部システムから取得したデータの両方であることを示している。属性は、比較する属性を指定する情報である。
比較値は、比較対象データと比較される値を指定する情報であり、例えば、eメールアドレスを示す“Taro.tokyo@ttt.co.jp”,“東京太郎”等の文字列や、“2”,“100”等の数値等の情報がセットされる。なお、比較値が何も指定されない場合は、データ“NULL”がセットされる。条件は、比較対象データの属性の値と比較値とが成立する関係を指定する情報であり、例えば、“完全一致”、“部分一致”等の文字列比較の条件を示す情報がセットされたり、“差が比較値以内”、“差が比較値以上”などの数値比較の条件を示す情報がセットされたりする。なお、比較値が指定されていないために条件が問われない場合は、データ“Not”がセットされる。
外部連携IDは、外部システム6と連携する場合において、その連携先となる外部システム6を識別するコードである。各外部システム6には、それぞれ固有の外部連携IDが割当設定されている。なお、外部システム6と連携しない場合は、外部連携IDとして“0”がセットされる。選択辞書IDは、比較対象データと比較値との間で条件が成立する場合に、選択される辞書ファイルを識別するコードである。辞書データベース5に保存されている各辞書ファイルには、それぞれ固有の辞書IDが割当設定されている。
例えば、ルールID“1”に対応する辞書選択ルールの場合、対象データコードが“0”、属性が“送信者アドレス”、比較値が“Taro.tokyo@ttt.co.jp”、条件が“完全一致”、外部連携IDが“0”、選択辞書IDが“1”であるから、メタデータの中の送信者アドレスが“Taro.tokyo@ttt.co.jp”と完全一致の場合に条件が成立し、辞書ID“1”で識別される辞書ファイルが選択される。
また、ルールID“2”に対応する辞書選択ルールの場合、対象データコードが“0”、属性が“宛先アドレス”、比較値が“Group1”、条件が“前方一致”、外部連携IDが“0”、選択辞書IDが“2”であるから、メタデータの中の宛先アドレスが“Group1”で始まる場合に条件が成立し、辞書ID“2”で識別される辞書ファイルが選択される。
また、ルールID“11”に対応する辞書選択ルールの場合、対象データコードが“2”、属性が“Date”、比較値が“2”、条件が“差が比較値以内”、外部連携IDが“1”、選択辞書IDが“1”であるから、メタデータの中の日付と外部連携ID“1”によって識別される外部システム6から取得したデータの日付との差が2日以内である場合に条件が成立し、辞書ID“1”で識別される辞書ファイルが選択される。
同様に、ルールID“13”に対応する辞書選択ルールの場合、対象データコードが“1”、属性が“グループ名”、比較値が“Null”、条件が“Not”、外部連携IDが“2”、選択辞書IDが“3”であるから、外部連携ID“2”によって識別される外部システム6から取得したデータのグループ名に対し、辞書ID“3”で識別される辞書ファイルが選択される。
辞書連結ルールファイル22に記録されるルールデータの一例を図5に示す。図示するように、辞書連結ルールファイル22には、固有の連結ルールIDに1対1で対応して、連結対象となる2つの辞書選択ルールの各ルールID(ルールIDa,ルールIDb)と、条件と、辞書選択方法とが記録されている。
条件は、連結対象となる2つの辞書選択ルールが成立する関係を示す情報であり、少なくとも一方の辞書選択ルールが成立する場合に連結条件が成立したとみなす情報“OR”と、双方の辞書選択ルールが成立した場合に連結条件が成立したとみなす“AND”とがある。辞書選択方法は、連結条件が成立した際に選択する辞書ファイルを指定する情報であり、“Both”、“TrueOnly”、“Rule2Only”等がある。“Both”は、連結対象となる2つの辞書選択ルールによりそれぞれ選択される2つの辞書ファイルを連結条件が成立した際に選択する。“TrueOnly”は、連結対象となる2つの辞書選択ルールのうち成立した方のルールに対応する辞書ファイルを連結条件が成立した際に選択する。“Rule2Only”は、連結対象となる2つの辞書選択ルールのうちルールIDbに対応する辞書ファイルを連結条件が成立した際に選択する。
例えば、連結ルールID“101”に対応する辞書連結ルールの場合、ルールIDaが“1”、ルールIDbが“2”、条件“OR”、辞書選択方法“Both”であるので、ルールID“1”の辞書選択ルールとルールID“2”の辞書選択ルールのうち少なくとも一方が成立した場合は、ルールID“1”の辞書選択ルールとルールID“2”の辞書選択ルールのそれぞれの選択辞書IDで識別される辞書ファイルを選択する。
また、連結ルールID“102” に対応する辞書連結ルールの場合、ルールIDaが“11”、ルールIDbが“12”、条件“AND”、辞書選択方法“Both”であるので、ルールID“11”の辞書選択ルールとルールID“12”の辞書選択ルールの双方が成立した場合に限り、ルールID“11”の辞書選択ルールとルールID“12”の辞書選択ルールのそれぞれの選択辞書IDで識別される辞書ファイルを選択する。
同様に、連結ルールID“103” に対応する辞書連結ルールの場合、ルールIDaが“3”、ルールIDbが“4”、条件“OR”、辞書選択方法“TrueOnly”であるので、ルールID“3”の辞書選択ルールとルールID“4”の辞書選択ルールのうち少なくとも一方が成立した場合は、その成立した辞書選択ルールの選択辞書IDで識別される辞書ファイルを選択する。
また、連結ルールID“104” に対応する辞書連結ルールの場合、ルールIDaが“13”、ルールIDbが“14”、条件“AND”、辞書選択方法“Rule2Only”であるので、ルールID“13”の辞書選択ルールとルールID“14”の辞書選択ルールの双方が成立した場合に限り、ルールID“14”の辞書選択ルールの選択辞書IDで識別される辞書ファイルを選択する。
辞書更新ルールファイル23に記録されるルールデータの一例を図6に示す。辞書更新ルールファイル23には、固有の辞書IDに1対1で対応して、対象データコード、属性、比較値、条件、更新内容、外部連携IDが少なくとも記録されている。対象データコード、属性、比較値、条件及び外部連携IDは、辞書選択ルールファイル21に記録されるデータと同様である。更新内容は、条件が成立した場合に更新される内容を示す情報であって、例えば“追加更新”は、辞書IDで特定される辞書ファイルに、対象データのなかの属性の語を追加する。あるいは、既に属性の語が当該辞書ファイルに登録されている場合は、その後の頻度を+1加算する。
例えば、図6において、先頭の辞書更新ルールの場合、辞書IDが「1」、対象データコードが「0」、属性が「頻出語」、比較値が「Null」、条件が「Not」、更新内容が「追加更新」、外部連携IDが「0」であるので、辞書ID「1」の辞書ファイルが更新対象であるとき、メタデータの頻出語を当該辞書ファイルに追加更新する。
また、図6において、先頭より2番目の辞書更新ルールの場合、辞書IDが「3」、対象データコードが「1」、属性が「人名」、比較値が「Null」、条件が「Not」、更新内容が「追加更新」、外部連携IDが「3」であるので、辞書ID「3」の辞書ファイルが更新対象であるとき、外部連携ID「3」で識別される外部システム6から戻り値として取得した人名を当該辞書ファイルに追加更新する。
同様に、図6において、先頭より3番目の辞書更新ルールの場合、辞書IDが「1」、対象データコードが「1」、属性が「同義語」、比較値が「Null」、条件が「Not」、更新内容が「追加更新」、外部連携IDが「1」であるので、辞書ID「1」の辞書ファイルが更新対象であるとき、外部連携ID「1」で識別される外部システム6から戻り値として取得した同義語を当該辞書ファイルに追加更新する。
また、図6において、先頭より4番目の辞書更新ルールの場合、辞書IDが「2」、対象データコードが「1」、属性が「関連語」、比較値が「Null」、条件が「Not」、更新内容が「追加更新」、外部連携IDが「2」であるので、辞書ID「2」の辞書ファイルが更新対象であるとき、外部連携ID「2」で識別される外部システム6から戻り値として取得した関連語を当該辞書ファイルに追加更新する。
連携情報データベース30に保存される連携情報データファイル31の一例を図7に示す。図示するように、連携情報データファイル31には、各外部システム6をそれぞれ識別する外部連携IDに1対1で対応して、サービス先、アクション及び属性の各項目からなるデータが設定記憶されている。項目「サービス先」は、外部システム6の形態を示す情報であり、例えば「GroupWare」は、対応する外部連携IDで識別される外部システム6がグループウェアシステムであることを示し、「辞書サービス」は、対応する外部連携IDで識別される外部システム6がWeb上の辞書サービスシステムであることを示している。
グループウェアは、企業など組織内のメンバ同士が情報共有や協調作業を支援するためのソフトウェアであり、グループウェアシステムは、グループウェアが搭載されているシステムである。グループウェアで提供されている機能としては、ウェブ掲示板、電子メール転送、スケジュール管理、メンバ管理等の機能がある。
辞書サービスシステムは、公開されたAPI(Application Program Interface)を用いてWeb上の辞書サイトに検索語を含むクエリを送信すると、指定された語の意味や同義語等のデータを返すシステムである。この他の外部システムとしては、例えばWeb上の検索サービスシステムがある。このシステムは、公開されたAPIを用いてWeb上の検索サイトに検索語を含むクエリを送信すると、指定された語の検索結果として、検索結果数や関連するWebページの情報あるいは関連後などのデータを返すシステムである。
項目「アクション」は、対応する外部連携IDで識別される外部システム6で実行するアクションを特定する情報であり、項目「属性」は、そのアクションにおいて適用するデータ項目の情報である。
例えば、外部連携ID「1」を含む連携情報データの場合、サービス先「GroupWare1」、アクション情報「スケジュール情報の取得」、属性「送信日時」が設定されているので、外部連携ID「1」で識別されるグループウェアシステムに対してスケジュール情報の取得というアクションを実行させ、さらにそのスケジュール情報の中の送信日時を戻り値としてグループウェアシステムから取得することを意味している。
また、外部連携ID「3」を含む連携情報データの場合、サービス先「辞書サービス」、アクション情報「登録されているか否かの検査」、属性「頻出語」が設定されているので、外部連携ID「3」で識別されるWeb上の辞書サービスシステムに対して、メタデータの頻出語が登録されているか否かを検査させ、登録されている場合にその語を戻り値として辞書サービスシステムから取得することを意味している。
次に、サーバ1のデータベース記憶部17以外の各構成要素(入力部11、メタデータ生成部12、辞書選択部13、辞書更新部14、関連情報検索部15、外部システム連携部16)の機能について、図8〜図12の流れ図を適宜参照しながら説明する。図8は、サーバ1の辞書更新機能7に関する基本処理の手順を示す流れ図、図9は、上記基本処理の中の辞書選択処理の手順を詳細に示す流れ図、図10は、上記基本処理の中のルール連結処理の手順を詳細に示す流れ図、図11は、上記ルール連結処理の中の選択辞書候補取得処理の手順を詳細に示す流れ図、図12は、上記基本処理の中の辞書更新処理の手順を詳細に示す流れ図である。
入力部11は、辞書更新に係るデータが入力されるのを待機する(図8:ST1)。辞書更新に係るデータは、例えばクライアント2から送出される電子メールデータや、複合機3のスキャナ機能から送出される原稿読取データ等である。
ネットワーク4を介して辞書更新に係るデータが入力されると、入力部11は、その入力データを解析する(図8:ST2)。そして、入力データから画像データを抽出する(図8:ST3)。また、入力データから付随データを抽出する(図8:ST4)。
画像データは、コンピュータで解析可能なバイナリファイル形式のデータであり、電子メールデータに関しては、メール本文に添付される画像ファイル等が該当し、原稿読取データに関しては、スキャニングされた原稿画像データ等が該当する。付随データは、入力データに付随するデータであり、電子メールデータに関しては、ヘッダ情報に含まれる送信者メールアドレス、受信者メールアドレス、送信日時及びタイトルや、メール本文等が該当し、原稿読取データに関しては、インデックスデータに含まれる読取日時、原稿サイズ、読取頁数、読取機器の種別等が該当する(入力手段)。
入力部11は、入力データから抽出した付随データを、メタデータ生成部12に送信する。メタデータ生成部12は、入力部11から受信した付随データに基づいて、入力データのメタデータを生成する(図8:ST5)。メタデータには、付随データの属性とその値とがセットされる。例えば付随データの属性が「送信者メールアドレス」の場合、その値は、電子メールのヘッダ情報に含まれる“From”に記述されるメールアドレスとなる。属性「受信者メールアドレス」の場合は、同ヘッダ情報に含まれる“To”や“Cc”に記述されるメールアドレスとなる。属性「送信日時」の場合は、同ヘッダ情報に含まれる“Date”に記述される日付となる。属性「タイトル」の場合は、同ヘッダ情報に含まれる“Subject”に記述される文字列となる。
また、メール本文に関しては、形態素解析を行い、単語と品詞及び出現回数を計算する。そして、属性「最頻出語」に対して出現回数が最も多い名詞をその値とする。また、属性「頻出語」に対して出現回数が一定数以上の単語をその値とする。さらに、形態素解析から人名が得られた場合は、属性「人名」に対して形態素解析で得られた人名をその値とする(メタデータ生成手段)。
メタデータ生成部12は、生成したメタデータを、辞書選択部13に送信する。辞書選択部13は、辞書選択ルールファイル21に記録されている辞書選択ルールに基づいて、更新対象の辞書ファイルを1または2つ以上選択する(図8:ST6)。
具体的には、先ず、選択辞書メモリをクリアする(図9:ST11)。また、辞書選択ルールのデータ数Nをしきい値メモリに記憶する(図9:ST12)。さらに、カウンタメモリのカウント値iを“0”にリセットする(図9:ST13)。選択辞書メモリ、しきい値メモリ及びカウンタメモリは、いずれもサーバ1の内部RAM(Random Access Memory)に形成されている。
上記ST11〜ST13の処理が終了すると、辞書選択部13は、カウンタメモリのカウント値iを“1”ずつカウントアップする(図9:ST14)。そして、カウントアップする都度、しきい値メモリの値Nと比較し(図9:ST15)、カウント値iがしきい値Nを超えるまで、ST16〜ST29の処理を繰返し実行する。
すなわち辞書選択部13は、辞書選択ルールファイル21から先頭よりi番目(iはカウント値)の辞書選択ルールデータを読み込み、選択ルールメモリSERule-iに格納する(図9:ST16)。そして、選択ルールメモリSERule-iに格納した辞書選択ルールデータの外部連携IDを調べる(図9:ST17)。
外部連携IDが“0”の場合(ST17のNO)、当該辞書選択ルールデータは、外部システム6と連携する必要がない。この場合、辞書選択部13は、選択ルールメモリSERule-iに格納した辞書選択ルールデータの属性を認識する。そして、この属性の値を、メタデータ生成部12から受信したメタデータより抽出し、第1の比較メモリmValueに格納する(図9:ST18)。また、選択ルールメモリSERule-iに格納した辞書選択ルールデータの比較値を第2の比較メモリrValueに格納する(図9:ST19)。
一方、選択ルールメモリSERule-iに格納した辞書選択ルールデータの外部連携IDが“1”以上の場合は(ST17のYES)、当該辞書選択ルールデータは、外部システム6と連携する。この場合、辞書選択部13は、メタデータ生成部12から受信したメタデータと辞書選択ルールデータの外部連携IDとを関連情報検索部15に送信する(図9:ST20)。そして、関連情報検索部15からの戻り値を待機する(図9のST21)。
関連情報検索部15は、辞書選択部13からメタデータと外部連携IDとを受信すると、連携情報データベース30の連携情報データファイル31を検索して、その受信した外部連携IDに対応して記憶されているサービス先、アクション及び属性等の外部連携システム情報を取得する。そして、この外部連携システム情報と、辞書選択部13から受信したメタデータとを、該当する外部システム連携部16に送信する。
外部システム連携部16は、関連情報検索部15から外部連携システム情報とメタデータとを受信すると、当該外部連携システム情報の外部連携IDによって識別される外部システム6に対し、当該外部連携システム情報のアクション命令を与える。そして、外部システム6から当該アクションの結果である戻り値を取得したならば、この戻り値を、関連情報検索部15を介して辞書選択部13に与える(外部システム連携手段)。
辞書選択部13は、関連情報検索部15を介して外部システム6からの戻り値を受信すると、この戻り値を戻り値メモリsValueに格納する(図9:ST22)。次いで、辞書選択部13は、選択ルールメモリSERule-iに格納した辞書選択ルールデータの対象データコードが“1”であるか“2”であるかを判別する(図9:ST23)。
対象データコードが“1”の場合(ST23のYES)、辞書選択部13は、戻り値メモリsValueの値を第1の比較メモリmValueに格納する(図9:ST24)。また、選択ルールメモリSERule-iに格納した辞書選択ルールデータの比較値を第2の比較メモリrValueに格納する(図9:ST25)。
対象データコードが“2”の場合(ST23のNO)、辞書選択部13は、選択ルールメモリSERule-iに格納した辞書選択ルールデータの属性を取得する。そして、メタデータ生成部12から受信したメタデータより当該属性に該当する値を抽出し、第1の比較メモリmValueに格納する(図9:ST26)。また、戻り値メモリsValueの値を第2の比較メモリrValueに格納する(図9:ST27)。
第1の比較メモリmValueと第2の比較メモリrValueとにそれぞれ値が格納されると、辞書選択部13は、第1の比較メモリmValueの値と第2の比較メモリrValueの値とを比較し、選択ルールメモリSERule-iに格納した辞書選択ルールデータの条件が成立するか否かを判断する(図9:ST28)。条件が成立しない場合(ST28のNO)、ST14に戻り、カウンタiをさらにカウントアップして、ST15以降の処理を再度実行する。
条件が成立した場合(ST28のYES)、辞書選択部13は、選択ルールメモリSERule-iに格納した辞書選択ルールデータのルールIDと選択辞書IDとを対にして、選択辞書メモリに追加する(ST29)。しかる後、ST14に戻り、カウンタiをさらにカウントアップして、ST15以降の処理を再度実行する。
こうして、辞書選択ルールファイル21に記録されている全ての辞書選択ルールデータについて、ST16〜ST29の処理が実行されると、カウンタiがしきい値Nを越え(ST15のYES)、辞書選択処理が終了する(辞書選択手段)。
辞書選択処理が終了すると、辞書選択部13は、次に、ルール連結処理を実行する(図8:ST7)。先ず、辞書連結ルールファイル22に記録される辞書連結ルールのデータ数Nを閾値メモリに記憶する(図10のST31)。また、カウンタメモリのカウント値iを“0”にリセットする(図10:ST32)。
上記ST31〜ST32の処理が終了すると、辞書選択部13は、カウンタメモリのカウント値iを“1”ずつカウントアップする(図10:ST33)。そして、カウントアップする都度、しきい値メモリの値Nと比較し(図10:ST34)、カウント値iがしきい値Nを超えるまで、ST35〜ST38の処理を繰返し実行する。
すなわち辞書選択部13は、辞書連結ルールファイル22から先頭よりi番目(iはカウント値)の連結辞書ルールデータを読み込み、連結ルールメモリCORule-iに格納する(図10:ST35)。そして、連結ルールメモリCORule-iメモリに格納した連結辞書ルールデータについて、連結ルールID、連結対象となる2つの辞書選択ルールの各ID(ルールIDa,ルールIDb)、条件及び辞書選択方法の各情報をそれぞれ取得し、IDメモリID、第1の対象メモリRule-ia、第2の対象メモリRule-ib、条件メモリCondition及び辞書選択方法メモリDictionaryに分けて格納する(図10:ST36)。
しかる後、辞書選択部13は、選択辞書候補取得処理を実行する(図10:ST37)。具体的には、先ず、選択辞書候補メモリをクリアする(図11:ST51)。次いで、条件メモリConditionで記憶している条件の情報が“AND”であるか(図11:ST52)、“OR”であるかを判断する(図11:ST53)。条件情報が“AND”でも“OR”でもない場合(図11:ST52でNO、ST53でNO)、選択辞書候補取得処理が終了する。
条件情報が“AND”の場合(ST52のYES)、辞書選択部13は、選択辞書メモリに第1の対象メモリRule-iaで記憶しているルールIDと第2の対象メモリRule-ibで記憶しているルールIDの両方が存在するか否かを判断する(図11:ST54)。第1の対象メモリRule-iaで記憶しているルールIDと第2の対象メモリRule-ibで記憶しているルールIDの少なくとも一方が選択辞書メモリに記憶されていない場合(ST54のNO)、選択辞書候補取得処理が終了する。
第1の対象メモリRule-iaで記憶しているルールIDと第2の対象メモリRule-ibで記憶しているルールIDの両方が選択辞書メモリに記憶されている場合(ST54のYES)、辞書選択方法メモリDictionaryで記憶している辞書選択方法を示す情報の判定処理(図11:ST56、ST57、ST58)に進む。
一方、条件が”OR”の場合(ST53のYES)、辞書選択部13は、選択辞書メモリに第1の対象メモリRule-iaで記憶しているルールIDと第2の対象メモリRule-ibで記憶しているルールIDの少なくとも一方が存在するか否かを判断する(図11:ST55)。第1の対象メモリRule-iaで記憶しているルールIDと第2の対象メモリRule-ibで記憶しているルールIDの両方が選択辞書メモリに記憶されていない場合(ST55のNO)、選択辞書候補取得処理が終了する。
第1の対象メモリRule-iaで記憶しているルールIDと第2の対象メモリRule-ibで記憶しているルールIDの少なくとも一方が選択辞書メモリに記憶されている場合(ST55のYES)、辞書選択部13は、辞書選択方法メモリDictionaryで記憶している辞書選択方法を示す情報の判定処理(図11:ST56、ST57、ST58)に進む。
上記判定処理は、先ず、辞書選択方法メモリDictionaryで記憶している辞書選択方法を示す情報が“Both”であるか否かを判断する(図11:ST56)。辞書選択方法を示す情報が“Both”である場合(ST56のYES)、辞書選択部13は、第1の対象メモリRule-iaで記憶しているルールIDと対になって選択辞書メモリにて記憶されている選択辞書IDと、第2の対象メモリRule-ibで記憶しているルールIDと対になって選択辞書メモリにて記憶されている選択辞書IDとを選択辞書メモリから削除し、選択辞書候補メモリに追加する(図11:ST59)。
辞書選択方法を示す情報が“Both”でない場合(ST56のNO)、辞書選択部13は、辞書選択方法メモリDictionaryで記憶している辞書選択方法を示す情報が“TrueOnly”であるか否かを判断する(図11:ST57)。辞書選択方法を示す情報が“TrueOnly”である場合(ST57のYES)、辞書選択部13は、第1の対象メモリRule-iaで記憶しているルールIDと対になって選択辞書メモリにて記憶されている選択辞書IDが存在する場合は、その選択辞書IDを選択辞書メモリから削除し、選択辞書候補メモリに追加する。また、第2の対象メモリRule-ibで記憶しているルールIDと対になって選択辞書メモリにて記憶されている選択辞書IDが存在する場合は、その選択辞書IDを選択辞書メモリから削除し、選択辞書候補メモリに追加する(図11:ST60)。
辞書選択方法を示す情報が“TrueOnly”でもない場合(ST57のNO)、辞書選択部13は、辞書選択方法メモリDictionaryで記憶している辞書選択方法を示す情報が“Rule2Only”であるか否かを判断する(図11:ST58)。辞書選択方法を示す情報が“Rule2Only”である場合(ST58のYES)、辞書選択部13は、第2の対象メモリRule-ibで記憶しているルールIDと対になって選択辞書メモリにて記憶されている選択辞書IDを選択辞書メモリから削除し、選択辞書候補メモリに追加する(図11:ST61)。以上で、選択辞書候補取得処理が終了する。
選択辞書候補取得処理が終了すると、辞書選択部13は、IDメモリIDに記憶している連結ルールIDと、選択辞書候補メモリ内の辞書IDとを対にして、選択辞書メモリに追加する(図10:ST38)。しかる後、ST33に戻り、カウンタiをさらにカウントアップして、ST34以降の処理を再度実行する。
こうして、辞書連結ルールファイル22に記録されている全ての連結辞書ルールデータについて、ST35〜ST38の処理が実行されると、カウンタiがしきい値Nを越え(ST34のYES)、辞書選択部13は、選択辞書メモリ内の辞書IDにより選択辞書リストを作成する(図10:ST39)。以上で、ルール連結処理が終了する。
ルール連結処理が終了すると、辞書選択部13は、メタデータ生成部12にて生成されたメタデータと、ルール連結処理によって作成した選択辞書リストとを、辞書更新部14に送信する。辞書更新部14は、辞書更新ルールファイル23に記録されている辞書更新ルールに基づいて、選択辞書リストに記録された辞書IDで識別される辞書ファイルの更新処理を実行する(図8:ST8)。
先ず、辞書更新ルールファイル23に記録されている辞書更新ルールデータのデータ数Nをしきい値メモリに記憶する(図12:ST71)。また、カウンタメモリのカウント値iを“0”にリセットする(図12:ST72)。
上記ST71〜ST72の処理が終了すると、辞書更新部14は、カウンタメモリのカウント値iを“1”ずつカウントアップする(図12:ST73)。そして、カウントアップする都度、しきい値メモリの値Nと比較し(図12:ST74)、カウント値iがしきい値Nを超えるまで、ST75〜ST89の処理を繰返し実行する。
すなわち辞書更新部14は、辞書更新ルールファイル23から先頭よりi番目(iはカウント値)の辞書更新ルールデータを読み込み、更新ルールメモリUPRule-iに格納する(図12:ST75)。そして、更新ルールメモリUPRule-iに格納した辞書更新ルールデータの辞書IDが選択辞書リストに含まれているか否かを判断する(図12:ST76)。含まれていない場合(ST76のNO)、ST73に戻り、カウンタiをさらにカウントアップして、ST74以降の処理を再度実行する。
更新ルールメモリUPRule-iに格納した辞書更新ルールデータの辞書IDが選択辞書リストに含まれていたならば(ST76のYES)、辞書更新部14は、更新ルールメモリUPRule-iに格納した辞書更新ルールデータの外部連携IDを調べる(図12:ST77)。
外部連携IDが“0”の場合(ST77のNO)、当該辞書更新ルールデータは、外部システム6と連携する必要がない。この場合、辞書更新部14は、更新ルールメモリUPRule-iに格納した辞書更新ルールデータの属性を認識する。そして、この属性の値を、辞書選択部13から受信したメタデータより抽出し、第1の比較メモリmValueに格納する(図12:ST78)。また、更新ルールメモリUPRule-i に格納した辞書更新ルールデータの比較値を第2の比較メモリrValueに格納する(図12:ST79)。
一方、更新ルールメモリUPRule-iに格納した辞書更新ルールデータの外部連携IDが“1”以上の場合は(ST77のYES)、当該辞書更新ルールデータは、外部システム6と連携する。この場合、辞書更新部14は、辞書選択部13から受信したメタデータと辞書更新ルールデータの外部連携IDとを関連情報検索部15に送信する(図12:ST80)。そして、関連情報検索部15からの戻り値を待機する(図12のST81)。このときの関連情報検索部15及び外部システム連携部16の動作は、辞書選択処理のときと同様である。
辞書更新部14は、関連情報検索部15を介して外部システム6からの戻り値を受信すると、この戻り値を戻り値メモリsValueに格納する(図12:ST82)。次いで、辞書更新部14は、更新ルールメモリUPRule-iに格納した辞書更新ルールデータの対象データコードが“1”であるか“2”であるかを判別する(図12:ST83)。
対象データコードが“1”の場合(ST83のYES)、辞書更新部14は、戻り値メモリsValueの値を第1の比較メモリmValueに格納する(図12:ST84)。また、更新ルールメモリUPRule-iに格納した辞書更新ルールデータの比較値を第2の比較メモリrValueに格納する(図12:ST85)。
対象データコードが“2”の場合(ST83のNO)、辞書更新部14は、更新ルールメモリUPRule-iに格納した辞書更新ルールデータから属性を取得する。そして、辞書選択部13から受信したメタデータより当該属性に該当する値を抽出し、第1の比較メモリmValueに格納する(図12:ST86)。また、戻り値メモリsValueの値を第2の比較メモリrValueに格納する(図12:ST87)。
第1の比較メモリmValueと第2の比較メモリrValueとにそれぞれ値が格納されると、辞書更新部14は、第1の比較メモリmValueの値と第2の比較メモリrValueの値とを比較し、更新ルールメモリUPRule-iに格納した辞書更新ルールデータの条件が成立するか否かを判断する(図12:ST88)。条件が成立しない場合(ST88のNO)、ST73に戻り、カウンタiをさらにカウントアップして、ST74以降の処理を再度実行する。
条件が成立した場合(ST88のYES)、辞書更新部14は、更新ルールメモリUPRule-iに格納した辞書更新ルールデータの更新内容に基づいて、同辞書更新ルールデータの辞書IDで識別される辞書ファイルのデータを更新する(図12:ST89)。しかる後、ST73に戻り、カウンタiをさらにカウントアップして、ST74以降の処理を再度実行する。
こうして、辞書更新ルールファイル23に記録されている全ての辞書更新ルールデータについて、ST75〜ST89の処理が実行されると、カウンタiがしきい値Nを越え(ST74のYES)、辞書更新処理が終了する(辞書更新手段)。
このような構成の辞書更新機能7を有するサーバ1において、クライアント2から電子メールを受信すると、入力部11においては、電子メールから付随データとしてヘッダ情報やメール本文が抽出される。また、電子メールに画像ファイル以外の添付ファイルが存在する場合は、添付ファイル内に含まれているテキストデータが取得される。付随データやテキストデータは、メタデータ生成部12に送られる。
メタデータ生成部12においては、付随データのヘッダ情報やメール本文からメタデータが生成される。また、テキストデータが含まれる場合は、このテキストデータからもメタデータが生成される。生成されたメタデータは、辞書選択部13に送信される。
辞書選択部13においては、メタデータを基に、辞書選択ルールファイル21に登録されている辞書選択ルールの条件が成立するか否か判定される。この判定に際し、外部システム6と連携する設定がなされている辞書選択ルールについては、該当する外部システム6と連携して判定が行われる。条件が成立した場合、そのルールのルールIDと、そのルールに設定された選択辞書IDとが対になって選択辞書メモリに記憶される。
次いで、辞書選択部13においては、選択辞書メモリに選択辞書IDと対になって記憶されたルールIDに対し、辞書連結ルールファイル22に登録されている辞書連結ルールの連結条件が成立するか否かが判定される。そして、連結条件が成立する2つのルールIDについては、その連結ルールの辞書選択方法に従ったルールIDと対になった選択辞書IDが選択辞書メモリに残る。
かくして、辞書選択部13においては、選択辞書メモリに記憶された選択辞書IDから選択辞書リストが作成される。作成された選択辞書リストは、メタデータ生成部12で生成されたメタデータとともに辞書更新部14に送られる。
辞書更新部14においては、辞書更新ルールファイル23に登録されている各辞書更新ルールの中から、選択辞書リストに登録されている選択辞書IDを対象とする辞書更新ルールが選択される。そして、メタデータを基に、この選択された辞書更新ルールの条件が成立するか否かが判定される。この判定に際し、外部システム6と連携する設定がなされている辞書更新ルールについては、該当する外部システム6と連携して判定が行われる。条件が成立した場合、そのルールの辞書IDで識別される辞書ファイルが更新される。
このように、本実施形態のサーバ1によれば、入力部11に入力される辞書更新に係るデータを基に、ユーザに負担をかけることなく自動的に認識用辞書ファイルを更新することができる。したがって、認識用辞書ファイルのメンテナンスに要する手間と時間を省くことができ、コストを削減することができる。
(第2の実施形態)
次に、本発明の文字認識装置に係る第2の実施の形態について、図13〜図15を用いて説明する。なお、この第2の実施の形態において、第1の実施の形態と共通する部分には極力同じ符号を付し、詳しい説明は省略する。
図13は、第2の実施の形態のシステム構成図である。本システムも、サーバ100とクライアント2と複合機3とを備え、これらの間をネットワーク4で接続している。
サーバ1は、辞書更新装置及び文字認識装置として機能する。すなわちサーバ1は、前記辞書更新機能7に加えて、辞書データベース5に登録されている種々の認識用辞書ファイルを用い、クライアント2や複合機3から受信した画像ファイルの文字認識を実行する文字認識機能101を有する。辞書更新機能7及び文字認識機能101は、サーバ100に実装された文字認識プログラムによって実現される。
文字認識プログラムは、サーバ1内部の記憶装置に予め記憶されていてもよいし、ネットワークからサーバ1にダウンロードしても良い。また、記録媒体に記憶させたものをサーバ1にインストールしてもよい。記録媒体としては、CD−ROM等プログラムを記憶でき、かつサーバ1が読み取り可能な記録媒体であれば、その形態は何れの形態であっても良い。
図14は、サーバ1において、辞書更新機能7と文字認識機能101とを実現するために必要な構成要素を示すブロック図である。本実施の形態では、図2に示す第1の実施の形態と比較して、画像取得部111、文字認識部112及び出力部113を追加している。その他の構成要素11〜17は、第1の実施形態と同一である。
図15は、サーバ1の辞書更新機能7及び文字認識機能101に関する基本処理の手順を示す流れ図である。以下、この流れ図を適宜参照して、サーバ1の各構成要素の機能について説明する。なお、第1の実施形態と共通する部分については、説明を簡略する。
入力部11は、辞書更新に係るデータが入力されるのを待機する(図15:ST101)。ネットワーク4を介して辞書更新に係るデータが入力されると、入力部11は、その入力データを解析する(図15:ST102)。そして、入力データから画像データを抽出する(図15:ST103)。また、入力データから付随データを抽出する(図15:ST104)。
入力部11は、入力データから抽出した画像データ及び付随データを、メタデータ生成部12に送信する。メタデータ生成部12は、入力部11から受信した付随データに基づいて、入力データのメタデータを生成する(図15:ST105)。
また、入力部11は、入力データから抽出した画像データを画像取得部111に送信する。画像取得部111は、入力部11から画像データを取得すると、その画像データの数Nをしきい値メモリに記憶する(図15:ST106)。また、画像データリストメモリをクリアする(図15:ST107)。さらに、カウンタメモリのカウント値iを“0”にリセットする(図15:ST108)。しきい値メモリ、画像データリストメモリ及びカウンタメモリは、いずれもサーバ1の内部RAMに形成されている。
上記ST101〜ST108の処理が終了すると、画像取得部111は、カウンタメモリのカウント値iを“1”ずつカウントアップする(図15:ST109)。そして、カウントアップする都度、しきい値メモリの値Nと比較し(図15:ST110)、カウント値iがしきい値Nを超えるまで、ST111〜ST112の処理を繰返し実行する。
すなわち画像取得部111は、入力部11から取得したi番目の画像データについて、ノイズ除去、フォーマット変換などの前処理を実行する(図15:ST111)。そして、この前処理を実行した画像データを前記画像データリストメモリに追加する(図15:ST112)。
入力部11から取得した全ての画像データに対して前処理を終えると、カウント値iがしきい値Nを超える。カウント値iがしきい値Nを超えたならば(ST110のYES)、画像取得部111は、画像データリストメモリに記憶された画像のリストデータを文字認識部112に与える(画像取得手段)。
一方、辞書選択部13は、辞書選択ルールファイル21に記録されている辞書選択ルールに基づいて、更新対象の辞書ファイルを1または2つ以上選択する(図15:ST113)。辞書選択処理が終了すると、辞書選択部13は、次に、ルール連結処理を実行する(図15:ST114)。ルール連結処理が終了すると、辞書選択部13は、メタデータ生成部12にて生成されたメタデータと、ルール連結処理によって作成した選択辞書リストとを、辞書更新部14及び文字認識部112に送信する。
辞書更新部14は、辞書更新ルールファイル23に記録されている辞書更新ルールに基づいて、選択辞書リストに記録された辞書IDで識別される辞書ファイルの更新処理を実行する(図15:ST115)。
文字認識部112は、画像データリストから画像データを取り込む。そして、選択辞書リストに記録された辞書IDで識別される辞書ファイルを用いて、上記画像データの文字認識を行う(図15:ST116)。出力部113は、文字認識部112での文字認識結果を、入力データに添付してクライアント2に送信する(図15:ST117)。例えば、文字認識結果をテキストデータとして、入力データの画像データとともにクライアント2に送信する。あるいは、画像データの付属情報に文字認識結果のテキストデータを設定して、クライアントに送信する(文字認識手段)。
このように、本実施形態のサーバ100によれば、入力部11に入力される辞書更新に係るデータを基に、ユーザに負担をかけることなく自動的に認識用辞書ファイルを更新することができるのに加え、更新後の認識用辞書ファイルを用いて、入力データに添付される画像データの文字認識を行うことができるので、手書き文字などに関して精度の高い文字認識を実現することができる。
なお、この発明は前記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。
例えば前記実施形態では、辞書更新に係るデータとして電子メールデータと原稿読取データとを例示したが、これに限定されるものではなく、文字認識対象である画像データと、この画像データに付随するデータとからなるデータであれば、辞書更新に係るデータとして用いることができる。すなわち、この画像データと付随データとからなるデータをサーバ1またはサーバ100に送信可能な機器であれば、本実施形態のシステムに組み込むことができる。
この他、前記実施形態に開示されている複数の構成要素の適宜な組合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態に亘る構成要素を組合わせてもよい。