PDF417(ピーディーエフ417)とは、主にアメリカ合衆国で身分証明書をはじめ様々な用途で使用される、スタック式[注釈 1]二次元コード規格である。PDFはポータブル・データ・ファイル(Portable Data File)の略語。417は、コード内の各パターンがバーと空白で成り立っていて、各パターンが17ユニットの長さであることを表している。PDF417はアメリカ合衆国の企業であるシンボル・テクノロジーズ(現:モトローラ・ソリューションズ社)のYnjiun P. Wang博士によって考案されたものだが、パブリックドメインの状態に置かれており、ISO規格では15438に規定されている。PDF417は、複数のバーコードを連結させることで、記録可能な情報量を拡張できるという特徴も持つ。
PDF417は商用およびアメリカ合衆国の政府機関などで、様々な用途に使用されている。例えば、PDF417はアメリカ合衆国郵便公社が認可した郵便料金の印刷に使用されている規格の1つである。PDF417はまた、航空業界のバーコード搭乗券規格(BCBP)により、搭乗券の二次元コードとしても使われている。PDF417は 、アメリカ合衆国国土安全保障省(DHS)の標準規格にも選ばれていて、リアルID準拠の運転免許証や州が発行する身分証明書(identification card)の機械読み取りゾーンとしても採用されている。イスラエル国が発行したビザや国境通過カードにも、PDF417のコードが含まれている(例)。
2次元コードに典型的な特徴に加え、PDF417の特性は次のとおり。
ISO / IEC文書の紹介[1]
PDF417のバーコード(シンボルとも言う)は3-90行で構成されており、各行は、小さな線型バーコードのようなものにあたる。
各行にあるものとして、
全ての行は同じ幅である。 各行は同じ数量のコードワードを有している。
PDF417 は929進法のエンコードを使用しており、各コードワードは0から928の数字を表している[2]。 コードワードは、暗い領域=バーと明るい領域=空白のパターンで表される。これらの各パターンは、4つのバーと4つの空白で成り立っている(名前に4が入っている由来)。 合計の幅は、最も狭い垂直バーの幅の17倍となる(名前に17が入っている由来)。 各パターンはバーで始まり、空白で終わる。
行の高さは少なくとも最小幅の3倍でなければならない。Y ≥ 3 X.[3]
各コードワードを表すために3つの異なるバー=空白パターンが使用される。 これらのパターンは、クラスタと呼ばれる3つのグループに分類される。 クラスタは、0、3、6にラベル付けされている。複数のクラスタでは、バー=空白パターンは使用されない。シンボルの行は3つのクラスタを循環する形で、行1はクラスタ0からのパターンを、行2はクラスタ3を、行3はクラスタ6を使用し、行4は再びクラスタ0を使用する。
下の数式によって、どのクラスタであるかが決定される[4]。
ここでK はクラスタ番号であり、bi はシンボル記号(Xユニット内)のi番目の黒いバーの幅を表す。 あるいは、この式[5]。
ここで、Ei はi 番目のエッジ(端)から次の同じエッジまでの距離。奇数インデックスは、バーの最前エッジから次のバーの最前エッジまで。 偶数インデックスも、また最後部エッジに対する同様のものである。
3つあるクラスタの目的の1つは、コードワードがどの行(mod 3)にあるかを決定するためである。クラスタは、水平から歪んでいる(斜め方向に向かう)かもしれない1本のスキャン線を使用してのシンボル部分読み取りを許可する[6]。 たとえば、スキャンが先頭行の行6で開始して行10で終了することがある。スキャン開始時に、スキャナは特定の開始パターンを見て、次にクラスタ6内のシンボルを見る。歪んだスキャンが行6と7に跨っている時、スキャナはノイズを検出する。スキャンが行7にあるとき、スキャナはクラスタ0内のシンボルを見る。結果、スキャナは歪みの方向を判別する。スキャナが右に達すると、それは行10にあるので、クラスタ0のパターンを見る。スキャナはまた一定の停止パターンも見ている。
利用可能な929のコードワードのうち、900個がデータに使用され、29個は主要なモード間移行などの特殊機能に使用される。 3つの主要モードはさまざまな種類のデータをさまざまな方法でエンコードし、必要に応じて1つのバーコード内に混在させることができる。
PDF417シンボルが作成されると、2から512までのエラー検出および訂正コードワードが追加される。 PDF417では、リード・ソロモンのエラー訂正が使用されている。シンボルがスキャンされた場合、最大訂正回数は追加されたコードワードの数に等しいが、標準では、訂正された情報の信頼性を確保するために2つのコードワードの保持を推奨している。
PDF417はスタック式(多段重ねの)バーコードであり、単純な線形スキャナをシンボル上で走査することで読み取り可能である[8]。それらの線形スキャナでは、開始と停止のコード文字を含む左右の列が必要となる。加えて、そのスキャナはどの行がスキャンされているかを知る必要があるため、シンボルの各行も行番号をエンコードする必要がある。さらに、線形スキャン読み取り機は単一行だけをスキャンするとは限らない。大概は1つの行を読み取り始めるが、隣接を超えて次なる行と交差して読み取り続けることもありうる。これら交差の影響を最小限に抑えるため、PDF417モジュールは一般的に高さが幅の3倍という、背高で幅狭いものになっている。また、各コードワードは、越境が発生したときにそれを検出できるよう、どの行に属するのかを明示しなければならない。コードワードはまた、デルタデコード可能なようにも設計されているので、いくつかのコードワードは冗長である。各PDFデータコードワードは約10ビットの情報(log2(900) ≈ 9.8)を表すが、印刷されたコードワードは17モジュール幅である。高さ3モジュールを含めて、PDF417コードワードは10ビットを表現するため51正方形モジュールの形をとる。その領域は、開始、停止、行、フォーマット、誤り検出訂正(ECC)情報といった他のオーバーヘッドを含まない。
DataMatrixやQRコードなど他の二次元コードは、未調整な線形スキャンの代わりにイメージセンサでデコードされる。これらのコードは未だに認識と照準のパターンが必要だが、顕著である必要はない。8ビットのコード文字は8正方形モジュールの形をとる(認識、整列、フォーマット、およびECC情報を無視する)。
実際には、PDF417シンボルはDataMatrixまたはQRコードの約4倍の領域を占める[9]。