Barcode アクション

ページまたはフィールドのバーコードを読み取ります。

Barcode アクション・ライブラリーは、ページ上またはフィールド内のバーコードの認識を実行します。ページには、単一のバーコードが含まれる場合も複数のバーコードが含まれる場合もあります。バーコードの値は、保管され、後続のアクションで使用できます。バーコードの値は、ページ・データの一部としてページとともに保管できます。バーコードは、区切りページ指標、またはページ・タイプを割り当てるメカニズムとして、Datacap ルールのロジック・フローの制御にも使用できます。

ページは、TIF、PNG、BMP または JPEG の画像の単一ページでなければなりません。他のタイプの画像または文書はサポートされていません。PDF、DOC、複数ページ TIF などの文書タイプは、Convert アクション・ライブラリーを使用して TIF 画像に変換できます。どのような種類の画像が認識でうまく機能するかを理解するために、ベスト・プラクティス・ガイドを確認することをお勧めします。

アクションの要約

GetAllBarcodes : ページ上のすべてのバーコードを読み取り、区切り文字で区切られているストリングでそれらを返します。

GetBarcode : ページ上の最初のバーコードを読み取ります。

GetDataMatrixBarcode : ページ上の最初のデータ・マトリックス式バーコードを読み取ります。

GetPDF2DBarcode : ページ上の最初の PDF-417 バーコードを読み取ります。

IdentifyPageByBarcode : バーコード値に基づいてページ・タイプを設定します。

MatchAnyBarcode : 予期される値とページ上のすべてのバーコードを比較します。

MatchBarcodePrefix : 予期される接頭部の値とページ上のすべてのバーコードを比較します。

MatchFirstBarcode : ページ上の最初に読み取られたバーコードと値を比較します。

SetBarcodeMinimumConfidence : バーコードが正確に読み取られるために必要な最小許容度を設定します。

予期されるバーコード・タイプの設定

デフォルトでは、バーコード・エンジンによってバーコード・タイプが不明と見なされ、自動的に 1D バーコードの検出が試行されます。検出されるためには、以下のバーコード・タイプを明確に設定する必要があります。
  • PatchCodeBarcode
  • PostNetBarcode
  • GS1 DataBar
  • IntelligentMail
  • Royal Post Mail 4-State
  • Australian Post 4-State
  • QR Code
  • PDF417Barcode
  • Aztec
  • DataMatrixBarcode

エンジンによってバーコードを検出し認識するには、予期されるバーコード・タイプの設定が必要です。バーコードが検出されない場合は、バーコード検出を補助するために、適切なバーコード・タイプを設定してください。 複数のバーコード・タイプを設定できます。予期されるバーコード・タイプは明確に構成することをお勧めします。

予期されるバーコード・タイプは、Datacap Studio の「ゾーン」タブにある「BAR/P」タブ・プロパティーを使用して簡単に設定することができます。バーコード認識を呼び出す関連ルールを持つ、ターゲット DCO ノードのページまたはフィールドを選択し、その DCO をロックし、予期されるバーコード・タイプを選択することによって、このプロパティーを設定できます。これにより、選択したすべてのタイプに基づいて正しい値が自動的に計算され、セットアップ DCO でご使用のアプリケーション用に bp_tp 変数が設定されます。最良の結果を得るには、予期されるタイプを最小限にとどめてください。 予期されるバーコード・タイプを設定するためにこのプロパティーを使用する場合、セットアップ DCO 内で手動で、またはアクションを使用して実行時に、bp_tp 変数を別個に設定する必要はありません。

予期されるバーコード・タイプはまた、変数 bp_tp を設定することによって、認識対象のフィールド/ページに対して実行時に設定することもできます。 bp_tp 変数が空の場合や存在しない場合は、エンジンはデフォルトで「不明」を使用します。

