# OCRMax

OCRMax 関数は、ユーザ定義の文字フォントが学習された後に、対象領域 (ROI) 内のテキスト文字列の読み取りおよび照合を行うか、またはそのどちらかを実行します。OCRMax 関数は、セグメンテーションと分類のプロセスを通じて光学式文字認識 (OCR) を実行します。しきい値技術を使用して、文字列を含む画像エリアを識別し、セグメント化します。その後、文字を学習し、フォントデータベースに保存します。ランタイム中に分類化が行われ、セグメント化が実行された後、検出された文字に対して読み取りが行われます。そして、セグメンテーションされた文字の画像と学習された文字のフォントを比較することで識別されます。

セグメンテーションプロセスでは、OCRMax 関数が ROI 内のテキスト行の位置を判別し、テキストの角度、傾き、および極性を計算します。その後、領域を正規化し、不要なノイズを除去してから、前景ピクセルと背景ピクセルに 2 値化します。2 値化画像内でブロブ解析を実行し、文字フラグメントを生成します。各文字フラグメントが単一のブロブを表します。文字フラグメントをグループ化して文字を形成し、その文字に文字領域を割り当てます。文字領域は、ROI 内の前景 (インクなど) ピクセルすべてを無駄なく囲んだ編集不可のバウンディングボックスです。

ROI 内のテキスト行は、個々の文字の画像に分割され、各文字は編集不可の文字矩形で囲まれます。ROI は、テキスト行のおよその位置、角度、傾きを定義します。必要に応じて、[セグメント] タブの [角度範囲] および [スキュー範囲] パラメータを使用して、偏差を補正できます。

## OCRMax の入力

OCRMax プロパティシートには、関数の結果を微調整するための多数の設定があります。これらには、プロパティシートのタブ (標準、セグメント化、フォントの学習、フィールド化、結果、および 診断) からアクセスできます。

また、OCRMax プロパティシートの [オートチューン] ボタンを使用して [オートチューン] ダイアログを起動して、自動的に最適な [セグメント] パラメータを計算し、フォントデータベースを学習します。[オートチューン] ダイアログの実行中に 1 つまたは複数の画像をロードすると、各画像が検査され、文字が正しくセグメント化および分類されていることが確認されます。文字が正しくセグメント化されていない場合、OCRMax 関数のオートチューンアルゴリズムは、現在の画像および以前に学習した画像をセグメント化する最適な [セグメント] パラメータを計算します。登録する画像が増えると、OCRMax 関数のオートチューンアルゴリズムの信頼性と精度も向上します。満足な結果が得られたら [オートチューン] ダイアログを閉じ、新しい [セグメント] パラメータを適用します。フォントデータベースは新たに学習された文字で更新されます。

注 : [オートチューン] ダイアログには、[セグメント] パラメータを手動でチューニングするよりも大きな利点が 2 つあります。

- 画像に必要なサイクルは 2 回ではなく、1 回のみです (1 回目に [セグメント] パラメータにチューニングし、2 回目に学習します)。
- チューニングプロセス中に得られる [セグメント] パラメータによって文字が自動的に学習されるため、読み取り精度が向上します。

## OCRMax の出力

戻り値 | 読み取られた文字列を含んでいる OCRMax データ構造体。入力パラメータが無効であれば #ERR を返します。
結果 | OCRMax を初めてセルに挿入すると、次の OCRMax Vision Data Access functionsを使用してスプレッドシート内に結果テーブルが作成されます。
ラベル | 関数 | 説明
文字列 | GetString(OCRMax) | 参照されているデータ構造体のテキスト文字列を返します。
文字列合格 | GetPassed(OCRMax) | 参照されているデータ構造体の文字列全体の合格/不合格ステータスを返します。
インデックス |  | 文字のインデックスで指定された位置。
文字 | GetChar(OCRMax, インデックス) | 参照されているデータ構造体のインデックスで指定された位置の文字を返します。
得点 | GetScore(OCRMax, インデックス) | 参照されているデータ構造体のインデックス付き文字の一致得点 (0～100) を返します。
合格 | GetPassed(OCRMax, インデックス) | 参照されているデータ構造体のインデックス付き文字の合格/不合格ステータスを返します。
2 番目文字 | GetScore(OCRMax, インデックス 0, [インデックス 1]) | 2 番目に高い得点の文字を返します。
2 番目得点 | GetScore(OCRMax, インデックス 0, [インデックス 1]) | 2 番目に高い得点の文字の得点を返します。
文字差 |  | インデックス付き文字の得点と 2 番目の得点値の差を返します。