(57)【要約】      （修正有）【課題】キーワードに対応した文字列を出力することができる情報処理装置及び情報処理プログラムを提供する。【解決手段】情報処理装置は、抽出ルールに従って、複数の行に亘って記載されたキーワードを含む文字列からキーワードに対応したバリューを抽出し、抽出したバリューの各々を行の並びに従って結合した最終的なバリューを出力する。【選択図】図５
2020119152.tif 000002
【特許請求の範囲】
【請求項１】
複数の行に亘って記載されたキーワードを含む文字列から、前記キーワードに対応した文字列の抽出条件に従って前記キーワードに対応した文字列を抽出する抽出部と、
前記抽出部で抽出された各々の文字列を行の並びに従って結合する結合部と、
前記結合部で結合された各々の文字列を前記キーワードに対応した文字列として出力する出力部と、
を備えた情報処理装置。
【請求項２】
前記抽出条件に、前記キーワードの記載位置から見た前記キーワードに対応した文字列の抽出方向が定められている
請求項１記載の情報処理装置。
【請求項３】
前記抽出方向が、複数の行から前記キーワードに対応した文字列を抽出する場合に、前記キーワードの記載行から順次前の行に向かって移行する方向、または、前記キーワードの記載行から順次後ろの行に向かって移行する方向を表す
請求項２記載の情報処理装置。
【請求項４】
前記抽出部は、前記抽出方向に沿って行を順次参照し、前記キーワードの記載行から文字の記載がない空白行が現れる手前までの各行から前記キーワードに対応した文字列を抽出する
請求項３記載の情報処理装置。
【請求項５】
前記抽出部は、前記キーワードの記載行から前記キーワードに対応した文字列が抽出されなかった場合で、かつ、前記抽出方向に沿って前記キーワードの記載行と隣り合う行が空白行の場合、前記キーワードに対応した文字列を含む行が現れるまで前記キーワードの記載行から前記抽出方向に沿って行を順次参照し、前記キーワードに対応した文字列が最初に現れた行から、空白行が再度現れる手前までの各行から前記キーワードに対応した文字列を抽出する
請求項４記載の情報処理装置。
【請求項６】
前記抽出部は、前記キーワードの記載行から前記抽出方向に沿った予め定めた行数までの各行から前記キーワードに対応した文字列を抽出する
請求項３記載の情報処理装置。
【請求項７】
前記抽出部は、前記キーワードの記載行から前記キーワードに対応した文字列が抽出されなかった場合、前記キーワードに対応した文字列を含む行が現れるまで前記キーワードの記載行から前記抽出方向に沿って行を順次参照し、前記キーワードに対応した文字列が最初に現れた行から前記抽出方向に沿った前記予め定めた行数までの各行から前記キーワードに対応した文字列を抽出する
請求項６記載の情報処理装置。
【請求項８】
前記抽出部は、前記抽出方向に沿って行を順次参照し、行方向に沿った行の先頭文字の位置が、前記キーワードの記載行の先頭文字の位置と異なる行が現れる手前までの各行から前記キーワードに対応した文字列を抽出する
請求項３記載の情報処理装置。
【請求項９】
前記抽出部は、前記キーワードの記載行から前記キーワードに対応した文字列が抽出されなかった場合、前記キーワードに対応した文字列を含む行が現れるまで前記キーワードの記載行から前記抽出方向に沿って行を順次参照し、前記キーワードに対応した文字列が最初に現れた行から、前記キーワードに対応した文字列が最初に現れた行の先頭文字の位置と先頭文字の位置が異なる行が現れる手前までの各行から前記キーワードに対応した文字列を抽出する
請求項８記載の情報処理装置。
【請求項１０】
前記抽出部は、前記抽出方向に沿って行を順次参照し、最初に抽出した前記キーワードに対応した文字列の文字属性と異なる文字属性が用いられている手前までの各行から前記キーワードに対応した文字列を抽出する
請求項３記載の情報処理装置。
【請求項１１】
前記キーワードに対応した文字列の文字属性に、文字の大きさ、文字の字体、文字の太さ、文字の装飾、及び文字の色の少なくとも１つが設定された
請求項１０記載の情報処理装置。
【請求項１２】
前記抽出部は、前記キーワードに対応した文字列の抽出対象となる何れかの行に複数の文字列が含まれる場合、文字列の文字属性に従って、前記複数の文字列から前記キーワードに対応した文字列を抽出する
請求項１０または請求項１１記載の情報処理装置。
【請求項１３】
コンピュータを、請求項１〜請求項１２の何れか１項に記載の情報処理装置の各部として機能させるための情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、及び情報処理プログラムに関する。
【背景技術】
【０００２】
スキャナで読み取った文書画像から、ユーザが所望する特定のキーワードによって表される項目と対応付けられた文字列を抽出する情報処理装置が知られている。
【０００３】
特許文献１には、入力された文書画像から情報項目の値を抽出する画像処理装置であって、抽出対象の情報項目の項目名を含む抽出項目情報を記憶した抽出項目記憶部と、前記文書画像に対して文字認識を実行する文字認識部と、文字認識部から出力された文字認識結果から抽出項目記憶部に記憶された抽出対象の項目名に該当する文字列を抽出する項目名抽出部と、前記文書画像における、項目名に該当する文字列の近傍位置から、その項目名に対応する項目値の文字列を抽出する項目値抽出部と、項目値抽出部が抽出した項目値の文字列を項目名と対応づけて抽出情報を作成する抽出情報作成部と、を備える画像処理装置が開示されている。
【０００４】
特許文献２には、  画像に対して領域解析処理を実行することにより領域を抽出する抽出手段と、特定のキーワードと当該キーワードに対応するバリューとを抽出するためのルールを取得する取得手段と、前記ルールを用いて前記キーワードを含む領域および当該キーワードに対応するバリューを含む領域を特定する順番を、当該ルールに含まれる前記キーワードと当該キーワードに対応するバリューとが取り得る値に応じて決定する決定手段と、前記決定された順番に従い、前記キーワードを含む領域または当該キーワードに対応するバリューを含む領域を前記抽出された領域の中から特定する特定手段と、前記特定された領域に対して文字認識処理を行う文字認識手段と、を備え、前記特定手段は、前記決定された順番に従い、先に特定した領域に基づいて、対応するもう一方の領域を特定する、ことを特徴とする情報処理装置が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００７−２３３９１３号公報
【特許文献２】特開２０１８−１２８９９６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
例えば見積書のような書類には、提出先の会社名に続けて「御中」というような予め定められた表記が用いられる。したがって、スキャナで読み取った書類の画像に対してＯＣＲ(Optical Character Recognition)処理を行い、「御中」をキーワードとして「御中」の記載行に記載されている文字列を抽出すれば、書類の提出先の会社名が得られることになる。
【０００７】
しかしながら、書類をスキャナで読み込みＯＣＲ処理を行った場合、つながりのある一連の文字列が行をまたいで記載されていたとしても、行をまたいだ文字列の連結情報が含まれないため、キーワードの記載行と異なる行に記載されている文字列が、キーワードに対応した文字列を表しているのか分からない状況が発生する。したがって、これまではキーワードの記載行と同じ行に含まれる文字列だけをキーワードに対応した文字列として抽出していた。すなわち、キーワードに対応した文字列がキーワードの記載行と異なる行に含まれていた場合、キーワードに対応した文字列を正しく抽出することができなかった。
【０００８】
本発明は、キーワードに対応した文字列がキーワードの記載行と異なる行にも含まれる場合であっても、キーワードに対応した文字列を出力することができる情報処理装置、及び情報処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
第１態様に係る情報処理装置は、複数の行に亘って記載されたキーワードを含む文字列から、前記キーワードに対応した文字列の抽出条件に従って前記キーワードに対応した文字列を抽出する抽出部と、前記抽出部で抽出された各々の文字列を行の並びに従って結合する結合部と、前記結合部で結合された各々の文字列を前記キーワードに対応した文字列として出力する出力部と、を備える。
【００１０】
第２態様に係る情報処理装置は、第１態様に係る情報処理装置において、前記抽出条件に、前記キーワードの記載位置から見た前記キーワードに対応した文字列の抽出方向が定められている。
【００１１】
第３態様に係る情報処理装置は、第２態様に係る情報処理装置において、前記抽出方向が、複数の行から前記キーワードに対応した文字列を抽出する場合に、前記キーワードの記載行から順次前の行に向かって移行する方向、または、前記キーワードの記載行から順次後ろの行に向かって移行する方向を表す。
【００１２】
第４態様に係る情報処理装置は、第３態様に係る情報処理装置において、前記抽出部が、前記抽出方向に沿って行を順次参照し、前記キーワードの記載行から文字の記載がない空白行が現れる手前までの各行から前記キーワードに対応した文字列を抽出する。
【００１３】
第５態様に係る情報処理装置は、第４態様に係る情報処理装置において、前記抽出部が、前記キーワードの記載行から前記キーワードに対応した文字列が抽出されなかった場合で、かつ、前記抽出方向に沿って前記キーワードの記載行と隣り合う行が空白行の場合、前記キーワードに対応した文字列を含む行が現れるまで前記キーワードの記載行から前記抽出方向に沿って行を順次参照し、前記キーワードに対応した文字列が最初に現れた行から、空白行が再度現れる手前までの各行から前記キーワードに対応した文字列を抽出する。
【００１４】
第６態様に係る情報処理装置は、第３態様に係る情報処理装置において、前記抽出部が、前記キーワードの記載行から前記抽出方向に沿った予め定めた行数までの各行から前記キーワードに対応した文字列を抽出する。
【００１５】
第７態様に係る情報処理装置は、第６態様に係る情報処理装置において、前記抽出部が、前記キーワードの記載行から前記キーワードに対応した文字列が抽出されなかった場合、前記キーワードに対応した文字列を含む行が現れるまで前記キーワードの記載行から前記抽出方向に沿って行を順次参照し、前記キーワードに対応した文字列が最初に現れた行から前記抽出方向に沿った前記予め定めた行数までの各行から前記キーワードに対応した文字列を抽出する。
【００１６】
第８態様に係る情報処理装置は、第３態様に係る情報処理装置において、前記抽出部が、前記抽出方向に沿って行を順次参照し、行方向に沿った行の先頭文字の位置が、前記キーワードの記載行の先頭文字の位置と異なる行が現れる手前までの各行から前記キーワードに対応した文字列を抽出する。
【００１７】
第９態様に係る情報処理装置は、第８態様に係る情報処理装置において、前記抽出部が、前記キーワードの記載行から前記キーワードに対応した文字列が抽出されなかった場合、前記キーワードに対応した文字列を含む行が現れるまで前記キーワードの記載行から前記抽出方向に沿って行を順次参照し、前記キーワードに対応した文字列が最初に現れた行から、前記キーワードに対応した文字列が最初に現れた行の先頭文字の位置と先頭文字の位置が異なる行が現れる手前までの各行から前記キーワードに対応した文字列を抽出する。
【００１８】
第１０態様に係る情報処理装置は、第３態様に係る情報処理装置において、前記抽出部が、前記抽出方向に沿って行を順次参照し、最初に抽出した前記キーワードに対応した文字列の文字属性と異なる文字属性が用いられている手前までの各行から前記キーワードに対応した文字列を抽出する。
【００１９】
第１１態様に係る情報処理装置は、第１０態様に係る情報処理装置において、前記キーワードに対応した文字列の文字属性に、文字の大きさ、文字の字体、文字の太さ、文字の装飾、及び文字の色の少なくとも１つが設定される。
【００２０】
第１２態様に係る情報処理装置は、第１０態様または第１１態様に係る情報処理装置において、前記抽出部が、前記キーワードに対応した文字列の抽出対象となる何れかの行に複数の文字列が含まれる場合、文字列の文字属性に従って、前記複数の文字列から前記キーワードに対応した文字列を抽出する。
【００２１】
第１３態様に係る情報処理プログラムは、コンピュータを、第１態様〜第１２態様の何れかの態様に係る情報処理装置の各部として機能させるためのプログラムである。
【発明の効果】
【００２２】
第１態様、及び第１３態様によれば、キーワードに対応した文字列がキーワードの記載行と異なる行にも含まれる場合であっても、キーワードに対応した文字列を出力することができる、という効果を有する。
【００２３】
第２態様によれば、キーワードに対応した文字列がキーワードの記載位置から見てキーワードの記載行の左右どちらにある場合であっても、キーワードに対応した文字列を抽出することができる、という効果を有する。
【００２４】
第３態様によれば、キーワードに対応した文字列がキーワードの記載行から見て前または後ろの何れの行にある場合であっても、キーワードに対応した文字列を抽出することができる、という効果を有する。
【００２５】
第４態様によれば、キーワードに対応した文字列が空白行によって区切られている書式の文書から、キーワードに対応した文字列を抽出することができる、という効果を有する。
【００２６】
第５態様によれば、キーワードの記載行とキーワードに対応した文字列の記載行の間に空白行がある場合であっても、キーワードに対応した文字列を抽出することができる、という効果を有する。
【００２７】
第６態様によれば、キーワードに対応した文字列の記載行数が予め定められている書式の文書から、キーワードに対応した文字列を抽出することができる、という効果を有する。
【００２８】
第７態様によれば、キーワードの記載行にキーワードに対応した文字列が含まれない場合であっても、キーワードに対応した文字列を抽出することができる、という効果を有する。
【００２９】
第８態様によれば、キーワードに対応した文字列の先頭文字の位置が予め定められている書式の文書から、キーワードに対応した文字列を抽出することができる、という効果を有する。
【００３０】
第９態様によれば、キーワードの記載行にキーワードに対応した文字列が含まれない場合であっても、キーワードに対応した文字列を抽出することができる、という効果を有する。
【００３１】
第１０態様によれば、キーワードに対応した文字列の文字属性が他の文字列の文字属性と異なるように定められた書式の文書から、キーワードに対応した文字列を抽出することができる、という効果を有する。
【００３２】
第１１態様によれば、文字列の表示形態の違いから、キーワードに対応した文字列を抽出することができる、という効果を有する。
【００３３】
第１２態様によれば、キーワードに対応した文字列ではない他の文字列が同じ行に含まれる場合であっても、キーワードに対応した文字列を抽出することができる、という効果を有する。
【図面の簡単な説明】
【００３４】
【図１】情報処理装置の機能構成例を示すブロック図である。
【図２】文書の一例を示す図である。
【図３】抽出ルールの一例を示す図である。
【図４】情報処理装置における電気系統の要部構成例を示す図である。
【図５】情報処理の流れの一例を示すフローチャートである。
【図６】空白行を含む文書の一例を示す図である。
【図７】空白行を含む文書の他の一例を示す図である。
【図８】キーワードの記載行にバリューが含まれていない場合における情報処理の流れの一例を示すフローチャートである。
【図９】バリューの記載行数が予め決められている文書の一例を示す図である。
【図１０】空白行を含んだ上で、バリューの記載行数が予め決められている文書の一例を示す図である。
【図１１】バリューの先頭文字の位置が隣接する行の文字列の位置と異なる文書の一例を示す図である。
【図１２】キーワードの記載行にバリューが含まれず、バリューの先頭文字の位置が隣接する行の文字列の位置と異なる文書の一例を示す図である。
【図１３】キーワードの記載行にバリューが含まれず、バリューの先頭文字の位置が隣接する行の文字列の位置と異なる文書に対する情報処理の流れの一例を示すフローチャートである。
【図１４】バリューの文字属性が隣接する行に含まれる文字列の文字属性と異なる文書の一例を示す図である。
【図１５】キーワードの記載行にバリューが含まれず、バリューの文字属性が隣接する行に含まれる文字列の文字属性と異なる文書の一例を示す図である。
【図１６】バリューの記載行にバリュー以外の文字列を含む文書の一例を示す図である。
【発明を実施するための形態】
【００３５】
以下、本実施の形態について図面を参照しながら説明する。なお、機能が同じ構成要素及び処理には全図面を通して同じ符合を付与し、重複する説明を省略する。
【００３６】
＜実施形態＞
図１は、例えばＯＣＲ処理された文書からキーワードに対応した文字列を抽出して出力する情報処理装置１０の機能構成例を示すブロック図である。
【００３７】
情報処理装置１０は、スキャン処理部１１、画像処理部１２、出力部１３、ユーザインターフェース(User Interface：UI)部１４、及び制御部１５の各機能部と、抽出ルールデータベース（Database：ＤＢ）を含む。
【００３８】
スキャン処理部１１は、原稿に記載された内容を光学的に読み取るスキャナユニット５０を用いて、原稿に対応した画像（以降、「文書画像」という）を生成し、画像処理部１２に引き渡す。
【００３９】
画像処理部１２は、ＯＣＲ処理部１２Ａ、抽出部１２Ｂ、及び結合部１２Ｃを含んでいる。
【００４０】
スキャン処理部１１から文書画像を受け付けた画像処理部１２は、まず、ＯＣＲ処理部１２Ａで文書画像に対して公知の画像認識を行い、文書画像のうち文字に相当する画像を文字コードに変換する。すなわち、ＯＣＲ処理部１２Ａによって、文書画像が文字情報として扱われるようになり、文字のコピーや検索が行われるようになる。以降では、ＯＣＲ処理部１２Ａで文書画像から文字情報に変換された変換データを「文書２０」ということにする。
【００４１】
抽出部１２ＢはＯＣＲ処理部１２Ａで生成された文書２０から、ユーザが指定したキーワードに対応する文字列を抽出する。
【００４２】
図２は、文書２０に含まれるキーワードとキーワードに対応する文字列の一例を示す図である。情報処理装置１０で扱う文書２０の内容の種類に制約はなく、如何なる内容を表す文書２０からもキーワードに対応する文字列の抽出が行われるが、ここでは一例として、見積書のように他社に提出するような内容の文書２０を例に説明を行う。
【００４３】
このような他社に提出する文書２０を管理する場合、ユーザは例えば提出先の会社毎に文書２０を管理したい等の理由から、各々の文書２０から提出先の会社名や見積書の作成日等を抽出したいことがある。提出先の会社名には、例えば「御中」といった予め定められた敬称が添えられ、見積書が作成された日付は、例えば「作成日」といった予め定められた項目名と共に記載される。
【００４４】
このような抽出したい文字列に添えられる語句、及び抽出したい文字列の項目名を「キーワード」といい、キーワードの内容を表す文字列を「バリュー」という。すなわち、バリューはキーワードに対応した文字列である。
【００４５】
図２（Ａ）に示した文書２０の場合、「御中」がキーワードであり、「第１ＡＢＣＤ株式会社」がキーワードのバリューである。文書２０において縦に連なった「・」は、図示していない他の内容が文書２０に含まれていることを表している。
【００４６】
抽出部１２Ｂでは、図２（Ａ）に示すようにキーワードとバリューが同じ行に含まれる形態だけでなく、図２（Ｂ）に示すようにバリューが複数の行に亘って記載された場合であっても、抽出ルールＤＢ１６に記憶される抽出ルール３０に基づいて、複数の行に亘って記載されたそれぞれの文字列がキーワードに対する一連のバリューを表しているか否かを判定し、それぞれの文字列をキーワードに対する一連のバリューであると判定した場合には、それぞれの文字列をキーワードに対するバリューを構成する文字列として抽出する。
【００４７】
以降では、キーワードに対するバリューを構成する複数の文字列の各々も「バリュー」と表すことにするが、特に最終的なバリューと異なることを強調して説明したい場合や、最終的なバリューと混同すると説明が分かりにくくなる箇所では、「部分バリュー」と表すことがある。「最終的なバリュー」とは、部分バリューを結合することによって得られる、ユーザが所望するバリューのことである。
【００４８】
図３は、抽出ルール３０の一例を示す図である。抽出ルール３０は、抽出部１２Ｂがキーワードのバリューを抽出する場合に従うバリューの抽出条件を規定した情報であり、抽出ルール３０に従って抽出された文字列がキーワードのバリューとなる。
【００４９】
図３の抽出ルール３０において、第１抽出方向とは、キーワードの記載位置から見たキーワードの記載行におけるバリューの抽出方向を定めた抽出条件である。
【００５０】
例えば第１抽出方向に「左」が設定されている場合、抽出部１２Ｂは、キーワードの左側に位置する文字列をバリューとして抽出する。また、第１抽出方向に「右」が設定されている場合、抽出部１２Ｂは、キーワードの右側に位置する文字列をバリューとして抽出する。第１抽出方向に「抽出なし」が設定されている場合、抽出部１２Ｂは、キーワードの記載行からバリューの抽出を行わない。
【００５１】
第２抽出方向とは、キーワードの記載行とは異なる行からバリューを抽出する場合に、キーワードの記載行からどちらの方向にある行をバリューの抽出対象行とするか、行の移行方向を定めた抽出条件である。
【００５２】
例えば第２抽出方向に「上」が設定されている場合、抽出部１２Ｂは、キーワードの記載行から順次前の行に向かう方向をバリューの抽出対象行の方向とし、バリューの抽出対象行に設定された行の文字列をバリューとして抽出する。「キーワードの記載行から順次前の行に向かう」とは、まず、キーワードの記載行と隣接する上の行に移行し、次に移行先の行と隣接する上の行に移行することを繰り返すことをいう。
【００５３】
また、第２抽出方向に「下」が設定されている場合、抽出部１２Ｂは、キーワードの記載行から順次後ろの行に向かう方向をバリューの抽出対象行の方向とし、バリューの抽出対象行に設定された行の文字列をバリューとして抽出する。「キーワードの記載行から順次後ろの行に向かう」とは、まず、キーワードの記載行と隣接する下の行に移行し、次に移行先の行と隣接する下の行に移行することを繰り返すことをいう。
【００５４】
第２抽出方向に「抽出なし」が設定されている場合、抽出部１２Ｂは、キーワードの記載行と異なる他の行からはバリューの抽出を行わない。
【００５５】
抽出終了条件とは、第２抽出方向で指定された方向にあるどの範囲までの行をバリューの抽出対象行とするのかを定めた抽出条件である。図３では、番号Ｎ（Ｎは整数）によって設定される例を示している。例えば番号Ｎが“１”なら「条件１」、番号Ｎが“２”なら「条件２」というように、予め規定された複数の条件の中から、情報処理装置１０で使用する抽出終了条件が設定される。抽出終了条件の具体的な内容については後ほど詳細に説明する。
【００５６】
結合部１２Ｃは、抽出部１２Ｂで抽出された部分バリューを結合し、キーワードに対応した最終的なバリューを生成して出力部１３に引き渡す。抽出部１２Ｂで抽出されたバリューが１つである場合、結合部１２Ｃは、当該１つのバリューをキーワードに対応した最終的なバリューとする。
【００５７】
出力部１３は、画像処理部１２の結合部１２Ｃからバリューを受け付けると、キーワードと対応付けてバリューを出力する。「バリューを出力する」とは、文書から抽出したバリューがどのような文字列であるのか認識可能な状態にすることである。バリューを認識する対象は人に限られず装置であってもよい。したがって、キーワードと対応付けてバリューを表示装置に表示する、用紙に印字する、音声で通知する、記憶装置に記憶する、及び図示しない通信回線を通じて後述する通信ユニット４７から送信することは、それぞれバリューの出力を表す一形態である。
【００５８】
ＵＩ部１４は、ユーザからの指示を受け付けると共に、情報処理装置１０の動作や状態といった各種情報をユーザに通知する。例えばＵＩ部１４は、ユーザからキーワードの指定と抽出ルール３０の内容を設定する設定指示を受け付け、ユーザが設定した抽出ルール３０に従って文書から抽出されたバリューをユーザに通知する。
【００５９】
制御部１５は、スキャン処理部１１、画像処理部１２、出力部１３、及びＵＩ部１４の各機能部の処理を制御すると共に、ユーザの設定内容に従った抽出ルール３０の生成や変更を行い、抽出ルールＤＢ１６の管理を行う。
【００６０】
図４は、情報処理装置１０における電気系統の要部構成例を示す図である。情報処理装置１０は、例えばコンピュータ４０を用いて構成される。
【００６１】
コンピュータ４０は、本実施の形態に係る各機能部を担うＣＰＵ（Central Processing Unit）４１、情報処理プログラムを記憶するＲＯＭ（Read Only Memory）４２、ＣＰＵ４１の一時的な作業領域として使用されるＲＡＭ（Random Access Memory）４３、不揮発性メモリ４４、及び入出力インターフェース（Ｉ／Ｏ）４５を備える。そして、ＣＰＵ４１、ＲＯＭ４２、ＲＡＭ４３、不揮発性メモリ４４、及びＩ／Ｏ４５がバス４６を介して各々接続されている。
【００６２】
不揮発性メモリ４４は、不揮発性メモリ４４に供給される電力が遮断されても、記憶した情報が維持される記憶装置の一例であり、例えば半導体メモリが用いられるがハードディスクを用いてもよい。不揮発性メモリ４４は、必ずしもコンピュータ４０に内蔵されている必要はなく、例えばメモリカードのようにコンピュータ４０に着脱される記憶装置であってもよい。
【００６３】
Ｉ／Ｏ４５には、例えば通信ユニット４７、入力ユニット４８、表示ユニット４９、及びスキャナユニット５０が接続される。
【００６４】
通信ユニット４７は図示しない通信回線に接続され、図示しない接続回線に接続する記憶装置及びコンピュータといった外部装置と通信を行う通信プロトコルを備える。
【００６５】
入力ユニット４８は、ユーザからの指示を受け付けてＣＰＵ４１に通知する装置であり、例えばボタン、タッチパネル、キーボード、及びマウス等が用いられる。情報処理装置１０は、入力ユニット４８を介して利用者から指示された機能を実行する。情報処理装置１０はユーザからの指示を音声で受け付けてもよく、この場合、Ｉ／Ｏ４５にはマイクが接続される。
【００６６】
表示ユニット４９は、ＣＰＵ４１によって処理された情報を画像として表示する装置であり、例えば液晶ディスプレイ、有機ＥＬ(Electro Luminescence)ディスプレイ、及び映像をスクリーンに投影するプロジェクタ等が用いられる。
【００６７】
スキャナユニット５０は、ＣＰＵ４１の指示に従って、例えば図示しないプラテンガラスに置かれた原稿の内容を光学的に読み取り、原稿の内容を文書画像に変換する装置である。スキャナユニット５０はスキャン処理部１１の処理で用いられる。
【００６８】
情報処理装置１０は、スキャナユニット５０で読み取られた文書画像をスキャン処理部１１で受け付けるが、必ずしもＩ／Ｏ４５に接続されたスキャナユニット５０から文書画像を受け付ける必要はない。例えば、情報処理装置１０は、通信ユニット４７を通じて図示しない通信回線に接続された図示しないスキャナ装置で読み取られた文書画像を受け付けてもよい。また、情報処理装置１０は、クラウドサーバに格納された文書画像を受け付けてもよい。
【００６９】
なお、Ｉ／Ｏ４５に接続されるユニットは図４に例示したユニットに限定されない。例えば、ＣＰＵ４１の指示に従って、処理した情報を記録媒体に形成する画像形成ユニットをＩ／Ｏ４５に接続してもよい。
【００７０】
また、通信ユニット４７や着脱可能な半導体メモリを通じて文書画像を受け付ける場合、スキャナユニット５０は必ずしも必要ない。この場合、情報処理装置１０は、デスクトップコンピュータ、タブレット型コンピュータ、スマートフォーン、及びウェアラブル端末のように、ユーザとのインターフェースを提供する入出力装置、及び入力された情報を処理する処理機能を備えた情報機器が用いられる。
【００７１】
次に、複数の行に亘って記載された、キーワードに対応するバリューを文書から抽出する情報処理装置１０の動作について説明する。
【００７２】
図５は、ユーザの指示によって文書画像を受け付け、ＯＣＲ処理部１２Ａが受け付けた文書画像を文書２０に変換した場合に、ＣＰＵ４１によって実行される情報処理の流れの一例を示すフローチャートである。情報処理を規定する情報処理プログラムは、例えば情報処理装置１０のＲＯＭ４２に予め記憶されている。情報処理装置１０のＣＰＵ４１は、ＲＯＭ４２に記憶される情報処理プログラムを読み込み、情報処理を実行する。
【００７３】
なお、情報処理装置１０には、ユーザによって取得したいバリューに対応したキーワードが予め設定されているものとする。具体的には、ユーザは見積書の提出先の社名をバリューとして取得するため、社名に添えられる敬称である「御中」をキーワードに設定した例について説明するが、キーワードに設定する文字列はどのような文字列であってもよい。また、不揮発性メモリ４４には予め設定された抽出ルール３０が記憶されている。
【００７４】
ステップＳ１０において、ＣＰＵ４１は文字コードを判別することで、受け付けた文書２０の中から、ユーザが設定したキーワードが含まる行、すなわち、キーワードの記載行を特定する。そして、ＣＰＵ４１は抽出ルール３０に含まれる第１抽出方向の設定値を参照して、キーワードの記載行からバリューを抽出し、ＲＡＭ４３に記憶する。例えば抽出ルール３０が図３のように設定され（抽出終了条件のＮは“１”とする）、受け付けた文書２０が図６に示したような文書２０である場合、ＣＰＵ４１は、「御中」の左側にある文字列、すなわち「株式会社」をキーワードの記載行におけるバリューとして抽出する。
【００７５】
ユーザは空白文字（スペース）をバリューに含めるか否かの指定を抽出ルール３０で設定してもよく、ここではスペースをバリューに含めない設定が行われているものとして説明を行う。
【００７６】
ステップＳ２０において、ＣＰＵ４１は抽出ルール３０に含まれる第２抽出方向の設定値を参照して、次にバリューを抽出する抽出対象行を更新する。抽出ルール３０に含まれる第２抽出方向の設定値が「上」であれば、ＣＰＵ４１は、次にバリューを抽出する抽出対象行を、バリューの抽出を行った行に隣接する上の行に設定する。図６の文書２０の場合、キーワードの記載行でバリューを抽出した後は「第１ＡＢＣＤ」の文字列が含まれる行がバリューの抽出対象行となる。
【００７７】
ステップＳ３０において、ＣＰＵ４１は抽出ルール３０に含まれる抽出終了条件の設定値を参照して、バリューの抽出を終了するか否かを判定する。具体的には、ＣＰＵ４１は、更新後のバリューの抽出対象行が抽出終了条件を満たす場合に、バリューの抽出を終了するものと判定する。
【００７８】
文書の中には、空白行を設けてキーワードに対応するバリューの範囲を人に分かりやすく示していることがある。このような場合、空白行の有無によってキーワードに対応するバリューの記載範囲が示されていることになる。
【００７９】
したがって、抽出終了条件の設定値Ｎを「条件１」を表す“１”に設定し、「条件１」を「空白行の検知で終了」という条件と対応付けることで、ＣＰＵ４１は、更新後のバリューの抽出対象行が空白行であればバリューの記載範囲が終了したと判定し、バリューの抽出を終了することになる。図６の文書２０の場合、更新後のバリューの抽出対象行には「第１ＡＢＣＤ」の文字列が含まれるため、バリューの抽出が続行される。
【００８０】
このように、バリューの抽出を終了しないと判定された場合、ステップＳ４０に移行する。
【００８１】
ステップＳ４０において、ＣＰＵ４１は更新後のバリューの抽出対象行に含まれる文字列をバリューとして抽出し、ＲＡＭ４３に記憶する。図６の文書２０の場合、「第１ＡＢＣＤ」の文字列がバリューとして抽出される。
【００８２】
ステップＳ４０の実行後はステップＳ２０に移行する。すなわち、ステップＳ３０の判定処理でバリューの抽出を終了すると判定されるまで、ＣＰＵ４１は、抽出ルール３０に含まれる第２抽出方向の設定値で設定された抽出方向に向かって１行ずつバリューの抽出対象行を更新し、ステップＳ４０でバリューの抽出対象行からバリューを抽出する処理を継続する。
【００８３】
図６の文書２０の場合、「第１ＡＢＣＤ」の文字列が含まれる行の上の行が空白行２２であるため、キーワードの記載行から空白行２２が現れる手前までの各行からキーワードに対応したバリューが抽出されることになる。
【００８４】
一方、更新後のバリューの抽出対象行が抽出終了条件を満たし、ステップＳ３０の判定処理でバリューの抽出を終了すると判定された場合にはステップＳ５０に移行する。
【００８５】
ステップＳ５０において、ＣＰＵ４１は、抽出したバリューを行の並びに従って結合し、最終的なバリューを生成する。バリューを「行の並びに従って結合する」とは、抽出ルール３０の第２抽出方向で表される行の移行方向に従ってバリューを結合することをいう。
【００８６】
文字列は上の行から下の行に向かって記載され、キーワードの一例である「御中」は社名の最後に添えられるキーワードである。このように、キーワードがバリューの最後（後ろともいう）に添えられるケースの場合、ユーザは第２抽出方向を「上」に設定する。したがって、第２抽出方向が「上」に設定されている場合、ＣＰＵ４１は、後から抽出したバリューほど前に位置するように、最後に抽出したバリューを先頭にして、抽出したバリューを順次結合することで最終的なバリューを生成する。言い換えれば、キーワードの記載行から遠い位置にある行から抽出したバリューほど前に位置するように、抽出した各々のバリューを結合する。
【００８７】
反対に、キーワードがバリューの最初（前ともいう）に添えられるケースの場合、ユーザは第２抽出方向を「下」に設定する。したがって、第２抽出方向が「下」に設定されている場合、ＣＰＵ４１は、先に抽出したバリューほど前に位置するように、最初に抽出したバリューを先頭にして、抽出したバリューを順次結合することで最終的なバリューを生成する。言い換えれば、キーワードの記載行から近い位置にある行から抽出したバリューほど前に位置するように、抽出した各々のバリューを結合する。
【００８８】
ステップＳ６０において、ＣＰＵ４１は、ステップＳ５０で結合したバリューを出力して、図５に示す情報処理を終了する。
【００８９】
このように、本実施の形態に係る情報処理装置１０によれば、文書中におけるバリューの記載領域を規定した抽出ルール３０に基づいて、バリューが含まれると判定された行の各々から部分バリューを抽出し、抽出した部分バリューを行の並びに従って結合することで最終的なバリューを取得する。ここではバリューの記載領域が空白行で区切られている場合について説明したが、例えば少なくとも１つのハイフン“−”等、空白行の代わりに区切りとして使用される記号が含まれる行を用いてバリューの記載行を判定するようにしてもよい。区切りとして使用される記号を予め不揮発性メモリ４４に登録しておき、情報処理装置１０は当該記号を参照して、バリューの抽出対象行が区切り行か否かを検出すればよい。
【００９０】
＜実施形態の変形例１＞
情報処理装置１０は予め書式が固定された１種類の文書２０からバリューを抽出するのではなく、様々な書式の文書２０からキーワードを抽出する。したがって、情報処理装置１０で処理する文書２０の中には、図７に示すように、キーワードの記載行とバリューとの間に空白行２２Ｂが存在し、バリューが空白行２２Ａと空白行２２Ｂで区切られているような書式が存在することも考えられる。しかしながら、図７に示すような書式の文書を図５に示した情報処理で処理した場合、空白行２２Ｂを読み込むと、空白行２２Ｂの上の行にバリューがあるのにステップＳ３０の判定処理でバリューの抽出が終了してしまうことになる。
【００９１】
したがって、ここではキーワードの記載行にバリューが含まれず、キーワードの記載行とバリューが含まれる行との間に空白行が含まれる場合であっても、キーワードに対応したバリューを抽出する情報処理装置１０の情報処理について説明する。
【００９２】
図８は、図５のステップＳ１０でキーワードの記載行からバリューを抽出しようとしたがバリューが抽出されなかった場合（キーワードの文字列以外、全てスペースとなっている状況）に、ＣＰＵ４１によって実行される情報処理の流れの一例を示すフローチャートである。図８に示す情報処理が図５に示した情報処理のステップＳ２０以降の処理と異なる点は、ステップＳ４５が追加された点である。
【００９３】
抽出ルール３０として、図３に示した抽出ルール３０（抽出終了条件として「条件１」が設定されている）を用いる。
【００９４】
ステップＳ２０で、ＣＰＵ４１が、図７の空白行２２Ｂを次のバリューの抽出対象行に設定した場合、ステップＳ３０の判定処理でバリューの抽出を終了すると判定されるため、ステップＳ４５に移行する。
【００９５】
ステップＳ４５において、ＣＰＵ４１は、キーワードの記載行からバリューが抽出されたか否かを判定する。キーワードの記載行からバリューが抽出されず、かつ、空白行２２Ｂが現れたということは、当該空白行２２Ｂは、バリューの記載範囲の終了を示す空白行ではなく、バリューの記載範囲がこれから始まることを示す空白行であると認識する。したがって、キーワードの記載行からバリューが抽出されていない場合、ステップＳ２０に移行して、ＣＰＵ４１は抽出ルール３０に含まれる第２抽出方向で示される方向に向かって、次にバリューを抽出する抽出対象行を更新する。
【００９６】
ステップＳ２０〜Ｓ４５の処理を繰り返し実行することで、バリューを含む行が現れるまでキーワードの記載行から第２抽出方向で示される方向に向かって行を順次参照し、最初にバリューを抽出した行からバリューを含む行が現れた後に空白行が再度現れる手前までの各行から、バリューが抽出されることになる。したがって、図７に示すように、複数行に亘って記載されたバリューが空白行２２Ａと空白行２２Ｂで区切られているような場合であっても、「第１ＡＢＣＤ株式会社」がキーワード「御中」に対応するバリューとして抽出されることになる。
【００９７】
＜実施形態の変形例２＞
ここまでは、バリューの記載範囲の区切りに空白行が用いられている文書から複数行に亘って記載された、キーワードに対応するバリューを抽出する情報処理装置１０について説明してきた。しかし、文書の中にはバリューの記載範囲の区切りに空白行が用いられないものも存在する。
【００９８】
例えば図９の文書２０の例では、社名と文書のタイトル（「見積書」）の間に空白行が存在していない。図９の文書２０のように、キーワードに対応するバリューとその他の文字列を区別する情報が文書中に含まれない場合であっても、バリューの記載行数が予め決められていることがある。
【００９９】
バリューの記載行数が予めＭ行（Ｍは正の整数）に固定されている書式の文書２０の場合、図３の抽出ルール３０における抽出終了条件の設定値Ｎを、「条件２」を表す“２”に設定し、「条件２」を「バリューの抽出行がＭ行に達した場合に終了」という条件と対応付けて、図５に示した情報処理を実行すればよい。
【０１００】
図９の文書２０の書式の場合“Ｍ＝２”に設定される。また、バリューの記載行数をバリューの抽出終了条件とする場合には、バリューを抽出した行数を記録するカウンタＹが用いられる。カウンタＹは、図５の情報処理が実行される毎に予め“０”に初期化され、図５のステップＳ１０及びステップＳ４０でそれぞれバリューが抽出される毎にカウンタＹに“１”が加算される。
【０１０１】
抽出ルール３０の抽出終了条件には「条件２」が設定されているため、ステップＳ３０の判定処理でカウンタＹが値Ｍに達したと判定された場合に、バリューの抽出が終了したと判定される。
【０１０２】
すなわち、図９に示した書式を有する文書２０の場合、「第１ＡＢＣＤ」と「株式会社  御中」が記載されている行がキーワード「御中」に対応するバリューの記載範囲と認識され、「第１ＡＢＣＤ株式会社」がキーワード「御中」に対応するバリューとして抽出されることになる。
【０１０３】
また、文書２０には、例えば図１０に示すように、バリューの記載行数が予めＭ行（Ｍ＝２）に固定されているが、キーワードの記載行とバリューとの間に空白行２２が存在し、キーワードの記載行にバリューが含まれないような書式を有する文書２０が存在する。
【０１０４】
図１０に示すような文書２０であっても、図５に示す情報処理のステップＳ１０及びステップＳ４０では、バリューが抽出されなかった場合にはカウンタＹに“１”が加算されないため、キーワードの記載行にバリューが含まれない場合、及び、バリューの抽出対象行が空白行２２である場合にはカウンタＹの値が変化しないことになる。
【０１０５】
すなわち、情報処理装置１０は空白行を読み飛ばしながら、バリューを含む行が現れるまでキーワードの記載行から第２抽出方向で示される方向に向かって行を順次参照し、最初にバリューを抽出した行を含む合計Ｍ行の各行からバリューを抽出することになる。したがって、図１０に示すような文書２０であっても、「第１ＡＢＣＤ株式会社」がキーワード「御中」に対応するバリューとして抽出されることになる。
【０１０６】
＜実施形態の変形例３＞
文書２０の中には、バリューの記載範囲の区切りに空白行が用いられず、かつ、バリューの記載行数も予め決められていない文書２０も存在する。このような場合、文書２０の文字列がキーワードに対応したバリューであるか否かを判定する手がかりとして、文字列の記載位置を用いればよい場合がある。
【０１０７】
キーワードに対応したバリューとその他の文字列では、行方向における先頭文字の位置がずれていることがある。例えば図１１に示す文書２０の場合、文書２０のタイトル（「見積書」の文字列）が文書２０の行方向に沿った中央部分に配置され、社名は、文書２０のタイトルを表す文字列の先頭文字の位置よりも左寄りの位置から始まるように配置されている。また、図１１に示す文書２０では社名が２行に亘って記載されているが、社名のようなバリューを複数行に亘って記載する場合、バリューはまとまりのある一連の文字列であることから、各行におけるバリューの先頭文字の位置を同じ位置に配置することが多い。
【０１０８】
したがって、各行におけるバリューの先頭文字の位置が、バリューの記載範囲と隣接する行（以降、単に「隣接する行」という）に含まれる文字列の先頭文字の位置と異なるように配置された書式を有する文書２０の場合、図３の抽出ルール３０における抽出終了条件の設定値Ｎを、「条件３」を表す“３”に設定し、「条件３」を「行の先頭文字の位置が異なる場合に終了」という条件と対応付けて、図５に示した情報処理を実行すればよい。
【０１０９】
この場合、ＣＰＵ４１は、ステップＳ１０でキーワードの記載行から抽出したバリューの行方向に沿った先頭文字の位置を取得し、ステップＳ３０では、ステップＳ２０で更新されたバリューの抽出対象行に含まれる文字列の行方向に沿った先頭文字の位置を取得する。
【０１１０】
抽出ルール３０の抽出終了条件には「条件３」が設定されているため、ステップＳ３０の判定処理で、ＣＰＵ４１はステップＳ１０で取得したバリューの先頭文字の位置と、更新されたバリューの抽出対象行に含まれる文字列の先頭文字の位置を比較する。各々の先頭文字の位置が異なると判定された場合、更新されたバリューの抽出対象行にはキーワードに対応したバリューは含まれていないとみなせることから、バリューの抽出が終了したと判定される。
【０１１１】
一方、各々の先頭文字の位置が同じであると判定された場合、ステップＳ４０でバリューの抽出対象行に含まれる文字列がバリューとして抽出される。そして、先頭文字の位置が異なるバリューの抽出対象行が現れるまで、ステップＳ２０でバリューの抽出対象行が繰り返し更新されることによって、ステップＳ４０で先頭文字の位置が異なるバリューの抽出対象行が現れる手前までの各行からバリューが抽出される。
【０１１２】
すなわち、図１１に示した書式を有する文書２０の場合、「見積書」の文字列が含まれる行にはキーワードに対応したバリューは含まれていないと認識され、「第１ＡＢＣＤ株式会社」がキーワード「御中」に対応するバリューとして抽出されることになる。
【０１１３】
文書２０には、例えば図１２に示すように、バリューの先頭文字の位置はその他の文字列の位置とは異なるが、キーワードの記載行にバリューが含まれないような書式を有する文書２０が存在する。
【０１１４】
この場合、ステップＳ１０でキーワードの記載行から抽出したバリューの行方向に沿った先頭文字の位置が取得されないことになるため、図５に示した情報処理をそのまま適用することが困難になる。
【０１１５】
したがって、図５のステップＳ１０で、キーワードの記載行からバリューが抽出されなかった場合には、図５と異なる情報処理を実行するように処理を切り換えることが好ましい。
【０１１６】
図１３は、図５のステップＳ１０でキーワードの記載行からバリューを抽出しようとしたがバリューが抽出されなかった場合に、ＣＰＵ４１によって実行される情報処理の流れの一例を示すフローチャートである。
【０１１７】
図５で既に説明したように、ステップＳ２０において、ＣＰＵ４１は抽出ルール３０に含まれる第２抽出方向の設定値を参照して、次にバリューを抽出する抽出対象行を更新する。
【０１１８】
ステップＳ２２において、ＣＰＵ４１は、更新後のバリューの抽出対象行に文字列が含まれるか否かを判定する。文字列が存在しない場合、更新後のバリューの抽出対象行は空白行であると考えられるためステップＳ２０に移行し、バリューの抽出対象行を更新する。一方、文字列が含まれる場合にはステップＳ２４に移行する。
【０１１９】
ステップＳ２４において、ＣＰＵ４１は、キーワードの記載行またはバリューの抽出対象行の何れかの行からバリューを抽出したか否かを判定する。バリューを抽出したことがない場合、現在のバリューの抽出対象行は、バリューを含む最初の抽出対象行ということになる。したがって、ステップＳ４０に移行し、図５のステップＳ４０で説明したように、ＣＰＵ４１はバリューの抽出対象行に含まれる文字列をバリューとして抽出し、ＲＡＭ４３に記憶する。また、ステップＳ４２において、ＣＰＵ４１は、ステップＳ４０で抽出したバリューの行方向に沿った先頭文字の位置をＲＡＭ４３に記憶して、ステップＳ２０に移行する。これにより、バリューの先頭文字の位置が記憶される。図１２に示した文書２０の場合、「株式会社」の「株」の位置が記憶される。
【０１２０】
一方、ステップＳ２４の判定処理で既にバリューの抽出が行われたことがあると判定された場合には、ステップＳ２６に移行する。
【０１２１】
ステップＳ２６において、ＣＰＵ４１は、ステップＳ２０で更新されたバリューの抽出対象行に含まれる文字列の先頭文字の位置を取得して、取得した先頭文字の位置と、ステップＳ４２で記憶したバリューの先頭文字の位置が同じであるか否かを判定する。先頭文字の位置が同じ場合には、バリューの抽出対象行に含まれる文字列はキーワードに対応したバリューと考えられるため、ステップＳ２８に移行する。
【０１２２】
ステップＳ２８において、ＣＰＵ４１は、バリューの抽出対象行に含まれる文字列をバリューとして抽出し、ＲＡＭ４３に記憶する。その後、ステップＳ２０に移行する。これにより、バリューが最初に抽出された行のバリューの先頭文字の位置と同じ位置から始まる文字列を含む各々の行から部分バリューが抽出されることになる。
【０１２３】
一方、ステップＳ２６の判定処理で先頭文字の位置が異なると判定された場合には、ステップＳ５０に移行する。バリューの抽出対象行に含まれる文字列の先頭文字の位置が異なるということは、現在のバリューの抽出対象行に含まれる文字列はキーワードに対応したバリューを表す文字列ではないことを意味する。
【０１２４】
したがって、現在のバリューの抽出対象行からは文字列を抽出せずに、図５のステップＳ５０で説明したように、ＣＰＵ４１は、抽出したバリューを行の並びに従って結合して最終的なバリューを生成し、ステップＳ６０において、ステップＳ５０で結合したバリューを出力して図１３に示す情報処理を終了する。
【０１２５】
第２抽出方向で設定された方向に向かってキーワードの記載行から各行を参照する過程で、キーワード以外の文字列が最初に含まれる行の先頭文字の位置をバリューの先頭文字の位置とすることで、図１２に示した文書２０のように、バリューの先頭文字の位置が隣接する行に含まれる文字列の先頭文字の位置と異なるように配置され、かつ、キーワードの記載行にバリューが含まれないような書式の文書２０からも、キーワードに対応したバリューの抽出が行われることになる。
【０１２６】
＜実施形態の変形例４＞
文書２０の中には、バリューの記載範囲の区切りに必ずしも空白行が用いられず、かつ、バリューの記載行数も予め決められていない上、バリューを表す文字列とその他の文字列の先頭文字の位置にも特に違いが設けられていない文書２０も存在する。このような場合、文書２０の文字列がキーワードに対応したバリューであるか否かを判定する手がかりとして、文字列を表す書式の視覚上の相違を用いればよい場合がある。
【０１２７】
例えば図１４に示す文書２０の場合、「見積書」が文書２０のタイトルであり、「第１ＡＢＣＤ株式会社」が見積書の提出先の会社名であることをユーザに認識させるため、文書２０のタイトルを表す文字列と文書２０の提出先を表す文字列とで、文字の大きさが変えられている。
【０１２８】
文字列を表す書式の視覚上の相違は、例えば文字列の文字属性の違いによって発生する。すなわち「文字属性」とは、文書２０における文字の見え方を規定する要素の集合体であり、文字属性を規定する要素には、例えば文字の大きさ、文字の字体、文字の太さ、文字の装飾、及び文字の色の少なくとも１つの要素が含まれる。文字コードは文字の意味を表す要素であるから、文字属性に文字コードは含まれない。
【０１２９】
「文字の装飾」とは、文字が表す本来の意味が読み取れる範囲内で文字の外形を修正したり、文字に他の要素を付け加えたりすることをいう。例えば斜体の文字、並びに、下線、取り消し線、傍点、及び影が加えられた文字は、装飾が施された文字の一例である。
【０１３０】
また、文字列を表す書式の視覚上の相違には文字列の間隔も含まれる。例えば文字列の間隔を調整することで、２つの文字列の関係が表される。具体的には、文字列の間隔が遠くなる程、お互いの文字列の関連度合いは低いと認識されるため、文字列の間隔は、２つの文字列を一連の意味を表す文字列として扱った方がよいのか、それとも、まったく関連のない別の文字列として扱った方がよいのかといった手がかりを示していることになる。すなわち、文字列の間隔も文字列の文字属性の一例である。
【０１３１】
したがって、キーワードに対応したバリューの文字属性が隣接する行に含まれる文字列の文字属性と異なるように設定された書式を有する文書２０の場合、図３の抽出ルール３０における抽出終了条件の設定値Ｎを、「条件４」を表す“４”に設定し、「条件４」を「文字列の文字属性が異なる場合に終了」という条件と対応付けて、図５に示した情報処理を実行すればよい。
【０１３２】
この場合、ＣＰＵ４１は、ステップＳ１０でキーワードの記載行から抽出したバリューに共通する文字属性を取得し、ステップＳ３０では、ステップＳ２０で更新されたバリューの抽出対象行に含まれる文字列に共通した文字属性を取得する。
【０１３３】
抽出ルール３０の抽出終了条件には「条件４」が設定されているため、ステップＳ３０の判定処理で、ＣＰＵ４１はステップＳ１０で取得した文字属性と、更新されたバリューの抽出対象行に含まれる文字列に共通した文字属性を比較する。文字属性が異なると判定された場合、更新されたバリューの抽出対象行にはキーワードに対応したバリューは含まれていないとみなせることから、バリューの抽出が終了したと判定する。
【０１３４】
一方、各々の文字属性が同じであると判定された場合、ステップＳ４０でバリューの抽出対象行に含まれる文字列がバリューとして抽出される。そして、キーワードの記載行から抽出したバリューと文字属性が異なるバリューの抽出対象行が現れるまで、ステップＳ２０でバリューの抽出対象行が繰り返し更新されることによって、ステップＳ４０でキーワードの記載行から文字属性が異なるバリューの抽出対象行が現れる手前までの各行からバリューが抽出される。
【０１３５】
すなわち、図１４に示した書式を有する文書２０の場合、「見積書」の文字列が含まれる行にはキーワードに対応したバリューは含まれていないと認識され、「第１ＡＢＣＤ株式会社」がキーワード「御中」に対応するバリューとして抽出されることになる。
【０１３６】
文書２０には、例えば図１５に示すように、所望するバリューの文字属性は隣接する行に含まれる文字列の文字属性とは異なるが、キーワードの記載行にバリューが含まれないような書式を有する文書２０が存在する。
【０１３７】
この場合、ステップＳ１０でキーワードの記載行から抽出したバリューの文字属性が取得されないことになるため、図５に示した情報処理をそのまま適用することが困難になる。
【０１３８】
したがって、図５のステップＳ１０で、キーワードの記載行からバリューが抽出されなかった場合には、図１３で説明した情報処理を実行するように処理を切り換えることが好ましい。
【０１３９】
この場合、図１３に示した情報処理のステップＳ４２で、ステップＳ４０で抽出したバリューの行方向に沿った先頭文字の位置の代わりに、バリューに共通した文字属性をＲＡＭ４３に記憶する。その上で、図１３に示した情報処理のステップＳ２６で、ステップＳ２０で更新されたバリューの抽出対象に含まれる文字列の先頭文字の位置を取得する代わりに、文字列に共通した文字属性を取得して、取得した文字属性と、ステップＳ４２で記憶した文字属性が同じであるか否かを判定すれば、図１５に示した文書２０のように、所望するバリューの文字属性は隣接する行に含まれる文字列の文字属性とは異なるが、キーワードの記載行にバリューが含まれないような書式を有する文書２０からも、キーワードに対応したバリューの抽出が行われることになる。また、文書２０に空白行があったとしても、キーワードに対応したバリューの抽出が行われることになる。
【０１４０】
なお、キーワードとバリューには同じ文字属性が用いられる傾向があることから、キーワードの記載行にバリューが含まれない場合、キーワードの文字属性をバリューの文字属性としてもよい。
【０１４１】
これまでに説明した実施の形態及びその変形例では、バリューの記載行にはバリュー以外の文字列が含まれない前提で説明した。しかしながら、文書２０の中には、バリューの記載行にバリュー以外の文字列を含んだ書式を有する文書２０が存在することがある。
【０１４２】
図１６に示す文書２０の例の場合、「第１ＡＢＣＤ」はキーワード「御中」に対応する部分バリューであるが、「第１ＡＢＣＤ」の部分バリューの記載行には、「作成年月日：２０１９年３月３１日」のように、キーワードと関係のない文字列が含まれている。
【０１４３】
このような場合、ＣＰＵ４１は、抽出ルール３０に設定される第１抽出方向と文字列を表す書式の視覚上の相違を用いて、複数の文字列が記載されている行から、キーワードに対応したバリューを抽出する。
【０１４４】
既に説明したように、文字属性の相違が少ないほど、各々の文字列はまとまりのある一連の意味を表す文字列であると考えられる。したがって、ＣＰＵ４１は、行毎に文字列の文字属性を参照し、文字属性の違いによって行に含まれる文字列を区切る。ＣＰＵ４１は、同じ行から複数の文字列を取得した場合、例えば複数の文字列のうち、先頭文字の位置が行方向におけるキーワードの先頭文字の位置と同じか、またはキーワードの先頭文字の位置よりも第１抽出方向で表された方向にある文字列をバリューとして抽出すればよい。また、そのような文字列も複数存在する場合には、ＣＰＵ４１はこれら複数の文字列のうち、例えばキーワードの先頭文字の位置から一番近くにある文字列をバリューとして抽出する。
【０１４５】
このように、情報処理装置１０は、ユーザがキーワードに対応したバリューの抽出対象となる文書２０での書式の特徴を考慮して、複数の条件の中からバリューの抽出に最も適した条件を設定した抽出ルール３０に基づいて、キーワードに対応したバリューを抽出する。
【０１４６】
また、抽出ルール３０にバリューの記載行数が予め固定されている書式に対応した抽出終了条件（条件２）以外の抽出終了条件が用いられる場合、バリューが何行に亘って記載されることがあるのか不明な文書２０からもキーワードに対応したバリューが抽出される。
【０１４７】
以上、実施の形態を用いて本発明について説明したが、本発明は実施の形態に記載の範囲には限定されない。本発明の要旨を逸脱しない範囲で実施の形態に多様な変更又は改良を加えることができ、当該変更又は改良を加えた形態も本発明の技術的範囲に含まれる。例えば、本発明の要旨を逸脱しない範囲で処理の順序を変更してもよい。
【０１４８】
本実施の形態では、一例として情報処理をソフトウェアで実現する形態について説明したが、図５、図８、及び図１３に示したフローチャートと同等の処理を、例えばＡＳＩＣ（Application Specific Integrated Circuit）に実装し、ハードウェアで処理させるようにしてもよい。この場合、情報処理をそれぞれソフトウェアで実現した場合と比較して、処理の高速化が図られる。
【０１４９】
また、図１に示した各機能部や抽出ルールＤＢ１６を単体の情報処理装置１０で実現するのではなく、例えばクラウドコンピューティングを用いて複数の情報機器に分散して配置し、複数の情報機器を連係させることで、情報処理装置１０と同等の処理を実行するようにしてもよい。
【０１５０】
また、上述した実施の形態では、情報処理プログラムがＲＯＭ４２にインストールされている形態を説明したが、これに限定されるものではない。本発明に係る情報処理プログラムは、コンピュータで読み取り可能な記憶媒体に記録された形態で提供することも可能である。例えば、本発明に係る情報処理プログラムを、ＣＤ(Compact Disc)−ＲＯＭ、又はＤＶＤ(Digital Versatile Disc)−ＲＯＭ等の光ディスクに記録した形態で提供してもよい。また、本発明に係る情報処理プログラムを、ＵＳＢ(Universal Serial Bus)メモリ及びフラッシュメモリ等の半導体メモリに記録した形態で提供してもよい。更に、情報処理装置１０は、通信ユニット４７を介して、図示しない通信回線に接続される外部装置から本発明に係る情報処理プログラムを取得するようにしてもよい。
【符号の説明】
【０１５１】
１０・・・情報処理装置
１１・・・スキャン処理部
１２・・・画像処理部
１２Ａ・・・ＯＣＲ処理部
１２Ｂ・・・抽出部
１２Ｃ・・・結合部
１３・・・出力部
１４・・・ＵＩ部
１５・・・制御部
１６・・・抽出ルールＤＢ
２０・・・文書
２２（２２Ａ、２２Ｂ）・・・空白行
３０・・・抽出ルール
４０・・・コンピュータ
４１・・・ＣＰＵ
４２・・・ＲＯＭ
４３・・・ＲＡＭ
４４・・・不揮発性メモリ
４７・・・通信ユニット
４８・・・入力ユニット
４９・・・表示ユニット
５０・・・スキャナユニット
【図１】
2020119152.tif 000003
【図２】
2020119152.tif 000004
【図３】
2020119152.tif 000005
【図４】
2020119152.tif 000006
【図５】
2020119152.tif 000007
【図６】
2020119152.tif 000008
【図７】
2020119152.tif 000009
【図８】
2020119152.tif 000010
【図９】
2020119152.tif 000011
【図１０】
2020119152.tif 000012
【図１１】
2020119152.tif 000013
【図１２】
2020119152.tif 000014
【図１３】
2020119152.tif 000015
【図１４】
2020119152.tif 000016
【図１５】
2020119152.tif 000017
【図１６】
2020119152.tif 000018