コンテンツにスキップ
ステージングサーバー
開発サーバー

OCR vTool#

OCR vToolは、画像内のテキスト(単語)を読み取ることができる光学文字認識(OCR)を実行します。

光学文字認識の主な目的は、賞味期限、シリアル番号、製品ラベルなど、画像内のオブジェクトを識別したり、オブジェクト上の特定の情報を読み取ったりすることです。

OCR vToolは、Image入力ピンを介して画像を受け取ります。テキストと、検出された単語のセグメント化された領域は、TextsおよびRegions出力ピンから出力されます。

OCR vToolのライセンスを購入するには、Baslerウェブサイトをご覧ください。

OCR vTool

仕組み#

指定された関心領域(ROI)内で、OCR vToolはテキストを単語と個々の文字にセグメント化し、各文字を文字、数字、または句読点などの特殊文字として分類します。

その名称に反して、OCR vToolは単一の文字ではなく単語を読み取ります。最小単語長は2文字です。

テキストが複数行にわたる場合、各行は少なくとも1つの単語として扱われます。1行内の単語間に大きな間隔がある場合、アルゴリズムはこれらの単語を別個のエンティティとして扱います。

4ステップのウィザードにより、vToolの設定がスムーズに行えます。設定がもたらす効果について、即座にフィードバックが得られます。各ステップの詳細については、以下のセクションを参照してください。

プレビューエリア#

プレビュー領域は、vToolの設定に行った変更を即座に確認するのに役立つツールです。

プレビュー領域の上部には2つのボタンがあり、1つはセグメント化された領域と認識された文字の周囲のバウンディングボックスの表示を切り替えるため、もう1つは領域をハイライトするためのものです。

バウンディングボックス、認識された文字、および領域ハイライトが表示されるプレビューエリア

バウンディングボックスと認識された文字の表示#

このボタンを使用すると、セグメント化された領域の周囲のバウンディングボックスの表示/非表示を切り替えることができます:

バウンディングボックスと認識された文字の表示/非表示

認識された各文字の上に、結果の文字が表示されます。これにより、認識が正しく行われたかどうかを素早く確認できます。

領域ハイライトがオフになっているプレビューエリア

領域のハイライト表示#

このボタンを使用すると、セグメント化された領域をハイライトできます:

領域ハイライトのアイコン

これにより、文字が完全に認識されたのか、部分的にしか認識されていないのかを簡単に確認できます。これは、コントラストなどのセグメンテーション設定を微調整する際に役立ちます。

バウンディングボックスと認識された文字が非表示になっているプレビューエリア

ステップ 1:初期設定#

ディスクから、またはライブカメラ画像を使用して、適切なティーチング画像を読み込むことから始めます。ティーチング画像は、以下の点に関して検査画像を代表するものである必要があります:

  • テキストの位置と向き
  • 文字のサイズ(文字の寸法を手動で指定する場合)
    自動モードでは、文字のサイズを変更することができます。

OCR vToolを設定する際は、複数の異なるサンプル画像を使用することをお勧めします。そうすることで、テキストの画像 Quality をより良く評価し、セグメンテーション結果や候補の信頼度を確認できるようになります。これらのサンプル画像は、アプリケーションで発生すると予想される文字セット全体を理想的にカバーしている必要があります。

長方形の設定#

画像を読み込むと、画像内に長方形が表示されます。これは、テキストが配置されている領域をマークするために使用されます。長方形のハンドルをドラッグするか、プレビューエリアの左側にある入力ボックスに手動で値を入力することで、その位置、向き、およびサイズを調整できます。

OCRアルゴリズムは文字と不要な画像要素(クラッター)やノイズを区別できないため、領域には読み取りたいテキストのみを含める必要があります。クラッターやノイズを完全に回避できない場合は、後処理ステップの追加や、複数のテキスト領域を定義するための他のOCR vToolの追加などの適切な対策を講じる必要があります。また、画像ごとにテキストがすべての方向にわずかに移動する可能性があるため、長方形をテキストの周囲にぴったり合わせすぎないようにしてください。

領域を定義する際は、領域の長方形の中を通る矢印に注意してください。これは読み取り方向を示しています。他の方向に進むテキストは読み取ることができません。

OCR vToolが安定して動作するためには、処理したいすべての画像間でテキストの向きが多かれ少なかれ同じである必要があります。わずかな変動(数度程度)は許容されます。テキストを左から右へ読み取れるようにカメラを配置することをお勧めします。テキストの向きが異なる(ただし一定である)場合は、矢印がテキストの読み取り方向を指していることを確認しながら、それに応じて領域の長方形を配置してください。

