755 lines
19 KiB
Python
755 lines
19 KiB
Python
"""
|
||
********************************************************************************
|
||
* 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
|
||
|
||
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'
|
||
}
|
||
|
||
## 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 |