bp_tp 変数は予期されるバーコード・タイプを設定し、これにより認識結果が向上します。 複数のバーコード・タイプが予期される場合、この変数の値は以下に示すバーコード・タイプの組み合わせでなければなりません。 複数のタイプを読み取る場合は、それぞれのコードの値を一緒に追加します。予期されるタイプは常に、可能な限り最小限のタイプに設定してください。 この変数は、バーコード認識アクションを呼び出す前に rrSet を使用して設定できます。 以下に例を示します。
rrSet("256","@X.bp_tp") for reading a Code 39 barcode.
有効なバーコード・タイプ
  • 0 : 不明。ほとんどの 1D バーコード・タイプを自動的に検出します。

  • 1 : INDUSTRY 2 OF 5

  • 2 : INTERLEAVED 2 OF 5

  • 4 : IATA 2 OF 5

  • 8 : DATALOGIC 2 OF 5

  • 16 : INVERT 2 OF 5

  • 32 : BCD MATRIX

  • 64 : MATRIX 2 OF 5

  • 128 : CODE 32

  • 256 : CODE 39

  • 512 : CODABAR 2

  • 1024 : CODE 93

  • 2048 : CODE 128

  • 4096 : EAN-13

  • 8192 : EAN-8

  • 16384 : UPC-A

  • 32768 : UPC-E

  • 65536 : ADD 5

  • 131072 : ADD 2

  • 262144 : UCC128/EAN-128

  • 524288 : パッチ・コード

  • 1048576 : PostNet

  • 2097152 : PDF417

  • 4194304 : DataMatrix

  • 8388608 : Code 39 Extended

  • 16777216 : Code 93 Extended

  • 33554432 : QRCode

  • 67108864 : IntelligentMail

  • 134217728 : Royal Mail (RM4SCC)

  • 268435456 : Australian Post 4-State Code

  • 536870912 : Aztec

  • 1073741824: GS1DataBar

可変長 Royal Mail バーコード

Royal Mail バーコードは固定長のバーコードです。 ポルトガルの郵便サービスなど、一部の国では、Royal Mail バーコードの可変長バリエーションを使用しています。 ポルトガル語 CTT の可変長 Royal Mail バーコードの読み取りを可能にするには、Royal Mail バーコード・タイプを選択することに加え、可変長設定を有効にする必要があります。 DCO 変数「RoyalMailVariableLength」を「1」に設定すると、可変長 Royal Mail バーコードの検出が可能になります。 長さ制限を課す必要がない場合は、固定長 Royal Mail バーコードに対して可変長を有効にすることができます。

この例では、バーコード・タイプを可変長 Royal Mail に設定します。
 rrSet("1", "@P.RoyalMailVariableLength")
rrSet("134217728", "@P.bp_tp")
GetBarcode()

予期されるバーコードの最小値と最大値の設定

バーコードは単一ページ上に複数存在することができます。また、単一ページ上にある複数のバーコードを認識できます。 DCO 変数 bp_su は、単一ページ上で読み取りが試行されるバーコードの最大数を制御します。これが指定されない場合は、デフォルトの最大数である 10 が適用されます。

予期されるバーコードの最小数は、DCO 変数 bp_minExpected を使用して指定できます。この設定は、画質向上が行われるタイミングを制御します。これが指定されない場合、認識すべき最小バーコード数はデフォルトで最大バーコード数設定と同じ値になります。

エンジンでは、これらの変数を使用して、ページ上で予期されるバーコード数と、しきい値が満たされた後にエンジンでの検出を停止するバーコード数が判別されます。予期されるバーコード数が満たされない場合、エンジンは、画像に対して内部画像調整を実行して、予期されるバーコード数を検出するために再度読み取りを実行する場合があります。ページに予期されるバーコードが 1 つのみである場合、最良の結果を得るには、予期されるバーコードの最小数と最大数の変数を 1 に設定してください。

バーコード検出手順

バーコード・アクションでは、以下の手順で検出が行われます。
  • ページまたはフィールドのバーコードを認識します。

  • 予期される最小数が検出されると停止します。
  • 予期される最小数に達せず、画質向上が有効になっている場合は、以下が行われます。

    • 有効な画質向上機能をそれぞれ使用してバーコードを読み取ります。
    • 予期される最小数が検出されると停止します。
    • 予期される最小数のバーコードが検出されるまで、有効な各画質向上機能の実行を続けます。

認識されたバーコードの数が指定の最小数以上になった場合、画質向上はスキップされます。最小バーコード数に達せず、画質向上が有効になっている場合は、バーコードの読み取り試行時に、構成済みの画質向上タイプを使用して、バーコード認識が再度実行されます。

