HELP

QRコード読み取り設定

QRコード読み取り設定は、DocuWorks文書からQRコードを読み取る場合に設定を行います。

XDW文書オープンの下か、ページの繰り返しの子ノードに追加します。

オープン処理名

XDW文書オープン処理を選択します。最後にオープンされたオープン処理名を返すマクロ「{%DW_GET(OpenName)}」がデフォルト表示されます。

ページ

QRコードの読み取りを行うページを指定します。

ページの繰り返し処理内に処理を追加した場合は、処理中ページのカウンタを取得するマクロ「{%DW_GET(PageLoopCount)}」を使用できます。

ページの繰り返し処理内でない場合は、「1」などのページを直接指定します。

出力解像度

QRコードの読み取りは、DocuWorks文書を内部で、イメージに変換して解析を行います。出力解像度はその際の解像度をdpiで指定します。QRコードを読み取るには、300dpiくらいの値を設定することを推奨します。

但し、ソースとなるDocuWorks文書の解像度が低い場合には、出力解像度を高くしても効果が得られない場合があります。

出力解像度は「300,400」のようにカンマ区切りで複数指定できます。複数指定した場合は、指定された解像度でそれぞれ読み取りを行い、結果をマージします。

最大検出個数

ページ内のQRコードの解析処理で、QRコードの検出を試みる最大個数を指定します。1~100までの値を設定できます。推奨値は、20です。

この数値は、QRコードを検出する際の目標値であり、実在するQRコードの実際の個数を示すものではありません。

1ページ内にQRコードが数十個と、多量にある場合のみ、数値を調整してください。通常は初期値の20で、標準的な速度で処理が可能です。

数値が低いほど高速になりますが、解析時に、目標値に達した場合、それ以上の解析を行わないため、設定値以上のQRコードを検出できなくなります。

逆に、数値が高いほど、実在するQRコードを検出できる個数が増えます。但し、解析の速度は極端に低下いたします。通常は、この数値を高く設定しないでください。60を超えるあたりから、検出時間が非常に遅くなります。(数分から数十分)

文字コード

文字コードを「Shift_JIS」「UTF-8」「自動判定」から選択します。

「自動判定」を選択すると、QRコードに格納されている文字の文字コード判定を行い、デコードします。判定可能は文字コードはSJISとUTF-8です。

SJISとUTF-8の判定は、ごくわずかですが、同一のコードを使用している部分があり、判定出来ない場合があります。UTF-8で「’」や「÷」、キリル文字、アラビア文字などのみの文字列の場合に、SJISと判定する場合があります。
また、UTF-8で取得した文字はUNICODEとして内部で記憶されますが、ログやテキストファイル等に出力する際にUTF-8を指定しないと文字化けしてしまいます。

範囲指定する

チェックすると、QRコードの読み取りする範囲をパーセント指定で指定できます。

X座標・Y座標

X座標とY座標の範囲をパーセントで指定します。起点は左上になります。下記の例では、赤い部分が読み取りの対象となります。


X座標 0%~50%
Y座標 0%~50%

X座標 50%~100%
Y座標 50%~100%

QRコードの読み取りには時間を要しますので、QRコードの位置が決まっている場合は、できるだけ範囲を指定してください。処理速度が向上します。

検索文字を指定する

チェックすると、検索文字(正規表現)を指定できます。

検索文字(正規表現)

QRコードの内容から検索する文字を正規表現で指定します。

例えば、「A0001」の様な識別コードが格納されたQRコードを対象に読み取りを行いたい場合で、同じページに「http://www.test.com」の様な関係のないQRコードも印刷されている可能性がある場合に、以下のような正規表現を指定すれば、識別コードが格納されたQRコードのみを読み取り対象とすることができます。

^[A-Z]{1}[0-9]{4}$

上記の正規表現は、先頭(^)からA~Zのアルファベット1文字、数字4文字($は末尾の意味)が格納されたQRコードという意味になります。

分割マークをつける

チェックするとQRコードを検出したページをメモリに記憶します。ページ分割はファイル移動・コピー処理で行うことができます。

分割データ

ファイル移動・コピー処理で、分割を行う際に取得できるデータを指定します。

例えば、「{%GET_U(QRコード読み取り1,1,Data)}」と記述しておけば、ページ分割を行った際に、分割後のファイル名にQRコードのデータを使用することができるようになります。