テキストの位置が大きく変動し、テキスト周囲の背景スペースが限られている場合は、前処理ステップとしてImage Alignmentを追加して、テキストの向きと位置を安定させる必要があります。

これは、テキストに沿うように長方形が少し回転しているサンプル画像です。

OCR Basic vTool - 長方形設定の例

フォントの設定#

画像内のテキストに合ったフォントと対応する文字セットを選択します。通常、これはアプリケーションの仕様や印刷プロセスによって決定されます。

次の表に、利用可能なフォントとそれらの外観の例を示します:

フォント名 説明 外観
スタンダードミックス 文書でよく使用される、セリフ(飾り線)の有無によるさまざまなフォント スタンダード・ミックス・フォント
スタンダード・サンセリフ 文書でよく使用される、セリフのないさまざまなオフィス向けフォント スタンダード・サンセリフ・フォント
OCR-A OCR-A規格で定義されているもの OCR-Aフォント
OCR-B OCR-B規格で定義されているもの OCR-Bフォント
ドットプリント ドットプリンターで出力される、さまざまなドット印字フォント ドット・プリント・フォント
Pharma 製薬業界で使用されるセリフなしフォント Pharmaフォント
SEMI SEMI規格で定義されている、半導体業界で使用されるフォント SEMIフォント
手書き 手書き数字 ハンドライティング・フォント

フォントに応じて、さまざまな文字セットを利用できます。文字セットには、以下のサブセットの一部またはすべてを含めることができます:

  • 大文字
  • 小文字
  • 数字
  • 特殊文字
    認識できる特殊文字はフォントによって異なります。

次の表に、各フォントで認識できる文字を示します。

フォント名 大文字 小文字 数字 特殊文字
スタンダードミックス はい はい はい - = + < > . # $ % & ( ) @ * e £ ¥
スタンダード・サンセリフ はい はい はい - / + . $ % * e £ ¥
OCR-A はい はい はい - ? ! / { } = + < > . # $ % & ( ) @ * e £ ¥
OCR-B はい はい はい - ? ! / { } = + < > . # $ % & ( ) @ * e £ ¥
ドットプリント はい いいえ はい - / . * :
Pharma はい いいえ はい - / . ( ) :
SEMI はい いいえ はい - .
手書き いいえ いいえ はい n/a

リジェクションクラス#

リジェクションクラスを使用すると、曖昧な結果、つまりvToolが認識できなかった文字に対処できます。これらの文字は除外文字として分類され、pylon Viewerでの表示場所に応じて異なる疑問符のアイコンで表されます。

このアイコンは設定ダイアログで使用されます。

設定ダイアログにおけるリジェクションクラスの疑問符アイコン

このアイコンはピンデータビューで使用されます。

ピンデータビューにおけるリジェクションクラスの疑問符アイコン

リジェクションクラスを使用することで、結果の信頼度をより適切に評価できます。とりわけ、信頼度には、文字が学習済みフォントにどれだけ適合しているかに加え、文字の印刷品質や画質が反映されます。

信頼度が最も高い結果がリジェクションクラスに属している場合、画像のこの部分を特定の文字として明確に割り当てることはできません。これは、画像の汚れや不完全な文字印刷が原因である可能性があります。これが頻繁に発生する場合は、画質が低下している兆候です。その場合は、画像の品質を改善するか、後処理のステップでそのような文字を読み取り不可として宣言することができます。このアプローチをとれば、代わりに信頼度の低い文字を選択できるため、より安全確実です。

分類結果が頻繁に曖昧になる場合は、正規表現を使用して単語修正を行うことを検討してください。

常に文字を返すようにするには、Allow rejectionsオプションを無効にします。

自分に適した設定を見つけるには、オプションの有効化と無効化を切り替えて、ステップ4の結果が候補リストや認識された単語に関してどのように異なるかを確認してください。

ステップ 2:文字の寸法#

文字のセグメンテーションは、文字の寸法(幅、高さ、ストローク幅など)に関するいくつかの前提に基づいています。OCR vToolは、画像データからこれらの寸法を直接導出する自動アルゴリズムをサポートしています。または、寸法の希望する範囲を手動で指定することもできます。20~30ピクセルの文字高さは適切なサイズ範囲ですが、より大きな文字サイズを指定することもできます。20ピクセル未満の文字は、信頼性の高い認識ができなくなります。

情報

テキスト内や画像間で文字のサイズが異なる場合は、自動モードを使用してください。これにより、サイズに関係なくすべての文字を読み取ることができます。

寸法を手動で指定する一般的なユースケースは、自動モードでセグメンテーション内の不要なノイズを除外できない場合です。その場合、寸法を手動で指定することで、不要な画像要素を排除できる可能性があります。

ステップ 3:セグメンテーションの設定#

Contrast#