例えば、構成済みの最小バーコード数が 1 で、最大数が 10 の場合は、最初のバーコード認識は画質向上なしで実行され、最大 10 個のバーコードの読み取りが試行されます。バーコードが少なくとも 1 個読み取られれば、アクションは完了します。読み取られたバーコードの数が 0 の場合は、このアクションにより指定の画質向上が実行され、ページ上のバーコードの認識が再試行されます。画質向上が構成されていない場合に、読み取られたバーコードの数が 0 であると、このアクションは完了し、認識は再試行されません。

別の例としては、最小数が 2 に設定され、2 つのバーコードが予期される場合です。2 つ以上のバーコードが読み取られると、認識は停止します。読み取り数が 2 未満で、画質向上が有効になっていると、バーコード・アクションは構成された画質向上タイプを実行し、バーコードの読み取りを再試行します。これは、有効な画質向上のタイプごとに実行されます。

画質向上

バーコードは、従来型の認識に比べて画像の劣化に耐性があります。損傷したバーコードでも、しばしば認識される場合があります。フォールト・トレランスは特定のバーコード・タイプによって変わることがありますが、全体として、従来型の文字認識よりも弾力性があります。バーコードは、通常、スキューや回転の問題に対しても、より耐性があります。

それでも、画像の品質が低い場合は、バーコードの読み取りに問題が発生する場合があります。 例えば、スキャンが不完全であったり、何度もコピーされたり、またはその他の表示問題があったりすると、バーコードは正しく読み取られない場合があります。Barcode アクション・ライブラリーには、画質向上メカニズムが組み込まれていて、バーコードを読み取れない場合に画像が内部調整されます。

損傷したバーコードや十分にスキャンされなかったバーコードを読み取れるようにするために、画質向上が必要になることがあります。 バーコードに関する問題に応じてさまざまなタイプの画質向上を行うことにより、バーコードが読み取り可能になる場合があります。バーコード・アクションによって、バーコードの読み取り時に画質を向上する方法が提供されます。このフィーチャーを有効にするには、変数 bp_enhance を「1」に設定します。 「1」に設定すると、エンジンは画質向上なしでバーコードの認識を試行します。

最小数のバーコードが読み取られない場合、アクションは指定された画質向上を使用して再試行します。最小数のバーコードが読み取られた場合、画質向上はスキップされます。バーコード画像が常に画質向上を必要とするものである場合は、bp_enhance を「2」に設定します。これにより、画質向上なしで認識を試行する最初の認識ステップがスキップされます。

バーコードの画質向上を有効にすると、バーコード認識中にのみ画像が変更され、バッチ内の元の画像は未変更のままです。

画質向上は累積的には行われません。 必要な画質向上のタイプを 1 つのみ有効にしてください。 ある画質向上 (例えば、二値化) が役立つこともあれば、別の画質向上 (平滑化ズームなど) が役立つこともある場合に、両方を有効にすることができますが、最小数と最大数も設定する必要があります。エンジンは、予期されるバーコードの最小数が読み取られるまで、有効にされている各画質向上を試行します。エンジンが試行する複数の画質向上の順序を制御することはできません。最良のパフォーマンスを得るには、対象の画像に役立つ最小数の画質向上を有効にします。

画質向上タイプ

平滑化ズーム: bp_zoom - 小さいバーコードの認識を向上させるために画像を拡大します。

ぼかし: bp_blur - 画像がぼかされ、線の輪郭のギザギザを抑えることができます。

拡張: bp_dilate - ピクセルが拡張され、線が太くなります。

浸食: bp_erode - 線の輪郭にあるピクセルが削除されます。

反転: bp_flip - 通常、逆さまのバーコードを認識するために画像を反転する必要はありません。

サイズ変更: bp_resize - 画像が拡大され、バーコードが小さい場合に役立つ可能性があります。ズームと類似しています。

二値化: bp_binarize - 24 ビットと 8 ビットの画像を 1 ビットに変換します。1 ビット画像では、バーコード行と背景のコントラストが小さい場合や、陰影が認識を妨げている場合に、バーコードの認識が向上する可能性があります。

これらの画質向上は一時的なものであり、バッチ内の画像は変更されません。

画質向上の有効化