QRコード読み取りで取得したデータの取得方法

QRコード読み取りで取得したQRコードの内容は、処理名をデータ名としたユーザーデータに保存されます。

ユーザーデータには、「処理名 > ページ内で読み取ったQRコードの番号 > 項目名」のキーで保存されます。

ユーザーデータの3番目の引数に以下のキーを指定すると、対応した情報が取得できます。

キー
Data QRコードの内容。
DegreeForRotatePage QRコードを使った正立用の回転角度。
Dgree QRコードの回転角度。
Version QRコードの型番。
Level QRコードの誤り訂正レベル。
LeftTopX QRコードの左上のX座標。(単位はmm)
LeftTopY QRコードの左上のY座標。(単位はmm)
LeftBottomX QRコードの左下のX座標。(単位はmm)
LeftBottomY QRコードの左下のY座標。(単位はmm)
RightTopX QRコードの右上のX座標。(単位はmm)
RightTopY QRコードの右上のY座標。(単位はmm)
RightBottomX QRコードの右下のX座標。(単位はmm)
RightBottomY QRコードの右下のY座標。(単位はmm)
SequenceNumber QRコードの連結情報の連結番号。
例えば、3個で構成されたQRコードの1番目のQRコードの場合は「1」となります。
TotalNumber QRコードの連結情報の連結個数。
例えば、3個で構成されたQRコードの場合は「3」となります。
CheckDigit QRコードの連結情報のチェックディジット。
分割前のデータのXORによるチェックサムパリティ(8ビット)が16進文字列で返却されます。
QRコードが分割されていない場合は、全て「0」が返却されます。
Dpi QRコードの取得時の解像度。
例1
QRコード読み取り1で取得した1番目のQRコードの内容(格納されている文字)をログに出力する。
{%WRITE_LOG(Data:{%GET_U(QRコード読み取り1,1,Data)})}
例2
QRコード読み取り1で取得したQRコードの内容を全てログに出力する。
{%LOOP L1 {%GET_USER_DATA_KEY_COUNT(QRコード読み取り1)}(

  {%WRITE_LOG(---------------------------------------------)}
  {%WRITE_LOG(Data:{%GET_U(QRコード読み取り1,[L_IDX(L1)],Data)})}
  {%WRITE_LOG(Dpi:{%GET_U(QRコード読み取り1,[L_IDX(L1)],Dpi)})}
  {%WRITE_LOG(Version:{%GET_USER_DATA(QRコード読み取り1,[L_IDX(L1)],Version)})}
  {%WRITE_LOG(Level:{%GET_USER_DATA(QRコード読み取り1,[L_IDX(L1)],Level)})}
  {%WRITE_LOG(LeftBottomX:{%GET_USER_DATA(QRコード読み取り1,[L_IDX(L1)],LeftBottomX)})}
  {%WRITE_LOG(LeftBottomY:{%GET_USER_DATA(QRコード読み取り1,[L_IDX(L1)],LeftBottomY)})}
  {%WRITE_LOG(LeftTopX:{%GET_USER_DATA(QRコード読み取り1,[L_IDX(L1)],LeftTopX)})}
  {%WRITE_LOG(LeftTopY:{%GET_USER_DATA(QRコード読み取り1,[L_IDX(L1)],LeftTopY)})}
  {%WRITE_LOG(RightBottomX:{%GET_USER_DATA(QRコード読み取り1,[L_IDX(L1)],RightBottomX)})}
  {%WRITE_LOG(RightBottomY:{%GET_USER_DATA(QRコード読み取り1,[L_IDX(L1)],RightBottomY)})}
  {%WRITE_LOG(RightTopX:{%GET_USER_DATA(QRコード読み取り1,[L_IDX(L1)],RightTopX)})}
  {%WRITE_LOG(RightTopY:{%GET_USER_DATA(QRコード読み取り1,[L_IDX(L1)],RightTopY)})}
  {%WRITE_LOG(SequenceNumber:{%GET_USER_DATA(QRコード読み取り1,[L_IDX(L1)],SequenceNumber)})}
  {%WRITE_LOG(TotalNumber:{%GET_USER_DATA(QRコード読み取り1,[L_IDX(L1)],TotalNumber)})}
  {%WRITE_LOG(CheckDigit:{%GET_U(QRコード読み取り1,[L_IDX(L1)],CheckDigit)})}

)}