(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024038417
(43)【公開日】2024-03-19
(54)【発明の名称】情報処理装置、情報処理方法、プログラム
(51)【国際特許分類】
G06V 30/412 20220101AFI20240312BHJP
【FI】
G06V30/412
【審査請求】有
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2024005335
(22)【出願日】2024-01-17
(62)【分割の表示】P 2019226062の分割
【原出願日】2019-12-16
(71)【出願人】
【識別番号】390002761
【氏名又は名称】キヤノンマーケティングジャパン株式会社
(71)【出願人】
【識別番号】592135203
【氏名又は名称】キヤノンITソリューションズ株式会社
(74)【代理人】
【識別番号】100189751
【弁理士】
【氏名又は名称】木村 友輔
(74)【代理人】
【識別番号】100227857
【弁理士】
【氏名又は名称】中山 圭
(72)【発明者】
【氏名】八尾 唯仁
(57)【要約】
【課題】 スキャン時にカスレやゆがみが発生した帳票画像に対しても精度よく表やセルを抽出すること。また複数の表が罫線を共有して接しているような場合にも、それぞれ別の表として認識すること。
【解決手段】 画像中から表の罫線の候補となる直線を検出し、直線候補同士の各交点から延びる罫線を特定し、特定された罫線が延びる方向に基づき、表の領域を推定する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
表を含む画像を取得する取得手段と、
前記取得された画像から、表の罫線の候補となる直線を検出する検出手段と、
前記検出された罫線同士の各交点について、当該交点から罫線が延びる方向を特定する罫線方向特定手段と、
前記特定手段により特定された罫線が延びる方向を用いて、前記画像に含まれる表の領域を特定する表領域特定手段と、
を備えることを特徴とする情報処理装置。
【請求項2】
前記表領域特定手段は、前記罫線方向特定手段により特定された罫線が延びる方向に基づき検出される、表の四隅を形成する交点に基づき、表領域を特定することを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記交点のうち、前記罫線方向特定手段により特定された罫線が延びる方向に基づき、表の左上および右上の角を形成する交点を特定する角点特定手段と、
前記角点特定手段により特定された角点から形成される辺の対辺となる辺を特定する対辺特定手段と、
を備え、
前記表領域特定手段は、前記角点特定手段により特定された角点から形成される辺と、前記対辺特定手段により特定された対辺とからなる領域を表領域として特定することを特徴とする請求項1または2に記載の情報処理装置。
【請求項4】
前記交点のうち、前記罫線方向特定手段により特定された罫線が延びる方向に基づき、表の左下および右下の角を形成する交点を特定する角点特定手段と、
前記角点特定手段により特定された角点から形成される辺の対辺となる辺を特定する対辺特定手段と、
を備え、
前記表領域特定手段は、前記角点特定手段により特定された角点から形成される辺と、前記対辺特定手段により特定された対辺とからなる領域を表領域として特定することを特徴とする請求項1または2に記載の情報処理装置。
【請求項5】
前記対辺特定手段は、前記前記角点特定手段により特定された角点から形成される辺と並行な辺であって、表の四隅を形成する交点を含む辺を、対辺として特定することを特徴とする請求項3または4に記載の情報処理装置。
【請求項6】
前記対辺特定手段は、前記前記角点特定手段により特定された角点から形成される辺と並行な辺であって、外側に向かって延びる罫線がある交点を含む辺を、対辺として特定することを特徴とする請求項3乃至5のいずれか1項に記載の情報処理装置。
【請求項7】
前記表領域特定手段により特定された表領域に含まれる交点の罫線が延びる方向に基づき、当該表領域のセルを特定する特定手段をさらに備えることを特徴とする請求項1乃至6のいずれか1項に記載の情報処理装置。
【請求項8】
情報処理装置の取得手段が、表を含む画像を取得する取得工程と、
前記情報処理装置の検出手段が、前記取得された画像から、表の罫線の候補となる直線を検出する検出工程と、
前記情報処理装置の罫線方向特定手段が、前記検出された罫線同士の各交点について、当該交点から罫線が延びる方向を特定する罫線方向特定工程と、
前記情報処理装置の表領域特定手段が、前記特定工程により特定された罫線が延びる方向を用いて、前記画像に含まれる表の領域を特定する表領域特定工程と、
を備えることを特徴とする情報処理方法。
【請求項9】
コンピュータを、
表を含む画像を取得する取得手段と、
前記取得された画像から、表の罫線の候補となる直線を検出する検出手段と、
前記検出された罫線同士の各交点について、当該交点から罫線が延びる方向を特定する罫線方向特定手段と、
前記特定手段により特定された罫線が延びる方向を用いて、前記画像に含まれる表の領域を特定する表領域特定手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、情報処理方法、プログラムに関する。
【背景技術】
【0002】
印刷された帳票から情報を読み取ってシステムに入力する業務を補助するものとしてOCR(光学文字認識)が存在する。帳票をOCR処理する場合、自社が発行した帳票を回収して記入内容を読み取るようなケースでは定型帳票として扱うことができ、所定の座標の矩形を抽出することで目的の情報を読み取ることも容易である。しかし、請求書など不特定多数の発行元から送られてくる帳票はどこにどういう情報が記入されているか事前に特定することができず、帳票を受領してから都度その帳票のレイアウトを解析して情報抽出を行う必要がある。このような帳票は一般に非定型帳票と呼ばれる。
【0003】
現実の業務においては非定型帳票を扱うケースはいまだ多く、非定型帳票の解析精度向上がデータ入力業務の生産性を大きく左右する。
【0004】
特に日本の帳票においては罫線を用いた表が多用され、帳票画像から表領域の抽出及びその中身であるセルの抽出を精度良く行うことが望まれる。
【0005】
罫線に着目して帳票から表を抽出する手法は古くから存在しているが、スキャン時に発生する傾きや線の歪み、FAXなど低解像度な二値画像への変換によって発生する線のカスレや途切れに対していかに頑健とするかが課題となっている。
【先行技術文献】
【特許文献】
【0006】
【発明の開示】
【発明が解決しようとする課題】
【0007】
特許文献1には、罫線に途切れが発生した場合でも表を抽出するための方法について記載されている。
【0008】
しかし、罫線の検出を、ラン(一定以上の長さで連続する画素)を基準にして行っており、カスレにより線が細かく断片化したような状況に弱いという課題がある。
【0009】
また、特に日本の請求書のような数量、金額の合計と明細が表記される表においては、個別の項目が記載された明細表と合計金額などが記載された小計表が接した状態でレイアウトされる場合が多く、データの認識処理のためにはこうした明細表と小計表を分離して認識できることが望まれる。
【0010】
そこで、本発明は、スキャン時にカスレやゆがみが発生した帳票画像に対しても精度よく表やセルを抽出することができる仕組みを提供することを目的とする。また複数の表が罫線を共有して接しているような場合にも、それぞれ別の表として認識できる仕組みを提供することを目的とする。
【課題を解決するための手段】
【0011】
本発明の情報処理装置は、画像中から表の罫線の候補となる垂直または水平となる直線を検出する直線検出部と、直線候補同士の各交点についてその座標付近の罫線の形状を評価する交点評価部と、交点の評価結果から表の領域を推定する表抽部と、表内部の領域をセルに分解するセル抽出部とを有することを特徴とする。
【発明の効果】
【0012】
本発明によれば、スキャン時にカスレやゆがみが発生した帳票画像に対しても精度よく表やセルを抽出することが可能となる。また、複数の表が罫線を共有して接しているような場合にも、それぞれ別の表として認識することが可能となる。
【図面の簡単な説明】
【0013】
【
図1】本発明の実施形態における、表抽出システムのシステム構成の一例を示す図である。
【
図2】本発明の実施形態における、PCのハードウェア構成の一例を示すブロック図である。
【
図3】本発明の実施形態における、帳票画像から表及びセルを抽出する処理を示すフローチャートである。
【
図4】本発明の実施形態における、表領域抽出処理の詳細を示すフローチャートである。
【
図5】本発明の実施形態における、表領域抽出処理の詳細を示すフローチャートである。
【
図6】本発明の実施形態における、帳票画像から文字を除去する過程を示す図である。
【
図7】本発明の実施形態における、表抽出処理の対象とする帳票の一例を示す図である。
【
図8】本発明の実施形態における、帳票画像からHough変換により直線を検出した状態を示す図である。
【
図9】本発明の実施形態における、交点評価部が交点の状態を評価する過程を示す図である。
【
図10】本発明の実施形態における、表領域抽出処理の一例を示す図である。
【
図11】本発明の実施形態における、明細表に接した小計表の検出を行う例を示す図である。
【
図12】本発明の実施形態における、セル領域抽出処理の一例を示す図である。
【
図13】本発明の実施形態における、セル領域抽出処理の詳細を示すフローチャートである。
【発明を実施するための形態】
【0014】
以下、図面を参照して、本発明の実施形態を詳細に説明する。
【0015】
図1は、本発明における情報処理システムの構成の一例を示す図である。
【0016】
図1に示す通り、表抽出などの処理を実行する情報処理装置101、帳票をスキャンして画像ファイル化するスキャナ102が通信経路を介して接続される構成となっている。
【0017】
通信経路はスキャナ102の有する物理インターフェースに応じて、有線LAN,無線LAN,USBなどの形態をとることができる。
【0018】
また、通信経路上にはファイルサーバ103を置いてもよい。スキャナ102でスキャンした画像を情報処理装置101に取り込む方法として、スキャナ102から情報処理装置101に直接画像を送信する方法、スキャナ102で取り込んだ画像ファイルをいったんファイルサーバ103に保管し、情報処理装置101がファイルサーバ103から画像ファイルを取り出す方法などがあるが、いずれの方法をとっても良い。
【0019】
図2は、本発明の情報処理装置101、スキャナ102、ファイルサーバ103のハードウェア構成の一例を示すブロック図である。
【0020】
図2に示すように、情報処理装置101等は、システムバス204を介してCPU(Central Processing Unit)201、ROM(Read Only Memory)202、RAM(Random Access Memory)203、入力コントローラ205、ビデオコントローラ206、メモリコントローラ207、よび通信I/Fコントローラ208が接続される。
【0021】
CPU201は、システムバス204に接続される各デバイスやコントローラを統括的に制御する。
【0022】
ROM202あるいは外部メモリ211は、CPU201が実行する制御プログラムであるBIOS(Basic Input/Output System)やOS(Operating System)や、本情報処理方法を実現するためのコンピュータ読み取り実行可能なプログラムおよび必要な各種データ(データテーブルを含む)を保持している。
【0023】
RAM203は、CPU201の主メモリ、ワークエリア等として機能する。CPU201は、処理の実行に際して必要なプログラム等をROM202あるいは外部メモリ211からRAM203にロードし、ロードしたプログラムを実行することで各種動作を実現する。
【0024】
入力コントローラ205は、キーボード209や不図示のマウス等のポインティングデバイス等の入力装置からの入力を制御する。入力装置がタッチパネルの場合、ユーザがタッチパネルに表示されたアイコンやカーソルやボタンに合わせて押下(指等でタッチ)することにより、各種の指示を行うことができることとする。
【0025】
また、タッチパネルは、マルチタッチスクリーンなどの、複数の指でタッチされた位置を検出することが可能なタッチパネルであってもよい。
【0026】
ビデオコントローラ206は、ディスプレイ210などの外部出力装置への表示を制御する。ディスプレイは本体と一体になったノート型パソコンのディスプレイも含まれるものとする。なお、外部出力装置はディスプレイに限ったものははく、例えばプロジェクタであってもよい。また、前述のタッチ操作を受け付け可能な装置については、入力装置も提供する。
【0027】
なおビデオコントローラ206は、表示制御を行うためのビデオメモリ(VRAM)を制御することが可能で、ビデオメモリ領域としてRAM203の一部を利用することもできるし、別途専用のビデオメモリを設けることも可能である。
【0028】
メモリコントローラ207は、外部メモリ211へのアクセスを制御する。外部メモリとしては、ブートプログラム、各種アプリケーション、フォントデータ、ユーザファイル、編集ファイル、および各種データ等を記憶する外部記憶装置(ハードディスク)、フレキシブルディスク(FD)、或いはPCMCIAカードスロットにアダプタを介して接続されるコンパクトフラッシュ(登録商標)メモリ等を利用可能である。
【0029】
通信I/Fコントローラ209は、ネットワークを介して外部機器と接続・通信するものであり、ネットワークでの通信制御処理を実行する。例えば、TCP/IPを用いた通信やISDNなどの電話回線、および携帯電話の3G回線を用いた通信が可能である。
【0030】
尚、CPU201は、例えばRAM203内の表示情報用領域へアウトラインフォントの展開(ラスタライズ)処理を実行することにより、ディスプレイ210上での表示を可能としている。また、CPU201は、ディスプレイ210上の不図示のマウスカーソル等でのユーザ指示を可能とする。
【0031】
次に
図3のフローチャートを用いて、本発明の実施形態における情報処理装置101が実行する表抽出処理について説明する。
【0032】
図3のフローチャートは、情報処理装置101のCPU201が所定の制御プログラムを読み出して実行する処理であり、帳票画像から表及びセルを抽出する処理を示すフローチャートである。
【0033】
ステップS301では、帳票画像の入力を受け付け、当該帳票画像から表領域を抽出する指示を受け付ける。帳票画像は、スキャナ102によってスキャンされた画像であり、ファイルサーバ103に一度記憶されたものを取得しても良いし、スキャナ102から直接取得しても良い。
【0034】
ステップS302では、表領域の抽出処理の前処理として、スキャン時に発生した傾きを補正する処理(斜行補正)を実行する。斜行補正は公知の技術を用いて行うものとするが、一例としてはHough変換を用いた補正が知られている。具体的には、Hough変換により直線を検出し、検出された直線から水平方向の直線を選別する。そして、水平方向の直線の平均角度を取得し、取得した平均角度に基づき、画像全体を回転させることで、補正を行う。
ステップS303では、帳票画像に含まれる文字を除去する。文字を除去する処理については、
図6を用いて説明する。
【0035】
図6は、帳票画像から文字を除去する過程を示したものである。
【0036】
図6の601は、ステップS301で取得し、ステップS302で斜行補正を実行した帳票画像の一例である。
【0037】
図6の602は、601の帳票画像を二値化して反転したのちに、横方向にMorphology演算をかけたものを示している。Morphology演算を行うことで、一定以上の長さに達していない線分を除去することができる。すなわち、罫線のように一定以上の長さの線分のみが残り、文字を構成する線分のように一定以上の長さに満たない線分は除去される結果、文字が除去され罫線のみが残ることとなる。なお、除去する線分の長さの閾値を大きくしすぎると本来の罫線まで除去してしまう恐れがあるため、除去する線分の長さの閾値は、文字のサイズよりわずかに大きい程度に設定しておくのが望ましい。
【0038】
図6の603は、601の帳票画像を二値化して反転したのちに、縦方向にMorphology演算をかけたものを示している。
【0039】
図6の604は、処理画像602と処理画像603の和をとったものである。ステップS304以降の処理は、
図6の604の処理画像に対して実行する処理である。
【0040】
ステップS304では、
図6の604の処理画像から、罫線の候補となる水平、垂直の方向を持つ直線を検出する。なお、ここで検出されるのは始点・終点の定まった線分ではなく、直線である。
【0041】
直線の検出にはHough変換を用いる。Hough変換を用いた直線検出によれば、同一直線上に一定数以上の画素が存在すれば、それらが連続していなくても直線として検出される。これにより、スキャン時にカスレが発生した場合や、ステップS303において罫線の一部が欠けた場合でも頑健に直線を検出することが可能となる。
【0042】
例えば、
図7の701に示す帳票画像に対して、ステップS302~S304の処理を実行すると、
図8のような結果が得られる。
【0043】
図8は、ステップS303の処理によって文字が除去された処理画像に対して、Hough変換によって直線を検出した図である。
図8の例では、垂直直線v8001~v8007、水平直線h8001~h8007が検出されている。
【0044】
本実施例においては、これらの垂直直線と水平直線からなるグリッドを罫線候補グリッド802として説明する。
【0045】
なお、本実施例においては上述の通り黒地に白の罫線となるが、ここでは便宜上、白地に黒の罫線とした図で説明する。
【0046】
ステップS305では、罫線候補グリッド802上の各交点(すなわち、垂直直線と水平直線との交点)に対して、交点の状態の評価を行う。交点状態の評価の詳細は、
図9を用いて説明する。
【0047】
なお、ステップS304においてHough変換を用いた直線検出処理を行っているが、Hough変換により検出される直線は、角度と原点からの距離の2つのパラメータで表現される情報であり、始点と終点の情報は持たない直線となる。そのため、罫線候補グリッド802は矩形状の格子を形成しているものの、罫線候補グリッド上のどの範囲に実際の線分が存在しているかを判断するためには、罫線候補グリッドにより形成される各交点について評価する必要がある。
【0048】
【0049】
図9の左側の801で示すものは、
図8を拡大した図である。
図9の右側の901で示すものは、801におけるC901の破線で示した領域に対応する処理画像である。
【0050】
なお、C901の領域のサイズは、罫線候補グリッド802における上下、左右の交点と干渉しない範囲でできるだけ大きく切り取れるよう、動的にサイズを決定するものとする。これは、斜行補正を行っても画像そのものに歪みが残っている場合があり、Hough変換によって検出された直線と実際の画素の間に位置的なずれが発生する場合があるためである。そのような場合でも罫線の交点となる画素を画像辺内にとらえられるよう、できるだけ大きく切り出すようにする。
【0051】
次に、処理画像901の中から罫線の断片を検出する。具体堤には、処理画像901内の画素の連続領域のうち面積が最大のものを罫線の断片と仮定する。
図9の901の例では、「┏」型の領域902が罫線の断片として検出される。
【0052】
次に、領域902が処理画像901の外周に接している方向を評価する。
図9の例では、「下」と「右」に接している。他の例では交点がT字型の場合は「左」「右」「下」、十字型の場合は「左」「右」「上」「下」となる。なお、外周に接している方向が1つ以下の場合は、罫線ではないノイズとみなして、後述の表領域、セル抽出の評価対象から除外する。
【0053】
そして、交点評価の結果として、切り取った矩形領域の中心座標、サイズ、罫線が伸びている方向(領域が外周と接している方向)といった情報がそれぞれの交点に対して格納される。
【0054】
以上がステップS305の交点評価処理の詳細である。
【0055】
次に、ステップS306では、罫線候補グリッド802から表の領域を特定して抽出する。
【0056】
ステップS306の表領域抽出処理の詳細は、
図4、
図5のフローチャートを用いて説明する。
【0057】
図4のフローチャートで示す処理は、S402~S409の処理を横方向の罫線候補に対して順次実行する処理である(S401)。なお、本実施例においては、処理画像の上部に位置する横方向罫線候補から順次処理していくものとする。
【0058】
ステップS402では、左端点の検出状況を示すフラグをNoとする。すなわち、左端点が検出されていない状態であることを記録する。左端点とは、「表の左上の角にあたる交点」および「表の左下の角にあたる交点」を意味する。
【0059】
ステップS403では、処理対象の横方向罫線候補上にある交点について、ステップS404~ステップS408の処理を順次実行する。なお、本実施例においては、横方向罫線候補上にある交点について左から右に向かって順次処理していくものとする。
【0060】
ステップS404では、左端点が検出済みであるかを判定する。
【0061】
検出済みである場合(S404:YES)は、処理をステップS408に移行する。
【0062】
まだ検出されていない場合(S404:NO)は、処理をステップS405に移行する。
【0063】
ステップS405では、処理対象の交点が左端点であるかを判定する。左端点であるかの判断は、ステップS305により評価された内容のうち、「罫線が伸びている方向」に係る情報を用いて判定する。具体的には、「罫線が伸びている方向」が「『右』と『下』」の2方向のみである場合は、表の左上の角であるものとして左端点であると判定される。また「罫線が伸びている方向」が「『右』と『上』」の2方向のみである場合は、表の左下の角であるものとして左端点であると判定される。
【0064】
左端点である場合(S405:YES)は、処理をステップS406に移行する。
【0065】
左端点ではない場合(S405:NO)は、処理をステップ410に移行し、次の交点に対する処理に移行する。
【0066】
ステップS406では、左端点の検出状況を示すフラグをYESとする。すなわち、左端点を検出済みであることを記録する。
【0067】
ステップS407では、表のスキャン方向を取得する。表のスキャン方向とは、ここから上下どちらの方向に表があると仮定して評価をするかというパラメータである。例えば
図10のc1001は右と下方向に罫線が伸びているため、スキャン方向は下になる。また、
図11のc1101は、右と上方向に罫線が伸びているため、スキャン方向は上になる。
【0068】
ステップS408では、処理対象の交点が右端点であるかを判定する。右端点であるかの判断は、ステップS305により評価された内容のうち、「罫線が伸びている方向」に係る情報を用いて判定する。具体的には、「罫線が伸びている方向」が「『左』と『下』」の2方向のみである場合は、表の右上の角であるものとして右端点であると判定される。また「罫線が伸びている方向」が「『左』と『上』」の2方向のみである場合は、表の右下の角であるものとして右端点であると判定される。
【0069】
右端点である場合(S408:YES)は、処理をステップS409に移行する。
【0070】
右端点ではない場合(S408:NO)は、処理をステップS410に移行し、次の交点に対する処理に移行する
ステップS409では、表領域のスキャンを行う。ステップS409の処理の詳細は、
図5のフローチャートを用いて説明する。
【0071】
図5のフローチャートでは、
図4のフローチャートにおいて取得された横方向罫線と対になる横方向罫線(表の対辺となる横方向罫線)を確定するための処理であり、横方向の罫線候補に対して、ステップS502~S504の処理を、ステップS407で取得した表スキャンの方向に順次実行する(ステップS501)。
【0072】
ステップS502では、処理対象の横方向罫線候補が、すでに確定済みの他の表と接しているか(他の表を形成する辺として確定しているか)を判定する。
【0073】
他の表と干渉している場合(ステップS502:YES)は、処理をステップS505に移行し、これまでにスキャン済みの領域(
図4の処理で取得した横方向罫線と、S502でYESと判定された横方向罫線とにより形成される領域)を表領域として確定し記憶する。
【0074】
他の表と干渉していない場合(ステップS502:NO)は、処理をステップS503に移行する。
【0075】
ステップS503では、処理対象の横方向罫線上に、角点である交点が含まれているかを判定する。角点は、表の四隅を形成する交点であり、ステップS305により評価された内容のうち、「罫線が伸びている方向」に係る情報が、「『右』と『下』のみ」(左上の角点)、「『左』と『下』のみ」(右上の角点)、「『右』と『上』のみ」(左下の角点)、「『左』と『上』のみ」(右下の角点)のいずれかであるものを意味する。
【0076】
角点が含まれている場合(ステップS503:YES)は、処理をステップS505に移行し、これまでにスキャン済みの領域(
図4の処理で取得した横方向罫線と、S503でYESと判定された横方向罫線とにより形成される領域)を表領域として確定し記憶する。
【0077】
角点が含まれていない場合(ステップS503:NO)は、処理をステップS504に移行する。
【0078】
図10の例では、角点c1004が見つかったら領域1001(点線で示した領域)を表領域として確定する。なお、ここでは交点c1003は、「『左』と『上』」だけでなく『下』にも罫線が延びているため、角点として評価されない。このような表を認識するため、左右どちらかから角点が発見されたらその時点で表を確定するようにする。角点が見つからなかった場合はステップS504に進む。
【0079】
ステップS504では、処理対象の横方向罫線に含まれる左右の端点の少なくともいずれかについて、「罫線が外側に伸びている端点」が存在するかを判定する。
【0080】
「処理対象の横方向罫線に含まれる左右の端点」とは、
図4のフローチャートにおいて取得した左端点と同一の縦方向罫線上の交点または右端点と同一の縦方向罫線上の交点であって、処理対象の横方向罫線に含まれる交点を意味する。また、罫線が外側に伸びているか否かは、当該端点における「罫線が伸びている方向」に基づき判断される。具体的には、左端点については左方向に罫線が伸びている場合に、外側に罫線が伸びていると判定される。同様に、右端点については、右方向に罫線が伸びている場合に、外側に罫線が伸びていると判定される。
【0081】
「罫線が外側に伸びている端点」が存在すると判定された場合(ステップS504:YES)は、処理をステップS505に移行し、これまでにスキャン済みの領域(
図4の処理で取得した横方向罫線と、S504でYESと判定された横方向罫線とにより形成される領域)を表領域として確定し記憶する。
【0082】
例えば、
図11の例では、交点c1103から外側(左側)に向かって罫線が延びているため、ここで表のスキャンを打ち切り、領域11101(点線で示した領域)を表領域として確定する。
【0083】
「罫線が外側に伸びている端点」が存在しないと判定された場合(ステップS504:NO)は、処理対象の罫線は表の対辺となる横方向罫線ではないと判断されることから、次の横方向罫線に処理対象を移行する。
【0084】
なお、すべての横方向罫線についてS502~S504の処理を実行しても表の対辺となる横方向罫線が見つからなかった場合は、表領域が存在しないと判定し、本フローチャートの処理を終了する(S507)。例えば、
図4のフローチャートにおいて取得された右端点及び左端点がノイズによる誤検出であった場合に、このような処理となる。
【0085】
ステップS506では、左端点の検出状況を示すフラグをNoとし、処理を
図4のステップS401に移行する。なお、ステップS506の処理が実行された後のS402以降の処理については、S502~S504の処理が実行されていない横罫線候補のみを処理対象としても良い。
【0086】
以上の処理により、S301で表抽出要求を受付けた帳票画像から表領域を抽出することが可能となる。
【0087】
特に
図7に示すように、2つの矩形が組み合わさった表(個別の項目が記載された明細表と合計金額などが記載された小計表が接した表)についても、明細表と小計表を別々の表として認識することが可能となる。その結果、表に含まれるデータの認識処理において、高い精度で認識することが可能となる。
【0088】
次に、ステップS307の処理について説明する。
【0089】
ステップS307では、ステップS306において抽出された表領域に含まれるセル領域を抽出する処理である。セル領域抽出処理の詳細は、以下、
図13のフローチャートを用いて説明する。
【0090】
図13のフローチャートでは、ステップS1302~S1314までの処理を横方向罫線候補に対し順次実行していく(本実施例では上から下に向けて順次実行する)ものであり(S1301)、S1304~S1306の処理を横方向罫線上の交点に対して順次実行していく(本実施例では左から右に順次実行する)ものである。
【0091】
ステップS1302では、セルの左上の交点(左端点)の検出状況を示すフラグをNOに設定する。すなわち、まだ左上の交点を検出していない旨を示す状態にする。
【0092】
ステップS1034では、左上の交点の検出状況を示すフラグがYESであるか、すなわち左上の交点を検出済みであるかを判定する。
【0093】
検出済みである場合(ステップS1304:YES)は、処理をステップS1308に移行する。
【0094】
検出済みではない場合(ステップS1304:NO)は、処理をステップS1305に移行する。
【0095】
ステップS1305では、処理対象の交点が左端点(セルの左上の交点)であるかを判定する。セルの左上の交点であるかの判定は、具体的には、当該交点から延びる罫線の方向が「『右』と『下』」を含む場合(右と下を含めば、左や上に延びる罫線があっても左端点と判断される)に、当該交点はセルの左上の交点であると判定される。例えば
図12の例では、交点c1201が左端点であると判定される。
【0096】
処理対象の交点が左端点であると判定された場合(ステップS1305:YES)は、処理をステップS1306に移行する。
【0097】
処理対象の交点が左端点ではないと判定された場合(ステップS1305:NO)は、所為をステップS1307に移行し、次の交点(一つ右の交点)に処理を移行する。
【0098】
ステップS1306では、左端点の検出状況を示すフラグをYESに設定する。そして、次の交点(一つ右の交点)に処理を移行する(S1307)。
図12の例では、交点c1202に処理対象を移行する。
【0099】
ステップS1308では、処理対象の交点が右端点(セルの右上の交点)であるかを判定する。セルの右上の交点であるかの判定は、具体的には、当該交点から延びる罫線の方向が「『左』と『下』」を含む場合(左と下を含めば、右や上に延びる罫線があっても右端点と判断される)に、当該交点はセルの右上の交点であると判定される。
図12の例では、交点c1202が右端点であると判定される。
【0100】
処理対象の交点が右端点であると判定された場合(ステップS1308:YES)は、処理をステップS1309に移行し、横方向罫線候補に対して順次S1310~S1311の処理を実行する。
【0101】
処理対象の交点が右端点ではないと判定された場合(ステップS1308:NO)は、処理をステップS1307に移行し、次の交点(一つ右の交点)に処理を移行する
ステップS1308:YESと判定された場合、処理対象の横罫線候補の1つ下に位置する横罫線候補に対して、ステップS1310~S1311の処理を実行する。なお、ここでの横罫線候補は、横罫線である直線のうち、S1305で検出された左端点と同一の縦方向罫線上の交点と、S1308で検出された右端点と同一の縦方向罫線上の交点とにより特定される線分を示す。
【0102】
ステップS1310では、処理対象の横罫線候補が他の確定済みセルと共有しているかを判定する。
【0103】
共有していると判定された場合(ステップS1310:YES)は、処理をステップS1313に移行する。
【0104】
共有していないと判定された場合(ステップS1310:NO)は、処理をステップS1311に移行する。
【0105】
ステップS1311では、処理対象の横罫線候補の左右の端点から内向きの罫線が伸びているかを判定する。内向きの罫線とは、左端点であれば右方向に延びる罫線であり、右端点であれば左方向に延びる罫線である。なお、内向きに延びる罫線が含まれていればよく、他の向きに延びる罫線も含まれていても、本処理はYESと判定される。例えば、
図12の例では、左の端点である交点c1204について右方向に延びる罫線があり、右の端点である交点1203について左方向に延びる罫線があるため、ステップS1311においてYESと判定される。
【0106】
左右の端点から内向きの罫線が延びていると判定された場合(ステップS1311:YES)は、処理をステップS1313に移行する。
【0107】
左右の端点から内向きの罫線が延びていないと判定された場合(ステップS1311:NO)は、処理をステップS1312に移行し、次の(1つ下の)横方向罫線候補に処理を移行する。
【0108】
ステップS1313では、S1305で検出された左端点とS1308で検出された右端点とにより形成される線分と、S1310でYESと判定された線分またはS1311でYESと判定された線分とにより形成されるセルを、セル領域として確定する。
【0109】
そして、ステップS1314で左端点の検出フラグをNOとして、処理をS1303に戻す。
以上がセル領域を検出する処理である。
なお、本実施例において表領域やセル領域を検出・特定する際に、横方向(水平方向)の罫線を基準に説明したが、縦方向(垂直方向)の罫線を基準に処理を実行しても良い。
【0110】
本発明は、例えば、システム、装置、方法、プログラムもしくは記録媒体等としての実施態様をとることが可能である。具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
【0111】
また、本発明におけるプログラムは、
図3~
図5、
図13に示すフローチャートの処理方法をコンピュータが実行可能なプログラムであり、本発明の記憶媒体は
図3~
図5、
図13の処理方法をコンピュータが実行可能なプログラムが記憶されている。なお、本発明におけるプログラムは
図3~
図5、
図13の各装置の処理方法ごとのプログラムであってもよい。
【0112】
以上のように、前述した実施形態の機能を実現するプログラムを記録した記録媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記録媒体に格納されたプログラムを読み出し、実行することによっても本発明の目的が達成されることは言うまでもない。
【0113】
この場合、記録媒体から読み出されたプログラム自体が本発明の新規な機能を実現することになり、そのプログラムを記録した記録媒体は本発明を構成することになる。
【0114】
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、CD-ROM、CD-R、DVD-ROM、磁気テープ、不揮発性のメモリカード、ROM、EEPROM、シリコンディスク等を用いることが出来る。
【0115】
また、コンピュータが読み出したプログラムを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムの指示に基づき、コンピュータ上で稼働しているOS(オペレーティングシステム)等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【0116】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPU等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【0117】
また、本発明は、複数の機器から構成されるシステムに適用しても、ひとつの機器から成る装置に適用しても良い。また、本発明は、システムあるいは装置にプログラムを供給することによって達成される場合にも適応できることは言うまでもない。この場合、本発明を達成するためのプログラムを格納した記録媒体を該システムあるいは装置に読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。
【0118】
さらに、本発明を達成するためのプログラムをネットワーク上のサーバ、データベース等から通信プログラムによりダウンロードして読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。なお、上述した各実施形態およびその変形例を組み合わせた構成も全て本発明に含まれるものである。
【符号の説明】
【0119】
101 情報処理装置
102 スキャナ
103 ファイルサーバ
【手続補正書】
【提出日】2024-01-19
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
第1の形式である第1の表と、第2の形式である第2の表と、が接した状態でレイアウトされた表を含む画像を取得する取得手段と、
前記取得された画像に含まれる表における罫線同士の交点について、罫線が延びる方向を特定する罫線方向特定手段と、
前記罫線方向特定手段により特定された罫線が延びる方向を用いて、前記画像に含まれる前記第1の表に係る領域と前記第2の表に係る領域とを別々の表領域として特定する表領域特定手段と、
を備えることを特徴とする情報処理装置。
【請求項2】
前記表領域特定手段は、前記罫線方向特定手段により特定された罫線が延びる方向に基づき検出される、表の四隅を形成する交点に基づき、表領域を特定することを特徴とする請求項1に記載の情報処理装置
【請求項3】
前記交点のうち、前記罫線方向特定手段により特定された罫線が延びる方向に基づき、表の左上および右上の角を形成する交点、または、左下および右下の角を形成する交点を特定する角点特定手段と、
前記角点特定手段により特定された角点から形成される辺の対辺となる辺を特定する対辺特定手段と、
を備え、
前記表領域特定手段は、前記角点特定手段により特定された角点から形成される辺と、前記対辺特定手段により特定された対辺とからなる領域を表領域として特定することを特徴とする請求項1または2に記載の情報処理装置。
【請求項4】
前記対辺特定手段は、前記角点特定手段により特定された角点に基づき特定される辺と並行な辺が、すでに表領域として特定された領域を構成する辺である場合、当該辺を対辺として特定することを特徴とし、
前記表領域特定手段は、前記角点特定手段により特定された角点から形成される辺と、前記対辺特定手段により特定された対辺とからなる領域を表領域として特定することを特徴とする請求項3に記載の情報処理装置。
【請求項5】
前記対辺特定手段は、前記角点特定手段により特定された角点に基づき特定される辺と並行な辺であって、外側に向かって延びる罫線がある交点を含む辺を、対辺として特定することを特徴とし、
前記表領域特定手段は、前記角点特定手段により特定された角点から形成される辺と、前記対辺特定手段により特定された対辺と、に基づき特定される領域を表領域として特定する請求項3に記載の情報処理装置。
【請求項6】
前記表領域特定手段により特定された表領域に含まれる交点の罫線が延びる方向に基づき、当該表領域のセルを特定する特定手段をさらに備えることを特徴とする請求項1乃至5のいずれか1項に記載の情報処理装置。
【請求項7】
前記第1の表に係る第1の形式と前記第2の表に係る第2の形式とは、少なくとも表の幅が異なる矩形であることを特徴とする請求項1乃至6のいずれか1項に記載の情報処理装置。
【請求項8】
前記第1の表は明細表であり、前記第2の表は小計表であることを特徴とする請求項1乃至7のいずれか1項に記載の情報処理装置。
【請求項9】
情報処理装置の取得手段が、第1の形式である第1の表と、第2の形式である第2の表と、が接した状態でレイアウトされた表を含む画像を取得する取得工程と、
前記情報処理装置の罫線方向特定手段が、前記取得された画像に含まれる表における罫線同士の交点について、罫線が延びる方向を特定する罫線方向特定工程と、
前記情報処理装置の表領域特定手段が、前記罫線方向特定工程により特定された罫線が延びる方向を用いて、前記画像に含まれる前記第1の表に係る領域と前記第2の表に係る領域とを別々の表領域として特定する表領域特定工程と、
を備えることを特徴とする情報処理方法。
【請求項10】
コンピュータを、請求項1乃至8のいずれか1項に記載の情報処理装置の各手段として機能させるためのプログラム。
【手続補正2】
【補正対象書類名】明細書
【補正対象項目名】0010
【補正方法】変更
【補正の内容】
【0010】
そこで、本発明は、複数の形式の表が接した状態でレイアウトされた表について、それぞれ別の表として認識できる仕組みを提供することを目的とする。
【手続補正3】
【補正対象書類名】明細書
【補正対象項目名】0012
【補正方法】変更
【補正の内容】
【0012】
本発明によれば、複数の形式の表が接した状態でレイアウトされた表について、それぞれ別の表として認識することが可能となる。