# フィールド化

[フィールド化] タブでは、OCRMax 関数の [フィールド文字列] 引数と [フィールド定義] 引数をグラフィカルに作成および編集することができます。結果の値は、リテラル文字列として関数に挿入されます。

[フィールド化] は、文字列を確認し修正する機能を提供し、一連の最適一致した有効な文字列を返します。[フィールド化] には 2 通りの基本的な用途があります。

- OCR 結果の検証。フィールド文字列およびフィールド定義パラメータに基づき、返された文字列が正しいかどうかを決定します。
- OCR 結果の訂正。返された文字列が許容可能な結果リストにない場合、フィールド化によって許容された、返された文字列に一番近い文字列の検出を試みます。

フィールド化の一般的なユーザケースは、文字列に接頭辞/接尾辞が含まれる場合です。フィールドを使用して、これらの接頭辞/接尾辞を無視します。この場合、[フィールド文字列] と [フィールド定義] によって ROI 内の文字列位置のオフセットが決まります。

#### フィールド文字列

文字列に含まれる文字数を指定します。フィールド文字列エントリには、(A～Z)、(a～z)、(0～9)、ハイフン (-)、ドット (.)、スペース ( ) など、[テキスト入力] ダイアログのすべての文字を使用できます。

フィールド文字列の各文字は、0 ～ 31 のインデックス付きフィールド位置に対応します。フィールド文字列には、読み取りを成功させたい文字列の文字と少なくとも同じ数の位置が含まれている必要があります (つまり、10 文字存在し、フィールド文字列で 9 文字のみ指定した場合は、最適一致が 9 つ返されます。しかし、8 文字存在し、フィールド文字列で 9 文字指定した場合、関数は #ERR を返します)。デフォルトでは、フィールド文字列の各位置は、アスタリスク (*) か英数字の「ワイルドカード」で示されます。これは、文字列のどの位置でもすべての文字が有効であることを意味します。

ただし、フィールド文字列の個別の位置は、その位置に一部の文字しか想定されないように制限することができます。すると、対象外の文字は読み取り時に考慮されないため、全体的な性能と信頼性が向上します。

定義済みのフィールド文字列エントリは、次のとおりです。

フィールド文字列エントリ | 説明 | 有効な文字
--- | --- | ---
* | ワイルドカード | フォント中の学習済み文字。
N | 数字 | 0123456789
A | 大文字の英字 | ABCDEFGHIJKLMNOPQRSTUVWXYZ
a | 小文字の英字 | abcdefghijklmnopqrstuvwxyz
H | 16 進値 (大文字の英字と数字) | 0123456789ABCDEF
h | 16 進値 (小文字の英字と数字) | 0123456789abcdef
O | 8 進値 | 01234567

フィールド文字列の例 1

フィールド文字列が「**********AN」の場合、1～10 番目のフィールド文字列位置ではフォントに含まれるすべての文字が有効です。ただし、11 番目の位置は、読み取り時に大文字の英字だけが想定されます。また、12 番目の位置は、数字だけが想定されます。

フィールド文字列の例 2

フォントには、0～9 の数字と / だけが含まれます。フィールド文字列が「NN/NN/NN」の場合、1、2、4、5、7、および 8 番目の位置では数字だけが想定されています。また、3 および 6 番目の位置ではスラッシュ (/) だけが想定されています。

ただし、フィールド文字列が「NN/NN/AA」の場合は、フォントに英字が含まれていないため、#ERR が返されます。

#### フィールド定義

必要に応じ、フィールド定義設定を使用してフィールド文字列のユーザ定義エントリを作成できます。このエントリがフィールド文字列に含まれると、このエントリの挿入位置で有効となる文字のリストが限定されます。システム定義のフィールド定義の他に、ユーザ定義のフィールド定義も追加することができます。システム定義のフィールド定義は、グレーのテキストで表示され、削除したり、編集したりすることはできません。有効にしたり、無効にしたりすることのみ可能です。ユーザ定義のフィールド定義は、黒のテキストで表示され、追加したり、削除したり、または編集したりすることができます。フィールド定義を追加するには、[新規追加] ボタンをクリックし、文字のアイコンを割り当ててから、定義を文字に割り当てます。

注 :

- ユーザ定義の定義の数は、OCRMax 関数の数式の長さ (249) に制限されています。
- OCRMax プロパティシートが閉じられたときに無効となったユーザ定義の定義は削除され、関数のプロパティシートが再度開かれたときには使用できません。
- [標準] タブの [フィールド定義] パラメータがセル参照として定義されている場合、[フィールド化] タブの [フィールド定義] オプションは無効になり、セル参照の現在の値が表示されます。

フィールド定義エントリのために示す文字は、フォントに含まれている必要があります。例えば、#=123 は、ユーザ学習フォントに 1、2、3 が含まれる場合に有効です。ただし、#=123 は、フォントに 1、2、3 が含まれない場合は無効です。

注 : 定義済みのエントリ (*, N, A, a, H, h, O) をフィールド定義パラメータで使用すると、新しい定義で有効な文字のリストが再マップされます。

フィールド定義の例 1

フィールド定義の値が「#=123;$=3456;%=789」でフィールド文字列が「#$%*******」の場合、1 番目の位置では 1、2、または 3 だけが、2 番目の位置では 3、4、5、または 6 だけが、3 番目の位置では 7、8、または 9 だけが有効です。また、4～10 番目の位置ではフォントに含まれるすべての文字が有効です。

フィールド定義の例 2

フィールド定義の値が「#=123;$=3456;%=789, A=A」でフィールド文字列が「#$%******A」の場合、1 番目の位置では 1、2、または 3 だけが、2 番目の位置では 3、4、5、または 6 だけが、3 番目の位置では 7、8、または 9 だけが有効です。また、4～9 番目の位置ではフォントに含まれるすべての文字が有効です。[フィールド定義]「A=A」は定義済みの [フィールド文字列] エントリを再マップするため、10 番目の位置では A だけが想定されています。

#### [フィールド文字列] パラメータ

- フィールド文字列内の文字のみにマッチを行う:関数が、フィールド文字列によって示されている文字に対してのみ文字の比較を試みるかどうかを指定します。

注 : [検査モード] が [認識と照合] に設定されている場合、このパラメータは [マッチ文字列] パラメータに指定されたテキスト文字列に対して比較されます。

- 可変長文字列:定義されたフィールド文字列が読み取りテキスト文字列全体の中の部分文字列であるかどうかを指定します。部分文字列が検出された場合は、最適一致の部分文字列が返されます。

注 : [外部設定] パラメータが OCRMaxSettings 関数への参照として設定されている場合、[フィールド文字列内の文字のみにマッチを行う] および [可変長文字列] パラメータは無効になります。

- 最小長:[可変長文字列] パラメータが有効な場合、このパラメータは許容可能な文字列長の最小値を指定します (0 ～ 100、デフォルト = 1)。
- 最大長:[可変長文字列] パラメータが有効な場合、このパラメータは許容可能な文字列長の最大値を指定します (0 ～ 100、デフォルト = 100)。
- 最大開始インデックス値:[可変長文字列] パラメータが有効な場合、このパラメータは考慮対象となる、フィールド形式の部分列を指定します。部分列はこのインデックス値を超えない位置で開始する必要があります (0 ～ 100、デフォルト = 100)。
- 最小終了インデックス値:[可変長文字列] パラメータが有効な場合、このパラメータは考慮対象となる、フィールド化の部分列を指定します。部分列はこのインデックス値以上の位置で終了する必要があります (0 ～ 100、デフォルト = 0)。