(57)【特許請求の範囲】
【請求項１】
画像処理方法であって、
テーブルを含む画像を取得するステップと、
前記画像内の前記テーブルに対応する第１のライン、前記第１のラインの第１の信頼値、および前記第１のラインの第１の角度を識別するステップと、
一定の間隔で角度を区分したアングルビンであって、複数の角度に対応する複数のアングルビンを生成するステップと、
前記第１の信頼値に基づいて、前記第１の角度を囲むウィンドウ内の前記複数のアングルビンの第１のサブセットに対する第１の複数のビン値を計算するステップと、
前記第１の複数のビン値を前記複数のアングルビンの前記第１のサブセットに加算するステップと、
前記複数のアングルビンのうち、最大のビン値を有するアングルビンを特定するステップと、
前記最大のビン値を有する前記アングルビンに基づいて、前記画像を回転するステップと、
を含み、
前記第１の複数のビン値を計算するステップは、
前記複数のアングルビンの前記第１のサブセットに対する複数のビン信頼値であって、前記ウィンドウのサイズと、前記複数のアングルビンの前記第１のサブセットおよび前記第１の角度間の複数の差分と、に基づく複数のビン信頼値を計算するステップと、
前記複数のビン信頼値のそれぞれを、前記第１の信頼値の２乗と乗算するステップと、を含む、
方法。
【請求項２】
前記画像内の前記テーブルに対応する第２のライン、前記第２のラインの第２の信頼値、および前記第２のラインの第２の角度を識別するステップと、
前記第２の信頼値に基づいて、前記第２の角度を囲む前記ウィンドウ内の前記複数のアングルビンの第２のサブセットに対する第２の複数のビン値を計算するステップと、
前記最大のビン値を有するアングルビンを特定するステップの前に、前記第２の複数のビン値を前記複数のアングルビンの前記第２のサブセットに加算するステップと、
をさらに含む請求項１に記載の方法。
【請求項３】
前記画像内の前記テーブルに対応する第３のライン、前記第３のラインの第３の信頼値、および前記第３のラインの第３の角度を識別するステップと、
前記第３の信頼値を閾値と比較するステップと、
前記第３の信頼値が前記閾値を下回ることに応じて、前記第３のラインを廃棄するステップと、
をさらに含む、請求項２に記載の方法。
【請求項４】
前記第１のラインを識別する前に、前記画像をバイナリ画像に変換するステップをさらに含み、
前記テーブルは手書きである、請求項１から請求項３のいずれか一つに記載の方法。
【請求項５】
前記第１のライン、前記第１の信頼値、および前記第１の角度を識別するステップは、前記画像へのハフ（Ｈｏｕｇｈ）変換の適用を含む、請求項１から請求項４のいずれか一つに記載の方法。
【請求項６】
前記ウィンドウは、各方向で前記第１の角度から５度広がっている、請求項１から請求項５のいずれか一つに記載の方法。
【請求項７】
前記画像を回転させた後、テーブル内のテキストに光学式文字認識（ＯＣＲ）を実行するステップをさらに含む、請求項１から６のいずれか一つに記載の方法。
【請求項８】
コンピューター装置を制御するコンピュータープログラムであって、
テーブルを含む画像を取得するステップと、
前記画像内の前記テーブルに対応する第１のライン、前記第１のラインの第１の信頼値、および前記第１のラインの第１の角度を識別するステップと、
一定の間隔で角度を区分したアングルビンであって、複数の角度に対応する複数のアングルビンを生成するステップと、
前記第１の信頼値に基づいて、前記第１の角度を囲むウィンドウ内の前記複数のアングルビンの第１のサブセットに対する第１の複数のビン値を計算するステップと、
前記第１の複数のビン値を前記複数のアングルビンの前記第１のサブセットに加算するステップと、
前記複数のアングルビンのうち、最大のビン値を有するアングルビンを特定するステップと、
前記最大のビン値を有する前記アングルビンに基づいて、前記画像を回転するステップと、
を含み、
前記第１の複数のビン値を計算するステップは、
前記複数のアングルビンの前記第１のサブセットに対する複数のビン信頼値であって、前記ウィンドウのサイズと、前記複数のアングルビンの前記第１のサブセットおよび前記第１の角度間の複数の差分と、に基づく複数のビン信頼値を計算するステップと、
前記複数のビン信頼値のそれぞれを、前記第１の信頼値の２乗と乗算するステップと、
を含む処理を、前記コンピューター装置に実行させるためのコンピュータープログラム。
【請求項９】
前記画像内の前記テーブルに対応する第２のライン、前記第２のラインの第２の信頼値、および前記第２のラインの第２の角度を識別するステップと、
前記第２の信頼値に基づいて、前記第２の角度を囲む前記ウィンドウ内の前記複数のアングルビンの第２のサブセットに対する第２の複数のビン値を計算するステップと、
前記最大のビン値を有するアングルビンを特定するステップの前に、前記第２の複数のビン値を前記複数のアングルビンの前記第２のサブセットに加算するステップと、
をさらに含む請求項８に記載のコンピュータープログラム。
【請求項１０】
前記画像内の前記テーブルに対応する第３のライン、前記第３のラインの第３の信頼値、および前記第３のラインの第３の角度を識別するステップと、
前記第３の信頼値を閾値と比較するステップと、
前記第３の信頼値が前記閾値を下回ることに応じて、前記第３のラインを廃棄するステップと、
をさらに含む、請求項９に記載のコンピュータープログラム。
【請求項１１】
前記第１のラインを識別する前に、前記画像をバイナリ画像に変換するステップをさらに含み、
前記テーブルは手書きである、請求項８から請求項１０のいずれか一つに記載のコンピュータープログラム。
【請求項１２】
前記第１のライン、前記第１の信頼値、および前記第１の角度を識別するステップは、前記画像へのハフ（Ｈｏｕｇｈ）変換の適用を含む、請求項８から請求項１１のいずれか一つに記載のコンピュータープログラム。
【請求項１３】
前記ウィンドウは、各方向で前記第１の角度から５度広がっている、請求項８から請求項１２のいずれか一つに記載のコンピュータープログラム。
【請求項１４】
画像処理用のシステムであって
テーブルを含む画像を記憶するバッファーと、
前記画像内の前記テーブルに対応する第１のライン、前記第１のラインの第１の信頼値、および前記第１のラインの第１の角度を識別し、
前記画像内の前記テーブルに対応する第２のライン、前記第２のラインの第２の信頼値、および前記第２のラインの第２の角度を識別する、ライン抽出部と、
一定の間隔で角度を区分したアングルビンであって、複数の角度に対応する複数のアングルビンを有するアングルビンエンジンであって、
前記第１の信頼値に基づいて、前記第１の角度を囲むウィンドウ内の前記複数のアングルビンの第１のサブセットに対する第１の複数のビン値を計算し、
前記第２の信頼値に基づいて、前記第２の角度を囲む前記ウィンドウ内の前記複数のアングルビンの第２のサブセットに対する第２の複数のビン値を計算し、
前記第１の複数のビン値を前記複数のアングルビンの前記第１のサブセットに加算し、前記第２の複数のビン値を前記複数のアングルビンの前記第２のサブセットに加算する、アングルビンエンジンと、
最大のビン値を有する前記アングルビンに基づいて、前記画像を回転するテーブルエンジンと、
を備え、
前記第１の複数のビン値の計算は、
前記複数のアングルビンの前記第１のサブセットに対する第１の複数のビン信頼値であって、前記ウィンドウのサイズと、前記複数のアングルビンの前記第１のサブセットおよび前記第１の角度間の複数の差分に基づく第１の複数のビン信頼値の計算と、
前記第１の複数のビン信頼値のそれぞれを、前記第１の信頼値の２乗との乗算すること、を含む、
システム。
【請求項１５】
前記ライン抽出部は、さらに、前記第１のラインを識別する前に、前記画像をバイナリ画像に変換し、
前記テーブルは手書きである、請求項１４に記載のシステム。
【請求項１６】
前記ウィンドウは、各方向で前記第１の角度から５度広がっている、請求項１４、または請求項１５に記載のシステム。
【請求項１７】
前記テーブルエンジンは、さらに、前記画像を回転させた後、テーブル内のテキストに光学式文字認識（ＯＣＲ）を実行する、請求項１４から請求項１６のいずれか一つに記載のシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
本発明は画像内の回転したテーブルの補正方法に関する。
【０００２】
画像は、任意の数のテーブル（表）を含み得る。さらに、各テーブルは、任意のサイズ（すなわち、任意の行数、任意の例数）を取り得る。テーブルの各セル（すなわち、行と列の交点）は、任意のフォント、サイズ、スタイルなどのテキスト文字を含み得る。テーブルは、手書き（すなわち、ユーザーによる手書き）または機械生成され得る。画像内において、テーブルは完全な水平または完全な垂直でない可能性がある。すなわち、このテーブルは水平軸または垂直軸のいずれかに対して回転している可能性がある。この回転は、ユーザーがテーブルを手書きした結果、および／または画像を生成する処理（例えばスキャン）の結果、生じ得る。
【０００３】
光学式文字認識（ＯＣＲ）は、画像内のテキスト文字（例えばテーブルのセル内のテキスト文字）を認識する処理である。ＯＣＲを実行する多くのアルゴリズムが存在する。しかしながら、水平軸または垂直軸に対して回転しているテキスト文字は、しばしば、アルゴリズムを妨げ、誤った結果を導く。ユーザーは回転しているテーブルであっても、このテーブルに対してＯＣＲを実行したい。
【発明の概要】
【０００４】
概して、一の態様では、本発明は画像処理方法に関する。この方法は、テーブルを含む画像を取得するステップと、前記画像内の前記テーブルに対応する第１のライン、前記第１のラインの第１の信頼値、および前記第１のラインの第１の角度を識別するステップと、一定の間隔で角度を区分したアングルビンであって、複数の角度に対応する複数のアングルビンを生成するステップと、前記第１の信頼値に基づいて、前記第１の角度を囲むウィンドウ内の前記複数のアングルビンの第１のサブセットに対する第１の複数のビン値を計算するステップと、前記第１の複数のビン値を前記複数のアングルビンの前記第１のサブセットに加算するステップと、前記複数のアングルビンのうち、最大のビン値を有するアングルビンを特定するステップと、前記最大のビン値を有する前記アングルビンに基づいて、前記画像を回転するステップと、を含み、前記第１の複数のビン値を計算するステップは、前記複数のアングルビンの前記第１のサブセットに対する複数のビン信頼値であって、前記ウィンドウのサイズと、前記複数のアングルビンの前記第１のサブセットおよび前記第１の角度間の複数の差分と、に基づく複数のビン信頼値を計算するステップと、
前記複数のビン信頼値のそれぞれを、前記第１の信頼値の２乗と乗算するステップと、を含む。
【０００５】
概して、一の態様では、本発明は、コンピューター装置を制御するコンピュータープログラムであって、処理をコンピューター装置に実行させるためのコンピュータープログラムに関する。この処理は、テーブルを含む画像を取得するステップと、前記画像内の前記テーブルに対応する第１のライン、前記第１のラインの第１の信頼値、および前記第１のラインの第１の角度を識別するステップと、一定の間隔で角度を区分したアングルビンであって、複数の角度に対応する複数のアングルビンを生成するステップと、前記第１の信頼値に基づいて、前記第１の角度を囲むウィンドウ内の前記複数のアングルビンの第１のサブセットに対する第１の複数のビン値を計算するステップと、前記第１の複数のビン値を前記複数のアングルビンの前記第１のサブセットに加算するステップと、前記複数のアングルビンのうち、最大のビン値を有するアングルビンを特定するステップと、前記最大のビン値を有する前記アングルビンに基づいて、前記画像を回転するステップと、を含み、前記第１の複数のビン値を計算するステップは、前記複数のアングルビンの前記第１のサブセットに対する複数のビン信頼値であって、前記ウィンドウのサイズと、前記複数のアングルビンの前記第１のサブセットおよび前記第１の角度間の複数の差分と、に基づく複数のビン信頼値を計算するステップと、前記複数のビン信頼値のそれぞれを、前記第１の信頼値の２乗と乗算するステップと、を含む。
【０００６】
概して、一の態様では、本発明は、画像処理用のシステムに関する。このシステムは、テーブルを含む画像を記憶するバッファーと、前記画像内の前記テーブルに対応する第１のライン、前記第１のラインの第１の信頼値、および前記第１のラインの第１の角度を識別し、前記画像内の前記テーブルに対応する第２のライン、前記第２のラインの第２の信頼値、および前記第２のラインの第２の角度を識別する、ライン抽出部と、一定の間隔で角度を区分したアングルビンであって、複数の角度に対応する複数のアングルビンを有するアングルビンエンジンであって、前記第１の信頼値に基づいて、前記第１の角度を囲むウィンドウ内の前記複数のアングルビンの第１のサブセットに対する第１の複数のビン値を計算し、前記第２の信頼値に基づいて、前記第２の角度を囲むウィンドウ内の前記複数のアングルビンの第２のサブセットに対する第２の複数のビン値を計算し、前記第１の複数のビン値を前記複数のアングルビンの前記第１のサブセットに加算し、前記第２の複数のビン値を前記複数のアングルビンの前記第２のサブセットに加算する、アングルビンエンジンと、前記最大のビン値を有する前記アングルビンに基づいて、前記画像を回転するテーブルエンジンと、を備え、前記第１の複数のビン値の計算は、前記複数のアングルビンの前記第１のサブセットに対する第１の複数のビン信頼値であって、前記ウィンドウのサイズと、前記複数のアングルビンの前記第１のサブセットおよび前記第１の角度間の複数の差分に基づく第１の複数のビン信頼値の計算と、前記第１の複数のビン信頼値のそれぞれを、前記第１の信頼値の２乗との乗算すること、を含む。
【０００７】
本発明の他の態様は、以下の詳細な説明および添付の特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【０００８】
【図１】本発明の一つ以上の実施形態に係るシステムを示す図である。
【図２】本発明の一つ以上の実施形態に係るフローチャートを示す図である。
【図３Ａ】本発明の一つ以上の実施形態に係る実施例を示す図である。
【図３Ｂ】本発明の一つ以上の実施形態に係る実施例を示す図である。
【図３Ｃ】本発明の一つ以上の実施形態に係る実施例を示す図である。
【図３Ｄ】本発明の一つ以上の実施形態に係る実施例を示す図である。
【図３Ｅ】本発明の一つ以上の実施形態に係る実施例を示す図である。
【図３Ｆ】本発明の一つ以上の実施形態に係る実施例を示す図である。
【図４】本発明の一つ以上の実施形態に係るコンピューターシステムを示す図である。
【発明を実施するための形態】
【０００９】
添付の図面を参照し、以下、本発明の具体的な実施形態の詳細を説明する。異なる図面においては、整合性のために同様の要素は同様の参照番号で示す。
【００１０】
本発明の実施形態の以下の詳細な説明においては、本発明のより完全な理解のために、数々の具体的な詳細を記載している。しかしながら、当業者にとって本発明は、これらの具体的な記述がなくても実行可能であることは明らかであろう。その他、不必要に説明が複雑になることを避けるために、よく知られた構成については説明を省略している。
【００１１】
概して、本発明の実施形態によれば、方法、コンピュータープログラム、および画像処理用のシステムが提供される。テーブルを含む画像が取得され、マスクに変換される。テーブルが手書きであれば、このテーブルは完全には水平または垂直ではなく、また、テーブルは完全な直線ではない可能性がある。画像内で、テーブルに対応する複数のライン（線）が識別され、これらの識別された各ラインは角度および信頼値を有する。各ラインに対して、このラインの角度を囲むウィンドウ内のアングルビンについて、ビン値が計算される。画像は最大のビン値を持つアングルビンに基づいて回転される。この回転の後、テーブルは水平および／または垂直に近くなり、どのような光学式文字認識（ＯＣＲ）アルゴリズムを画像上に適用してもその結果は改善される。
【００１２】
図１は、本発明の一つ以上の実施形態に係るシステム（１００）を示す図である。図１に示すようにシステム（１００）は、例えばバッファー（１０４）、ライン抽出部（１１４）、アングルビンエンジン（１１０）、テーブルエンジン（１０８）を含む、複数の構成要素を有する。これらの各構成要素（１０４，１０８，１１０、１１４）は、同一のコンピューター装置（例えばパーソナルコンピューター（ＰＣ）、ラップトップ、タブレットＰＣ、スマートフォン、複合プリンター、キオスク、サーバー等）に搭載されてもよく、あるいは、有線および／または無線のセグメントを有する任意の規模のネットワークで接続された複数の異なるコンピューター装置に搭載されてもよい。これらの各構成要素については後述する。
【００１３】
本発明の一つ以上の実施形態において、システム（１００）はバッファー（１０４）を含む。バッファー（１０４）は、ハードウェア（すなわち、電気回路）、ソフトウェア、またはこれらの任意の組み合わせにより実装され得る。バッファー（１０４）は、テーブルを含む画像（１０６）を記憶するように構成される。画像（１０６）は、任意のソースから取得（例えばダウンロード）され得る。さらに、画像（１０６）は、任意のサイズおよび任意のフォーマット（例えばＪＰＥＧ．ＧＩＦ、ＢＭＰ、ＰＮＧなど）であってもよい。
【００１４】
一つ以上の実施形態において、画像（１０６）内のテーブルは手書きである。したがって、テーブルは完全には水平、または完全には垂直ではない可能性がある。すなわち、テーブルは水平軸および／または垂直軸に対して回転している可能性がある。さらに、このテーブルのラインは真っ直ぐな直線ラインではない可能性がある。一つ以上の実施形態では、テーブルは機械生成されたものである。このような実施形態であっても、画像（１０６）を生成する処理（例えばスキャンニング）によって生じる歪みによって、テーブルは水平軸または垂直軸に対して回転し得る。テーブルは、任意の数の行と列と有する。さらに、テーブルの各セルはテキストおよび／またはグラフィックを含み得る。
【００１５】
本発明の一つ以上の実施形態において、システム（１００）は、ライン抽出部（１１４）を含む。ライン抽出部（１１４）はハードウェア（すなわち電気回路）、ソフトウェア、またはこれらの任意の組み合わせにより実装され得る。ライン抽出部（１１４）は、画像内における直線ライン、各ラインの角度（例えば水平軸または垂直軸に対する角度）、および各ラインの信頼値（すなわち画像内のラインに寄与する画素数）を識別する。本発明の一つ以上の実施形態においてライン抽出部（１１４）は、ライン、ラインの角度、およびラインの信頼値を識別するために、ハフ（Ｈｏｕｇｈ）変換を画像（１０６）に適用する。本発明の一つ以上の実施形態において、ライン抽出部（１１４）は、ラインの識別処理を向上させるため、画像（１０６）内のラインを識別する前に、画像（１０６）をマスク（例えばバイナリ画像）に変換する。
【００１６】
本発明の一つ以上の実施形態において、ライン抽出部（１１４）は、一つ以上の基準を満たさないラインを廃棄する。例えば、ラインの信頼値を閾値と比較し、信頼値が閾値よりも小さければこのラインを廃棄する。閾値は、最も信頼するＮ本のラインの平均信頼値のパーセンテージＰとして算出できる。すなわち、平均信頼値は、最も高い信頼値を有するＮ本のラインによって算出され、この平均信頼値のＰ未満の信頼値を有するいずれのラインも廃棄される。例えば、Ｐは５０％に等しくてもよく、Ｎは１０に等しくてもよい。
【００１７】
本発明の一つ以上の実施形態において、システム（１００）は、アングルビンエンジン（１１０）を有する。アングルビンエンジン（１１０）は、ハードウェア（すなわち電気回路）、ソフトウェア、またはこれらの任意の組み合わせにより実装され得る。アングルビンエンジン（１１０）は、アングルビンのセット（例えばアレイ）を初期化するように構成する。各アングルビンは角度に対応する。アングルビンの初期化には、全てのアングルビンをゼロまたは他の定数に設定することを含めてもよい。セット内のアングルビン数（すなわち、アングルビンのセットのカーディナリティ）は、ラインの識別に用いる変換（例えばハフ変換）の角度分解能に依存する。この変換は、この角度分解能において角度の増加を伴ったラインのみを探すことができる。角度分解能は、変換に対する実行時入力パラメータであってもよい。例えば、変換の角度分解能が１度であれば、１８０個の角度が可能であるから、１８０個のアングルビン（すなわち０度から１７９度）が存在する。
【００１８】
本明細書の恩恵を受ける当業者は、手書きのテーブルが０度と９０度の完全なラインで描かれることはほとんどないことが理解できるであろう。変換を適用することで検出され、識別されたラインの角度に対して、この識別されたラインは、識別される角度を囲むウィンドウ内のある角度で描かれ得る。すなわち、この変換が角度θでラインを検出した場合、このラインは実際には、角度θ−Ｗから角度θ＋Ｗまでのいずれかであり得る。例えば、Ｗが５度であれば、ウィンドウはθ（すなわち、識別されたラインの角度）から両方向に実際上は５度広がっている。
【００１９】
本発明の一つ以上の実施形態において、アングルビンエンジン（１１０）は、各識別されたラインに対して、角度θ−Ｗから角度θ＋Ｗまでの各角度のビン信頼値を計算する。ビン信頼値はθから遠いほど、減少する。言い換えると、識別されたラインがθで描かれていれば高い信頼度を示し、識別されたラインがθ−Ｗまたはθ＋Ｗで描かれていれば低い信頼度を示す。本発明の一つ以上の実施形態において、アングルビンｂ（ＢＣＶｂ）のビン信頼値は、
ＢＣＶｂ＝Ｗ−｜θ−ｂ｜＋１により計算される。
【００２０】
上記式に示すように、アングルビンｂとラインの角度の差分は、ＢＣＶｂの因子である。本明細書の恩恵を受ける当業者は、ｂ＝θであるウィンドウの中央が、ＢＣＶがＷ＋１であることは理解できるであろう。これに対し、ｂ＝θ±Ｗであるウィンドウの端では、ＢＣＶは、１である。
【００２１】
本発明の一つ以上の実施形態において、アングルビンエンジン（１１０）は、各識別されたラインに対して、識別されたラインの角度を囲むウィンドウ内の各アングルビンのビン値を計算する。一つ以上の実施形態において、アングルビンのビン値は、次のように計算される。
アングルビンｂのビン値＝ＢＣＶｂ×（識別されたラインの信頼値）２
本明細書の恩恵を受ける当業者は、ラインの信頼値を二乗することで、より有力なラインがより重み付けられるとともに、相対的に信頼値が低い多数のラインの潜在的な影響が打ち消されることが、理解できるであろう。ビン値は、それぞれの各アングルビンに加算され、この処理は、廃棄されていない全ての識別されたラインに対して繰り返される。
【００２２】
本発明の一つ以上の実施形態において、システム（１００）は、テーブルエンジン（１０８）を有する。テーブルエンジン（１０８）は、ハードウェア（すなわち電気回路）、ソフトウェア、またはこれらの任意の組み合わせにより実装され得る。テーブルエンジン（１０８）は、最大のビン値を有するアングルビンを特定するように構成される。画像（１０６）内のテーブルは、このアングルビン（例えば１０度）で回転していると見なされる。テーブルエンジン（１０８）は、このアングルビンに基づいて画像（１０６）を回転させ、つまりテーブルを回転させ、テーブルをほぼ水平または垂直な状態にする（すなわち水平軸または垂直軸にほぼ揃う）。これは、ユーザーの手書きによってもたらされたテーブルの回転、および／または画像（１０６）を生成するスキャン処理中にもたらされた回転を、効果的に補正する。また、テーブルエンジン（１０８）は、テーブルのセル内に含まれるテキストを抽出するため画像上にＯＣＲを実行するよう構成される。テーブルが水平軸および／または垂直軸に揃うほど、ＯＣＲが成功する（すなわち、テキスト文字を正しく認識、抽出する）可能性が高まる。
【００２３】
システム（１００）は、４つの構成要素（１０４、１０８，１１０、１１４）を有するものとして示しているが、本発明の他の実施形態では、システム（１００）はこれよりも多い、または少ない構成要素を有してもよい。さらに、上述した各構成要素の機能は、複数の構成要素に分割されていてもよい。
【００２４】
図２は、本発明の一つ以上の実施形態に係るフローチャートを示す。フローチャートは、画像処理の手順を表す。具体的には、フローチャートは、手書きのテーブルをほぼ水平または垂直に回転する処理を表す。図２の一つ以上のステップは、図１を参照して上述したシステム（１００）の構成要素により実行されてもよい。本発明の一つ以上の実施形態において、図２に示された一つ以上のステップを省略したり、繰り返したり、および／または、図２に示された順序とは異なる順序で実行したりしてもよい。したがって、本発明の範囲は、図２に示された具体的なステップの並びに限定されると見なされるべきでない。
【００２５】
最初に、テーブルを含んだ画像を取得する（ステップ２０５）。画像を任意のソースから取得（例えばタウンロード）してもよい。画像はハードコピー文書をスキャンすることで生成してもよい。この画像は任意のサイズ、フォーマットであってもよい。一つ以上の実施形態において、この画像内のテーブルは手書きである。したがって、テーブルは完全には水平、または完全には垂直ではない可能性がある。すなわち、テーブルは、水平軸または垂直軸に対して回転している可能性がある。さらに、テーブルのラインは、完全な直線ではない可能性がある。一つ以上の実施形態において、テーブルのラインは、機械生成される。しかしながら、このような実施形態であっても、画像を生成するスキャン処理によりもたらされる歪みによりテーブルは、水平軸または垂直軸に対して回転している可能性がある。テーブルは、任意の数の行と列を有する。さらに、テーブルの各セルはテキストおよび／またはグラフィックを有する。
【００２６】
ステップ２１０では、画像をマスクに変換する。すなわち、画像は、バイナリ画像に変換される。テーブルのラインおよび／またはセル内のテキスト文字に対応する画素は１に設定され、残りの全て画素は０に設定される。
【００２７】
ステップ２１５では、テーブルに対応する画像内のラインが識別される。各ラインの（例えば、水平軸または垂直軸に対する）角度、および各ラインの信頼値（すなわち、画像内のラインに寄与する画素数）も特定される。本発明の一つ以上の実施形態において、ライン、ラインの角度、およびラインの信頼値は、画像にハフ変換を適用することにより識別される。なお、ラインを識別するために他の変換方式が用いられてもよい。
【００２８】
本発明の一つ以上の実施形態において、一つ以上の基準を満たさないラインは廃棄される。例えば、ラインの信頼値が閾値と比較され、信頼値が閾値よりも小さければラインは廃棄される。この閾値は、最も確からしいＮ本のラインの平均信頼値のパーセンテージＰとして算出できる。すなわち、平均信頼値は、最も信頼値が高いＮ本のラインに対して計算される。そして、信頼値が、この平均信頼値のＰ未満のラインはいずれも廃棄される。
【００２９】
ステップ２２０では、アングルビンを初期化する。各アングルビンは１つの角度に対応する。アングルビンの初期化は、全てのアングルビンをゼロまたは他の定数に設定することが含まれていてもよい。セット内のアングルビンの数（すなわち、アングルビンのセットのカーディナリティ）は、ラインの識別（ステップ２１５）に用いられる変換の角度分解能に依存する。この変換は、この角度分解能において角度の増大を伴うラインのみを探すことができる。角度分解能は、変換に対する実行時入力パラメータであってもよい。例えば、変換の角度分解能が１度であれば、１８０個の角度が可能であるから、１８０個のアングルビン（すなわち０度から１７９度）が存在する。
【００３０】
ステップ２２５では、ラインのうちの一つが選択される。具体的には、それまでに選択されていないラインが選択される。ラインはランダムに選択されてもよい。さらに、またはこれに代えて、最大の信頼値を持つライン、または最小の信頼値を持つラインが選択されてもよい。さらに、またはこれに代えて、最小の角度を持つライン、または最大の角度を持つラインが選択されてもよい。
【００３１】
ステップ２３０では、選択されたラインの角度を囲むウィンドウ内のアングルビンに対するビン値を計算する。ビン値は、選択されたラインの信頼値に基づいて計算される。上述のとおり、適用した変換により検出された識別ラインの任意の角度に対して、識別ラインは、識別された角度を囲むウィンドウ内のある角度で描かれている可能性がある。すなわち、変換が角度θでラインを検出した場合、このラインは実際には、θ−Ｗからθ＋Ｗのいずれかにある可能性がある。
【００３２】
本発明の一つ以上の実施形態において、各アングルビンのθ−Ｗからθ＋Ｗまでのビン信頼値を計算する。ビン信頼値は、θから遠いほど、減少する。本発明の一つ以上の実施形態において、アングルビンｂ（ＢＣＶｂ）のビン信頼値は、
ＢＣＶｂ＝Ｗ−｜θ−ｂ｜＋１により計算される。
【００３３】
本発明の一つ以上の実施形態において、識別されたラインを囲むウィンドウ内の各アングルビンに対するビン値が計算される。一つ以上の実施形態において、アングルビンｂのビン値は、次のように計算される。
アングルビンｂのビン値＝ＢＣＶｂ×（識別されたラインの信頼値）２
ステップ２３５では、ビン値はそれぞれのアングルビンに加算される。本明細書を所持する当業者であれば、図２に表される処理内の一つ以上のステップを繰り返すので、アングルビンは既に値を蓄積していることが、理解できるだろう。そのようなシナリオでは、ステップ２３０で計算されたビン値は、アングルビン中に蓄積されている既存の値に加算される（すなわち、既存の値は上書きされない）。
【００３４】
ステップ２４０では、それまでに選択されていない追加のラインが残っているかを判定する。少なくとも一つのラインが残っていると判定すれば、処理をステップ２２５に戻す。全てのラインが選択済みであれば、処理をステップ２４５に進める。
【００３５】
ステップ２４５では、最大ビン値を有するアングルビンを特定する。画像内のテーブルは、このアングルビン（例えば１０度）で回転しているとみなされる。ステップ２５０では、このアングルビンに対応する角度に基づいて、画像（したがってテーブル）は回転される。このステップは、ユーザーの手書きによって生じたテーブルの回転、および／または画像を生成するスキャン処理中に生じた回転を効果的に補正する。
【００３６】
ステップ２５５では、テーブル内のテキストを抽出するため、画像上にＯＣＲを実行する。回転の後、テーブルが水平軸および／または垂直軸に揃うほど、ＯＣＲが成功する（すなわち、テキスト文字を正しく認識、抽出する）可能性が高まる。
【００３７】
図３Ａから図３Ｆは、本発明の一つ以上の実施形態に係る実施例である。図３Ａに示すように、手書きのテーブル（３０８）を有する画像（３０６）が存在する。テーブル（３０８）の各セルにはテキストが含まれる。手書きテーブル（３０８）のラインは直線ではない。さらに、手書きテーブル（３０８）はある角度で描かれている（すなわち、水平軸および／または水平軸に揃っていない）。この幾何学的配置の画像（３０６）に対して、ＯＣＲを実行しても、結果が悪くなる可能性が高い。すなわち、ＯＣＲアルゴリズムは、回転したテーブルのセル内のテキストを識別、抽出しない可能性がある。
【００３８】
図３Ｂは、マスク（例えばバイナリ画像）に変換された後の画像（３１０）を示している。ラインおよびテキスト文字に対応する全ての画素は１に設定され、残りの全ての画素はゼロに設定される。
【００３９】
図３Ｃは、ハフ変換後の画像（３１２）を示している。ハフ変換は画像内の複数の直線を識別する。ハフ変換は、それぞれの識別したラインの（例えば、水平軸または垂直軸に対する）角度および信頼値（すなわち、画像内の識別されたラインに寄与する画素数）も特定する。図３Ｃでは、識別されたラインのうちの１本が、角度θ＝１０度であり、信頼値が４８３である。
【００４０】
図３Ｄの表は、角度θ＝１０度で信頼値４８３の選択されたラインに対する算出されたビン信頼値、および算出されたビン値を示している。この例では、ウィンドウは識別されたラインの角度に対して両側に５度で広がっている（すなわちθ＝１０度、Ｗ＝５度、θ−ｗ＝５度、θ＋Ｗ＝１５度）。表に示すように、識別されたラインの角度（θ＝１０度）に等しいアングルビンについてのビン信頼値およびビン値が最大である。同様に、ウィンドウの端（すなわちアングルビンが５度およびアングルビン１５度）でのビン信頼値およびビン値が最小である。ビン値は、それぞれのアングルビンに加算される。同様な計算は、全ての識別されたラインに対して実行される。
【００４１】
図３Ｅでは、全ての計算を実行した後のいくつかのアングルビンに対するビン値を示している。図３Ｅに示すように、＋１０度が最大のビン値を有するアングルビンである。したがって、手書きテーブル（３０８）は、１０度で回転していると見なされる。
【００４２】
図３Ｆでは、テーブルを手書きすることで生じた回転を補正するため、−１０度で回転させた画像（３１４）を示している。図３Ｆに示すように、テーブル（したがってセル内のテキスト）は、水平軸および垂直軸に非常に近く揃っている。したがって、画像上に実行される任意のＯＣＲ処理は、テーブル内のテキスト文字の識別、抽出において成功する可能性がより高まる。
【００４３】
本発明の一つ以上の実施形態は、以下の有利な点を有するであろう。すなわち、テーブルの回転角を特定でき、画像内の識別されたラインに基づいてテーブルの角度を特定でき、手書きのテーブルを処理でき、回転したテーブルへのＯＣＲ処理の成功可能性を高めることができ、ライン角度のウィンドウを横切る様々な信頼レベルを評価でき、閾値および信頼値に基づいて識別されたラインを廃棄できる。
【００４４】
本発明の実施形態は、使用されているプラットフォームにかかわらず、事実上あらゆるタイプのコンピューターシステム上で実施できる。例えば、コンピューターシステムは、一つ以上のモバイル装置（例えば、ラップトップコンピューター、スマートフォン、パーソナルデジタルアシスタント、タブレットコンピューター、または他のモバイル装置）、デスクトップコンピューター、サーバー、サーバーシャーシー内のブレード、または他のタイプのコンピューター装置であってもよい。また、本発明の一つ以上の実施形態を実行する少なくとも、最低限の処理パワー、メモリー、および入出力装置を含む装置であってもよい。例えば、図４に示すように、コンピューターシステム（４００）は、一つ以上のコンピュータープロセッサー（４０２）、関連するメモリー（４０４）（例えばランダムアクセスメモリー（ＲＡＭ）、キャッシュメモリー、フラッシュメモリーなど）、一つ以上のストレージ装置（４０６）（例えばハードディスク、コンパクトディスク（ＣＤ）ドライブ、デジタル多目的ディスク（ＤＶＤ）ドライブなどの光学ドライブ、フラッシュメモリースティックなど）、ならびに多くの他の要素および機能を含むことができる。コンピュータープロセッサー（４０２）は、命令を処理するための集積回路であってもよい。例えば、コンピュータープロセッサーは、一つ以上のコア、またはプロセッサーのマイクロコアであってもよい。
【００４５】
コンピューターシステム（４００）は、タッチスクリーン、キーボード、マウス、マイクロフォン、タッチパッド、電子ペン、または他のタイプの入力装置などの一つ以上の入力装置（４１０）を含むことができる。さらに、コンピューターシステム（４００）は、スクリーン（例えば液晶ディスプレイ（ＬＣＤ）、プラズマディスプレイ、タッチスクリーン、ブラウン管（ＣＲＴ）モニター、プロジェクター、または他の表示装置）、プリンター、外部ストレージ、または他の出力ディスプレイなどの一つ以上の出力装置（４０８）を含むことができる。一つ以上の出力装置は、入力装置と同じであっても異なってもよい。このコンピューターシステム（４００）は、ネットワークインターフェース接続（図示せず）を介して、ネットワーク（４１２）（例えばローカルエリアネットワーク（ＬＡＮ）、インターネットのようなワイドエリアネットワーク（ＷＡＮ）、モバイルネットワーク、または他のタイプのネットワーク）に接続してもよい。この入出力装置は、ローカル接続またはリモート接続（例えばネットワーク（４１２）経由）でコンピュータープロセッサー（４０２）、メモリー（４０４）およびストレージ装置（４０６）に接続してもよい。多くの異なるタイプのコンピューターシステムが存在し、上述の入出力装置は、他の形態を取ってもよい。
【００４６】
本発明の実施形態を実施するコンピューター可読プログラムコードの態様でのソフトウェアの指示の全部または一部は、一時的または永続的に、ＣＤ、ＤＶＤ、ストレージ装置、ディスケット、テープ、フラッシュメモリー、物理メモリー、または他のいずれのコンピューター可読媒体などの非一時的なコンピューター可読媒体に記憶することができる。具体的には、ソフトウェアの指示は、プロセッサーにより実行されるときに本発明の実施形態を実施するよう構成された、コンピューター可読プログラムコードに対応する。また、上述のコンピューターシステム（４００）の一つ以上の要素は、遠隔地に配置され、ネットワーク（４１２）を介して他の要素と接続されていてもよい。
【００４７】
さらに、本発明の一つ以上の実施形態は、複数のノードを有する分散システムであって、本発明の各部分が異なるノード上に配置された分散システムで実施されてもよい。本発明の一実施形態では、このノードは、別個のコンピューター装置に対応する。あるいは、ノードは、関連する物理メモリーを備えるコンピュータープロセッサーに対応してもよい。あるいは、ノードは、コンピュータープロセッサーまたは共有メモリーおよび／または資源を備えたコンピュータープロセッサーのマイクロコアに対応してもよい。
【００４８】
本発明は、限られた数の実施形態に対して記述されているが、本開示から恩恵を受ける当業者は、本明細書に開示された本発明の範囲から逸脱しない他の実施形態が考え出されることが理解できるであろう。したがって、本発明の範囲は、添付の特許請求の範囲によってのみ限定されるべきである。
【図１】
0006778586.tif 000002
【図２】
0006778586.tif 000003
【図３Ａ】
0006778586.tif 000004
【図３Ｂ】
0006778586.tif 000005
【図３Ｃ】
0006778586.tif 000006
【図３Ｄ】
0006778586.tif 000007
【図３Ｅ】
0006778586.tif 000008
【図３Ｆ】
0006778586.tif 000009
【図４】
0006778586.tif 000010