画像内の文字のセグメンテーションは、指定された最小コントラスト値をしきい値とするしきい値処理メカニズムに基づいています。最小コントラストを調整し、プレビュー領域でセグメンテーション結果を確認してください。視覚化を改善するには、プレビュー領域の上にあるトグルボタンを使用して領域セグメンテーションビューを有効にします。

すべての文字がセグメンテーションされ、正しく読み取られる最小コントラスト設定を選択します。最小コントラストを低く設定しすぎると、不要なノイズが検出される可能性があるため避けてください。

利用可能なフォントは、明るい背景上の暗い文字用に学習されており、その用途でのみ使用することを意図しています。このPolarity設定がアプリケーションに適している場合は、Dark on lightオプションを使用してください。

アプリケーションに暗い背景上の明るい文字が含まれている場合は、Light on darkオプションを使用する必要があります。その場合、前処理のステップで画像が内部的に反転されます。

アプリケーション内のテキストが背景よりも明るい場合または暗い場合は、Bothオプションを選択します。ただし、OCR vToolでは、極性が混在するテキストを読み取ることはできません。テキスト領域内では、極性が一貫している必要があります。

文字間隔#

単語には、ドット、カンマ、ハイフンなどの特殊文字が含まれる場合もあります。その大半は句読点ですが、ハイフンやイコール記号は区切り文字とみなされます。

アプリケーションによっては、これらの文字を読み取りたい場合もあります。その場合は、特殊文字が含まれる文字セットを選択し、PunctuationおよびSeparatorsオプションを有効にします。

数字の読み取りのみが必要な日付の読み取りなど、句読点や区切り文字なしで単語を読み取りたいアプリケーションもあります。そのため、数字のみの文字セットを選択し、PunctuationおよびSeparatorsオプションを無効にしてください。

文字間隔に関しては、個々の文字間の距離も考慮する必要があります。テキストを個々の領域に正常にセグメント化するには、文字間に十分な隙間が必要です。しかし、実際の運用では、文字同士が近すぎて区別が難しいことがよくあります。アプリケーションでこの問題が発生した場合は、Separate touching charactersオプションを有効にしてください。

ドットプリント#

Dot Printフォントは、連続したストロークではなく個々のドットのみで文字が構成されている点が、他のすべてのフォントタイプとは異なります。Dot Printテキストを読み取るために、OCR vToolには専用のセグメンテーションおよび分類オプションが用意されています。これらのオプションを使用できるようにするには、ウィザードのステップ1でDot Printフォントを選択する必要があります。文字間に十分な大きな隙間があり、コンパクトなDot Printスキームを持つ通常のDot Print文字は、そのまま読み取ることができます。

文字間の隙間が、文字内のドット間の隙間と同程度かそれよりも小さいDot Printテキストの場合は、BaslerはTight character spacingオプションを有効にすることを推奨しています。

正常なセグメンテーションを行うためには、文字のドット間の隙間も考慮する必要があります。コンパクトなDot Printスキームでは、ドット同士がかなり近い間隔で配置されており、隙間の大きさにばらつきはありません。このような文字は、デフォルト設定であるAutoオプションを有効にすることで適切に読み取ることができます。その場合、内部の自動モードが使用されます。

ただし、一部の隙間が他の隙間よりも大きい場合、1文字のセグメンテーションが失敗し、その文字が複数の領域に分割されることがあります。そのような状況では、Max. dot gapオプションを使用して、許容される最大のドット間隔を手動で指定すると解決する場合があります。ただし、処理時間が増加する可能性があります。

ステップ 4:結果#

ウィザードの最後のステップには、単語内の各文字位置の候補と信頼度値が表形式で表示されます。表のエントリをクリックするとプレビュー領域内の対応するバウンディングボックスが選択され、その逆も同様に行われます。

ドロップダウンリストを展開すると、すべての候補が表示されます。これらは信頼度の降順でリスト表示されます。これにより、文字分類全体の信頼度を評価し、潜在的な代替候補を確認することができます。

情報

信頼度は0から1までの値です。これは文字認識の精度を示します。非常に良好な分類結果では、信頼度が0.99を超えることがよくあります。信頼度が0.9または0.8を下回る場合、分類の信頼性が低いことを示している可能性があります。

表の下には、Text Recognized領域があります。ここでは、認識されたテキスト全体がコンパクトな形式で表示されます。

正規表現#

OCRが直面する典型的な課題として、文字の0、O、o間の曖昧さがあります。OCR-AやSEMIなどの明示的なOCRフォントは0とOを区別するように設計されていますが、他のフォントはそうではありません。この課題は、正規表現を使用して解決できます。

