(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-11-13
(45)【発行日】2023-11-21
(54)【発明の名称】情報処理装置、及び情報処理プログラム
(51)【国際特許分類】
G06V 30/412 20220101AFI20231114BHJP
G06V 30/14 20220101ALI20231114BHJP
【FI】
G06V30/412
G06V30/14
(21)【出願番号】P 2019008665
(22)【出願日】2019-01-22
【審査請求日】2021-12-20
(73)【特許権者】
【識別番号】000005496
【氏名又は名称】富士フイルムビジネスイノベーション株式会社
(74)【代理人】
【識別番号】110001519
【氏名又は名称】弁理士法人太陽国際特許事務所
(72)【発明者】
【氏名】小林 邦彦
(72)【発明者】
【氏名】清水 淳一
(72)【発明者】
【氏名】堀江 大悟
【審査官】大塚 俊範
(56)【参考文献】
【文献】特開2011-123825(JP,A)
【文献】特開2010-102668(JP,A)
【文献】特開2018-005462(JP,A)
【文献】特開2008-204226(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06V G06V30/00-30/424
(57)【特許請求の範囲】
【請求項1】
複数の行に亘って記載された
キーワードを含む文字列から、前記キーワードに対応した文字列の抽出条件に従って前記キーワードに対応した文字列を抽出する抽出部と、
前記抽出部で抽出された各々の文字列を行の並びに従って結合する結合部と、
前記結合部で結合された各々の文字列を前記キーワードに対応した文字列として出力する出力部と、
を備え
、
前記抽出条件に、前記キーワードの記載位置から見た前記キーワードに対応した文字列の抽出方向が定められ、前記抽出方向が、複数の行から前記キーワードに対応した文字列を抽出する場合に、前記キーワードの記載行から順次前の行に向かって移行する方向、または、前記キーワードの記載行から順次後ろの行に向かって移行する方向を表し、
前記抽出部は、前記抽出方向に沿って行を順次参照し、行方向に沿った行の先頭文字の位置が、前記キーワードの記載行の先頭文字の位置と異なる行が現れる手前までの各行から前記キーワードに対応した文字列を抽出する
情報処理装置。
【請求項2】
前記抽出部は、前記キーワードの記載行から前記キーワードに対応した文字列が抽出されなかった場合、前記キーワードに対応した文字列を含む行が現れるまで前記キーワードの記載行から前記抽出方向に沿って行を順次参照し、前記キーワードに対応した文字列が最初に現れた行から、前記キーワードに対応した文字列が最初に現れた行の先頭文字の位置と先頭文字の位置が異なる行が現れる手前までの各行から前記キーワードに対応した文字列を抽出する
請求項
1記載の情報処理装置。
【請求項3】
コンピュータを、請求項1
又は請求項
2に記載の情報処理装置の各部として機能させるための情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、及び情報処理プログラムに関する。
【背景技術】
【0002】
スキャナで読み取った文書画像から、ユーザが所望する特定のキーワードによって表される項目と対応付けられた文字列を抽出する情報処理装置が知られている。
【0003】
特許文献1には、入力された文書画像から情報項目の値を抽出する画像処理装置であって、抽出対象の情報項目の項目名を含む抽出項目情報を記憶した抽出項目記憶部と、前記文書画像に対して文字認識を実行する文字認識部と、文字認識部から出力された文字認識結果から抽出項目記憶部に記憶された抽出対象の項目名に該当する文字列を抽出する項目名抽出部と、前記文書画像における、項目名に該当する文字列の近傍位置から、その項目名に対応する項目値の文字列を抽出する項目値抽出部と、項目値抽出部が抽出した項目値の文字列を項目名と対応づけて抽出情報を作成する抽出情報作成部と、を備える画像処理装置が開示されている。
【0004】
特許文献2には、 画像に対して領域解析処理を実行することにより領域を抽出する抽出手段と、特定のキーワードと当該キーワードに対応するバリューとを抽出するためのルールを取得する取得手段と、前記ルールを用いて前記キーワードを含む領域および当該キーワードに対応するバリューを含む領域を特定する順番を、当該ルールに含まれる前記キーワードと当該キーワードに対応するバリューとが取り得る値に応じて決定する決定手段と、前記決定された順番に従い、前記キーワードを含む領域または当該キーワードに対応するバリューを含む領域を前記抽出された領域の中から特定する特定手段と、前記特定された領域に対して文字認識処理を行う文字認識手段と、を備え、前記特定手段は、前記決定された順番に従い、先に特定した領域に基づいて、対応するもう一方の領域を特定する、ことを特徴とする情報処理装置が開示されている。
【先行技術文献】
【特許文献】
【0005】
【文献】特開2007-233913号公報
【文献】特開2018-128996号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
例えば見積書のような書類には、提出先の会社名に続けて「御中」というような予め定められた表記が用いられる。したがって、スキャナで読み取った書類の画像に対してOCR(Optical Character Recognition)処理を行い、「御中」をキーワードとして「御中」の記載行に記載されている文字列を抽出すれば、書類の提出先の会社名が得られることになる。
【0007】
しかしながら、書類をスキャナで読み込みOCR処理を行った場合、つながりのある一連の文字列が行をまたいで記載されていたとしても、行をまたいだ文字列の連結情報が含まれないため、キーワードの記載行と異なる行に記載されている文字列が、キーワードに対応した文字列を表しているのか分からない状況が発生する。したがって、これまではキーワードの記載行と同じ行に含まれる文字列だけをキーワードに対応した文字列として抽出していた。すなわち、キーワードに対応した文字列がキーワードの記載行と異なる行に含まれていた場合、キーワードに対応した文字列を正しく抽出することができなかった。
【0008】
本発明は、キーワードに対応した文字列がキーワードの記載行と異なる行にも含まれる場合であっても、キーワードに対応した文字列を出力することができる情報処理装置、及び情報処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【0009】
第1態様に係る情報処理装置は、複数の行に亘って記載されたキーワードを含む文字列から、前記キーワードに対応した文字列の抽出条件に従って前記キーワードに対応した文字列を抽出する抽出部と、前記抽出部で抽出された各々の文字列を行の並びに従って結合する結合部と、前記結合部で結合された各々の文字列を前記キーワードに対応した文字列として出力する出力部と、を備える。
【0010】
第2態様に係る情報処理装置は、第1態様に係る情報処理装置において、前記抽出条件に、前記キーワードの記載位置から見た前記キーワードに対応した文字列の抽出方向が定められている。
【0011】
第3態様に係る情報処理装置は、第2態様に係る情報処理装置において、前記抽出方向が、複数の行から前記キーワードに対応した文字列を抽出する場合に、前記キーワードの記載行から順次前の行に向かって移行する方向、または、前記キーワードの記載行から順次後ろの行に向かって移行する方向を表す。
【0012】
第4態様に係る情報処理装置は、第3態様に係る情報処理装置において、前記抽出部が、前記抽出方向に沿って行を順次参照し、前記キーワードの記載行から文字の記載がない空白行が現れる手前までの各行から前記キーワードに対応した文字列を抽出する。
【0013】
第5態様に係る情報処理装置は、第4態様に係る情報処理装置において、前記抽出部が、前記キーワードの記載行から前記キーワードに対応した文字列が抽出されなかった場合で、かつ、前記抽出方向に沿って前記キーワードの記載行と隣り合う行が空白行の場合、前記キーワードに対応した文字列を含む行が現れるまで前記キーワードの記載行から前記抽出方向に沿って行を順次参照し、前記キーワードに対応した文字列が最初に現れた行から、空白行が再度現れる手前までの各行から前記キーワードに対応した文字列を抽出する。
【0014】
第6態様に係る情報処理装置は、第3態様に係る情報処理装置において、前記抽出部が、前記キーワードの記載行から前記抽出方向に沿った予め定めた行数までの各行から前記キーワードに対応した文字列を抽出する。
【0015】
第7態様に係る情報処理装置は、第6態様に係る情報処理装置において、前記抽出部が、前記キーワードの記載行から前記キーワードに対応した文字列が抽出されなかった場合、前記キーワードに対応した文字列を含む行が現れるまで前記キーワードの記載行から前記抽出方向に沿って行を順次参照し、前記キーワードに対応した文字列が最初に現れた行から前記抽出方向に沿った前記予め定めた行数までの各行から前記キーワードに対応した文字列を抽出する。
【0016】
第8態様に係る情報処理装置は、第3態様に係る情報処理装置において、前記抽出部が、前記抽出方向に沿って行を順次参照し、行方向に沿った行の先頭文字の位置が、前記キーワードの記載行の先頭文字の位置と異なる行が現れる手前までの各行から前記キーワードに対応した文字列を抽出する。
【0017】
第9態様に係る情報処理装置は、第8態様に係る情報処理装置において、前記抽出部が、前記キーワードの記載行から前記キーワードに対応した文字列が抽出されなかった場合、前記キーワードに対応した文字列を含む行が現れるまで前記キーワードの記載行から前記抽出方向に沿って行を順次参照し、前記キーワードに対応した文字列が最初に現れた行から、前記キーワードに対応した文字列が最初に現れた行の先頭文字の位置と先頭文字の位置が異なる行が現れる手前までの各行から前記キーワードに対応した文字列を抽出する。
【0018】
第10態様に係る情報処理装置は、第3態様に係る情報処理装置において、前記抽出部が、前記抽出方向に沿って行を順次参照し、最初に抽出した前記キーワードに対応した文字列の文字属性と異なる文字属性が用いられている手前までの各行から前記キーワードに対応した文字列を抽出する。
【0019】
第11態様に係る情報処理装置は、第10態様に係る情報処理装置において、前記キーワードに対応した文字列の文字属性に、文字の大きさ、文字の字体、文字の太さ、文字の装飾、及び文字の色の少なくとも1つが設定される。
【0020】
第12態様に係る情報処理装置は、第10態様または第11態様に係る情報処理装置において、前記抽出部が、前記キーワードに対応した文字列の抽出対象となる何れかの行に複数の文字列が含まれる場合、文字列の文字属性に従って、前記複数の文字列から前記キーワードに対応した文字列を抽出する。
【0021】
第13態様に係る情報処理プログラムは、コンピュータを、第1態様~第12態様の何れかの態様に係る情報処理装置の各部として機能させるためのプログラムである。
【発明の効果】
【0022】
第1態様、及び第13態様によれば、キーワードに対応した文字列がキーワードの記載行と異なる行にも含まれる場合であっても、キーワードに対応した文字列を出力することができる、という効果を有する。
【0023】
第2態様によれば、キーワードに対応した文字列がキーワードの記載位置から見てキーワードの記載行の左右どちらにある場合であっても、キーワードに対応した文字列を抽出することができる、という効果を有する。
【0024】
第3態様によれば、キーワードに対応した文字列がキーワードの記載行から見て前または後ろの何れの行にある場合であっても、キーワードに対応した文字列を抽出することができる、という効果を有する。
【0025】
第4態様によれば、キーワードに対応した文字列が空白行によって区切られている書式の文書から、キーワードに対応した文字列を抽出することができる、という効果を有する。
【0026】
第5態様によれば、キーワードの記載行とキーワードに対応した文字列の記載行の間に空白行がある場合であっても、キーワードに対応した文字列を抽出することができる、という効果を有する。
【0027】
第6態様によれば、キーワードに対応した文字列の記載行数が予め定められている書式の文書から、キーワードに対応した文字列を抽出することができる、という効果を有する。
【0028】
第7態様によれば、キーワードの記載行にキーワードに対応した文字列が含まれない場合であっても、キーワードに対応した文字列を抽出することができる、という効果を有する。
【0029】
第8態様によれば、キーワードに対応した文字列の先頭文字の位置が予め定められている書式の文書から、キーワードに対応した文字列を抽出することができる、という効果を有する。
【0030】
第9態様によれば、キーワードの記載行にキーワードに対応した文字列が含まれない場合であっても、キーワードに対応した文字列を抽出することができる、という効果を有する。
【0031】
第10態様によれば、キーワードに対応した文字列の文字属性が他の文字列の文字属性と異なるように定められた書式の文書から、キーワードに対応した文字列を抽出することができる、という効果を有する。
【0032】
第11態様によれば、文字列の表示形態の違いから、キーワードに対応した文字列を抽出することができる、という効果を有する。
【0033】
第12態様によれば、キーワードに対応した文字列ではない他の文字列が同じ行に含まれる場合であっても、キーワードに対応した文字列を抽出することができる、という効果を有する。
【図面の簡単な説明】
【0034】
【
図1】情報処理装置の機能構成例を示すブロック図である。
【
図4】情報処理装置における電気系統の要部構成例を示す図である。
【
図5】情報処理の流れの一例を示すフローチャートである。
【
図7】空白行を含む文書の他の一例を示す図である。
【
図8】キーワードの記載行にバリューが含まれていない場合における情報処理の流れの一例を示すフローチャートである。
【
図9】バリューの記載行数が予め決められている文書の一例を示す図である。
【
図10】空白行を含んだ上で、バリューの記載行数が予め決められている文書の一例を示す図である。
【
図11】バリューの先頭文字の位置が隣接する行の文字列の位置と異なる文書の一例を示す図である。
【
図12】キーワードの記載行にバリューが含まれず、バリューの先頭文字の位置が隣接する行の文字列の位置と異なる文書の一例を示す図である。
【
図13】キーワードの記載行にバリューが含まれず、バリューの先頭文字の位置が隣接する行の文字列の位置と異なる文書に対する情報処理の流れの一例を示すフローチャートである。
【
図14】バリューの文字属性が隣接する行に含まれる文字列の文字属性と異なる文書の一例を示す図である。
【
図15】キーワードの記載行にバリューが含まれず、バリューの文字属性が隣接する行に含まれる文字列の文字属性と異なる文書の一例を示す図である。
【
図16】バリューの記載行にバリュー以外の文字列を含む文書の一例を示す図である。
【発明を実施するための形態】
【0035】
以下、本実施の形態について図面を参照しながら説明する。なお、機能が同じ構成要素及び処理には全図面を通して同じ符合を付与し、重複する説明を省略する。
【0036】
<実施形態>
図1は、例えばOCR処理された文書からキーワードに対応した文字列を抽出して出力する情報処理装置10の機能構成例を示すブロック図である。
【0037】
情報処理装置10は、スキャン処理部11、画像処理部12、出力部13、ユーザインターフェース(User Interface:UI)部14、及び制御部15の各機能部と、抽出ルールデータベース(Database:DB)を含む。
【0038】
スキャン処理部11は、原稿に記載された内容を光学的に読み取るスキャナユニット50を用いて、原稿に対応した画像(以降、「文書画像」という)を生成し、画像処理部12に引き渡す。
【0039】
画像処理部12は、OCR処理部12A、抽出部12B、及び結合部12Cを含んでいる。
【0040】
スキャン処理部11から文書画像を受け付けた画像処理部12は、まず、OCR処理部12Aで文書画像に対して公知の画像認識を行い、文書画像のうち文字に相当する画像を文字コードに変換する。すなわち、OCR処理部12Aによって、文書画像が文字情報として扱われるようになり、文字のコピーや検索が行われるようになる。以降では、OCR処理部12Aで文書画像から文字情報に変換された変換データを「文書20」ということにする。
【0041】
抽出部12BはOCR処理部12Aで生成された文書20から、ユーザが指定したキーワードに対応する文字列を抽出する。
【0042】
図2は、文書20に含まれるキーワードとキーワードに対応する文字列の一例を示す図である。情報処理装置10で扱う文書20の内容の種類に制約はなく、如何なる内容を表す文書20からもキーワードに対応する文字列の抽出が行われるが、ここでは一例として、見積書のように他社に提出するような内容の文書20を例に説明を行う。
【0043】
このような他社に提出する文書20を管理する場合、ユーザは例えば提出先の会社毎に文書20を管理したい等の理由から、各々の文書20から提出先の会社名や見積書の作成日等を抽出したいことがある。提出先の会社名には、例えば「御中」といった予め定められた敬称が添えられ、見積書が作成された日付は、例えば「作成日」といった予め定められた項目名と共に記載される。
【0044】
このような抽出したい文字列に添えられる語句、及び抽出したい文字列の項目名を「キーワード」といい、キーワードの内容を表す文字列を「バリュー」という。すなわち、バリューはキーワードに対応した文字列である。
【0045】
図2(A)に示した文書20の場合、「御中」がキーワードであり、「第1ABCD株式会社」がキーワードのバリューである。文書20において縦に連なった「・」は、図示していない他の内容が文書20に含まれていることを表している。
【0046】
抽出部12Bでは、
図2(A)に示すようにキーワードとバリューが同じ行に含まれる形態だけでなく、
図2(B)に示すようにバリューが複数の行に亘って記載された場合であっても、抽出ルールDB16に記憶される抽出ルール30に基づいて、複数の行に亘って記載されたそれぞれの文字列がキーワードに対する一連のバリューを表しているか否かを判定し、それぞれの文字列をキーワードに対する一連のバリューであると判定した場合には、それぞれの文字列をキーワードに対するバリューを構成する文字列として抽出する。
【0047】
以降では、キーワードに対するバリューを構成する複数の文字列の各々も「バリュー」と表すことにするが、特に最終的なバリューと異なることを強調して説明したい場合や、最終的なバリューと混同すると説明が分かりにくくなる箇所では、「部分バリュー」と表すことがある。「最終的なバリュー」とは、部分バリューを結合することによって得られる、ユーザが所望するバリューのことである。
【0048】
図3は、抽出ルール30の一例を示す図である。抽出ルール30は、抽出部12Bがキーワードのバリューを抽出する場合に従うバリューの抽出条件を規定した情報であり、抽出ルール30に従って抽出された文字列がキーワードのバリューとなる。
【0049】
図3の抽出ルール30において、第1抽出方向とは、キーワードの記載位置から見たキーワードの記載行におけるバリューの抽出方向を定めた抽出条件である。
【0050】
例えば第1抽出方向に「左」が設定されている場合、抽出部12Bは、キーワードの左側に位置する文字列をバリューとして抽出する。また、第1抽出方向に「右」が設定されている場合、抽出部12Bは、キーワードの右側に位置する文字列をバリューとして抽出する。第1抽出方向に「抽出なし」が設定されている場合、抽出部12Bは、キーワードの記載行からバリューの抽出を行わない。
【0051】
第2抽出方向とは、キーワードの記載行とは異なる行からバリューを抽出する場合に、キーワードの記載行からどちらの方向にある行をバリューの抽出対象行とするか、行の移行方向を定めた抽出条件である。
【0052】
例えば第2抽出方向に「上」が設定されている場合、抽出部12Bは、キーワードの記載行から順次前の行に向かう方向をバリューの抽出対象行の方向とし、バリューの抽出対象行に設定された行の文字列をバリューとして抽出する。「キーワードの記載行から順次前の行に向かう」とは、まず、キーワードの記載行と隣接する上の行に移行し、次に移行先の行と隣接する上の行に移行することを繰り返すことをいう。
【0053】
また、第2抽出方向に「下」が設定されている場合、抽出部12Bは、キーワードの記載行から順次後ろの行に向かう方向をバリューの抽出対象行の方向とし、バリューの抽出対象行に設定された行の文字列をバリューとして抽出する。「キーワードの記載行から順次後ろの行に向かう」とは、まず、キーワードの記載行と隣接する下の行に移行し、次に移行先の行と隣接する下の行に移行することを繰り返すことをいう。
【0054】
第2抽出方向に「抽出なし」が設定されている場合、抽出部12Bは、キーワードの記載行と異なる他の行からはバリューの抽出を行わない。
【0055】
抽出終了条件とは、第2抽出方向で指定された方向にあるどの範囲までの行をバリューの抽出対象行とするのかを定めた抽出条件である。
図3では、番号N(Nは整数)によって設定される例を示している。例えば番号Nが“1”なら「条件1」、番号Nが“2”なら「条件2」というように、予め規定された複数の条件の中から、情報処理装置10で使用する抽出終了条件が設定される。抽出終了条件の具体的な内容については後ほど詳細に説明する。
【0056】
結合部12Cは、抽出部12Bで抽出された部分バリューを結合し、キーワードに対応した最終的なバリューを生成して出力部13に引き渡す。抽出部12Bで抽出されたバリューが1つである場合、結合部12Cは、当該1つのバリューをキーワードに対応した最終的なバリューとする。
【0057】
出力部13は、画像処理部12の結合部12Cからバリューを受け付けると、キーワードと対応付けてバリューを出力する。「バリューを出力する」とは、文書から抽出したバリューがどのような文字列であるのか認識可能な状態にすることである。バリューを認識する対象は人に限られず装置であってもよい。したがって、キーワードと対応付けてバリューを表示装置に表示する、用紙に印字する、音声で通知する、記憶装置に記憶する、及び図示しない通信回線を通じて後述する通信ユニット47から送信することは、それぞれバリューの出力を表す一形態である。
【0058】
UI部14は、ユーザからの指示を受け付けると共に、情報処理装置10の動作や状態といった各種情報をユーザに通知する。例えばUI部14は、ユーザからキーワードの指定と抽出ルール30の内容を設定する設定指示を受け付け、ユーザが設定した抽出ルール30に従って文書から抽出されたバリューをユーザに通知する。
【0059】
制御部15は、スキャン処理部11、画像処理部12、出力部13、及びUI部14の各機能部の処理を制御すると共に、ユーザの設定内容に従った抽出ルール30の生成や変更を行い、抽出ルールDB16の管理を行う。
【0060】
図4は、情報処理装置10における電気系統の要部構成例を示す図である。情報処理装置10は、例えばコンピュータ40を用いて構成される。
【0061】
コンピュータ40は、本実施の形態に係る各機能部を担うCPU(Central Processing Unit)41、情報処理プログラムを記憶するROM(Read Only Memory)42、CPU41の一時的な作業領域として使用されるRAM(Random Access Memory)43、不揮発性メモリ44、及び入出力インターフェース(I/O)45を備える。そして、CPU41、ROM42、RAM43、不揮発性メモリ44、及びI/O45がバス46を介して各々接続されている。
【0062】
不揮発性メモリ44は、不揮発性メモリ44に供給される電力が遮断されても、記憶した情報が維持される記憶装置の一例であり、例えば半導体メモリが用いられるがハードディスクを用いてもよい。不揮発性メモリ44は、必ずしもコンピュータ40に内蔵されている必要はなく、例えばメモリカードのようにコンピュータ40に着脱される記憶装置であってもよい。
【0063】
I/O45には、例えば通信ユニット47、入力ユニット48、表示ユニット49、及びスキャナユニット50が接続される。
【0064】
通信ユニット47は図示しない通信回線に接続され、図示しない接続回線に接続する記憶装置及びコンピュータといった外部装置と通信を行う通信プロトコルを備える。
【0065】
入力ユニット48は、ユーザからの指示を受け付けてCPU41に通知する装置であり、例えばボタン、タッチパネル、キーボード、及びマウス等が用いられる。情報処理装置10は、入力ユニット48を介して利用者から指示された機能を実行する。情報処理装置10はユーザからの指示を音声で受け付けてもよく、この場合、I/O45にはマイクが接続される。
【0066】
表示ユニット49は、CPU41によって処理された情報を画像として表示する装置であり、例えば液晶ディスプレイ、有機EL(Electro Luminescence)ディスプレイ、及び映像をスクリーンに投影するプロジェクタ等が用いられる。
【0067】
スキャナユニット50は、CPU41の指示に従って、例えば図示しないプラテンガラスに置かれた原稿の内容を光学的に読み取り、原稿の内容を文書画像に変換する装置である。スキャナユニット50はスキャン処理部11の処理で用いられる。
【0068】
情報処理装置10は、スキャナユニット50で読み取られた文書画像をスキャン処理部11で受け付けるが、必ずしもI/O45に接続されたスキャナユニット50から文書画像を受け付ける必要はない。例えば、情報処理装置10は、通信ユニット47を通じて図示しない通信回線に接続された図示しないスキャナ装置で読み取られた文書画像を受け付けてもよい。また、情報処理装置10は、クラウドサーバに格納された文書画像を受け付けてもよい。
【0069】
なお、I/O45に接続されるユニットは
図4に例示したユニットに限定されない。例えば、CPU41の指示に従って、処理した情報を記録媒体に形成する画像形成ユニットをI/O45に接続してもよい。
【0070】
また、通信ユニット47や着脱可能な半導体メモリを通じて文書画像を受け付ける場合、スキャナユニット50は必ずしも必要ない。この場合、情報処理装置10は、デスクトップコンピュータ、タブレット型コンピュータ、スマートフォーン、及びウェアラブル端末のように、ユーザとのインターフェースを提供する入出力装置、及び入力された情報を処理する処理機能を備えた情報機器が用いられる。
【0071】
次に、複数の行に亘って記載された、キーワードに対応するバリューを文書から抽出する情報処理装置10の動作について説明する。
【0072】
図5は、ユーザの指示によって文書画像を受け付け、OCR処理部12Aが受け付けた文書画像を文書20に変換した場合に、CPU41によって実行される情報処理の流れの一例を示すフローチャートである。情報処理を規定する情報処理プログラムは、例えば情報処理装置10のROM42に予め記憶されている。情報処理装置10のCPU41は、ROM42に記憶される情報処理プログラムを読み込み、情報処理を実行する。
【0073】
なお、情報処理装置10には、ユーザによって取得したいバリューに対応したキーワードが予め設定されているものとする。具体的には、ユーザは見積書の提出先の社名をバリューとして取得するため、社名に添えられる敬称である「御中」をキーワードに設定した例について説明するが、キーワードに設定する文字列はどのような文字列であってもよい。また、不揮発性メモリ44には予め設定された抽出ルール30が記憶されている。
【0074】
ステップS10において、CPU41は文字コードを判別することで、受け付けた文書20の中から、ユーザが設定したキーワードが含まる行、すなわち、キーワードの記載行を特定する。そして、CPU41は抽出ルール30に含まれる第1抽出方向の設定値を参照して、キーワードの記載行からバリューを抽出し、RAM43に記憶する。例えば抽出ルール30が
図3のように設定され(抽出終了条件のNは“1”とする)、受け付けた文書20が
図6に示したような文書20である場合、CPU41は、「御中」の左側にある文字列、すなわち「株式会社」をキーワードの記載行におけるバリューとして抽出する。
【0075】
ユーザは空白文字(スペース)をバリューに含めるか否かの指定を抽出ルール30で設定してもよく、ここではスペースをバリューに含めない設定が行われているものとして説明を行う。
【0076】
ステップS20において、CPU41は抽出ルール30に含まれる第2抽出方向の設定値を参照して、次にバリューを抽出する抽出対象行を更新する。抽出ルール30に含まれる第2抽出方向の設定値が「上」であれば、CPU41は、次にバリューを抽出する抽出対象行を、バリューの抽出を行った行に隣接する上の行に設定する。
図6の文書20の場合、キーワードの記載行でバリューを抽出した後は「第1ABCD」の文字列が含まれる行がバリューの抽出対象行となる。
【0077】
ステップS30において、CPU41は抽出ルール30に含まれる抽出終了条件の設定値を参照して、バリューの抽出を終了するか否かを判定する。具体的には、CPU41は、更新後のバリューの抽出対象行が抽出終了条件を満たす場合に、バリューの抽出を終了するものと判定する。
【0078】
文書の中には、空白行を設けてキーワードに対応するバリューの範囲を人に分かりやすく示していることがある。このような場合、空白行の有無によってキーワードに対応するバリューの記載範囲が示されていることになる。
【0079】
したがって、抽出終了条件の設定値Nを「条件1」を表す“1”に設定し、「条件1」を「空白行の検知で終了」という条件と対応付けることで、CPU41は、更新後のバリューの抽出対象行が空白行であればバリューの記載範囲が終了したと判定し、バリューの抽出を終了することになる。
図6の文書20の場合、更新後のバリューの抽出対象行には「第1ABCD」の文字列が含まれるため、バリューの抽出が続行される。
【0080】
このように、バリューの抽出を終了しないと判定された場合、ステップS40に移行する。
【0081】
ステップS40において、CPU41は更新後のバリューの抽出対象行に含まれる文字列をバリューとして抽出し、RAM43に記憶する。
図6の文書20の場合、「第1ABCD」の文字列がバリューとして抽出される。
【0082】
ステップS40の実行後はステップS20に移行する。すなわち、ステップS30の判定処理でバリューの抽出を終了すると判定されるまで、CPU41は、抽出ルール30に含まれる第2抽出方向の設定値で設定された抽出方向に向かって1行ずつバリューの抽出対象行を更新し、ステップS40でバリューの抽出対象行からバリューを抽出する処理を継続する。
【0083】
図6の文書20の場合、「第1ABCD」の文字列が含まれる行の上の行が空白行22であるため、キーワードの記載行から空白行22が現れる手前までの各行からキーワードに対応したバリューが抽出されることになる。
【0084】
一方、更新後のバリューの抽出対象行が抽出終了条件を満たし、ステップS30の判定処理でバリューの抽出を終了すると判定された場合にはステップS50に移行する。
【0085】
ステップS50において、CPU41は、抽出したバリューを行の並びに従って結合し、最終的なバリューを生成する。バリューを「行の並びに従って結合する」とは、抽出ルール30の第2抽出方向で表される行の移行方向に従ってバリューを結合することをいう。
【0086】
文字列は上の行から下の行に向かって記載され、キーワードの一例である「御中」は社名の最後に添えられるキーワードである。このように、キーワードがバリューの最後(後ろともいう)に添えられるケースの場合、ユーザは第2抽出方向を「上」に設定する。したがって、第2抽出方向が「上」に設定されている場合、CPU41は、後から抽出したバリューほど前に位置するように、最後に抽出したバリューを先頭にして、抽出したバリューを順次結合することで最終的なバリューを生成する。言い換えれば、キーワードの記載行から遠い位置にある行から抽出したバリューほど前に位置するように、抽出した各々のバリューを結合する。
【0087】
反対に、キーワードがバリューの最初(前ともいう)に添えられるケースの場合、ユーザは第2抽出方向を「下」に設定する。したがって、第2抽出方向が「下」に設定されている場合、CPU41は、先に抽出したバリューほど前に位置するように、最初に抽出したバリューを先頭にして、抽出したバリューを順次結合することで最終的なバリューを生成する。言い換えれば、キーワードの記載行から近い位置にある行から抽出したバリューほど前に位置するように、抽出した各々のバリューを結合する。
【0088】
ステップS60において、CPU41は、ステップS50で結合したバリューを出力して、
図5に示す情報処理を終了する。
【0089】
このように、本実施の形態に係る情報処理装置10によれば、文書中におけるバリューの記載領域を規定した抽出ルール30に基づいて、バリューが含まれると判定された行の各々から部分バリューを抽出し、抽出した部分バリューを行の並びに従って結合することで最終的なバリューを取得する。ここではバリューの記載領域が空白行で区切られている場合について説明したが、例えば少なくとも1つのハイフン“-”等、空白行の代わりに区切りとして使用される記号が含まれる行を用いてバリューの記載行を判定するようにしてもよい。区切りとして使用される記号を予め不揮発性メモリ44に登録しておき、情報処理装置10は当該記号を参照して、バリューの抽出対象行が区切り行か否かを検出すればよい。
【0090】
<実施形態の変形例1>
情報処理装置10は予め書式が固定された1種類の文書20からバリューを抽出するのではなく、様々な書式の文書20からキーワードを抽出する。したがって、情報処理装置10で処理する文書20の中には、
図7に示すように、キーワードの記載行とバリューとの間に空白行22Bが存在し、バリューが空白行22Aと空白行22Bで区切られているような書式が存在することも考えられる。しかしながら、
図7に示すような書式の文書を
図5に示した情報処理で処理した場合、空白行22Bを読み込むと、空白行22Bの上の行にバリューがあるのにステップS30の判定処理でバリューの抽出が終了してしまうことになる。
【0091】
したがって、ここではキーワードの記載行にバリューが含まれず、キーワードの記載行とバリューが含まれる行との間に空白行が含まれる場合であっても、キーワードに対応したバリューを抽出する情報処理装置10の情報処理について説明する。
【0092】
図8は、
図5のステップS10でキーワードの記載行からバリューを抽出しようとしたがバリューが抽出されなかった場合(キーワードの文字列以外、全てスペースとなっている状況)に、CPU41によって実行される情報処理の流れの一例を示すフローチャートである。
図8に示す情報処理が
図5に示した情報処理のステップS20以降の処理と異なる点は、ステップS45が追加された点である。
【0093】
抽出ルール30として、
図3に示した抽出ルール30(抽出終了条件として「条件1」が設定されている)を用いる。
【0094】
ステップS20で、CPU41が、
図7の空白行22Bを次のバリューの抽出対象行に設定した場合、ステップS30の判定処理でバリューの抽出を終了すると判定されるため、ステップS45に移行する。
【0095】
ステップS45において、CPU41は、キーワードの記載行からバリューが抽出されたか否かを判定する。キーワードの記載行からバリューが抽出されず、かつ、空白行22Bが現れたということは、当該空白行22Bは、バリューの記載範囲の終了を示す空白行ではなく、バリューの記載範囲がこれから始まることを示す空白行であると認識する。したがって、キーワードの記載行からバリューが抽出されていない場合、ステップS20に移行して、CPU41は抽出ルール30に含まれる第2抽出方向で示される方向に向かって、次にバリューを抽出する抽出対象行を更新する。
【0096】
ステップS20~S45の処理を繰り返し実行することで、バリューを含む行が現れるまでキーワードの記載行から第2抽出方向で示される方向に向かって行を順次参照し、最初にバリューを抽出した行からバリューを含む行が現れた後に空白行が再度現れる手前までの各行から、バリューが抽出されることになる。したがって、
図7に示すように、複数行に亘って記載されたバリューが空白行22Aと空白行22Bで区切られているような場合であっても、「第1ABCD株式会社」がキーワード「御中」に対応するバリューとして抽出されることになる。
【0097】
<実施形態の変形例2>
ここまでは、バリューの記載範囲の区切りに空白行が用いられている文書から複数行に亘って記載された、キーワードに対応するバリューを抽出する情報処理装置10について説明してきた。しかし、文書の中にはバリューの記載範囲の区切りに空白行が用いられないものも存在する。
【0098】
例えば
図9の文書20の例では、社名と文書のタイトル(「見積書」)の間に空白行が存在していない。
図9の文書20のように、キーワードに対応するバリューとその他の文字列を区別する情報が文書中に含まれない場合であっても、バリューの記載行数が予め決められていることがある。
【0099】
バリューの記載行数が予めM行(Mは正の整数)に固定されている書式の文書20の場合、
図3の抽出ルール30における抽出終了条件の設定値Nを、「条件2」を表す“2”に設定し、「条件2」を「バリューの抽出行がM行に達した場合に終了」という条件と対応付けて、
図5に示した情報処理を実行すればよい。
【0100】
図9の文書20の書式の場合“M=2”に設定される。また、バリューの記載行数をバリューの抽出終了条件とする場合には、バリューを抽出した行数を記録するカウンタYが用いられる。カウンタYは、
図5の情報処理が実行される毎に予め“0”に初期化され、
図5のステップS10及びステップS40でそれぞれバリューが抽出される毎にカウンタYに“1”が加算される。
【0101】
抽出ルール30の抽出終了条件には「条件2」が設定されているため、ステップS30の判定処理でカウンタYが値Mに達したと判定された場合に、バリューの抽出が終了したと判定される。
【0102】
すなわち、
図9に示した書式を有する文書20の場合、「第1ABCD」と「株式会社 御中」が記載されている行がキーワード「御中」に対応するバリューの記載範囲と認識され、「第1ABCD株式会社」がキーワード「御中」に対応するバリューとして抽出されることになる。
【0103】
また、文書20には、例えば
図10に示すように、バリューの記載行数が予めM行(M=2)に固定されているが、キーワードの記載行とバリューとの間に空白行22が存在し、キーワードの記載行にバリューが含まれないような書式を有する文書20が存在する。
【0104】
図10に示すような文書20であっても、
図5に示す情報処理のステップS10及びステップS40では、バリューが抽出されなかった場合にはカウンタYに“1”が加算されないため、キーワードの記載行にバリューが含まれない場合、及び、バリューの抽出対象行が空白行22である場合にはカウンタYの値が変化しないことになる。
【0105】
すなわち、情報処理装置10は空白行を読み飛ばしながら、バリューを含む行が現れるまでキーワードの記載行から第2抽出方向で示される方向に向かって行を順次参照し、最初にバリューを抽出した行を含む合計M行の各行からバリューを抽出することになる。したがって、
図10に示すような文書20であっても、「第1ABCD株式会社」がキーワード「御中」に対応するバリューとして抽出されることになる。
【0106】
<実施形態の変形例3>
文書20の中には、バリューの記載範囲の区切りに空白行が用いられず、かつ、バリューの記載行数も予め決められていない文書20も存在する。このような場合、文書20の文字列がキーワードに対応したバリューであるか否かを判定する手がかりとして、文字列の記載位置を用いればよい場合がある。
【0107】
キーワードに対応したバリューとその他の文字列では、行方向における先頭文字の位置がずれていることがある。例えば
図11に示す文書20の場合、文書20のタイトル(「見積書」の文字列)が文書20の行方向に沿った中央部分に配置され、社名は、文書20のタイトルを表す文字列の先頭文字の位置よりも左寄りの位置から始まるように配置されている。また、
図11に示す文書20では社名が2行に亘って記載されているが、社名のようなバリューを複数行に亘って記載する場合、バリューはまとまりのある一連の文字列であることから、各行におけるバリューの先頭文字の位置を同じ位置に配置することが多い。
【0108】
したがって、各行におけるバリューの先頭文字の位置が、バリューの記載範囲と隣接する行(以降、単に「隣接する行」という)に含まれる文字列の先頭文字の位置と異なるように配置された書式を有する文書20の場合、
図3の抽出ルール30における抽出終了条件の設定値Nを、「条件3」を表す“3”に設定し、「条件3」を「行の先頭文字の位置が異なる場合に終了」という条件と対応付けて、
図5に示した情報処理を実行すればよい。
【0109】
この場合、CPU41は、ステップS10でキーワードの記載行から抽出したバリューの行方向に沿った先頭文字の位置を取得し、ステップS30では、ステップS20で更新されたバリューの抽出対象行に含まれる文字列の行方向に沿った先頭文字の位置を取得する。
【0110】
抽出ルール30の抽出終了条件には「条件3」が設定されているため、ステップS30の判定処理で、CPU41はステップS10で取得したバリューの先頭文字の位置と、更新されたバリューの抽出対象行に含まれる文字列の先頭文字の位置を比較する。各々の先頭文字の位置が異なると判定された場合、更新されたバリューの抽出対象行にはキーワードに対応したバリューは含まれていないとみなせることから、バリューの抽出が終了したと判定される。
【0111】
一方、各々の先頭文字の位置が同じであると判定された場合、ステップS40でバリューの抽出対象行に含まれる文字列がバリューとして抽出される。そして、先頭文字の位置が異なるバリューの抽出対象行が現れるまで、ステップS20でバリューの抽出対象行が繰り返し更新されることによって、ステップS40で先頭文字の位置が異なるバリューの抽出対象行が現れる手前までの各行からバリューが抽出される。
【0112】
すなわち、
図11に示した書式を有する文書20の場合、「見積書」の文字列が含まれる行にはキーワードに対応したバリューは含まれていないと認識され、「第1ABCD株式会社」がキーワード「御中」に対応するバリューとして抽出されることになる。
【0113】
文書20には、例えば
図12に示すように、バリューの先頭文字の位置はその他の文字列の位置とは異なるが、キーワードの記載行にバリューが含まれないような書式を有する文書20が存在する。
【0114】
この場合、ステップS10でキーワードの記載行から抽出したバリューの行方向に沿った先頭文字の位置が取得されないことになるため、
図5に示した情報処理をそのまま適用することが困難になる。
【0115】
したがって、
図5のステップS10で、キーワードの記載行からバリューが抽出されなかった場合には、
図5と異なる情報処理を実行するように処理を切り換えることが好ましい。
【0116】
図13は、
図5のステップS10でキーワードの記載行からバリューを抽出しようとしたがバリューが抽出されなかった場合に、CPU41によって実行される情報処理の流れの一例を示すフローチャートである。
【0117】
図5で既に説明したように、ステップS20において、CPU41は抽出ルール30に含まれる第2抽出方向の設定値を参照して、次にバリューを抽出する抽出対象行を更新する。
【0118】
ステップS22において、CPU41は、更新後のバリューの抽出対象行に文字列が含まれるか否かを判定する。文字列が存在しない場合、更新後のバリューの抽出対象行は空白行であると考えられるためステップS20に移行し、バリューの抽出対象行を更新する。一方、文字列が含まれる場合にはステップS24に移行する。
【0119】
ステップS24において、CPU41は、キーワードの記載行またはバリューの抽出対象行の何れかの行からバリューを抽出したか否かを判定する。バリューを抽出したことがない場合、現在のバリューの抽出対象行は、バリューを含む最初の抽出対象行ということになる。したがって、ステップS40に移行し、
図5のステップS40で説明したように、CPU41はバリューの抽出対象行に含まれる文字列をバリューとして抽出し、RAM43に記憶する。また、ステップS42において、CPU41は、ステップS40で抽出したバリューの行方向に沿った先頭文字の位置をRAM43に記憶して、ステップS20に移行する。これにより、バリューの先頭文字の位置が記憶される。
図12に示した文書20の場合、「株式会社」の「株」の位置が記憶される。
【0120】
一方、ステップS24の判定処理で既にバリューの抽出が行われたことがあると判定された場合には、ステップS26に移行する。
【0121】
ステップS26において、CPU41は、ステップS20で更新されたバリューの抽出対象行に含まれる文字列の先頭文字の位置を取得して、取得した先頭文字の位置と、ステップS42で記憶したバリューの先頭文字の位置が同じであるか否かを判定する。先頭文字の位置が同じ場合には、バリューの抽出対象行に含まれる文字列はキーワードに対応したバリューと考えられるため、ステップS28に移行する。
【0122】
ステップS28において、CPU41は、バリューの抽出対象行に含まれる文字列をバリューとして抽出し、RAM43に記憶する。その後、ステップS20に移行する。これにより、バリューが最初に抽出された行のバリューの先頭文字の位置と同じ位置から始まる文字列を含む各々の行から部分バリューが抽出されることになる。
【0123】
一方、ステップS26の判定処理で先頭文字の位置が異なると判定された場合には、ステップS50に移行する。バリューの抽出対象行に含まれる文字列の先頭文字の位置が異なるということは、現在のバリューの抽出対象行に含まれる文字列はキーワードに対応したバリューを表す文字列ではないことを意味する。
【0124】
したがって、現在のバリューの抽出対象行からは文字列を抽出せずに、
図5のステップS50で説明したように、CPU41は、抽出したバリューを行の並びに従って結合して最終的なバリューを生成し、ステップS60において、ステップS50で結合したバリューを出力して
図13に示す情報処理を終了する。
【0125】
第2抽出方向で設定された方向に向かってキーワードの記載行から各行を参照する過程で、キーワード以外の文字列が最初に含まれる行の先頭文字の位置をバリューの先頭文字の位置とすることで、
図12に示した文書20のように、バリューの先頭文字の位置が隣接する行に含まれる文字列の先頭文字の位置と異なるように配置され、かつ、キーワードの記載行にバリューが含まれないような書式の文書20からも、キーワードに対応したバリューの抽出が行われることになる。
【0126】
<実施形態の変形例4>
文書20の中には、バリューの記載範囲の区切りに必ずしも空白行が用いられず、かつ、バリューの記載行数も予め決められていない上、バリューを表す文字列とその他の文字列の先頭文字の位置にも特に違いが設けられていない文書20も存在する。このような場合、文書20の文字列がキーワードに対応したバリューであるか否かを判定する手がかりとして、文字列を表す書式の視覚上の相違を用いればよい場合がある。
【0127】
例えば
図14に示す文書20の場合、「見積書」が文書20のタイトルであり、「第1ABCD株式会社」が見積書の提出先の会社名であることをユーザに認識させるため、文書20のタイトルを表す文字列と文書20の提出先を表す文字列とで、文字の大きさが変えられている。
【0128】
文字列を表す書式の視覚上の相違は、例えば文字列の文字属性の違いによって発生する。すなわち「文字属性」とは、文書20における文字の見え方を規定する要素の集合体であり、文字属性を規定する要素には、例えば文字の大きさ、文字の字体、文字の太さ、文字の装飾、及び文字の色の少なくとも1つの要素が含まれる。文字コードは文字の意味を表す要素であるから、文字属性に文字コードは含まれない。
【0129】
「文字の装飾」とは、文字が表す本来の意味が読み取れる範囲内で文字の外形を修正したり、文字に他の要素を付け加えたりすることをいう。例えば斜体の文字、並びに、下線、取り消し線、傍点、及び影が加えられた文字は、装飾が施された文字の一例である。
【0130】
また、文字列を表す書式の視覚上の相違には文字列の間隔も含まれる。例えば文字列の間隔を調整することで、2つの文字列の関係が表される。具体的には、文字列の間隔が遠くなる程、お互いの文字列の関連度合いは低いと認識されるため、文字列の間隔は、2つの文字列を一連の意味を表す文字列として扱った方がよいのか、それとも、まったく関連のない別の文字列として扱った方がよいのかといった手がかりを示していることになる。すなわち、文字列の間隔も文字列の文字属性の一例である。
【0131】
したがって、キーワードに対応したバリューの文字属性が隣接する行に含まれる文字列の文字属性と異なるように設定された書式を有する文書20の場合、
図3の抽出ルール30における抽出終了条件の設定値Nを、「条件4」を表す“4”に設定し、「条件4」を「文字列の文字属性が異なる場合に終了」という条件と対応付けて、
図5に示した情報処理を実行すればよい。
【0132】
この場合、CPU41は、ステップS10でキーワードの記載行から抽出したバリューに共通する文字属性を取得し、ステップS30では、ステップS20で更新されたバリューの抽出対象行に含まれる文字列に共通した文字属性を取得する。
【0133】
抽出ルール30の抽出終了条件には「条件4」が設定されているため、ステップS30の判定処理で、CPU41はステップS10で取得した文字属性と、更新されたバリューの抽出対象行に含まれる文字列に共通した文字属性を比較する。文字属性が異なると判定された場合、更新されたバリューの抽出対象行にはキーワードに対応したバリューは含まれていないとみなせることから、バリューの抽出が終了したと判定する。
【0134】
一方、各々の文字属性が同じであると判定された場合、ステップS40でバリューの抽出対象行に含まれる文字列がバリューとして抽出される。そして、キーワードの記載行から抽出したバリューと文字属性が異なるバリューの抽出対象行が現れるまで、ステップS20でバリューの抽出対象行が繰り返し更新されることによって、ステップS40でキーワードの記載行から文字属性が異なるバリューの抽出対象行が現れる手前までの各行からバリューが抽出される。
【0135】
すなわち、
図14に示した書式を有する文書20の場合、「見積書」の文字列が含まれる行にはキーワードに対応したバリューは含まれていないと認識され、「第1ABCD株式会社」がキーワード「御中」に対応するバリューとして抽出されることになる。
【0136】
文書20には、例えば
図15に示すように、所望するバリューの文字属性は隣接する行に含まれる文字列の文字属性とは異なるが、キーワードの記載行にバリューが含まれないような書式を有する文書20が存在する。
【0137】
この場合、ステップS10でキーワードの記載行から抽出したバリューの文字属性が取得されないことになるため、
図5に示した情報処理をそのまま適用することが困難になる。
【0138】
したがって、
図5のステップS10で、キーワードの記載行からバリューが抽出されなかった場合には、
図13で説明した情報処理を実行するように処理を切り換えることが好ましい。
【0139】
この場合、
図13に示した情報処理のステップS42で、ステップS40で抽出したバリューの行方向に沿った先頭文字の位置の代わりに、バリューに共通した文字属性をRAM43に記憶する。その上で、
図13に示した情報処理のステップS26で、ステップS20で更新されたバリューの抽出対象に含まれる文字列の先頭文字の位置を取得する代わりに、文字列に共通した文字属性を取得して、取得した文字属性と、ステップS42で記憶した文字属性が同じであるか否かを判定すれば、
図15に示した文書20のように、所望するバリューの文字属性は隣接する行に含まれる文字列の文字属性とは異なるが、キーワードの記載行にバリューが含まれないような書式を有する文書20からも、キーワードに対応したバリューの抽出が行われることになる。また、文書20に空白行があったとしても、キーワードに対応したバリューの抽出が行われることになる。
【0140】
なお、キーワードとバリューには同じ文字属性が用いられる傾向があることから、キーワードの記載行にバリューが含まれない場合、キーワードの文字属性をバリューの文字属性としてもよい。
【0141】
これまでに説明した実施の形態及びその変形例では、バリューの記載行にはバリュー以外の文字列が含まれない前提で説明した。しかしながら、文書20の中には、バリューの記載行にバリュー以外の文字列を含んだ書式を有する文書20が存在することがある。
【0142】
図16に示す文書20の例の場合、「第1ABCD」はキーワード「御中」に対応する部分バリューであるが、「第1ABCD」の部分バリューの記載行には、「作成年月日:2019年3月31日」のように、キーワードと関係のない文字列が含まれている。
【0143】
このような場合、CPU41は、抽出ルール30に設定される第1抽出方向と文字列を表す書式の視覚上の相違を用いて、複数の文字列が記載されている行から、キーワードに対応したバリューを抽出する。
【0144】
既に説明したように、文字属性の相違が少ないほど、各々の文字列はまとまりのある一連の意味を表す文字列であると考えられる。したがって、CPU41は、行毎に文字列の文字属性を参照し、文字属性の違いによって行に含まれる文字列を区切る。CPU41は、同じ行から複数の文字列を取得した場合、例えば複数の文字列のうち、先頭文字の位置が行方向におけるキーワードの先頭文字の位置と同じか、またはキーワードの先頭文字の位置よりも第1抽出方向で表された方向にある文字列をバリューとして抽出すればよい。また、そのような文字列も複数存在する場合には、CPU41はこれら複数の文字列のうち、例えばキーワードの先頭文字の位置から一番近くにある文字列をバリューとして抽出する。
【0145】
このように、情報処理装置10は、ユーザがキーワードに対応したバリューの抽出対象となる文書20での書式の特徴を考慮して、複数の条件の中からバリューの抽出に最も適した条件を設定した抽出ルール30に基づいて、キーワードに対応したバリューを抽出する。
【0146】
また、抽出ルール30にバリューの記載行数が予め固定されている書式に対応した抽出終了条件(条件2)以外の抽出終了条件が用いられる場合、バリューが何行に亘って記載されることがあるのか不明な文書20からもキーワードに対応したバリューが抽出される。
【0147】
以上、実施の形態を用いて本発明について説明したが、本発明は実施の形態に記載の範囲には限定されない。本発明の要旨を逸脱しない範囲で実施の形態に多様な変更又は改良を加えることができ、当該変更又は改良を加えた形態も本発明の技術的範囲に含まれる。例えば、本発明の要旨を逸脱しない範囲で処理の順序を変更してもよい。
【0148】
本実施の形態では、一例として情報処理をソフトウェアで実現する形態について説明したが、
図5、
図8、及び
図13に示したフローチャートと同等の処理を、例えばASIC(Application Specific Integrated Circuit)に実装し、ハードウェアで処理させるようにしてもよい。この場合、情報処理をそれぞれソフトウェアで実現した場合と比較して、処理の高速化が図られる。
【0149】
また、
図1に示した各機能部や抽出ルールDB16を単体の情報処理装置10で実現するのではなく、例えばクラウドコンピューティングを用いて複数の情報機器に分散して配置し、複数の情報機器を連係させることで、情報処理装置10と同等の処理を実行するようにしてもよい。
【0150】
また、上述した実施の形態では、情報処理プログラムがROM42にインストールされている形態を説明したが、これに限定されるものではない。本発明に係る情報処理プログラムは、コンピュータで読み取り可能な記憶媒体に記録された形態で提供することも可能である。例えば、本発明に係る情報処理プログラムを、CD(Compact Disc)-ROM、又はDVD(Digital Versatile Disc)-ROM等の光ディスクに記録した形態で提供してもよい。また、本発明に係る情報処理プログラムを、USB(Universal Serial Bus)メモリ及びフラッシュメモリ等の半導体メモリに記録した形態で提供してもよい。更に、情報処理装置10は、通信ユニット47を介して、図示しない通信回線に接続される外部装置から本発明に係る情報処理プログラムを取得するようにしてもよい。
【符号の説明】
【0151】
10・・・情報処理装置
11・・・スキャン処理部
12・・・画像処理部
12A・・・OCR処理部
12B・・・抽出部
12C・・・結合部
13・・・出力部
14・・・UI部
15・・・制御部
16・・・抽出ルールDB
20・・・文書
22(22A、22B)・・・空白行
30・・・抽出ルール
40・・・コンピュータ
41・・・CPU
42・・・ROM
43・・・RAM
44・・・不揮発性メモリ
47・・・通信ユニット
48・・・入力ユニット
49・・・表示ユニット
50・・・スキャナユニット