9.5 KiB
9.5 KiB
📡 API Backend 4NK_IA - Documentation
🚀 Vue d'ensemble
L'API Backend 4NK_IA est un service d'extraction et d'analyse de documents utilisant l'OCR (Reconnaissance Optique de Caractères) et le NER (Reconnaissance d'Entités Nommées) pour traiter automatiquement les documents PDF et images.
Caractéristiques principales :
- ✅ Support multi-format : PDF, JPEG, PNG, TIFF
- ✅ OCR avancé : Tesseract.js avec préprocessing d'images
- ✅ Extraction PDF directe : pdf-parse pour une précision maximale
- ✅ NER intelligent : Reconnaissance d'entités par règles
- ✅ Format JSON standardisé : Structure cohérente pour tous les documents
- ✅ Préprocessing d'images : Amélioration automatique de la qualité OCR
🌐 Endpoints de l'API
Base URL : http://localhost:3001/api
📋 1. Health Check
GET /api/health
Vérifie l'état du serveur backend.
Réponse :
{
"status": "OK",
"timestamp": "2025-09-15T22:45:50.123Z",
"version": "1.0.0"
}
Exemple d'utilisation :
curl http://localhost:3001/api/health
📁 2. Liste des fichiers de test
GET /api/test-files
Retourne la liste des fichiers de test disponibles.
Réponse :
{
"files": [
{
"name": "IMG_20250902_162159.jpg",
"size": 245760,
"type": "image/jpeg"
}
]
}
🔍 3. Extraction de documents
POST /api/extract
Extrait et analyse un document (PDF ou image) pour identifier les entités et informations structurées.
Paramètres :
document(file, required) : Fichier à analyser (PDF, JPEG, PNG, TIFF)- Taille maximale : 10MB
Réponse - Format JSON Standard :
{
"document": {
"id": "doc-1757976350123",
"fileName": "facture_4NK_08-2025_04.pdf",
"fileSize": 85819,
"mimeType": "application/pdf",
"uploadTimestamp": "2025-09-15T22:45:50.123Z"
},
"classification": {
"documentType": "Facture",
"confidence": 0.95,
"subType": "Facture de prestation",
"language": "fr",
"pageCount": 1
},
"extraction": {
"text": {
"raw": "Janin Consulting - EURL au capital de 500 Euros...",
"processed": "Janin Consulting - EURL au capital de soo Euros...",
"wordCount": 165,
"characterCount": 1197,
"confidence": 0.95
},
"entities": {
"persons": [
{
"id": "identity-0",
"type": "person",
"firstName": "Anthony",
"lastName": "Janin",
"role": "Gérant",
"email": "ja.janin.anthony@gmail.com",
"phone": "33 (0)6 71 40 84 13",
"confidence": 0.9,
"source": "rule-based"
}
],
"companies": [
{
"id": "company-0",
"name": "Janin Consulting",
"legalForm": "EURL",
"siret": "815 322 912 00040",
"rcs": "815 322 912 NANTERRE",
"tva": "FR64 815 322 912",
"capital": "500 Euros",
"role": "Fournisseur",
"confidence": 0.95,
"source": "rule-based"
}
],
"addresses": [
{
"id": "address-0",
"type": "siège_social",
"street": "177 rue du Faubourg Poissonnière",
"city": "Paris",
"postalCode": "75009",
"country": "France",
"company": "Janin Consulting",
"confidence": 0.9,
"source": "rule-based"
}
],
"financial": {
"amounts": [
{
"id": "amount-0",
"type": "prestation",
"description": "Prestation du mois d'Août 2025",
"quantity": 10,
"unitPrice": 550.00,
"totalHT": 5500.00,
"currency": "EUR",
"confidence": 0.95
}
],
"totals": {
"totalHT": 5500.00,
"totalTVA": 1100.00,
"totalTTC": 6600.00,
"tvaRate": 0.20,
"currency": "EUR"
},
"payment": {
"terms": "30 jours après émission",
"penaltyRate": "Taux BCE + 7 points",
"bankDetails": {
"bank": "CAISSE D'EPARGNE D'ILE DE FRANCE",
"accountHolder": "Janin Anthony",
"address": "1 rue Pasteur (78800)",
"rib": "17515006000800309088884"
}
}
},
"dates": [
{
"id": "date-0",
"type": "facture",
"value": "29-août-25",
"formatted": "2025-08-29",
"confidence": 0.9,
"source": "rule-based"
}
],
"contractual": {
"clauses": [
{
"id": "clause-0",
"type": "paiement",
"content": "Le paiement se fera (maximum) 30 jours après l'émission de la facture.",
"confidence": 0.9
}
],
"signatures": [
{
"id": "signature-0",
"type": "électronique",
"present": false,
"signatory": null,
"date": null,
"confidence": 0.8
}
]
},
"references": [
{
"id": "ref-0",
"type": "facture",
"number": "4NK_4",
"confidence": 0.95
}
]
}
},
"metadata": {
"processing": {
"engine": "4NK_IA_Backend",
"version": "1.0.0",
"processingTime": "423ms",
"ocrEngine": "pdf-parse",
"nerEngine": "rule-based",
"preprocessing": {
"applied": false,
"reason": "PDF direct text extraction"
}
},
"quality": {
"globalConfidence": 0.95,
"textExtractionConfidence": 0.95,
"entityExtractionConfidence": 0.90,
"classificationConfidence": 0.95
}
},
"status": {
"success": true,
"errors": [],
"warnings": ["Aucune signature détectée"],
"timestamp": "2025-09-15T22:45:50.123Z"
}
}
Exemples d'utilisation :
Avec curl :
curl -X POST \
-F "document=@/path/to/document.pdf" \
http://localhost:3001/api/extract
Avec JavaScript (fetch) :
const formData = new FormData()
formData.append('document', fileInput.files[0])
const response = await fetch('http://localhost:3001/api/extract', {
method: 'POST',
body: formData
})
const result = await response.json()
console.log(result)
📊 Types de documents supportés
1. Factures
- Détection automatique : Mots-clés "facture", "tva", "siren", "montant"
- Entités extraites :
- Sociétés (fournisseur/client)
- Adresses de facturation
- Montants et totaux
- Conditions de paiement
- Numéros de référence
- Dates
2. Cartes Nationales d'Identité (CNI)
- Détection automatique : Mots-clés "carte nationale d'identité", "cni", "mrz"
- Entités extraites :
- Identités (nom, prénom)
- Numéros CNI
- Dates de naissance
- Adresses
3. Contrats
- Détection automatique : Mots-clés "contrat", "vente", "achat", "acte"
- Entités extraites :
- Parties contractantes
- Clauses contractuelles
- Signatures
- Dates importantes
4. Attestations
- Détection automatique : Mots-clés "attestation", "certificat"
- Entités extraites :
- Identités
- Dates
- Informations spécifiques
🔧 Configuration et préprocessing
Préprocessing d'images (pour JPEG, PNG, TIFF) :
- Redimensionnement : Largeur cible 2000px
- Amélioration du contraste : Facteur 1.5
- Luminosité : Facteur 1.1
- Conversion en niveaux de gris
- Amélioration de la netteté
- Réduction du bruit
Extraction PDF directe :
- Moteur : pdf-parse
- Avantage : Pas de conversion image, précision maximale
- Confiance : 95% par défaut
⚡ Performances
Temps de traitement typiques :
- PDF : 200-500ms
- Images : 1-3 secondes (avec préprocessing)
- Taille maximale : 10MB
Confiance d'extraction :
- PDF : 90-95%
- Images haute qualité : 80-90%
- Images de qualité moyenne : 60-80%
🚨 Gestion d'erreurs
Codes d'erreur HTTP :
- 400 : Aucun fichier fourni
- 413 : Fichier trop volumineux (>10MB)
- 415 : Type de fichier non supporté
- 500 : Erreur de traitement interne
Exemple de réponse d'erreur :
{
"success": false,
"error": "Type de fichier non supporté",
"details": "Seuls les formats PDF, JPEG, PNG et TIFF sont acceptés"
}
🛠️ Dépendances techniques
Moteurs OCR :
- Tesseract.js : Pour les images
- pdf-parse : Pour les PDF
Préprocessing :
- Sharp.js : Traitement d'images
NER :
- Règles personnalisées : Patterns regex pour l'extraction d'entités
📝 Notes d'utilisation
- Format de sortie standardisé : Tous les documents retournent le même format JSON
- Confiance : Chaque entité extraite inclut un score de confiance
- Source : Indication de la méthode d'extraction (rule-based, ML, etc.)
- Métadonnées complètes : Informations sur le traitement et la qualité
- Gestion des erreurs : Warnings et erreurs détaillés dans la réponse
🔄 Évolutions futures
- Support de l'IA/ML pour l'extraction d'entités
- Support de documents multi-pages
- Extraction de signatures manuscrites
- Support de langues supplémentaires
- API de validation des extractions
- Cache des résultats pour optimisation
Documentation générée le 15/09/2025 - Version 1.0.0