7 releases (4 breaking)

0.5.2 Jul 13, 2024
0.5.1 Sep 22, 2023
0.5.0 Jun 4, 2023
0.4.0 Aug 15, 2020
0.1.0 Sep 22, 2018

#448 in Parser implementations

Download history 218/week @ 2024-07-20 225/week @ 2024-07-27 472/week @ 2024-08-03 274/week @ 2024-08-10 241/week @ 2024-08-17 185/week @ 2024-08-24 414/week @ 2024-08-31 236/week @ 2024-09-07 301/week @ 2024-09-14 393/week @ 2024-09-21 349/week @ 2024-09-28 488/week @ 2024-10-05 289/week @ 2024-10-12 510/week @ 2024-10-19 245/week @ 2024-10-26 543/week @ 2024-11-02

1,711 downloads per month

MIT/Apache

24KB
518 lines

mrtd

Crate Documentation Build Status

A Rust parser for the machine-readable zone (MRZ) of machine-readable travel documents (MRTD) as defined by ICAO Document 9303.

Supported travel documents:

  • Passport
  • Identity Card

Example

use mrtd::{parse, Document};

fn main() {
    let passport_mrz = "P<UTOERIKSSON<<ANNA<MARIA<<<<<<<<<<<<<<<<<<<\
        L898902C36UTO7408122X1204159ZE184226B<<<<<10";
    if let Document::Passport(passport) = parse(passport_mrz).unwrap() {
        assert_eq!(passport.passport_number, "L898902C3");
        println!("{:?}", passport);
    }

    let id_card_mrz = "C<ITACA00000AA4<<<<<<<<<<<<<<<\
        6412308F2212304ITA<<<<<<<<<<<0\
        ROSSI<<BIANCA<<<<<<<<<<<<<<<<<";
    if let Document::IdentityCard(identity_card) = parse(id_card_mrz).unwrap() {
        assert_eq!(identity_card.document_number, "CA00000AA");
        println!("{:?}", identity_card);
    };
}

Dependencies

~3–4.5MB
~77K SLoC