(57)【要約】【課題】文字切り出し処理における行認識の精度を向上するための技術を提供する。【解決手段】行認識手段は、第１の文字領域を起点として行抽出処理を行う場合と、第１の文字領域とは異なる行にある第２の文字領域を起点として行抽出処理を行う場合とで、同じ第３の文字領域が重複して選ばれ得る場合には、第１の文字領域を起点とする行に第３の文字領域を加入した場合と、第２の文字領域を起点とする行に第３の文字領域を加入した場合とを比較することにより、第３の文字領域をいずれの行に加入すべきか決定する。【選択図】図１１
2014228953.tif 000002
【特許請求の範囲】
【請求項１】
複数行の文字列を含む画像から各行の領域を特定する画像処理装置であって、
画像から文字を構成する画素群である文字要素を抽出し、各々が文字要素を内包するように複数の文字領域を設定する文字領域設定手段と、
ある文字領域を起点として、所定の隣接条件を満たす文字領域を順に連結していくことで、同じ行に属すると推定される文字領域の組を抽出する行抽出処理を、起点とする文字領域を変えて繰り返し実行することにより、前記複数の文字領域を複数の行に分ける行認識手段と、
を有しており、
前記行認識手段は、
第１の文字領域を起点として行抽出処理を行う場合と、前記第１の文字領域とは異なる行にある第２の文字領域を起点として行抽出処理を行う場合とで、同じ第３の文字領域が重複して選ばれ得る場合には、
前記第１の文字領域を起点とする行に前記第３の文字領域を加入した場合と、前記第２の文字領域を起点とする行に前記第３の文字領域を加入した場合とを比較することにより、前記第３の文字領域をいずれの行に加入すべきか決定する
ことを特徴とする画像処理装置。
【請求項２】
複数行の文字列を含む画像から各行の領域を特定する画像処理装置であって、
画像から文字を構成する画素群である文字要素を抽出し、各々が文字要素を内包するように複数の文字領域を設定する文字領域設定手段と、
ある文字領域を起点として、所定の隣接条件を満たす文字領域を順に連結していくことで、同じ行に属すると推定される文字領域の組を抽出する行抽出処理を、起点とする文字領域を変えて繰り返し実行することにより、前記複数の文字領域を複数の行に分ける行認識手段と、
を有しており、
前記行認識手段は、
第１の文字領域を起点として行抽出処理を行う場合と、前記第１の文字領域とは異なる行にある第２の文字領域を起点として行抽出処理を行う場合とで、同じ第３の文字領域が重複して選ばれ得る場合には、
前記第１の文字領域を起点とする行の隣接文字領域に対する前記第３の文字領域の連結の強さと、前記第２の文字領域を起点とする行の隣接文字領域に対する前記第３の文字領域の連結の強さを比較し、連結が強い方の行に前記第３の文字領域を加入する
ことを特徴とする画像処理装置。
【請求項３】
前記行認識手段は、行の方向に対し直交する方向に関する、前記隣接文字領域と前記第３の文字領域の重なりの度合いが大きいほど、前記隣接文字領域とに対する前記第３の文字領域の連結が強いと評価する
ことを特徴とする請求項２に記載の画像処理装置。
【請求項４】
前記行認識手段は、前記隣接文字領域と前記第３の文字領域の大きさが類似しているほど、前記隣接文字領域に対する前記第３の文字領域の連結が強いと評価する
ことを特徴とする請求項２又は３に記載の画像処理装置。
【請求項５】
前記行認識手段は、前記隣接文字領域内の画像と前記第３の文字領域内の画像の色又は輝度の特徴が類似しているほど、前記隣接文字領域に対する前記第３の文字領域の連結が強いと評価する
ことを特徴とする請求項２、３又は４に記載の画像処理装置。
【請求項６】
複数行の文字列を含む画像から各行の領域を特定する画像処理装置であって、
各行の文字列の形式を定義するフォーマット文字列を取得するフォーマット文字列取得手段と、
画像から文字を構成する画素群である文字要素を抽出し、各々が文字要素を内包するように複数の文字領域を設定する文字領域設定手段と、
ある文字領域を起点として、所定の隣接条件を満たす文字領域を順に連結していくことで、同じ行に属すると推定される文字領域の組を抽出する行抽出処理を、起点とする文字領域を変えて繰り返し実行することにより、前記複数の文字領域を複数の行に分ける行認識手段と、
を有しており、
前記行認識手段は、
第１の文字領域を起点として行抽出処理を行う場合と、前記第１の文字領域とは異なる行にある第２の文字領域を起点として行抽出処理を行う場合とで、同じ第３の文字領域が重複して選ばれ得る場合には、
前記第１の文字領域を起点とする行に前記第３の文字領域を加入した場合に生成される複数の行を第１の候補、前記第２の文字領域を起点とする行に前記第３の文字領域を加入した場合に生成される複数の行を第２の候補とし、
前記第１の候補の各行から認識される文字列の形式と前記フォーマット文字列で定義された各行の文字列の形式との類似度と、前記第２の候補の各行から認識される文字列の形式と前記フォーマット文字列で定義された各行の文字列の形式との類似度とを比較し、類似度が高い方の候補を採用する
ことを特徴とする画像処理装置。
【請求項７】
前記フォーマット文字列は、文字列を構成する文字の数と、一部又は全部の文字の文字種とを少なくとも定義する情報である
ことを特徴とする請求項６に記載の画像処理装置。
【請求項８】
複数行の文字列を含む画像から各行の領域を特定する画像処理方法であって、
コンピュータが、画像から文字を構成する画素群である文字要素を抽出し、各々が文字要素を内包するように複数の文字領域を設定する文字領域設定ステップと、
コンピュータが、ある文字領域を起点として、所定の隣接条件を満たす文字領域を順に連結していくことで、同じ行に属すると推定される文字領域の組を抽出する行抽出処理を、起点とする文字領域を変えて繰り返し実行することにより、前記複数の文字領域を複数の行に分ける行認識ステップと、
を有しており、
前記行認識ステップにおいて、
第１の文字領域を起点として行抽出処理を行う場合と、前記第１の文字領域とは異なる行にある第２の文字領域を起点として行抽出処理を行う場合とで、同じ第３の文字領域が重複して選ばれ得る場合には、
前記第１の文字領域を起点とする行に前記第３の文字領域を加入した場合と、前記第２の文字領域を起点とする行に前記第３の文字領域を加入した場合とを比較することにより、前記第３の文字領域をいずれの行に加入すべきか決定する
ことを特徴とする画像処理方法。
【請求項９】
複数行の文字列を含む画像から各行の領域を特定する画像処理方法であって、
コンピュータが、画像から文字を構成する画素群である文字要素を抽出し、各々が文字要素を内包するように複数の文字領域を設定する文字領域設定ステップと、
コンピュータが、ある文字領域を起点として、所定の隣接条件を満たす文字領域を順に連結していくことで、同じ行に属すると推定される文字領域の組を抽出する行抽出処理を、起点とする文字領域を変えて繰り返し実行することにより、前記複数の文字領域を複数
の行に分ける行認識ステップと、
を有しており、
前記行認識ステップにおいて、
第１の文字領域を起点として行抽出処理を行う場合と、前記第１の文字領域とは異なる行にある第２の文字領域を起点として行抽出処理を行う場合とで、同じ第３の文字領域が重複して選ばれ得る場合には、
前記第１の文字領域を起点とする行の隣接文字領域に対する前記第３の文字領域の連結の強さと、前記第２の文字領域を起点とする行の隣接文字領域に対する前記第３の文字領域の連結の強さを比較し、連結が強い方の行に前記第３の文字領域を加入する
ことを特徴とする画像処理方法。
【請求項１０】
複数行の文字列を含む画像から各行の領域を特定する画像処理方法であって、
コンピュータが、各行の文字列の形式を定義するフォーマット文字列を取得するフォーマット文字列取得ステップと、
コンピュータが、画像から文字を構成する画素群である文字要素を抽出し、各々が文字要素を内包するように複数の文字領域を設定する文字領域設定ステップと、
コンピュータが、ある文字領域を起点として、所定の隣接条件を満たす文字領域を順に連結していくことで、同じ行に属すると推定される文字領域の組を抽出する行抽出処理を、起点とする文字領域を変えて繰り返し実行することにより、前記複数の文字領域を複数の行に分ける行認識ステップと、
を有しており、
前記行認識ステップにおいて、
第１の文字領域を起点として行抽出処理を行う場合と、前記第１の文字領域とは異なる行にある第２の文字領域を起点として行抽出処理を行う場合とで、同じ第３の文字領域が重複して選ばれ得る場合には、
前記第１の文字領域を起点とする行に前記第３の文字領域を加入した場合に生成される複数の行を第１の候補、前記第２の文字領域を起点とする行に前記第３の文字領域を加入した場合に生成される複数の行を第２の候補とし、
前記第１の候補の各行から認識される文字列の形式と前記フォーマット文字列で定義された各行の文字列の形式との類似度と、前記第２の候補の各行から認識される文字列の形式と前記フォーマット文字列で定義された各行の文字列の形式との類似度とを比較し、類似度が高い方の候補を採用する
ことを特徴とする画像処理方法。
【請求項１１】
請求項８、９又は１０に記載の画像処理方法の各ステップをコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、文字認識技術に関する。
【背景技術】
【０００２】
画像処理の一つである文字認識は、例えば、ファックスやスキャナにおける文字書き起こし自動化（ＯＣＲ：Optical Character Recognition）、生産ラインにおける印字文字
の検査など、様々な場面において幅広く普及している。ＦＡ業界では、近年、トレーサビリティ強化の潮流があり、工業製品などに印字された文字を高速かつ正確に読み取る技術のニーズがさらに増している。
【０００３】
文字認識は、大きく分けて、文字切り出し処理と文字認識処理の二段階の手順で実施される。最初に、文字切り出し処理によって、画像中の文字領域の検出、位置の特定、行やレイアウトの特定などが行われ、後段の文字認識処理において、各々の文字領域内の画素がどの文字を表しているかを同定するのである（文字を同定することを「文字を読む」ともいう）。
【０００４】
文字認識の正確性を向上するには、同定アルゴリズムの改良は当然重要であるが、前段の文字切り出し処理において、文字の行やレイアウトを正確に特定することも極めて重要である。例えば、食品パッケージでは、製造年月日と消費期限とが２段組み（２行）で印字されていることが多いが、文字切り出し処理において各々の文字（数字）がどちらの行に属しているかを特定し、１行目の文字群と２行目の文字群とを予め正しく分離しておかなければ、製造年月日や消費期限の読み取りに失敗してしまう。
【０００５】
行の認識（文字がどの行に属するかの判断）を誤る要因の一つに、文字列の湾曲（同じ行の文字列が曲線的に配置された状態）が挙げられる。文字列の湾曲が発生する代表的な理由には以下のものが挙げられる。
・平面でない物体表面上に文字が印字された場合
・文字が印字された物体自体が湾曲する場合（例えばシート状の物体や表面が伸縮する物体に印字したとき）
・文字列が曲線的に配置されたレイアウトデザインの場合
・プリンタの不具合などにより印字が曲がってしまった場合
また、画像処理の問題として、画像上に多数の文字が存在する場合や、ノイズ（汚れなど）を文字と誤認識した場合にも、行の認識を誤ることがある。
【０００６】
湾曲した文字列の行認識にかかわる先行技術として、特許文献１には、横書きの文書をスキャナで読み取り文字認識する際に、隣接する二つの文字が同一行であるかどうかを、隣接する二つの文字の外接矩形同士の縦方向の重なり度から判定し、それを繰り返すことにより同一行の文字群を抽出するという方法が開示されている。この方法は、文書原稿のように、行と行の間の空白が比較的大きく（つまり、行の分離性が高く）、且つ、各行の文字が整然と並んでいる画像に対しては、有効な方法かもしれない。しかしながら、行間が狭い場合や文字列の湾曲が大きい場合などには、行の誤認識が発生するおそれがある。例えば、図１５に示すような文字列（１行目：「１２３」、２行目：「ＡＢＣＤ」）を含む画像を想定する。特許文献１の方法では、「１」を起点に「１」→「２」→「３」と順にサーチしたところで、「３」と「Ｃ」が同一行にあると誤判定してしまうと、「３」→「Ｃ」→「Ｄ」のように別の行へとサーチが進行し、結果として「１２３ＣＤ」を一つの行として切り出してしまう。そして、次の行では、「Ａ」を起点に「Ａ」→「Ｂ」とサーチした時点で処理が終了するので、１行目の誤認識が原因で２行目の誤認識も招く結果と
なる。
【０００７】
また、特許文献２には、縦書きの行と横書きの行が混在する文書が与えられた場合に、行内の文字数、文字の近接性、文字のサイズや間隔の同質性などに基づき、縦書きの行か横書きの行かを判定する方法が開示されている。しかしながら、この方法は湾曲した文字列の行認識を目的としたものではないし、たとえこの方法を適用したとしても、図１５に示すような文字列の行を正確に認識することは困難である。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平８−４４８１９号公報
【特許文献２】特開２００８−２１７８３３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
本発明は、上記実情に鑑みてなされたものであり、文字切り出し処理における行認識の精度を向上するための技術を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記目的を達成するために、本発明では、以下の構成を採用する。
【００１１】
本発明に係る画像処理装置は、複数行の文字列を含む画像から各行の領域を特定する画像処理装置であって、画像から文字を構成する画素群である文字要素を抽出し、各々が文字要素を内包するように複数の文字領域を設定する文字領域設定手段と、ある文字領域を起点として、所定の隣接条件を満たす文字領域を順に連結していくことで、同じ行に属すると推定される文字領域の組を抽出する行抽出処理を、起点とする文字領域を変えて繰り返し実行することにより、前記複数の文字領域を複数の行に分ける行認識手段と、を有する画像処理装置である。前記行認識手段は、第１の文字領域を起点として行抽出処理を行う場合と、前記第１の文字領域とは異なる行にある第２の文字領域を起点として行抽出処理を行う場合とで、同じ第３の文字領域が重複して選ばれ得る場合には、前記第１の文字領域を起点とする行に前記第３の文字領域を加入した場合と、前記第２の文字領域を起点とする行に前記第３の文字領域を加入した場合とを比較することにより、前記第３の文字領域をいずれの行に加入すべきか決定する。
【００１２】
この構成によれば、第３の文字領域が第１の文字領域と同じ行に属する可能性と、第３の文字領域が第２の文字領域と同じ行に属する可能性の両者を考慮・比較して、第３の文字領域をいずれの行に加入するのが妥当かを決定する。したがって、従来よりも誤判定の少ない、高精度な行認識が可能となる。
【００１３】
「前記第１の文字領域を起点とする行に前記第３の文字領域を加入した場合と、前記第２の文字領域を起点とする行に前記第３の文字領域を加入した場合とを比較する」方法としては、第３の文字領域自体の局所的な連結性（いずれの行との連結性がよいか）を評価する方法や、第３の文字領域の連結先を変えたバリエーション（行の分け方の候補）を作成し、各候補の妥当性を総合的に評価する方法など、様々な方法を採り得る。
【００１４】
例えば、「局所的な連結性を評価する方法」としては、前記行認識手段が、前記第１の文字領域を起点とする行の隣接文字領域に対する前記第３の文字領域の連結の強さと、前記第２の文字領域を起点とする行の隣接文字領域に対する前記第３の文字領域の連結の強さを比較し、連結が強い方の行に前記第３の文字領域を加入する、という方法がある。
【００１５】
この方法によれば、隣接文字領域に対する第３の文字領域の局所的な連結性を評価するだけでよいので、高速かつ簡易な処理を実現できる。また、各行の行抽出処理を繰り返し実行する中で、誤った連結箇所を逐次修正することも可能となる。
【００１６】
「連結の強さ」を評価するための指標としては、例えば、「行の方向に対し直交する方向に関する、隣接文字領域と第３の文字領域の重なりの度合い」、「隣接文字領域と第３の文字領域の大きさ（高さ、幅、面積など）の類似度合い」、「隣接文字領域内の画像と第３の文字領域内の画像の色又は輝度の特徴の類似度合い」などの指標を好ましく用いることができる。また、「隣接文字領域と第３の文字領域の近さ（間隔の小ささ）」、「隣接文字領域に含まれる文字と第３の文字領域に含まれる文字との接続関係の強さ」などを「連結の強さ」を評価するための指標として用いることもできる。これらの指標のうち二つ以上の指標を組み合わせて用いてもよいし、これらの指標以外の指標を用いてもよい。
【００１７】
また、「複数の候補の妥当性を総合的に評価する方法」としては、各行の文字列の形式を定義するフォーマット文字列を利用する方法がある。具体的には、行認識手段が、前記第１の文字領域を起点とする行に前記第３の文字領域を加入した場合に生成される複数の行を第１の候補、前記第２の文字領域を起点とする行に前記第３の文字領域を加入した場合に生成される複数の行を第２の候補とし、前記第１の候補の各行から認識される文字列の形式と前記フォーマット文字列で定義された各行の文字列の形式との類似度と、前記第２の候補の各行から認識される文字列の形式と前記フォーマット文字列で定義された各行の文字列の形式との類似度とを比較し、類似度が高い方の候補を採用するとよい。
【００１８】
この方法によれば、可能性のある複数の候補の中から、フォーマット文字列で定義された文字列の形式に最も適合するものが選ばれるので、より誤判定の少ない高精度な行認識が可能となる。この方法は、例えば、賞味期限、ロット番号、自動車のナンバープレート、カード番号などのように、行数や各行の形式が既知の場合に好ましく適用することができる。
【００１９】
フォーマット文字列は、文字列を構成する文字の数と、一部又は全部の文字の文字種とを少なくとも定義する情報であるとよい。文字数と文字種が予め分かっているだけでも、行候補の妥当性判断に非常に有用である。
【００２０】
「行」とは、複数の文字の並びを意味し、本明細書では、横方向、縦方向、斜め方向など、いずれの方向の文字の並びも「行」と呼ぶ。「文字」には、英字、数字、記号、特殊文字、漢字、ひらがな、カタカナ、絵文字などいかなる種類の文字も含み得る。「文字要素」とは、文字を構成する画素群（複数の画素の塊）である。単一の文字を構成する画素群を文字要素として抽出することが望ましいが、文字の一部分に該当する画素群、又は、同じ行の複数文字を構成する画素群を文字要素として抽出してもよい。「文字領域」とは、一つの文字要素を内包するように設定される領域であり、例えば、文字要素の外接矩形などを用いることができる。
【００２１】
なお、本発明は、上記構成ないし機能の少なくとも一部を有する画像処理装置や、この画像処理装置を有する行認識装置、文字認識装置、検査装置、ロボットビジョンなどとして捉えることができる。また、本発明は、上記処理の少なくとも一部を有する画像処理方法、行認識方法、文字認識方法、検査方法や、これらの方法の各ステップをコンピュータに実行させるためのプログラムや、そのプログラムを記憶したコンピュータ読取可能な記録媒体として捉えることもできる。上記構成および処理の各々は技術的な矛盾が生じない限り互いに組み合わせて本発明を構成することができる。
【発明の効果】
【００２２】
本発明によれば、文字切り出し処理における行認識の精度を向上することができる。
【図面の簡単な説明】
【００２３】
【図１】視覚センサシステムの全体構成を示す図。
【図２】画像処理装置の概略構成図。
【図３】第１実施形態に係る文字認識処理の機能構成図。
【図４】第１実施形態に係る文字認識処理の全体フロー。
【図５】第１実施形態に係る行切り出し処理を説明する図。
【図６】第１実施形態に係る文字領域設定処理を説明する図。
【図７】第１実施形態に係る強制分割処理を説明する図。
【図８】第１実施形態に係る左優先ソートを説明する図。
【図９】第１実施形態に係る行認識処理を説明する図。
【図１０】第１実施形態に係る行認識処理の結果を示す図。
【図１１】第１実施形態に係る行認識処理における誤判定の修正手順を説明する図。
【図１２】第２実施形態に係る文字認識処理の機能構成図。
【図１３】第２実施形態に係る行候補切り出し処理を説明する図。
【図１４】第２実施形態に係るフォーマット照合処理を説明する図。
【図１５】行の誤判定の例を説明する図。
【発明を実施するための形態】
【００２４】
以下、図面を参照して本発明の好適な実施の形態について説明する。以下の実施形態では、本発明に係る画像処理装置を、製造物に印字された文字列の読み取りや検査を行う視覚センサシステムに適用した例を挙げる。製造物に印字された文字列は、行が湾曲していたり行間が狭い等の理由により行や文字の切り出しが難しいケースが多いので、本発明に係る文字切り出し処理を特に好ましく適用できる例の一つである。ただし、視覚センサシステムは本発明の適用例の一つにすぎず、行認識装置、文字認識装置、検査装置、ロボットビジョンなど、文字認識を利用するものであればいかなるシステムにも本発明を適用することができる。
【００２５】
＜第１実施形態＞
（視覚センサシステム）
図１を参照して、画像処理装置１００を含む視覚センサシステム１の全体構成について説明する。
【００２６】
視覚センサシステム１は、生産ラインなどに組み込まれ、製造物（ワーク２）を撮像することで得られる入力画像に対して文字認識を実行することで、ワーク２に印字された文字列の読み取りや検査を行うシステムである。ワーク２はベルトコンベヤなどの搬送機構６によって搬送され、カメラ８によって所定タイミングで撮像される。カメラ８で撮像した画像は、画像処理装置１００へ伝送される。画像処理装置１００は、入力画像に対して行及び文字の切り出し、文字の認識等の処理を実行し、その結果をディスプレイ１０２で表示したり、その結果を外部装置へ出力したりする。
【００２７】
ワーク２がカメラ８の視野内に到達したことは、搬送機構６に設置された光電センサ４によって検出される。具体的には、光電センサ４は、投光部４ｂから放射される光がワーク２で遮蔽されることを受光部４ａで検出することによって、ワーク２の到達を検出する。この光電センサ４のトリガー信号は、ＰＬＣ（Programmable Logic Controller）５へ
出力される。ＰＬＣ５は、トリガー信号を受信するとともに、搬送機構６の制御を司る。
【００２８】
（画像処理装置のハードウェア構成）
図２は、画像処理装置１００の概略構成図である。画像処理装置１００は、ＣＰＵ（Ce
ntral Processing Unit）１１０と、記憶部としてのメインメモリ１１２およびハードデ
ィスク１１４と、カメラインターフェイス１１６と、入力インターフェイス１１８と、表示コントローラ１２０と、ＰＬＣインターフェイス１２２と、通信インターフェイス１２４と、データリーダ／ライタ１２６とを含む。これらの各部は、バス１２８を介して、互いにデータ通信可能に接続される。カメラインターフェイス１１６は、ＣＰＵ１１０とカメラ８との間のデータ伝送を仲介する部分であり、カメラ８からの画像データを一時的に蓄積するための画像バッファ１１６ａを有している。入力インターフェイス１１８は、ＣＰＵ１１０とマウス１０４、キーボード、タッチパネルなどの入力部との間のデータ伝送を仲介する。表示コントローラ１２０は、ディスプレイ１０２に接続され、当該ディスプレイ１０２での表示を制御する。ＰＬＣインターフェイス１２２は、ＣＰＵ１１０とＰＬＣ５との間のデータ伝送を仲介する。通信インターフェイス１２４は、ＣＰＵ１１０とコンソール（あるいは、パーソナルコンピュータやサーバ装置）などとの間のデータ伝送を仲介する。データリーダ／ライタ１２６は、ＣＰＵ１１０と記憶媒体であるメモリカード１０６との間のデータ伝送を仲介する。
【００２９】
画像処理装置１００は、典型的には、汎用的なアーキテクチャを有しているコンピュータであり、ＣＰＵ１１０が、ハードディスク１１４又はメモリカード１０６に格納されたプログラム（命令コード）を実行することで、各種機能を提供する。このようなプログラムは、典型的には、メモリカード１０６や光ディスクなどのコンピュータ読取可能な記録媒体に格納された状態で流通する。
【００３０】
汎用的なコンピュータを画像処理装置１００として利用する場合には、本実施の形態に係る機能を提供するためのアプリケーションプログラムに加えて、コンピュータの基本的な機能を提供するためのＯＳ（Operating System）がインストールされていてもよい。この場合には、本実施の形態に係るプログラムは、ＯＳの一部として提供されるプログラムモジュールのうち、必要なモジュールを所定の配列で所定のタイミングで呼出して処理を実行させるものであってもよい。すなわち、本実施の形態に係るプログラム自体は、上記のようなモジュールを含んでおらず、ＯＳと協働して処理が実行されてもよい。本実施の形態に係るプログラムとしては、このような一部のモジュールを含まない形態であってもよい。
【００３１】
さらに、本実施の形態に係るプログラムは、他のプログラムの一部に組込まれて提供されるものであってもよい。その場合にも、プログラム自体には、上記のような組合せられる他のプログラムに含まれるモジュールを含んでおらず、当該他のプログラムと協働して処理が実行される。すなわち、本実施の形態に係るプログラムとしては、このような他のプログラムに組込まれた形態であってもよい。なお、プログラムの実行により提供される機能の一部もしくは全部を専用のハードウェア回路として実装してもよい。
【００３２】
（画像処理装置の機能構成）
図３に、第１実施形態に係る文字認識処理を実現するための機能構成を示す。画像処理装置１００は、文字認識処理に関わる機能として、画像入力部１３０、前処理部１３１、行切り出し部１３２、文字切り出し部１３３、文字認識部１３４、後処理部１３５、出力部１３６を含んでいる。これらの機能ブロックは、画像処理装置１００のＣＰＵ１１０がコンピュータプログラムを実行することにより実現される。本実施形態においては、行切り出し部１３２が本発明の文字領域設定手段及び行認識手段に対応する。
【００３３】
（文字認識処理の全体フロー）
図４を参照して、図３に示した各機能ブロックの動作、及び、文字認識処理の全体フローについて説明する。
【００３４】
ＰＬＣ５からのトリガー信号が入力されると、画像入力部１３０がカメラ８からワーク２の画像を取り込む（ステップＳ１００）。入力画像の形式（解像度、カラー／モノクロ、階調、データフォーマットなど）は任意であり、ワーク２の種類やセンシングの目的に合わせて適宜選択すればよい。図４のＰ１００は、入力画像の一例であり、ワーク２の上面（曲面）に印字された文字列が写っている。
【００３５】
次に、前処理部１３１が、入力画像に対して２値化などの前処理を施し、文字部分と背景部分を分離する（ステップＳ１０１）。２値化の方法としては、例えば、大津法、動的２値化法、Ｎｉｂｌａｃｋ法などいかなる方法を用いてもよい。また、ノイズ除去などの目的で、２値化の前に平滑化処理を施してもよい。平滑化には例えばガウスフィルタ、メディアンフィルタなどを用いることができる。さらに必要に応じて、画像の拡大、縮小、回転、トリミングなどを行い、文字認識に適した画像を得てもよい。図４のＰ１０１は、前処理後の２値化画像の一例であり、文字の部分が黒画素、その他の部分が白画素となっている。
【００３６】
次に、行切り出し部１３２が、２値化画像から個々の文字領域を検出し、検出した複数の文字領域を複数の行に分けることで、各行の領域を特定する（ステップＳ１０２）。この処理を行の切り出し又は行認識と呼ぶ。この処理の詳細は後述する。図４のＰ１０２は、行認識の結果であり、１行目に属する文字領域が破線、２行目に属する文字領域が実線で示されている。
【００３７】
次に、文字切り出し部１３３が、各行に属する文字を１文字ずつ切り出す（ステップＳ１０３）。具体的には、文字切り出し部１３３は、各行の文字領域を順に調べ、一つの文字領域に複数の文字が含まれていたらそれらを分離し、逆に文字領域内に文字の一部しか含まれていない場合には周辺の文字領域を統合する。これにより各行に含まれている黒画素を文字単位に切り出す。図４のＰ１０３は、文字切り出しの結果である。
【００３８】
次に、文字認識部１３４は、ステップＳ１０３で特定した１文字ごとに、文字認識（どの文字であるかの同定）を実行する（ステップＳ１０４）。文字認識には多くの方法が存在し、そのどれを使ってもよい。例えば、輝度ベースマッチング、エッジ特徴マッチングなどが考えられる。
【００３９】
次に、後処理部１３５が、必要に応じて、文字の並びなどを考慮し、ステップＳ１０４の認識結果の修正を行う（ステップＳ１０５）。最後に、出力部１３６が、認識結果である文字列をディスプレイ１０２もしくは外部装置に出力し（ステップＳ１０６）、処理を終了する。
【００４０】
（行切り出し処理）
図５を参照して、図４のステップＳ１０２の行切り出し処理の詳細について説明する。行切り出し処理は、（１）文字領域設定、（２）強制分割、（３）左優先ソート、（４）行認識という手順で行われる。ただし、（２）強制分割と（３）左優先ソートは省略可能な処理である。以下、（１）〜（４）の各々の処理について説明する。
【００４１】
（１）文字領域設定
行切り出し部１３２は、前処理によって生成された２値化画像と設定パラメータを受け取り、文字領域設定処理を実行する。設定パラメータとしては、文字幅と文字高さの情報が与えられる。文字幅と文字高さは、例えば「２０画素」や「７．５ｍｍ」のように単一の値で与えてもよいし、画像中に異なるサイズの文字が含まれ得る場合は、「１０画素〜２０画素」や「６．０ｍｍ〜１０ｍｍ」のように値域（最小値と最大値）で与えてもよい。
【００４２】
図６（Ａ）は、文字領域設定処理の流れを図示したものである。まず、行切り出し部１３２は、２値化画像に対してラベリングを行う。具体的には、行切り出し部１３２は、２値化画像から連結成分（ひとまとまりに繋がっている画素群）を検出し、検出された連結成分ごとに異なるラベル（数字）を割り当てる。同一ラベルが付された連結成分（画素群）を文字要素と呼ぶ。次に、行切り出し部１３２は、各文字要素を内包するように複数の文字領域を設定する。本例では、文字要素の外接矩形を計算し、これを文字領域として扱う。最後に、行切り出し部１３２は、文字領域の幅、高さが、設定パラメータとして与えられた「文字幅」、「文字高さ」と比較して一定値以下（例えば３０％以下）であれば、当該文字領域に含まれる文字要素はノイズとみなし削除する。なお、検出された複数の文字領域の中で、有意に小さい領域（例えば、検出された文字領域の平均的な幅、高さに対し、一定値以下（例えば３０％以下）のもの）をノイズとみなして削除することもできる。
【００４３】
図６（Ａ）に示す例では、６個の文字領域が得られていることがわかる。文字領域設定処理の結果として、ラベル画像と文字領域座標データが生成される。ラベル画像とは、画素毎にラベル番号が記述された画像である。文字領域座標データは、図６（Ｂ）に示すように、各文字領域の座標（例えば、左上と右下の２点の座標）がラベル番号順に記述されたデータである。
【００４４】
（２）強制分割
行切り出し部１３２は、文字領域座標データに基づき各文字領域の高さを調べ、高さが所定の閾値を超える文字領域について、強制分割を実施する。閾値は、設定パラメータで与えられた文字高さを基準にして定めるとよい（例えば、文字高さの１３０％など）。図７に、強制分割の一例を示す。図７の例のように、文字が他の模様（この例ではバーコードのバー）とつながっていると、ラベリング処理においてそれらが一つの要素として認識されるため、文字領域の高さが閾値を超える。行切り出し部１３２は、ラベル画像から高さが閾値を超える文字領域の部分を抽出し、横方向に黒画素をカウントした横投影ヒストグラムを作成する。そして、縦方向にヒストグラムの谷をサーチし、谷が検出されたらその高さで文字領域を分割する。強制分割を実施した場合には、分割した文字領域に新たなラベル番号を付与し、文字領域座標データを更新する。なお、図７に示した方法以外にも、強制分割の方法には様々な方法があり、そのいずれを用いてもよい。
【００４５】
（３）左優先ソート
行切り出し部１３２は、文字領域座標データに基づき各文字領域に対し、左優先ソートをかける。具体的には、左上点のＸ座標（横方向座標）が小さい文字領域から順に、ラベル番号の振り直しを行う。ここでは、ラベル画像自体を修正する必要はなく、文字領域座標データにおけるラベル番号及び記述順を更新するだけでよい。図８は、ソート後のラベル番号を示している。符号Ｒｘは、ラベル番号：ｘが付された文字領域を表す。
【００４６】
（４）行認識
行切り出し部１３２は、ソート後の文字領域座標データを用いて、行認識（行切り出し）を実施する。本実施形態では、ある文字領域を起点として、所定の隣接条件を満たす文字領域を順に連結していくことで、同じ行に属すると推定される文字領域の組を抽出する行抽出処理（行サーチとも呼ぶ）を、起点とする文字領域を変えて繰り返し実行することで、文字領域座標データに含まれる複数の文字領域を複数の行に切り分ける、という操作を行う。
【００４７】
図９（Ａ）は、図８に示す文字領域群に対し、行認識を実施した場合の例を模式的に示している。
【００４８】
まず、行切り出し部１３２は、最もラベル番号が小さい文字領域Ｒ１を起点とし、１行目の行抽出処理を行う。具体的には、行切り出し部１３２が、起点となる文字領域Ｒ１に対し行番号：１を付与した後、文字領域Ｒ１を注目文字領域に設定する。そして、注目文字領域Ｒ１の次にラベル番号が小さい文字領域Ｒ２から順に、注目文字領域Ｒ１との隣接関係を評価し、所定の隣接条件を満たす文字領域を検出する。
【００４９】
本実施形態では、図９（Ｂ）に示すように、注目文字領域の高さＴＬに対する二つの文字領域の高さ方向の重なり幅ＳＬの比を「重なり率Ｒ（＝ＳＬ／ＴＬ）」と定義し、重なり率Ｒが所定の閾値（例えば１／３）よりも大きい場合に、二つの文字領域が隣接していると判断する。なお、閾値の値は適宜変更することができる。また、重なり率の定義式も上記の例に限らない。例えば、注目文字領域でない方の文字領域の高さＴＬ´に対する重なり幅ＳＬの比を考慮してもよい。
【００５０】
これより、図９（Ａ）に示すように、注目文字領域Ｒ１に対して隣接条件を満たす文字領域（隣接文字領域と呼ぶ）としてＲ３が検出される。行切り出し部１３２は、検出された隣接文字領域Ｒ３に現在の行番号：１を付与し（この処理を、文字領域Ｒ３を文字領域Ｒ１に連結する、又は、文字領域Ｒ３を文字領域Ｒ１を起点とする行に加入する、とも表現する。）、この文字領域Ｒ３を新たな注目文字領域に設定して、さらなる隣接文字領域を探索する。この探索を、隣接文字領域が見つからなくなるまで行う。その結果、図９（Ａ）に示すように、１行目を構成する文字領域の組として「Ｒ１→Ｒ３→Ｒ５→Ｒ７」が抽出される。
【００５１】
１行目の探索が終了したら、行切り出し部１３２は、行番号が付与されていない文字領域の中から最もラベル番号の小さい文字領域を、次の（２行目の）起点に設定する。図９（Ａ）の例では、文字領域Ｒ２が起点として選ばれ、行番号：２が付与される。これ以降の処理は、１行目の処理と同様である。なお、本実施形態では、既に行番号が付与されている文字領域も、隣接文字領域の探索対象に含める。つまり、注目文字領域がＲ２の場合は、Ｒ３、Ｒ４、Ｒ５・・・の順に探索が進むのである。このような方法を採る理由は、誤判定の修正（連結の繋ぎ換え）を可能とするためである（詳しくは図１１を参照して後述する）。
【００５２】
図９（Ａ）の例では、２行目の探索において、「Ｒ２→Ｒ４→Ｒ６→Ｒ８」の文字領域の組が抽出される。これですべての文字領域に行番号が付与されたので、行認識は完了する。行認識の結果は、図１０のように、文字領域座標データに行番号を付したものが生成される。
【００５３】
（誤判定の修正）
図１１を参照して、（４）行認識の処理における誤判定の修正手順について説明する。図１１の画像には、「１２３」と「ＡＢＣＤ」の２行の文字列が含まれているが、各文字列の湾曲が大きいため、前述した隣接条件に基づく連結処理では、行の判定を誤る可能性が高い。
【００５４】
図１１の画像に対し、文字領域Ｒ１（文字「１」）を起点として１行目の探索を行うと、「Ｒ１→Ｒ３→Ｒ５」と連結された後、文字領域Ｒ６がＲ５に対し隣接条件を満たすと判定され（誤判定）、「Ｒ１→Ｒ３→Ｒ５→Ｒ６→Ｒ７」の組（文字列「１２３ＣＤ」）が一つの行として抽出される。つまり、１行目の探索終了後は、文字領域Ｒ１、Ｒ３、Ｒ５、Ｒ６、Ｒ７に行番号：１が付与された状態となる。
【００５５】
続いて、行切り出し部１３２が、文字領域Ｒ２（文字「Ａ」）を起点として２行目の探
索を行う。このとき、「Ｒ２→Ｒ４」と連結された後、文字領域Ｒ６がＲ４に対し隣接条件を満たすと判定される（正しい判定）。すなわち、文字領域Ｒ１（第１の文字領域）を起点として行抽出処理を行う場合と、文字領域Ｒ２（第２の文字領域）を起点として行抽出処理を行う場合とで、同じ文字領域Ｒ６（第３の文字領域）が重複して選ばれる、という状況が発生する。これは、隣接条件を満たすと判定された文字領域Ｒ６に既に行番号が付されているかどうかで判断することができる。
【００５６】
このような状況が発生した場合、行切り出し部１３２は、１行目に文字領域Ｒ６を加入した場合と２行目に文字領域Ｒ６を加入した場合のどちらが妥当かを比較し、文字領域Ｒ６を加入すべき行を決定する。具体的には、行切り出し部１３２は、１行目における文字領域Ｒ５とＲ６の重なり率と、２行目における文字領域Ｒ４とＲ６の重なり率とを比較して、重なり率の大きい方が連結が強いとみなし、連結が強い方の行に文字領域Ｒ６を加入する。図１１の場合、２行目の文字領域Ｒ４に対する連結の方が強いので、行切り出し部１３２は、文字領域Ｒ６の行番号を「１」から「２」に付け替える（この操作は、文字領域Ｒ６を１行目から２行目に繋ぎ換える操作に相当する）。その後、探索を進めることで、文字領域Ｒ７とＲ８の行番号も「２」に修正され、最終結果として、修正された１行目「Ｒ１→Ｒ３→Ｒ５」と、２行目「Ｒ２→Ｒ４→Ｒ６→Ｒ７」が得られる。このように、１行目の探索において誤判定が発生した場合であっても、それが修正され、正解の行認識結果を得ることができる。
【００５７】
なお、ここでは、高さ方向の重なり率（重なり度合い）を連結の強さを評価するための指標として用いたが、これに限らず他の指標を用いてもよい。例えば、行の方向が縦方向の場合には、文字の幅方向の重なり度合いを評価すべきである。つまり、行の方向に対し直交する方向の重なり度合いをみるのである。また、他の指標としては、二つの文字領域の大きさの類似度合いを用いてもよい。つまり、同じ行に含まれる文字は同じサイズであることが多いので、二つの文字領域の高さ、幅、面積などが類似しているほど連結が強いと評価する。また、他の指標としては、二つの文字領域の画像の色又は輝度の特徴の類似度合いを用いてもよい。つまり、同じ行に含まれる文字は同じ色や輝度であることが多いので、両画像（文字の画像）の色や輝度が似ているほど連結が強いと評価するのである。さらには、二つの文字領域の近さ（間隔の小ささ）や、二つの文字領域に含まれる文字同士の接続関係の強さなどを評価してもよい。例えば、この二つの文字から（又はその周囲の文字を加えて）形成される文字列が単語辞書に登録されている語句である場合とか、二つの文字の文字種が同じである場合には、接続関係が強いと評価することができる。もちろん、これらの指標のうち二つ以上の指標を組み合わせて連結の強さを評価してもよい。
【００５８】
（第１実施形態の利点）
以上述べた第１実施形態の構成によれば、例えば図１１のようなケースにおいて、文字領域Ｒ６が１行目に属する可能性と２行目に属する可能性の両者を考慮・比較して、文字領域Ｒ６をいずれの行に加入するのが妥当か決定される。したがって、従来よりも誤判定の少ない、高精度な行認識が可能となる。しかも、文字領域Ｒ６の局所的な連結性を評価するだけでよいので、高速かつ簡易な処理を実現できる。また、各行の行抽出処理を繰り返し実行する中で、誤った連結箇所を逐次修正することが可能である。
【００５９】
＜第２実施形態＞
次に本発明の第２実施形態について説明する。例えば、賞味期限、ロット番号、自動車のナンバープレート、カード番号などのように、行数や各行の形式（文字数や文字種など）が既知の場合は、その情報を事前に知識として与えることで、より誤判定の少ない行認識が可能になると期待できる。そこで第２実施形態では、各行の文字列の形式を定義する「フォーマット文字列」を行認識に利用する。なお、行認識の処理以外の構成は第１実施形態のものと同じであるため、詳しい説明を省略する。
【００６０】
（画像処理装置の機能構成）
図１２に、第２実施形態に係る文字認識処理を実現するための機能構成を示す。画像処理装置１００は、文字認識処理に関わる機能として、画像入力部１３０、前処理部１３１、行候補切り出し部１３７、文字切り出し部１３３、文字認識部１３４、フォーマット文字列取得部１３８、フォーマット照合部１３９、出力部１３６を含んでいる。これらの機能ブロックは、画像処理装置１００のＣＰＵ１１０がコンピュータプログラムを実行することにより実現される。本実施形態においては、行候補切り出し部１３７が本発明の文字領域設定手段に対応し、行候補切り出し部１３７及びフォーマット照合部１３９が本発明の行認識手段に対応し、フォーマット文字列取得部１３８が本発明のフォーマット文字列取得手段に対応する。
【００６１】
（行候補切り出し処理）
図１３を参照して、行候補切り出し部１３７による行候補切り出し処理について説明する。行候補切り出し処理は、第１実施形態の行切り出し処理と殆ど同じであるが、複数の行に対して連結する可能性がある文字領域が検出された場合に、連結の強さに基づく繋ぎ換えを行うのではなく、考えうる行候補をすべて抽出する点が異なる。
【００６２】
図１３に示すように、１行目の探索では、「Ｒ１→Ｒ３→Ｒ５→Ｒ６→Ｒ７」の文字領域の組が抽出される。続く２行目の探索において、「Ｒ２→Ｒ４」と連結された後、１行目で選択済みの文字領域Ｒ６がＲ４に対して隣接条件を満たすと判定される。このような状況が発生した場合、行候補切り出し部１３７は、文字領域Ｒ６をＲ４に連結した場合の行候補も作成する。その結果、図１３に示すように、「Ｒ１→Ｒ３→Ｒ５→Ｒ６→Ｒ７」と「Ｒ２→Ｒ４→Ｒ６→Ｒ７」の２種類の行候補が得られることとなる。
【００６３】
次に、行候補切り出し部１３７は、行候補「Ｒ１→Ｒ３→Ｒ５→Ｒ６→Ｒ７」、「Ｒ２→Ｒ４→Ｒ６→Ｒ７」のそれぞれから、互いに重複する文字領域を除外したものを作成し、それらも行候補に加える。この例では、「Ｒ６→Ｒ７」が重複しているので、これを除いた「Ｒ１→Ｒ３→Ｒ５」と「Ｒ２→Ｒ４」が作成される。そして、これらの行候補を矛盾の無いように（つまり同じ文字領域が複数の行に所属しないように）組み合わせることで、可能性のある行候補の組み合わせを作成する。その結果、図１３に示すように、「Ｒ１→Ｒ３→Ｒ５→Ｒ６→Ｒ７」と「Ｒ２→Ｒ４」からなる組み合わせと、「Ｒ１→Ｒ３→Ｒ５」と「Ｒ２→Ｒ４→Ｒ６→Ｒ７」からなる組み合わせの二つの候補が得られる。これらの候補は、文字領域Ｒ６の連結先を変えた場合の行の分け方のバリエーションを表している。
【００６４】
行候補切り出し部１３７は、抽出されたすべての候補を文字切り出し部１３３に引き渡す。そして、文字切り出し部１３３が、各候補に対して文字の切り出しを行い、文字認識部１３４が、各候補の文字切り出し結果に対し文字認識を実施する。図１４に、それぞれの候補に対する文字認識結果の例を示す。これらの文字認識結果は、フォーマット照合部１３９に引き渡され、フォーマット文字列と比較される。
【００６５】
（フォーマット文字列）
本実施形態で用いるフォーマット文字列は、認識対象の文字別に文字種又は文字を指定するものである。言い換えれば、フォーマット文字列は、認識対象の文字列について、文字数と、文字種又は文字の組み合わせを指定するものである。
【００６６】
具体的には、フォーマット文字列は、認識対象の文字別に文字種の指定（英数字、英字、数字、記号、特殊文字、漢字、ひらがな、カタカナなど）、文字そのものの指定（アルファベットの各文字「Ａ」，「Ｂ」，…、記号の各文字「’」，「−」，…、ひらがなの
各文字「あ」，「い」，…、カタカナの各文字「ア」，「イ」，…）、フォント種の指定、文字サイズ（フォントサイズ）の指定などを含む。さらに、フォーマット文字列を用いて、文字に加えて、シンボルを指定するようにしてもよい。
【００６７】
本実施形態では、フォーマット文字列として、「？」、「＃」、「＄」、「＠」の記号を用いる。各記号の意味は、以下のとおりである。
【００６８】
？：任意の文字（文字種を問わない）
＃：数字（０〜９）
＄：英字（Ａ〜Ｚ、ａ〜ｚ）
＠：記号（「’」、「−」、「：」、「￥」など）
ただし、これはあくまで一例であり、フォーマット文字列の書式（表現形式）は任意に取り決めることができる。
【００６９】
上記書式に従うと、図１３に含まれている文字列の形式は以下のように定義できる。
文字列「１２３」    ⇔  フォーマット文字列「＃＃＃」
文字列「ＡＢＣＤ」  ⇔  フォーマット文字列「＄＄＄＄」
【００７０】
ユーザは、認識対象とする文字列に応じてフォーマット文字列を作成し、画像処理装置１００に登録することができる。
【００７１】
（フォーマット照合）
図１４を参照して、フォーマット照合部１３９の動作を説明する。
図１４に示すように、複数の候補についての文字認識結果が得られたら、フォーマット文字列取得部１３８により、対応するフォーマット文字列の取得を行う。そして、フォーマット照合部１３９が、各候補の文字認識結果における文字列の形式（例えば文字数、文字種）と、フォーマット文字列で定義されている文字列の形式との類似度を計算する。類似度としては、例えば、文字種が一致している文字の数や、各行の文字数の一致度合いなどを利用することができる。フォーマット照合部１３９は、各候補の類似度を比較し、類似度が最も高い候補を採用する。
【００７２】
図１４の例では、一つ目の候補の文字認識結果は「１２３ＣＤ」及び「ＡＢ」であり、フォーマット文字列「＃＃＃（数字＋数字＋数字）」及び「＄＄＄＄（英字＋英字＋英字＋英字」との類似度は「５」である。一方、二つ目の候補の文字認識結果は「１２３」及び「ＡＢＣＤ」であり、その類似度は「１２」と高い値が得られている。したがって、フォーマット照合部１３９は、二つ目の候補を最終的な行認識結果として採用する。
【００７３】
以上述べた第２実施形態の構成によれば、可能性のある複数の候補の中から、フォーマット文字列で定義された形式に最も適合するものが選ばれるので、第１実施形態よりもさらに誤判定の少ない高精度な行認識及び文字認識が可能となる。
【符号の説明】
【００７４】
１：視覚センサシステム
２：ワーク
４：光電センサ
８：カメラ
１００：画像処理装置
１３０：画像入力部
１３１：前処理部
１３２：行切り出し部
１３３：文字切り出し部
１３４：文字認識部
１３５：後処理部
１３６：出力部
１３７：行候補切り出し部
１３８：フォーマット文字列取得部
１３８：フォーマット照合部
１３９：フォーマット照合部
【図１】
2014228953.tif 000003
【図２】
2014228953.tif 000004
【図３】
2014228953.tif 000005
【図４】
2014228953.tif 000006
【図５】
2014228953.tif 000007
【図６】
2014228953.tif 000008
【図７】
2014228953.tif 000009
【図８】
2014228953.tif 000010
【図９】
2014228953.tif 000011
【図１０】
2014228953.tif 000012
【図１１】
2014228953.tif 000013
【図１２】
2014228953.tif 000014
【図１３】
2014228953.tif 000015
【図１４】
2014228953.tif 000016
【図１５】
2014228953.tif 000017