2019-07-09 23:01:09 +02:00
|
|
|
|
"""
|
|
|
|
|
********************************************************************************
|
|
|
|
|
* CNIRevelator *
|
|
|
|
|
* *
|
|
|
|
|
* Desc: MRZ data dictionnary for CNIRevelator analyzer and *
|
|
|
|
|
* functions to analyze these data *
|
|
|
|
|
* *
|
|
|
|
|
* Copyright © 2018-2019 Adrien Bourmault (neox95) *
|
|
|
|
|
* *
|
|
|
|
|
* This file is part of CNIRevelator. *
|
|
|
|
|
* *
|
|
|
|
|
* CNIRevelator is free software: you can redistribute it and/or modify *
|
|
|
|
|
* it under the terms of the GNU General Public License as published by *
|
|
|
|
|
* the Free Software Foundation, either version 3 of the License, or *
|
|
|
|
|
* any later version. *
|
|
|
|
|
* *
|
|
|
|
|
* CNIRevelator is distributed in the hope that it will be useful, *
|
|
|
|
|
* but WITHOUT ANY WARRANTY*without even the implied warranty of *
|
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
|
|
|
|
* GNU General Public License for more details. *
|
|
|
|
|
* *
|
|
|
|
|
* You should have received a copy of the GNU General Public License *
|
|
|
|
|
* along with CNIRevelator. If not, see <https:*www.gnu.org/licenses/>. *
|
|
|
|
|
********************************************************************************
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
## SEX CODES
|
|
|
|
|
sexcode = {'M':'Homme', 'F':'Femme', 'X':'Non spécifié'}
|
|
|
|
|
|
|
|
|
|
## COUNTRY CODES
|
2019-07-12 10:57:03 +02:00
|
|
|
|
|
|
|
|
|
landcode2 = {
|
|
|
|
|
'AW': 'Aruba',
|
|
|
|
|
'AF': 'Afghanistan',
|
|
|
|
|
'AO': 'Angola',
|
|
|
|
|
'AI': 'Anguilla',
|
|
|
|
|
'AL': 'Albanie',
|
|
|
|
|
'AD': 'Andorre',
|
|
|
|
|
'AE': 'Emirats arabes unis',
|
|
|
|
|
'AR': 'Argentine',
|
|
|
|
|
'AM': 'Arménie',
|
|
|
|
|
'AS': 'Samoa américaines',
|
|
|
|
|
'AQ': 'Antarctique',
|
|
|
|
|
'TF': 'Terres australes et antarctiques françaises',
|
|
|
|
|
'AG': 'Antigua-et-Barbuda',
|
|
|
|
|
'AU': 'Australie',
|
|
|
|
|
'AT': 'Autriche',
|
|
|
|
|
'AZ': 'Azerbaidjan',
|
|
|
|
|
'BI': 'Burundi',
|
|
|
|
|
'BE': 'Belgique',
|
|
|
|
|
'BJ': 'Benin',
|
|
|
|
|
'BQ': 'Pays-Bas caribéens',
|
|
|
|
|
'BF': 'Burkina Faso',
|
|
|
|
|
'BD': 'Bangladesh',
|
|
|
|
|
'BG': 'Bulgarie',
|
|
|
|
|
'BH': 'Bahrein',
|
|
|
|
|
'BS': 'Bahamas',
|
|
|
|
|
'BA': 'Bosnie-Herzegovine',
|
|
|
|
|
'BL': 'Saint-Barthélemy',
|
|
|
|
|
'BY': 'Bielorussie',
|
|
|
|
|
'BZ': 'Belize',
|
|
|
|
|
'BM': 'Bermudes',
|
|
|
|
|
'BO': 'Bolivie',
|
|
|
|
|
'BR': 'Brésil',
|
|
|
|
|
'BB': 'Barbade',
|
|
|
|
|
'BN': 'Brunei',
|
|
|
|
|
'BT': 'Bhoutan',
|
|
|
|
|
'BW': 'Botswana',
|
|
|
|
|
'CF': 'République Centrafricaine',
|
|
|
|
|
'CA': 'Canada',
|
|
|
|
|
'CC': 'Îles Cocos',
|
|
|
|
|
'CH': 'Suisse',
|
|
|
|
|
'CL': 'Chili',
|
|
|
|
|
'CN': 'Chine',
|
|
|
|
|
'CI': "Côte d'Ivoire",
|
|
|
|
|
'CM': 'Cameroun',
|
|
|
|
|
'CD': 'Congo (République démocratique)',
|
|
|
|
|
'CG': 'Congo (République)',
|
|
|
|
|
'CK': 'Îles Cook',
|
|
|
|
|
'CO': 'Colombie',
|
|
|
|
|
'KM': 'Comores',
|
|
|
|
|
'CV': 'Cap-Vert',
|
|
|
|
|
'CR': 'Costa Rica',
|
|
|
|
|
'CU': 'Cuba',
|
|
|
|
|
'CW': 'Curaçao',
|
|
|
|
|
'CX': 'Île Christmas',
|
|
|
|
|
'KY': 'Caimans',
|
|
|
|
|
'CY': 'Chypre',
|
|
|
|
|
'CZ': 'Tchéquie',
|
|
|
|
|
'DE': 'Allemagne',
|
|
|
|
|
'DJ': 'Djibouti',
|
|
|
|
|
'DM': 'Dominique',
|
|
|
|
|
'DK': 'Danemark',
|
|
|
|
|
'DO': 'République dominicaine',
|
|
|
|
|
'DZ': 'Algérie',
|
|
|
|
|
'EC': 'Equateur',
|
|
|
|
|
'EG': 'Egypte',
|
|
|
|
|
'ER': 'Erythrée',
|
|
|
|
|
'EH': 'Sahara occidental',
|
|
|
|
|
'ES': 'Espagne',
|
|
|
|
|
'EE': 'Estonie',
|
|
|
|
|
'ET': 'Ethiopie',
|
|
|
|
|
'FI': 'Finlande',
|
|
|
|
|
'FJ': 'Fidji',
|
|
|
|
|
'FK': 'Îles Malouines',
|
|
|
|
|
'FR': 'France',
|
|
|
|
|
'FO': 'Féroé',
|
|
|
|
|
'FM': 'Micronésie',
|
|
|
|
|
'GA': 'Gabon',
|
|
|
|
|
'GB': 'Royaume-Uni',
|
|
|
|
|
'GE': 'Géorgie',
|
|
|
|
|
'GG': 'Guernesey',
|
|
|
|
|
'GH': 'Ghana',
|
|
|
|
|
'GI': 'Gibraltar',
|
|
|
|
|
'GN': 'Guinée',
|
|
|
|
|
'GP': 'Guadeloupe',
|
|
|
|
|
'GM': 'Gambie',
|
|
|
|
|
'GW': 'Guinée-Bissau',
|
|
|
|
|
'GQ': 'Guinée équatoriale',
|
|
|
|
|
'GR': 'Grèce',
|
|
|
|
|
'GD': 'Grenade',
|
|
|
|
|
'GL': 'Groenland',
|
|
|
|
|
'GT': 'Guatemala',
|
|
|
|
|
'GF': 'Guyane',
|
|
|
|
|
'GU': 'Guam',
|
|
|
|
|
'GY': 'Guyana',
|
|
|
|
|
'HK': 'Hong Kong',
|
|
|
|
|
'HN': 'Honduras',
|
|
|
|
|
'HR': 'Croatie',
|
|
|
|
|
'HT': 'Haïti',
|
|
|
|
|
'HU': 'Hongrie',
|
|
|
|
|
'ID': 'Indonésie',
|
|
|
|
|
'IM': 'Île de Man',
|
|
|
|
|
'IN': 'Inde',
|
|
|
|
|
'IO': "Territoire britannique de l'océan Indien",
|
|
|
|
|
'IE': 'Irlande',
|
|
|
|
|
'IR': 'Irak',
|
|
|
|
|
'IQ': 'Iran',
|
|
|
|
|
'IS': 'Islande',
|
|
|
|
|
'IL': 'Israël',
|
|
|
|
|
'IT': 'Italie',
|
|
|
|
|
'JM': 'Jamaïque',
|
|
|
|
|
'JE': 'Jersey',
|
|
|
|
|
'JO': 'Jordanie',
|
|
|
|
|
'JP': 'Japon',
|
|
|
|
|
'KZ': 'Kazakhstan',
|
|
|
|
|
'KE': 'Kenya',
|
|
|
|
|
'KG': 'Kirghizistan',
|
|
|
|
|
'KH': 'Cambodge',
|
|
|
|
|
'KI': 'Kiribati',
|
|
|
|
|
'KN': 'Saint-Christophe-et-Niévès',
|
|
|
|
|
'KR': 'Corée du Sud',
|
|
|
|
|
'KW': 'Koweït',
|
|
|
|
|
'LA': 'Laos',
|
|
|
|
|
'LB': 'Liban',
|
|
|
|
|
'LR': 'Liberia',
|
|
|
|
|
'LY': 'Libye',
|
|
|
|
|
'LC': 'Sainte-Lucie',
|
|
|
|
|
'LI': 'Liechtenstein',
|
|
|
|
|
'LK': 'Sri Lanka',
|
|
|
|
|
'LS': 'Lesotho',
|
|
|
|
|
'LT': 'Lituanie',
|
|
|
|
|
'LU': 'Luxembourg',
|
|
|
|
|
'LV': 'Lettonie',
|
|
|
|
|
'MO': 'Macao',
|
|
|
|
|
'MF': 'Sint-Maarten',
|
|
|
|
|
'MA': 'Maroc',
|
|
|
|
|
'MC': 'Monaco',
|
|
|
|
|
'MD': 'Moldavie',
|
|
|
|
|
'MG': 'Madagascar',
|
|
|
|
|
'MV': 'Maldives',
|
|
|
|
|
'MX': 'Mexique',
|
|
|
|
|
'MH': 'Marshall',
|
|
|
|
|
'MK': 'Macedoine',
|
|
|
|
|
'ML': 'Mali',
|
|
|
|
|
'MT': 'Malte',
|
|
|
|
|
'MM': 'Birmanie',
|
|
|
|
|
'ME': 'Monténégro',
|
|
|
|
|
'MN': 'Mongolie',
|
|
|
|
|
'MP': 'Îles Mariannes du Nord',
|
|
|
|
|
'MZ': 'Mozambique',
|
|
|
|
|
'MR': 'Mauritanie',
|
|
|
|
|
'MS': 'Montserrat',
|
|
|
|
|
'MQ': 'Martinique',
|
|
|
|
|
'MU': 'Maurice',
|
|
|
|
|
'MW': 'Malawi',
|
|
|
|
|
'MY': 'Malaisie',
|
|
|
|
|
'YT': 'Mayotte',
|
|
|
|
|
'NA': 'Namibie',
|
|
|
|
|
'NC': 'Nouvelle-Calédonie',
|
|
|
|
|
'NE': 'Niger',
|
|
|
|
|
'NF': 'Île Norfolk',
|
|
|
|
|
'NG': 'Nigeria',
|
|
|
|
|
'NI': 'Nicaragua',
|
|
|
|
|
'NU': 'Niue',
|
|
|
|
|
'NL': 'Pays-Bas',
|
|
|
|
|
'NO': 'Norvège',
|
|
|
|
|
'NP': 'Nepal',
|
|
|
|
|
'NR': 'Nauru',
|
|
|
|
|
'NZ': 'Nouvelle-Zélande',
|
|
|
|
|
'OM': 'Oman',
|
|
|
|
|
'PK': 'Pakistan',
|
|
|
|
|
'PA': 'Panama',
|
|
|
|
|
'PN': 'Îles Pitcairn',
|
|
|
|
|
'PE': 'Pérou',
|
|
|
|
|
'PH': 'Philippines',
|
|
|
|
|
'PW': 'Palaos',
|
|
|
|
|
'PG': 'Papouasie-Nouvelle-Guinée',
|
|
|
|
|
'PL': 'Pologne',
|
|
|
|
|
'PR': 'Porto Rico',
|
|
|
|
|
'KP': 'Corée du Nord',
|
|
|
|
|
'PT': 'Portugal',
|
|
|
|
|
'PY': 'Paraguay',
|
|
|
|
|
'PS': 'Palestine',
|
|
|
|
|
'PF': 'Polynésie française',
|
|
|
|
|
'QA': 'Qatar',
|
|
|
|
|
'RE': 'Réunion',
|
|
|
|
|
'RO': 'Roumanie',
|
|
|
|
|
'RU': 'Russie',
|
|
|
|
|
'RW': 'Rwanda',
|
|
|
|
|
'SA': 'Arabie saoudite',
|
|
|
|
|
'SD': 'Soudan',
|
|
|
|
|
'SN': 'Sénégal',
|
|
|
|
|
'SG': 'Singapour',
|
|
|
|
|
'GS': 'Georgie du Sud-et-les iles Sandwich du Sud',
|
|
|
|
|
'SH': 'Sainte-Hélène, Ascension et Tristan da Cunha',
|
|
|
|
|
'SJ': 'Svalbard et île Jan Mayen',
|
|
|
|
|
'SB': 'Salomon',
|
|
|
|
|
'SL': 'Sierra Leone',
|
|
|
|
|
'SV': 'Salvador',
|
|
|
|
|
'SM': 'Saint-Marin',
|
|
|
|
|
'SO': 'Somalie',
|
|
|
|
|
'PM': 'Saint-Pierre-et-Miquelon',
|
|
|
|
|
'RS': 'Serbie',
|
|
|
|
|
'SS': 'Soudan du Sud',
|
|
|
|
|
'ST': 'Sao Tomé-et-Principe',
|
|
|
|
|
'SR': 'Suriname',
|
|
|
|
|
'SK': 'Slovaquie',
|
|
|
|
|
'SI': 'Slovénie',
|
|
|
|
|
'SE': 'Suède',
|
|
|
|
|
'SZ': 'eSwatani',
|
|
|
|
|
'SX': 'Saint-Martin ',
|
|
|
|
|
'SC': 'Seychelles',
|
|
|
|
|
'SY': 'Syrie',
|
|
|
|
|
'TC': 'Îles Turques-et-Caïques',
|
|
|
|
|
'TD': 'Tchad',
|
|
|
|
|
'TG': 'Togo',
|
|
|
|
|
'TH': 'Thaïlande',
|
|
|
|
|
'TJ': 'Tadjikistan',
|
|
|
|
|
'TK': 'Tokelau',
|
|
|
|
|
'TM': 'Turkmenistan',
|
|
|
|
|
'TL': 'Timor oriental',
|
|
|
|
|
'TO': 'Tonga',
|
|
|
|
|
'TT': 'Trinité-et-Tobago',
|
|
|
|
|
'TN': 'Tunisie',
|
|
|
|
|
'TR': 'Turquie',
|
|
|
|
|
'TV': 'Tuvalu',
|
|
|
|
|
'TW': 'Taiwan',
|
|
|
|
|
'TZ': 'Tanzanie',
|
|
|
|
|
'UG': 'Ouganda',
|
|
|
|
|
'UA': 'Ukraine',
|
|
|
|
|
'UY': 'Uruguay',
|
|
|
|
|
'US': 'Etats-Unis',
|
|
|
|
|
'UZ': 'Ouzbékistan',
|
|
|
|
|
'VA': 'Saint-Siège (État de la Cité du Vatican)',
|
|
|
|
|
'VC': 'Saint-Vincent-et-les-Grenadines',
|
|
|
|
|
'VE': 'Venezuela',
|
|
|
|
|
'VG': 'Îles Vierges britanniques',
|
|
|
|
|
'VI': 'Îles Vierges des États-Unis',
|
|
|
|
|
'VN': 'Viêt Nam',
|
|
|
|
|
'VU': 'Vanuatu',
|
|
|
|
|
'WF': 'Wallis-et-Futuna',
|
|
|
|
|
'WS': 'Samoa',
|
|
|
|
|
'XK': 'Kosovo',
|
|
|
|
|
'YE': 'Yémen',
|
|
|
|
|
'ZA': 'Afrique du Sud',
|
|
|
|
|
'ZM': 'Zambie',
|
|
|
|
|
'ZW': 'Zimbabwe'
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
landcode3 = {
|
|
|
|
|
'ABW': 'Aruba',
|
|
|
|
|
'AFG': 'Afghanistan',
|
|
|
|
|
'AGO': 'Angola',
|
|
|
|
|
'AIA': 'Anguilla',
|
|
|
|
|
'ALB': 'Albanie',
|
|
|
|
|
'AND': 'Andorre',
|
|
|
|
|
'ARE': 'Emirats arabes unis',
|
|
|
|
|
'ARG': 'Argentine',
|
|
|
|
|
'ARM': 'Arménie',
|
|
|
|
|
'ASM': 'Samoa américaines',
|
|
|
|
|
'ATA': 'Antarctique',
|
|
|
|
|
'ATF': 'Terres australes et antarctiques françaises',
|
|
|
|
|
'ATG': 'Antigua-et-Barbuda',
|
|
|
|
|
'AUS': 'Australie',
|
|
|
|
|
'AUT': 'Autriche',
|
|
|
|
|
'AZE': 'Azerbaidjan',
|
|
|
|
|
'BDI': 'Burundi',
|
|
|
|
|
'BEL': 'Belgique',
|
|
|
|
|
'BEN': 'Benin',
|
|
|
|
|
'BES': 'Pays-Bas caribéens',
|
|
|
|
|
'BFA': 'Burkina Faso',
|
|
|
|
|
'BGD': 'Bangladesh',
|
|
|
|
|
'BGR': 'Bulgarie',
|
|
|
|
|
'BHR': 'Bahrein',
|
|
|
|
|
'BHS': 'Bahamas',
|
|
|
|
|
'BIH': 'Bosnie-Herzegovine',
|
|
|
|
|
'BLM': 'Saint-Barthélemy',
|
|
|
|
|
'BLR': 'Bielorussie',
|
|
|
|
|
'BLZ': 'Belize',
|
|
|
|
|
'BMU': 'Bermudes',
|
|
|
|
|
'BOL': 'Bolivie',
|
|
|
|
|
'BRA': 'Brésil',
|
|
|
|
|
'BRB': 'Barbade',
|
|
|
|
|
'BRN': 'Brunei',
|
|
|
|
|
'BTN': 'Bhoutan',
|
|
|
|
|
'BWA': 'Botswana',
|
|
|
|
|
'CAF': 'République Centrafricaine',
|
|
|
|
|
'CAN': 'Canada',
|
|
|
|
|
'CCK': 'Îles Cocos',
|
|
|
|
|
'CHE': 'Suisse',
|
|
|
|
|
'CHL': 'Chili',
|
|
|
|
|
'CHN': 'Chine',
|
|
|
|
|
'CIV': "Côte d'Ivoire",
|
|
|
|
|
'CMR': 'Cameroun',
|
|
|
|
|
'COD': 'Congo (République démocratique)',
|
|
|
|
|
'COG': 'Congo (République)',
|
|
|
|
|
'COK': 'Îles Cook',
|
|
|
|
|
'COL': 'Colombie',
|
|
|
|
|
'COM': 'Comores',
|
|
|
|
|
'CPV': 'Cap-Vert',
|
|
|
|
|
'CRI': 'Costa Rica',
|
|
|
|
|
'CUB': 'Cuba',
|
|
|
|
|
'CUW': 'Curaçao',
|
|
|
|
|
'CXR': 'Île Christmas',
|
|
|
|
|
'CYM': 'Caimans',
|
|
|
|
|
'CYP': 'Chypre',
|
|
|
|
|
'CZE': 'Tchéquie',
|
|
|
|
|
'DEU': 'Allemagne',
|
|
|
|
|
'DJI': 'Djibouti',
|
|
|
|
|
'DMA': 'Dominique',
|
|
|
|
|
'DNK': 'Danemark',
|
|
|
|
|
'DOM': 'République dominicaine',
|
|
|
|
|
'DZA': 'Algérie',
|
|
|
|
|
'ECU': 'Equateur',
|
|
|
|
|
'EGY': 'Egypte',
|
|
|
|
|
'ERI': 'Erythrée',
|
|
|
|
|
'ESH': 'Sahara occidental',
|
|
|
|
|
'ESP': 'Espagne',
|
|
|
|
|
'EST': 'Estonie',
|
|
|
|
|
'ETH': 'Ethiopie',
|
|
|
|
|
'FIN': 'Finlande',
|
|
|
|
|
'FJI': 'Fidji',
|
|
|
|
|
'FLK': 'Îles Malouines',
|
|
|
|
|
'FRA': 'France',
|
|
|
|
|
'FRO': 'Féroé',
|
|
|
|
|
'FSM': 'Micronésie',
|
|
|
|
|
'GAB': 'Gabon',
|
|
|
|
|
'GBR': 'Royaume-Uni',
|
|
|
|
|
'GEO': 'Géorgie',
|
|
|
|
|
'GGY': 'Guernesey',
|
|
|
|
|
'GHA': 'Ghana',
|
|
|
|
|
'GIB': 'Gibraltar',
|
|
|
|
|
'GIN': 'Guinée',
|
|
|
|
|
'GLP': 'Guadeloupe',
|
|
|
|
|
'GMB': 'Gambie',
|
|
|
|
|
'GNB': 'Guinée-Bissau',
|
|
|
|
|
'GNQ': 'Guinée équatoriale',
|
|
|
|
|
'GRC': 'Grèce',
|
|
|
|
|
'GRD': 'Grenade',
|
|
|
|
|
'GRL': 'Groenland',
|
|
|
|
|
'GTM': 'Guatemala',
|
|
|
|
|
'GUF': 'Guyane',
|
|
|
|
|
'GUM': 'Guam',
|
|
|
|
|
'GUY': 'Guyana',
|
|
|
|
|
'HKG': 'Hong Kong',
|
|
|
|
|
'HND': 'Honduras',
|
|
|
|
|
'HRV': 'Croatie',
|
|
|
|
|
'HTI': 'Haïti',
|
|
|
|
|
'HUN': 'Hongrie',
|
|
|
|
|
'IDN': 'Indonésie',
|
|
|
|
|
'IMN': 'Île de Man',
|
|
|
|
|
'IND': 'Inde',
|
|
|
|
|
'IOT': "Territoire britannique de l'océan Indien",
|
|
|
|
|
'IRL': 'Irlande',
|
|
|
|
|
'IRN': 'Irak',
|
|
|
|
|
'IRQ': 'Iran',
|
|
|
|
|
'ISL': 'Islande',
|
|
|
|
|
'ISR': 'Israël',
|
|
|
|
|
'ITA': 'Italie',
|
|
|
|
|
'JAM': 'Jamaïque',
|
|
|
|
|
'JEY': 'Jersey',
|
|
|
|
|
'JOR': 'Jordanie',
|
|
|
|
|
'JPN': 'Japon',
|
|
|
|
|
'KAZ': 'Kazakhstan',
|
|
|
|
|
'KEN': 'Kenya',
|
|
|
|
|
'KGZ': 'Kirghizistan',
|
|
|
|
|
'KHM': 'Cambodge',
|
|
|
|
|
'KIR': 'Kiribati',
|
|
|
|
|
'KNA': 'Saint-Christophe-et-Niévès',
|
|
|
|
|
'KOR': 'Corée du Sud',
|
|
|
|
|
'KWT': 'Koweït',
|
|
|
|
|
'LAO': 'Laos',
|
|
|
|
|
'LBN': 'Liban',
|
|
|
|
|
'LBR': 'Liberia',
|
|
|
|
|
'LBY': 'Libye',
|
|
|
|
|
'LCA': 'Sainte-Lucie',
|
|
|
|
|
'LIE': 'Liechtenstein',
|
|
|
|
|
'LKA': 'Sri Lanka',
|
|
|
|
|
'LSO': 'Lesotho',
|
|
|
|
|
'LTU': 'Lituanie',
|
|
|
|
|
'LUX': 'Luxembourg',
|
|
|
|
|
'LVA': 'Lettonie',
|
|
|
|
|
'MAC': 'Macao',
|
|
|
|
|
'MAF': 'Sint-Maarten',
|
|
|
|
|
'MAR': 'Maroc',
|
|
|
|
|
'MCO': 'Monaco',
|
|
|
|
|
'MDA': 'Moldavie',
|
|
|
|
|
'MDG': 'Madagascar',
|
|
|
|
|
'MDV': 'Maldives',
|
|
|
|
|
'MEX': 'Mexique',
|
|
|
|
|
'MHL': 'Marshall',
|
|
|
|
|
'MKD': 'Macedoine',
|
|
|
|
|
'MLI': 'Mali',
|
|
|
|
|
'MLT': 'Malte',
|
|
|
|
|
'MMR': 'Birmanie',
|
|
|
|
|
'MNE': 'Monténégro',
|
|
|
|
|
'MNG': 'Mongolie',
|
|
|
|
|
'MNP': 'Îles Mariannes du Nord',
|
|
|
|
|
'MOZ': 'Mozambique',
|
|
|
|
|
'MRT': 'Mauritanie',
|
|
|
|
|
'MSR': 'Montserrat',
|
|
|
|
|
'MTQ': 'Martinique',
|
|
|
|
|
'MUS': 'Maurice',
|
|
|
|
|
'MWI': 'Malawi',
|
|
|
|
|
'MYS': 'Malaisie',
|
|
|
|
|
'MYT': 'Mayotte',
|
|
|
|
|
'NAM': 'Namibie',
|
|
|
|
|
'NCL': 'Nouvelle-Calédonie',
|
|
|
|
|
'NER': 'Niger',
|
|
|
|
|
'NFK': 'Île Norfolk',
|
|
|
|
|
'NGA': 'Nigeria',
|
|
|
|
|
'NIC': 'Nicaragua',
|
|
|
|
|
'NIU': 'Niue',
|
|
|
|
|
'NLD': 'Pays-Bas',
|
|
|
|
|
'NOR': 'Norvège',
|
|
|
|
|
'NPL': 'Nepal',
|
|
|
|
|
'NRU': 'Nauru',
|
|
|
|
|
'NZL': 'Nouvelle-Zélande',
|
|
|
|
|
'OMN': 'Oman',
|
|
|
|
|
'PAK': 'Pakistan',
|
|
|
|
|
'PAN': 'Panama',
|
|
|
|
|
'PCN': 'Îles Pitcairn',
|
|
|
|
|
'PER': 'Pérou',
|
|
|
|
|
'PHL': 'Philippines',
|
|
|
|
|
'PLW': 'Palaos',
|
|
|
|
|
'PNG': 'Papouasie-Nouvelle-Guinée',
|
|
|
|
|
'POL': 'Pologne',
|
|
|
|
|
'PRI': 'Porto Rico',
|
|
|
|
|
'PRK': 'Corée du Nord',
|
|
|
|
|
'PRT': 'Portugal',
|
|
|
|
|
'PRY': 'Paraguay',
|
|
|
|
|
'PSE': 'Palestine',
|
|
|
|
|
'PYF': 'Polynésie française',
|
|
|
|
|
'QAT': 'Qatar',
|
|
|
|
|
'REU': 'Réunion',
|
|
|
|
|
'ROU': 'Roumanie',
|
|
|
|
|
'RUS': 'Russie',
|
|
|
|
|
'RWA': 'Rwanda',
|
|
|
|
|
'SAU': 'Arabie saoudite',
|
|
|
|
|
'SDN': 'Soudan',
|
|
|
|
|
'SEN': 'Sénégal',
|
|
|
|
|
'SGP': 'Singapour',
|
|
|
|
|
'SGS': 'Georgie du Sud-et-les iles Sandwich du Sud',
|
|
|
|
|
'SHN': 'Sainte-Hélène, Ascension et Tristan da Cunha',
|
|
|
|
|
'SJM': 'Svalbard et île Jan Mayen',
|
|
|
|
|
'SLB': 'Salomon',
|
|
|
|
|
'SLE': 'Sierra Leone',
|
|
|
|
|
'SLV': 'Salvador',
|
|
|
|
|
'SMR': 'Saint-Marin',
|
|
|
|
|
'SOM': 'Somalie',
|
|
|
|
|
'SPM': 'Saint-Pierre-et-Miquelon',
|
|
|
|
|
'SRB': 'Serbie',
|
|
|
|
|
'SSD': 'Soudan du Sud',
|
|
|
|
|
'STP': 'Sao Tomé-et-Principe',
|
|
|
|
|
'SUR': 'Suriname',
|
|
|
|
|
'SVK': 'Slovaquie',
|
|
|
|
|
'SVN': 'Slovénie',
|
|
|
|
|
'SWE': 'Suède',
|
|
|
|
|
'SWZ': 'eSwatani',
|
|
|
|
|
'SXM': 'Saint-Martin ',
|
|
|
|
|
'SYC': 'Seychelles',
|
|
|
|
|
'SYR': 'Syrie',
|
|
|
|
|
'TCA': 'Îles Turques-et-Caïques',
|
|
|
|
|
'TCD': 'Tchad',
|
|
|
|
|
'TGO': 'Togo',
|
|
|
|
|
'THA': 'Thaïlande',
|
|
|
|
|
'TJK': 'Tadjikistan',
|
|
|
|
|
'TKL': 'Tokelau',
|
|
|
|
|
'TKM': 'Turkmenistan',
|
|
|
|
|
'TLS': 'Timor oriental',
|
|
|
|
|
'TON': 'Tonga',
|
|
|
|
|
'TTO': 'Trinité-et-Tobago',
|
|
|
|
|
'TUN': 'Tunisie',
|
|
|
|
|
'TUR': 'Turquie',
|
|
|
|
|
'TUV': 'Tuvalu',
|
|
|
|
|
'TWN': 'Taiwan',
|
|
|
|
|
'TZA': 'Tanzanie',
|
|
|
|
|
'UGA': 'Ouganda',
|
|
|
|
|
'UKR': 'Ukraine',
|
|
|
|
|
'URY': 'Uruguay',
|
|
|
|
|
'USA': 'Etats-Unis',
|
|
|
|
|
'UZB': 'Ouzbékistan',
|
|
|
|
|
'VAT': 'Saint-Siège (État de la Cité du Vatican)',
|
|
|
|
|
'VCT': 'Saint-Vincent-et-les-Grenadines',
|
|
|
|
|
'VEN': 'Venezuela',
|
|
|
|
|
'VGB': 'Îles Vierges britanniques',
|
|
|
|
|
'VIR': 'Îles Vierges des États-Unis',
|
|
|
|
|
'VNM': 'Viêt Nam',
|
|
|
|
|
'VUT': 'Vanuatu',
|
|
|
|
|
'WLF': 'Wallis-et-Futuna',
|
|
|
|
|
'WSM': 'Samoa',
|
|
|
|
|
'XKX': 'Kosovo',
|
|
|
|
|
'YEM': 'Yémen',
|
|
|
|
|
'ZAF': 'Afrique du Sud',
|
|
|
|
|
'ZMB': 'Zambie',
|
|
|
|
|
'ZWE': 'Zimbabwe',
|
|
|
|
|
'NTZ': 'Zone neutre',
|
|
|
|
|
'UNO': 'Fonctionnaire des Nations Unies',
|
|
|
|
|
'UNA': "Fonctionnaire d'une organisation affiliée aux Nations Unies",
|
|
|
|
|
'UNK': 'Représentant des Nations Unies au Kosovo',
|
|
|
|
|
'XXA': 'Apatride Convention 1954',
|
|
|
|
|
'XXB': 'Réfugié Convention 1954',
|
|
|
|
|
'XXC': 'Réfugié autre',
|
|
|
|
|
'XXX': 'Résident Légal de Nationalité Inconnue',
|
|
|
|
|
'D': 'Allemagne',
|
|
|
|
|
'EUE': 'Union Européenne',
|
|
|
|
|
'GBD': "Citoyen Britannique d'Outre-mer (BOTC)",
|
|
|
|
|
'GBN': 'British National (Overseas)',
|
|
|
|
|
'GBO': 'British Overseas Citizen',
|
|
|
|
|
'GBP': 'British Protected Person',
|
|
|
|
|
'GBS': 'British Subject',
|
|
|
|
|
'XBA': 'Banque Africaine de Développement',
|
|
|
|
|
'XIM': "Banque Africaine d'Export–Import",
|
|
|
|
|
'XCC': 'Caribbean Community or one of its emissaries',
|
|
|
|
|
'XCO': 'Common Market for Eastern and Southern Africa',
|
|
|
|
|
'XEC': 'Economic Community of West African States',
|
|
|
|
|
'XPO': 'International Criminal Police Organization',
|
|
|
|
|
'XOM': 'Sovereign Military Order of Malta',
|
|
|
|
|
'RKS': 'Kosovo',
|
|
|
|
|
'WSA': 'World Service Authority World Passport'
|
|
|
|
|
}
|
2019-07-09 23:01:09 +02:00
|
|
|
|
|
|
|
|
|
## DOCUMENTS TYPES
|
|
|
|
|
P = [
|
|
|
|
|
"11222333333333333333333333333333333333333333|444444444566677777789AAAAAABCCCCCCCCCCCCCCDE",
|
|
|
|
|
{
|
|
|
|
|
"1": "2|CODE|P*",
|
|
|
|
|
"2": "3|PAYS|AAA",
|
|
|
|
|
"3": "39|NOM|&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&",
|
|
|
|
|
"4": "9|NO|*********",
|
|
|
|
|
"5": "1|CTRL|4",
|
|
|
|
|
"6": "3|NAT|AAA",
|
|
|
|
|
"7": "6|BDATE|000000",
|
|
|
|
|
"8": "1|CTRL|7",
|
|
|
|
|
"9": "1|SEX|A",
|
|
|
|
|
"A": "6|EDATE|000000",
|
|
|
|
|
"B": "1|CTRL|A",
|
|
|
|
|
"C": "14|FACULT|**************",
|
|
|
|
|
"D": "1|CTRLF|C",
|
|
|
|
|
"E": "1|CTRL|4578ABCD"
|
|
|
|
|
},
|
|
|
|
|
"Passeport"
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
IP = [
|
|
|
|
|
"112223333333334555555555555555|66666678999999ABBBCCCCCCCCCCCD",
|
|
|
|
|
{
|
|
|
|
|
"1": "2|CODE|IP",
|
|
|
|
|
"2": "3|PAYS|AAA",
|
|
|
|
|
"3": "9|NO|*********",
|
|
|
|
|
"4": "1|CTRL|3",
|
|
|
|
|
"5": "15|FACULT|***************",
|
|
|
|
|
"6": "6|BDATE|000000",
|
|
|
|
|
"7": "1|CTRL|6",
|
|
|
|
|
"8": "1|SEX|A",
|
|
|
|
|
"9": "6|EDATE|000000",
|
|
|
|
|
"A": "1|CTRL|9",
|
|
|
|
|
"B": "3|NAT|AAA",
|
|
|
|
|
"C": "11|FACULT|***********",
|
|
|
|
|
"D": "1|CTRL|345679AC"
|
|
|
|
|
},
|
|
|
|
|
"Carte-passeport"
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
I_ = [
|
|
|
|
|
"112223333333334555555555555555|66666678999999ABBBCCCCCCCCCCCD",
|
|
|
|
|
{
|
|
|
|
|
"1": "2|CODE|I*",
|
|
|
|
|
"2": "3|PAYS|AAA",
|
|
|
|
|
"3": "9|NO|*********",
|
|
|
|
|
"4": "1|CTRL|3",
|
|
|
|
|
"5": "15|FACULT|***************",
|
|
|
|
|
"6": "6|BDATE|000000",
|
|
|
|
|
"7": "1|CTRL|6",
|
|
|
|
|
"8": "1|SEX|A",
|
|
|
|
|
"9": "6|EDATE|000000",
|
|
|
|
|
"A": "1|CTRL|9",
|
|
|
|
|
"B": "3|NAT|AAA",
|
|
|
|
|
"C": "11|FACULT|***********",
|
|
|
|
|
"D": "1|CTRL|345679AC"
|
|
|
|
|
},
|
|
|
|
|
"Titre d'identité/de voyage"
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
AC = [
|
|
|
|
|
"112223333333334EEE555555555555|66666678999999ABBBCCCCCCCCCCCD",
|
|
|
|
|
{
|
|
|
|
|
"1": "2|CODE|AC",
|
|
|
|
|
"2": "3|PAYS|AAA",
|
|
|
|
|
"3": "9|NO|*********",
|
|
|
|
|
"4": "1|CTRL|3",
|
|
|
|
|
"5": "15|FACULT|***************",
|
|
|
|
|
"6": "6|BDATE|000000",
|
|
|
|
|
"7": "1|CTRL|6",
|
|
|
|
|
"8": "1|SEX|A",
|
|
|
|
|
"9": "6|EDATE|000000",
|
|
|
|
|
"A": "1|CTRL|9",
|
|
|
|
|
"B": "3|NAT|AAA",
|
|
|
|
|
"C": "11|FACULT|***********",
|
|
|
|
|
"D": "1|CTRL|345679AC",
|
|
|
|
|
"E": "3|INDIC|AA&"
|
|
|
|
|
},
|
|
|
|
|
"Certificat de membre d'équipage"
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
VA = [
|
|
|
|
|
"11222333333333333333333333333333333333333333|444444444566677777789AAAAAABCCCCCCCCCCCCCCDE",
|
|
|
|
|
{
|
|
|
|
|
"1": "2|CODE|V*",
|
|
|
|
|
"2": "3|PAYS|AAA",
|
|
|
|
|
"3": "39|NOM|&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&",
|
|
|
|
|
"4": "9|NO|*********",
|
|
|
|
|
"5": "1|CTRL|4",
|
|
|
|
|
"6": "3|NAT|AAA",
|
|
|
|
|
"7": "6|BDATE|000000",
|
|
|
|
|
"8": "1|CTRL|7",
|
|
|
|
|
"9": "1|SEX|A",
|
|
|
|
|
"A": "6|EDATE|000000",
|
|
|
|
|
"B": "1|CTRL|A",
|
|
|
|
|
"C": "14|FACULT|**************"
|
|
|
|
|
},
|
|
|
|
|
"Visa de type A"
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
VB = [
|
|
|
|
|
"112223333333333333333333333333333333|444444444566677777789AAAAAABCCCCCC",
|
|
|
|
|
{
|
|
|
|
|
"1": "2|CODE|V*",
|
|
|
|
|
"2": "3|PAYS|AAA",
|
|
|
|
|
"3": "31|NOM|&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&",
|
|
|
|
|
"4": "9|NO|*********",
|
|
|
|
|
"5": "1|CTRL|4",
|
|
|
|
|
"6": "3|NAT|AAA",
|
|
|
|
|
"7": "6|BDATE|000000",
|
|
|
|
|
"8": "1|CTRL|7",
|
|
|
|
|
"9": "1|SEX|A",
|
|
|
|
|
"A": "6|EDATE|000000",
|
|
|
|
|
"B": "1|CTRL|A",
|
|
|
|
|
"C": "8|FACULT|********"
|
|
|
|
|
},
|
|
|
|
|
"Visa de type B"
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
I__ = [
|
|
|
|
|
"112223333333333333333333333333333333|444444444566677777789AAAAAABCCCCCCCD",
|
|
|
|
|
{
|
|
|
|
|
"1": "2|CODE|I*",
|
|
|
|
|
"2": "3|PAYS|AAA",
|
|
|
|
|
"3": "31|NOM|&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&",
|
|
|
|
|
"4": "9|NO|*********",
|
|
|
|
|
"5": "1|CTRL|4",
|
|
|
|
|
"6": "3|NAT|AAA",
|
|
|
|
|
"7": "6|BDATE|000000",
|
|
|
|
|
"8": "1|CTRL|7",
|
|
|
|
|
"9": "1|SEX|A",
|
|
|
|
|
"A": "6|EDATE|000000",
|
|
|
|
|
"B": "1|CTRL|A",
|
|
|
|
|
"C": "7|FACULT|*******",
|
|
|
|
|
"D": "1|CTRL|4578ABC"
|
|
|
|
|
},
|
|
|
|
|
"Pièce d'identité/de voyage"
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
ID = [
|
|
|
|
|
"112223333333333333333333333333444444|555566677777899999999999999AAAAAABCD",
|
|
|
|
|
{
|
|
|
|
|
"1": "2|CODE|ID",
|
|
|
|
|
"2": "3|PAYS|AAA",
|
|
|
|
|
"3": "25|NOM|&&&&&&&&&&&&&&&&&&&&&&&&&",
|
|
|
|
|
"4": "6|NOINT|000***",
|
|
|
|
|
"5": "4|DDATE|0000",
|
|
|
|
|
"6": "3|NOINT2|000",
|
|
|
|
|
"7": "5|NOINT3|00000",
|
|
|
|
|
"8": "1|CTRL|567",
|
|
|
|
|
"9": "14|PRENOM|A",
|
|
|
|
|
"A": "6|BDATE|000000",
|
|
|
|
|
"B": "1|CTRL|A",
|
|
|
|
|
"C": "1|SEX|A",
|
|
|
|
|
"D": "1|CTRL|123456789ABC"
|
|
|
|
|
},
|
|
|
|
|
"Pièce d'identité FR"
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
DL = [
|
|
|
|
|
"112223333333334555555666666667|",
|
|
|
|
|
{
|
|
|
|
|
"1": "2|CODE|D1",
|
|
|
|
|
"2": "3|PAYS|AAA",
|
|
|
|
|
"3": "9|NO|00AA00000",
|
|
|
|
|
"4": "1|CTRL|123",
|
|
|
|
|
"5": "6|EDATE|000000",
|
|
|
|
|
"6": "8|NOM|&&&&&&&&",
|
|
|
|
|
"7": "1|CTRL|123456"
|
|
|
|
|
},
|
|
|
|
|
"Permis de conduire"
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
TYPES = [ID, I__, VB, VA, AC, I_, IP, P, DL]
|
|
|
|
|
|
|
|
|
|
## THE ROOT OF THIS PROJECT !
|
|
|
|
|
def MRZ(code):
|
|
|
|
|
"""
|
|
|
|
|
This function computes a control sum for a range of characters
|
|
|
|
|
"""
|
|
|
|
|
resultat = 0
|
|
|
|
|
i = -1
|
|
|
|
|
facteur = [7, 3, 1]
|
|
|
|
|
for car in code:
|
|
|
|
|
if car == '<' or car == '|':
|
|
|
|
|
valeur = 0
|
|
|
|
|
i += 1
|
|
|
|
|
else:
|
|
|
|
|
if car in '0123456789':
|
|
|
|
|
valeur = int(car)
|
|
|
|
|
i += 1
|
|
|
|
|
else:
|
|
|
|
|
if car in 'ABCDEFGHIJKLMNOPQRSTUVWXYZ':
|
|
|
|
|
valeur = ord(car) - 55
|
|
|
|
|
i += 1
|
|
|
|
|
else:
|
|
|
|
|
break
|
|
|
|
|
resultat += valeur * facteur[(i % 3)]
|
|
|
|
|
|
|
|
|
|
return resultat % 10
|