iOSAndroidWindows
このページでは、Runtime.ShowCodeScannerメソッド、およびCodeScannerView.StartCodeScannerメソッドで指定可能なバーコード検出エンジンの詳細について説明します。
GS1コードの読取に対応したエンジンです。GS1コードとは、流通コードの管理及び流通標準に関する国際機関であるGS1が標準化したフォーマットに従ったコードです。
アプリケーション識別子(AI)とデータの組み合わせで構成されており、AIによりデータの意味を識別します。
このバーコード検出エンジンではバーコードの文字列だけでなく、GS1コードの内容を解析しAIとデータの組み合わせを取得することができます。
さらに積層型のGS1 Databarや、GS1合成シンボル(GS1 DatabarとPDFを組み合わせたバーコード)を読み取ることができます。
Android版 このエンジンを使用するには、Android 10以降のOSが必要です。
Runtime.ShowCodeScannerメソッド、およびCodeScannerView.StartCodeScannerメソッドのextraParamsで、"DETECT_ENGINE"に"ATAMI"と指定してください。
CodeScannerView codeScanner { X = 10; Y = 10; Width = 200; Height = 200; Function OnCodeScanned(e) { var s = ""; s += str(e.data); s += " (format:" + str(e.format); if (e.isComposite) { s+= ":合成or積層型シンボル"; } s+= ")\n"; if (e.isGS1) { s += "GS1データ:"; for (var i = 0; i < e.GS1DataList.length; i++) { /* AI1(AI1のデータ), AI2(AI2のデータ)...という形式でGS1データを表示*/ s+=e.GS1DataList[i].Key + "(" + e.GS1DataList[i].Label + ")" + e.GS1DataList[i].Value; if (i < e.GS1DataList.length -1 ) s+=","; } } s += "\n"; print(s); } } Button btnStartScan { X = 10; Y = 230; Width = 100; Height = 30; Title = "スキャン開始"; Function OnTouch(e) { ^.codeScanner.ShowCamera(Runtime.SourceTypeRearCamera); /* GS1 DatabarおよびGS1 Databar Limitedを読み取ります */ var format = Runtime.CODE_FORMAT_GS1_DATABAR + Runtime.CODE_FORMAT_GS1_DATABAR_LIMITED; var extraParams = new Array; extraParams["DETECT_ENGINE"] = "ATAMI"; extraParams["CONTINUOUS_MODE"] = true; /* 読取範囲を制限します */ extraParams["SCAN_AREA_MARGIN_LEFT"] = 0.1; extraParams["SCAN_AREA_MARGIN_TOP"] = 0.2; extraParams["SCAN_AREA_MARGIN_RIGHT"] = 0.1; extraParams["SCAN_AREA_MARGIN_BOTTOM"] = 0.2; ^.codeScanner.StartCodeScanner(format, extraParams); } }
・エンジンの仕様により、カメラ映像中央付近のバーコードのみを読み取ります。複数のバーコードを連続で読み取りたい場合は、対象のバーコードがカメラの中央にくるように端末を移動させる必要があります。
・GS1規格に準拠していないGS1コードを含むバーコードは正しく読み取れない場合があります。
・GS1合成シンボルは読み取りづらくなっていますが、次のような工夫で読み取りやすくなります。
・"SCAN_AREA_MARGIN_LEFT"、"SCAN_AREA_MARGIN_TOP"、"SCAN_AREA_MARGIN_RIGHT"、"SCAN_AREA_MARGIN_BOTTOM"を指定し読み取り範囲を狭めることで、ノイズとなる映像を減らして読み取りやすくすることができます。
・"ZOOM_RATIO"オプションでズーム倍率を調整し、カメラ映像内でバーコードが占める割合を大きくすることで読み取りやすくなる場合があります。
・"MAX_RESOLUTION"オプションでカメラの解像度を大きくすると、映像が鮮明になり読取精度が上がることが期待できます。上記のオプションと組み合わせて使用することをお勧めします。
・積層型のGS1 Databarを読み取った場合でも、読取結果のisCompositeが$TRUEになります。
・積層型のGS1 Databarのバーコード位置は正しく表示されません。重なっているバーコードのうち、1ライン分のバーコード位置だけが表示されます。
・この機能を使用するには、専用のライセンスファイルが必要です。
株式会社アスタリスク社のバーコード読取ライブラリであるAsCameraXを使用します。
多くのバーコードに対応しており、GS1合成シンボルの読取にも対応しています。また、読み取り速度も高速です。
※AsCameraXは、株式会社アスタリスクの登録商標または商標です。
Android版 このエンジンを使用するには、Android 10以降のOSが必要です。
Runtime.ShowCodeScannerメソッド、およびCodeScannerView.StartCodeScannerメソッドのextraParamsで、"DETECT_ENGINE"に"AsCameraX"と指定してください。
CodeScannerView codeScanner { X = 10; Y = 10; Width = 200; Height = 200; Function OnCodeScanned(e) { var s = ""; s += str(e.data); s += " (format:" + str(e.format); if (e.isComposite) { s+= ":合成シンボル"; } if (e.isGS1) { s += ":GS1データ"; } s+= ")\n"; print(s); } } Button btnStartScan { X = 10; Y = 230; Width = 100; Height = 30; Title = "スキャン開始"; Function OnTouch(e) { ^.codeScanner.ShowCamera(Runtime.SourceTypeRearCamera); var format = Runtime.CODE_FORMAT_ALL; var extraParams = new Array; extraParams["DETECT_ENGINE"] = "AsCameraX"; extraParams["CONTINUOUS_MODE"] = true; ^.codeScanner.StartCodeScanner(format, extraParams); } }
・GS1合成シンボル、TLC-39、日本郵政カスタマバーコード、ポストネットはバーコードの位置を示す枠が表示されません。それに伴い、"SCAN_AREA_TOUCH_MODE", "SCAN_AREA_LINE_HORIZONTAL", "SCAN_AREA_LINE_VERTICAL"による読取位置の指定も無効となり、タッチ位置や線の位置によらず検出されます。
・積層型のGS1 Databarを読み取った場合に、isCompositeが$TRUEになりません。
・チェックディジットが不正な値となっているUPCおよびEANは読み取れません。
・Runtime.ShowCodeScannerメソッド、およびCodeScannerView.StartCodeScannerメソッドの引数formatにTLC-39を指定した場合、Code39も読取対象となります。
・この機能を使用する場合、Biz/Browserのライセンスとは別に株式会社アスタリスクとの契約とライセンス認証アプリが必要です。詳しくはアスタリスク社の製品ページをご覧ください。
・一番最初に機能を使用する際、Runtime.ShowCodeScannerメソッド、およびCodeScannerView.StartCodeScannerメソッドはRTM-136例外で失敗し、ライセンス認証アプリによる認証を促すメッセージが表示されます。
ライセンス認証を実行後、再度メソッドを呼び出してください。また、ライセンス認証時は、ネットワークがオンラインである必要があります。
・ライブラリの仕様により、カメラ映像の一部だけがバーコードスキャンの対象領域になる場合があります。下図の通り、バーコードスキャンの対象領域にはマーカーが表示されます。