自動画質向上をアクティブにするには、認識対象の DCO ページ・ノードまたは DCO フィールド・ノードに対してバーコード・アクションを呼び出す前に、DCO 変数 bp_enhance を「1」に設定します。 以下に例を示します。
rrSet("1","@X.bp_enhance")

画質向上はそれぞれ、関連する DCO 変数を「1」に設定すると有効に、「0」に設定すると無効にできます。 デフォルトでは、「平滑化ズーム」は常に有効になり、他の画質向上はすべて無効になります。

例えば、必要な画質向上が「平滑化ズーム」である場合は、bp_enhance を「1」に設定して画質向上を有効にするだけで済みます。

二値化のみが必要な場合は、バーコード・アクション呼び出し前に以下のシーケンスを使用すると、二値化機能のみが有効になります。
rrSet("1","@X.bp_enhance")
rrSet("0","@X.bp_zoom")
rrSet("1","@X.bp_binarize")

上記の例、およびこのライブラリーの他の例では、rrSet を使用して DCO 変数を設定する方法が示されます。 このアクションでは、実行時に変数が設定されます。また、これらの変数は、Datacap Studio 内からセットアップ DCO で設定できます。セットアップ DCO 内で変数を設定すると、より効率的な場合があります。例えば、上記の 3 つの rrSet アクションがページ・タイプ「Other」で呼び出されるとします。バッチで 100 ページ取り込むとすると、これらの 3 つのアクションが各ページで呼び出され、結果として rrSet アクションは 300 回呼び出されることになります。代わりに、これらの 3 つの変数は、Datacap Studio 内から DCO で作成して、「Other」DCO オブジェクトに対して設定することができます。セットアップ DCO で設定されると、変数は自動的にすべての「Other」オブジェクトに存在するようになり、バッチ内のすべてのオブジェクトでこれらの変数を作成するためにルール内で rrSet を呼び出す必要はありません。

複数の画質向上を有効にする

さまざまなタイプの画質向上を必要とする文書を定常的に受け取ることがわかっている場合は、複数の画質向上を有効にすることができます。 例えば、一部の文書は常に初回に処理され、他の文書は二値化が使用されている場合にのみ検出され、また他の文書はぼかしが使用されている場合にのみ処理されます。 複数の画質向上が有効になっている場合、アクションでは、予期される最小数が読み取られるまで、有効になっている各画質向上タイプを使用して認識が試行されます。例えば、バーコードの認識に常に二値化とぼかしを使用するには、バーコードの認識前に以下を設定します。
rrSet("1","@X.bp_enhance")
rrSet("0","@X.bp_zoom")
rrSet("1","@X.bp_binarize")
rrSet("1","@X.bp_blur")

これにより、アクションでは、最小数が読み取られるまで、ぼかしと二値化の画質向上が使用されます。bp_enhance が「1」に設定されている場合、アクションでは最初に画質向上なしで認識が試行され、最小数に達しない場合にのみ処理が続行されます。追加で有効化された画質向上タイプはそれぞれ、最小数が読み取られるまで、または有効な画質向上がすべて試行されるまで試されます。

最良のパフォーマンスを得るには、予期されるバーコードの最小数を常に設定しておきます。 そうしないと、アクションは不要な画質向上を実行する可能性があります。 画質向上がバーコード・アクションによって試行される順序は制御できません。

バーコードの方向

バーコードの方向はデフォルトでは縦と横の両方です。 方向を指定すると、バーコードの検出時に役立つ場合があります。例えば、バーコードが常に水平方向である場合、水平方向のみを設定することにより、検出と認識を向上させることができます。必要であれば、DCO 変数 bp_or を設定することで方向を構成できます。

0 = 縦および横。

1 = 横。

2 = 縦。

3 = 横、縦、および斜め。

また、bp_or 変数は、SetupDCO 内のオブジェクトで設定することも、rrSet アクションを使用して実行時に設定することもできます。

バーコード・バイト・モード

一部のバーコード・タイプ (PDF-417 など) では、データ・ストリーム内でヌル文字を使用できます。 ヌル文字が見つかると、バーコードの全長は切り捨てられ、最初のヌル文字までの文字のみが返される場合があります。 このような状態は一般的に、読み取られるバーコード・データが予期されるものよりも短い場合に見られます。例えば、バーコードが 40 文字の ID でなければならない場合に、切り捨てられたテキストが返されることがあります。