正規表現を使用すると、単語の修正を実行できます。単語の修正とは、最も信頼度の高い候補を採用するだけでなく、他の候補も考慮に入れて、正規表現に適合する候補の組み合わせを見つけようとする処理を指します。

これを行うには、結果表の上にある入力フィールドに、テキスト内の単語数と同数の正規表現を入力します。正規表現は半角スペースで区切ってください。

例: 賞味期限(例:「03/2026」など)を読み取ると仮定します。主な目的は、日付や時刻の数字を読み取ることです。また、特殊文字やアルファベットも読み取る必要があると仮定します。その場合、数字、文字、特殊文字を含む文字セットを選択します。正規表現「(0[1-9]|10|11|12)/202[4-9]」を使用することで、MM/YYYY形式の日付構造を維持しながら、スラッシュも読み取ることができます。

情報

正規表現によって文字を追加または削除して単語の長さを修正することはできません。正規表現は単語の長さに適合している必要があり、単語の長さはすべての画像で一貫している必要があります。

長い単語の単語修正を実行すると、処理時間が増加する場合があります。

vToolの設定#

OCR Basic vToolを設定するには:

  1. vTool Settings領域のRecipe Managementペインで、Open Settingsをクリックするか、vToolをダブルクリックします。
    OCR Basicダイアログが開きます。

  2. 画像を撮影するか開きます。
    ライブ画像を取得するには、次の Single Shot ボタンを使用するか、 Open Image 既存の画像を開くためのボタンです。
    画像が読み込まれると、文字読み取り処理が直ちに開始され、結果がプレビューエリアに表示されます。
    ウィンドウの下部には、認識された文字が単語ごとにスペースで区切られて表示されます。ここでのスペースは限られているため、テキスト全体が表示されない場合があります。これは、認識された文字数の目安を示すためのものです。完全なテキストは、ウィザードのステップ4で表示されます。
    For more information, see ステップ 1:初期設定.
    OCR vToolの設定 - ステップ 1

  3. Rectangle Settingsエリアで、値を手動入力してテキスト領域を定義します。
    または、プレビューエリアにある領域長方形のハンドルを使用して、移動、サイズ変更、回転を行い、テキストを読み取りたい画像のパーツに合わせることができます。
    長方形の矢印は、テキストの読み取り方向を指している必要があります。

  4. Font Settingsエリアで、次のオプションを設定します。

    • フォントタイプ
    • 文字セット
    • リジェクションクラス
  5. クリック Next.
    Step 2 of the OCR Basic dialog opens.
    For more information, see ステップ 2:文字の寸法.
    vTool設定 - 手順2

  6. 文字寸法を検出するためのデフォルトの自動モード有効のままにするかどうかを決定します。寸法を手動で指定する場合は、Autoオプションの選択を解除し、文字の幅、高さ、ストローク幅の希望する範囲を入力します。

  7. クリック Next.
    ステップ 3 / OCR Basic dialog opens.
    For more information, see ステップ 3:セグメンテーションの設定.
    vTool Settings - ステップ 3

  8. アプリケーションに応じて、コントラストと極性を調整します。

  9. アプリケーションに応じて、間隔オプションを選択します。

  10. Dot Printフォントを選択した場合は、必要に応じてオプションを指定します。

  11. クリック Next.
    ステップ 4 / OCR Basic dialog opens.
    For more information, see ステップ 4:結果.
    vTool Settings - ステップ 4

  12. 分類テーブルとテキストフィールドで文字認識の結果を確認します。
    テーブルでは、各位置を展開して代替の分類結果を開くことができます。分類された文字とその信頼度が表示されます。
    詳細表示オプションが有効な場合、テーブル内の文字を選択すると、プレビューエリアで対応する文字のバウンディングボックスがハイライト表示されます。逆に、プレビューエリアの文字領域をクリックして、テーブル内の対応する文字を確認することもできます。

  13. 必要に応じて、正規表現を入力して単語の修正を実行します。
    1つの単語につき1つの正規表現を入力します。表現は半角スペースで区切ります。

  14. Text Recognizedフィールドで結果の単語を確認します。

  15. Finishをクリックしてセットアッププロセスを完了します。

OCR Basic vToolの結果は、pin data viewで確認できます。ここでは、表示する出力項目を選択できます。

入力#

画像#

Camera vToolから、またはImage Format ConvertervToolなどの画像を出力するvToolから、直接画像を受け入れます。

  • データ型:Image
  • 画像形式:8ビット-16ビットのモノラルまたはカラー画像。カラー画像は、内部でモノラル画像に変換されます。

出力#

テキスト#

認識されたテキスト文字列を返します。

  • データ型:String Array

領域#

認識されたテキストの領域を返します。

  • データ型:Region Array

典型的な先行機#