PASSPORT
Documentation officielle
Bienvenue dans la documentation de l'API Jabali OCR. Cette API permet de scanner et d'extraire automatiquement les données de documents d'identité comme les passeports et les cartes d'identité nationales. Ce document vous guidera à travers les différentes fonctionnalités et vous montrera comment utiliser cette API.
L'API Jabali OCR est capable de traiter trois types de documents : les passeports (PASSPORT),
le recto de la carte d'identité (IDENTITY_CARD_RECTO) et le verso de la carte d'identité
(IDENTITY_CARD_VERSO).
Pour utiliser l'API Jabali OCR, vous devez d'abord vous authentifier pour obtenir un token JWT. Ce token sera nécessaire pour toutes les requêtes ultérieures.
https://tests.eyone.cartaware.cartalink.com/auth/signin
{
"emailAddress": "votre_email@exemple.com",
"password": "votre_mot_de_passe"
}
X-Tenant-ID: [votre_tenant_id]curl --request POST \
--url https://tests.eyone.cartaware.cartalink.com/auth/signin \
--header 'Content-Type: application/json' \
--header 'X-Tenant-ID: votre_tenant_id' \
--data '{
"emailAddress":"votre_email@exemple.com",
"password":"votre_mot_de_passe"
}'
{
"timestamp": 1743115909,
"status": 200,
"message": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...",
"account": {
"userId": "admin",
"accountFirstname": "Admin",
"accountLastname": "CLK",
"accountEmail": "admin@sens-numerik.com",
"userRoles": "DEVELOPPER",
"brigade": "CARTALINK",
"companyId": "1",
"companyName": "Sens NumeriK",
"accountId": "1"
},
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9..."
}
Important: Conservez la valeur du champ access_token qui vous sera
nécessaire pour toutes les requêtes suivantes. Ce token doit être inclus dans l'en-tête
Authorization de chaque requête sous la forme Bearer [token].
Cet endpoint vous permet de traiter un seul document, qu'il s'agisse d'un passeport ou d'une carte d'identité (recto ou verso).
https://tests.eyone.cartaware.cartalink.com/ocr/document/process
Authorization: Bearer [votre_token_jwt]X-Customer-ID: [votre_clé_client]X-Tenant-ID: [votre_tenant_id]| Paramètre | Description | Requis |
|---|---|---|
file |
Fichier image (JPG, PNG) ou PDF du document | Oui |
documentType |
Type de document: PASSPORT, IDENTITY_CARD_RECTO ou IDENTITY_CARD_VERSO |
Oui |
curl -X POST https://tests.eyone.cartaware.cartalink.com/ocr/document/process \
-H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9..." \
-H "X-Customer-ID: votre_cle_client" \
-H "X-Tenant-ID: votre_tenant_id" \
-F "file=@/chemin/vers/votre/document.jpg" \
-F "documentType=PASSPORT"
Cet endpoint vous permet de traiter à la fois le recto et le verso d'une carte d'identité en une seule requête.
https://tests.eyone.cartaware.cartalink.com/ocr/document/multi-page
Authorization: Bearer [votre_token_jwt]X-Customer-ID: [votre_clé_client]X-Tenant-ID: [votre_tenant_id]| Paramètre | Description | Requis |
|---|---|---|
files |
Fichier image (JPG, PNG) ou PDF du recto et verso de la carte d'identité | Oui |
documentTypes |
Type de document (IDENTITY_CARD_RECTO et IDENTITY_CARD_VERSO) | Oui |
curl --request POST \
--url https://tests.eyone.cartaware.cartalink.com/ocr/document/multi-page \
--header 'Authorization: Bearer votre_token_jwt' \
--header 'Content-Type: multipart/form-data' \
--header 'X-Customer-ID: votre_clé_client' \
--header 'X-Tenant-ID: votre_tenant_id' \
--form 'files=@/chemin/vers/votre/recto.jpg' \
--form documentTypes=IDENTITY_CARD_RECTO \
--form 'files=@/chemin/vers/votre/verso.jpg' \
--form documentTypes=IDENTITY_CARD_VERSO
Les réponses de l'API varient en fonction du type de document traité. Voici les différentes structures de réponse:
PASSPORT){
"firstName": "John",
"lastName": "DOE",
"dateOfBirth": "01/01/1990",
"gender": "M",
"placeOfBirth": "PARIS",
"issueDate": "01/01/2020",
"expirationDate": "01/01/2030",
"countryCode": "FRA",
"documentType": "P",
"passportNumber": "12AB34567",
"nationality": "FRANÇAISE",
"personalNumber": "123456789012",
"issuingAuthority": "PRÉFET",
"detectedDocumentType": "PASSPORT",
"processingCost": 2.50
}
| Champ | Description | Type |
|---|---|---|
firstName |
Prénom | String |
lastName |
Nom | String |
dateOfBirth |
Date de naissance | String |
gender |
Genre | String ("M" ou "F") |
placeOfBirth |
Lieu de naissance | String |
issueDate |
Date d'émission | String |
expirationDate |
Date d'expiration | String |
countryCode |
Code pays | String |
documentType |
Type de document | String |
passportNumber |
Numéro de passeport | String |
nationality |
Nationalité | String |
personalNumber |
Numéro d'identification national | String |
issuingAuthority |
Autorité émettrice | String |
detectedDocumentType |
Type de document détecté | String |
processingCost |
Coût de traitement | Number |
IDENTITY_CARD_RECTO){
"cardNumber": "123456789012",
"firstName": "JEAN",
"lastName": "DUPONT",
"dateOfBirth": "01/01/1990",
"gender": "M",
"height": "180",
"placeOfBirth": "PARIS",
"issueDate": "01/01/2020",
"expirationDate": "01/01/2030",
"registrationCenter": "PRÉFECTURE DE POLICE",
"homeAddress": "1 RUE DE LA PAIX 75001 PARIS",
"detectedDocumentType": "IDENTITY_CARD_RECTO",
"processingCost": 2.50
}
| Champ | Description | Type |
|---|---|---|
cardNumber |
Numéro de carte | String |
firstName |
Prénom | String |
lastName |
Nom | String |
dateOfBirth |
Date de naissance | String |
gender |
Genre | String ("M" ou "F") |
height |
Taille | String |
placeOfBirth |
Lieu de naissance | String |
issueDate |
Date d'émission | String |
expirationDate |
Date d'expiration | String |
registrationCenter |
Centre d'enregistrement | String |
homeAddress |
Adresse de résidence | String |
detectedDocumentType |
Type de document détecté | String |
processingCost |
Coût de traitement | Number |
IDENTITY_CARD_VERSO){
"countryCode": "FRA",
"voterNumber": "123456789",
"region": "ILE-DE-FRANCE",
"department": "PARIS",
"commune": "PARIS",
"votingPlace": "MAIRIE DU 1ER",
"votingBooth": "BUREAU 12",
"nin": "1900175123456",
"detectedDocumentType": "IDENTITY_CARD_VERSO",
"processingCost": 2.50
}
| Champ | Description | Type |
|---|---|---|
countryCode |
Code pays | String |
voterNumber |
Numéro d'électeur | String |
region |
Région | String |
department |
Département | String |
commune |
Commune | String |
votingPlace |
Lieu de vote | String |
votingBooth |
Bureau de vote | String |
nin |
Numéro d'identification national | String |
detectedDocumentType |
Type de document détecté | String |
processingCost |
Coût de traitement | Number |
[
{
"cardNumber": "123456789012",
"firstName": "JEAN",
"lastName": "DUPONT",
"dateOfBirth": "01/01/1990",
"gender": "M",
"height": "180",
"placeOfBirth": "PARIS",
"issueDate": "01/01/2020",
"expirationDate": "01/01/2030",
"registrationCenter": "PRÉFECTURE DE POLICE",
"homeAddress": "1 RUE DE LA PAIX 75001 PARIS",
"detectedDocumentType": "IDENTITY_CARD_RECTO",
"processingCost": 2.50
},
{
"countryCode": "FRA",
"voterNumber": "123456789",
"region": "ILE-DE-FRANCE",
"department": "PARIS",
"commune": "PARIS",
"votingPlace": "MAIRIE DU 1ER",
"votingBooth": "BUREAU 12",
"nin": "1900175123456",
"detectedDocumentType": "IDENTITY_CARD_VERSO",
"processingCost": 2.50
}
]
Dans le cas d'un traitement multi-documents, la réponse est un tableau contenant deux objets : le premier correspond aux données du recto de la carte d'identité et le second aux données du verso.
L'API Jabali OCR renvoie des codes d'état HTTP standard pour indiquer le succès ou l'échec d'une requête. En cas d'erreur, le corps de la réponse contiendra des informations supplémentaires sur la nature de l'erreur.
| Code HTTP | Description |
|---|---|
200 OK |
La requête a réussi. |
400 Bad Request |
La requête était incorrecte. Vérifiez les paramètres fournis. |
401 Unauthorized |
Authentification requise ou token invalide. |
403 Forbidden |
Vous n'avez pas les permissions nécessaires pour cette opération. |
404 Not Found |
La ressource demandée n'existe pas. |
415 Unsupported Media Type |
Le format de fichier n'est pas pris en charge. |
422 Unprocessable Entity |
Le document ne peut pas être traité (qualité insuffisante, document non reconnu, etc.). |
500 Internal Server Error |
Une erreur interne s'est produite sur le serveur. |
{
"errors": [
"Description de l'erreur"
]
}
Assurez-vous que les images de documents soumises sont de bonne qualité pour un meilleur taux de reconnaissance:
Pour une meilleure expérience d'intégration:
Pour exploiter efficacement les résultats de l'OCR:
Pour une expérience utilisateur optimale:
Si vous avez des questions sur l'intégration de l'API Jabali OCR dans votre application, n'hésitez pas à contacter notre équipe technique à support@jabali.sn.