バーコードをバイト・データとして扱うには、DCO 変数 BarcodeUseByte を「1」に設定します。 この設定では、ストリームはバイトとして扱われ、さらにヌル文字はスペースに変換されて、他のアプリケーション部分でもストリング全体を使用できるようになります。デフォルトでは、このパラメーターはオフになっています。

バイト・モードでは、DCO 変数 BarcodeReplacementChar を希望の置換文字に設定することで、デフォルト置換文字であるスペースを別の置換文字に設定できます。 例えば、rrSet("-","@X.BarcodeReplacementChar") によって、現行 DCO オブジェクトで変数「BarcodeReplacementChar」が「-」に設定され、バイト・モードが有効にされている場合は、置換文字がスペースからダッシュに変更されます。

注: バイト・モードの使用時に Unicode 文字はサポートされません。

パッチ・コード

バーコードに加えてパッチ・コードを認識できます。パッチ・コードは、バーコードと非常によく似ていますが、信頼性が低い場合があります。すべてのページでパッチ・コードを確認する場合、ページ上の線が、パッチ・コードとよく似ているため、パッチ・コードと誤認される可能性があります。これはまれなケースではありますが、実際に発生することがあります。パッチ・コードかバーコードのどちらを区切りシートの作成に使用するかを選択する場合、信頼できるのはバーコードです。

バーコード・タイプがパッチ・コードに設定されている場合は、エンジンから以下のストリング値が返されます (ストリング値は検出されるパッチ・コードのタイプによって異なります)。

パッチ 1: 1100

パッチ 2: 1001

パッチ 3: 1010

パッチ 4 / パッチの切り替え: 0110

パッチ 6: 0011

パッチ T / パッチの転送: 0101

パッチ・コードを認識する場合は、バーコード・タイプを明示的にパッチ・コードに設定する必要があります。デフォルト・バーコード・タイプ設定の「不明」では、パッチ・コードは検出されません。

DCO 変数に保管されるバーコード結果

バーコード認識の結果は、フィールド・データ、DCO 変数、またはその両方に保管されます。バーコード認識がフィールドで実行されると、バーコードの読み取り結果は、フィールドのテキスト値に保管されます。ページで認識された場合、結果は GetBarCodeListGetBarCode などの変数に保管できます。DCO 変数でデータを保管したり取得したりすることは、アクションおよび Datacap アプリケーションの一般的な作業です。バーコード認識で作成される変数の名前については、アクション・ヘルプを参照してください。

ApplicationObjects アクション・ライブラリーのトップレベル・ヘルプ・トピックでは、さまざまなオブジェクト・レベルやオブジェクト変数を含む Datacap オブジェクト階層 (DCO) について説明しています。Datacap アプリケーションを作成する前に、DCO について十分に理解することをお勧めします。

スマート・パラメーター

「@X.xxxx」、「@P.xxxx」、「@STRING()」、「@PILOT()」などの「@」表記を使用するパラメーターは「スマート・パラメーター」と呼ばれます。アクションにパラメーターとして渡されるデータは、実行時に評価されます。例えば、「@X」は現行オブジェクトにアクセスするための表記です。「@P」はページ・オブジェクトにアクセスします。これは、現行オブジェクトであっても、親オブジェクトであっても構いません。実行時に評価されることで、認識されたデータまたはその他のバッチ固有のデータを、アクションに渡すことも、メタデータとして保管することもできます。@DATE などのスマート・パラメーターは、現在日付に基づいてエクスポート・ファイルに名前を付けるために使用できます。同様のスマート・パラメーターは、現在のバッチ ID、現在のバッチ・ディレクトリー、現在のオペレーター ID などを取得します。スマート・パラメーターは、アプリケーションの他の領域からデータを取得し、新しい場所にコピーするか、パラメーターとしてアクションに渡す非常に強力なメカニズムです。スマート・パラメーターの資料を参照して、使用可能なすべての機能を理解しておくことをお勧めします。ValidationAndTextAdjustments アクション・ライブラリーのトップレベル・ヘルプにも、スマート・パラメーターに関する情報があります。+、¥、. などのいくつかの文字にも、特殊なスマート・パラメーターの意味があり、スマート・パラメーターとして解釈される場合があります。これはスマート・パラメーター構文を使用して制御できます。