This commit is contained in:
Nicolas Cantu 2025-09-16 01:18:45 +02:00
parent a5a0421b32
commit 81df52b785
76 changed files with 3616 additions and 69 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 MiB

View File

@ -18,9 +18,12 @@ export const Layout: React.FC<LayoutProps> = ({ children }) => {
// Au chargement/nav: lancer OCR+classification pour tous les documents sans résultat // Au chargement/nav: lancer OCR+classification pour tous les documents sans résultat
useEffect(() => { useEffect(() => {
documents.forEach((doc) => { documents.forEach((doc) => {
if (!extractionById[doc.id]) dispatch(extractDocument(doc.id)) if (!extractionById[doc.id]) {
console.log(`🚀 [LAYOUT] Déclenchement extraction pour ${doc.id}`)
dispatch(extractDocument(doc.id))
}
}) })
}, [documents, extractionById, dispatch]) }, [documents, dispatch]) // Retiré extractionById des dépendances pour éviter la boucle
// Déclencher contexte et conseil globaux une fois qu'un document courant existe // Déclencher contexte et conseil globaux une fois qu'un document courant existe
useEffect(() => { useEffect(() => {

View File

@ -81,38 +81,29 @@ export async function extractDocumentBackend(
throw new Error(`Erreur HTTP: ${response.status} ${response.statusText}`) throw new Error(`Erreur HTTP: ${response.status} ${response.statusText}`)
} }
const result: BackendExtractionResult = await response.json() const result = await response.json()
if (!result.success) { // Vérifier si c'est le nouveau format JSON standard
throw new Error('Échec de l\'extraction côté backend') if (!result.document || !result.classification || !result.extraction) {
throw new Error('Format de réponse backend invalide')
} }
// Simuler la progression console.log('✅ [BACKEND] Extraction terminée avec succès')
if (hooks?.onOcrProgress) {
hooks.onOcrProgress(0.8)
console.log('⏳ [BACKEND] Traitement OCR terminé...')
}
if (hooks?.onLlmProgress) {
hooks.onLlmProgress(0.5)
console.log('⏳ [BACKEND] Traitement NER en cours...')
}
// Convertir le résultat backend vers le format frontend // Convertir le résultat backend vers le format frontend
const extractionResult: ExtractionResult = { const extractionResult: ExtractionResult = {
documentId: result.documentId, documentId: result.document.id,
text: result.processing.ocr.text, text: result.extraction.text.raw,
language: 'fr', language: result.classification.language,
documentType: result.extractedData.documentType, documentType: result.classification.documentType,
identities: result.extractedData.identities.map(identity => ({ identities: result.extraction.entities.persons.map((person: any) => ({
id: identity.id, id: person.id,
type: identity.type || 'person', type: 'person',
firstName: identity.firstName, firstName: person.firstName,
lastName: identity.lastName, lastName: person.lastName,
birthDate: identity.birthDate, confidence: person.confidence || 0.9
confidence: identity.confidence || 0.9
})), })),
addresses: result.extractedData.addresses.map(address => ({ addresses: result.extraction.entities.addresses.map((address: any) => ({
id: address.id, id: address.id,
street: address.street, street: address.street,
city: address.city, city: address.city,
@ -122,27 +113,18 @@ export async function extractDocumentBackend(
})), })),
properties: [], properties: [],
contracts: [], contracts: [],
signatures: [], signatures: result.extraction.entities.contractual?.signatures?.map((sig: any) => sig.signatory || 'Signature détectée') || [],
confidence: result.processing.globalConfidence, confidence: result.metadata.quality.globalConfidence,
confidenceReasons: [ confidenceReasons: [
`OCR: ${result.processing.ocr.confidence.toFixed(1)}% de confiance`, `OCR: ${Math.round(result.metadata.quality.textExtractionConfidence * 100)}% de confiance`,
`Texte extrait: ${result.processing.ocr.text.length} caractères`, `Texte extrait: ${result.extraction.text.characterCount} caractères`,
`Entités trouvées: ${result.extractedData.identities.length} identités, ${result.extractedData.addresses.length} adresses`, `Entités trouvées: ${result.extraction.entities.persons.length} personnes, ${result.extraction.entities.companies.length} sociétés, ${result.extraction.entities.addresses.length} adresses`,
`Type détecté: ${result.extractedData.documentType}`, `Type détecté: ${result.classification.documentType}`,
`Traitement backend: ${result.timestamp}` `Traitement backend: ${result.document.uploadTimestamp}`
] ]
} }
// Finaliser la progression // Extraction terminée
if (hooks?.onOcrProgress) {
hooks.onOcrProgress(1)
console.log('✅ [BACKEND] Progression OCR: 100%')
}
if (hooks?.onLlmProgress) {
hooks.onLlmProgress(1)
console.log('✅ [BACKEND] Progression NER: 100%')
}
console.log('🎉 [BACKEND] Extraction terminée avec succès:', { console.log('🎉 [BACKEND] Extraction terminée avec succès:', {
documentType: extractionResult.documentType, documentType: extractionResult.documentType,
@ -180,18 +162,38 @@ export async function getTestFilesBackend(): Promise<BackendTestFiles> {
} }
} }
// Cache pour le health check
let backendHealthCache: { isHealthy: boolean; timestamp: number } | null = null
const HEALTH_CHECK_CACHE_DURATION = 5000 // 5 secondes
/** /**
* Vérifie la santé du backend * Vérifie la santé du backend avec cache
*/ */
export async function checkBackendHealth(): Promise<boolean> { export async function checkBackendHealth(): Promise<boolean> {
const now = Date.now()
// Utiliser le cache si disponible et récent
if (backendHealthCache && (now - backendHealthCache.timestamp) < HEALTH_CHECK_CACHE_DURATION) {
return backendHealthCache.isHealthy
}
try { try {
const response = await fetch(`${BACKEND_URL}/api/health`) const response = await fetch(`${BACKEND_URL}/api/health`)
const result = await response.json() const result = await response.json()
const isHealthy = result.status === 'OK'
console.log('🏥 [BACKEND] Health check:', result.status) console.log('🏥 [BACKEND] Health check:', result.status)
return result.status === 'OK'
// Mettre en cache le résultat
backendHealthCache = { isHealthy, timestamp: now }
return isHealthy
} catch (error) { } catch (error) {
console.error('❌ [BACKEND] Backend non accessible:', error) console.error('❌ [BACKEND] Backend non accessible:', error)
// Mettre en cache le résultat négatif
backendHealthCache = { isHealthy: false, timestamp: now }
return false return false
} }
} }

View File

@ -80,10 +80,7 @@ export function filterSupportedFiles(files: TestFileInfo[]): TestFileInfo[] {
'image/jpeg', 'image/jpeg',
'image/jpg', 'image/jpg',
'image/png', 'image/png',
'image/tiff', 'image/tiff'
'text/plain',
'text/markdown',
'application/vnd.openxmlformats-officedocument.wordprocessingml.document'
] ]
return files.filter(file => { return files.filter(file => {
@ -94,7 +91,7 @@ export function filterSupportedFiles(files: TestFileInfo[]): TestFileInfo[] {
// Vérifier l'extension si le type MIME n'est pas fiable // Vérifier l'extension si le type MIME n'est pas fiable
const extension = file.name.split('.').pop()?.toLowerCase() const extension = file.name.split('.').pop()?.toLowerCase()
const supportedExtensions = ['pdf', 'jpg', 'jpeg', 'png', 'tiff', 'txt', 'md', 'docx'] const supportedExtensions = ['pdf', 'jpg', 'jpeg', 'png', 'tiff']
return extension && supportedExtensions.includes(extension) return extension && supportedExtensions.includes(extension)
}) })

View File

@ -85,10 +85,10 @@ export const extractDocument = createAsyncThunk(
const file = new File([blob], doc.name, { type: doc.mimeType }) const file = new File([blob], doc.name, { type: doc.mimeType })
return await openaiDocumentApi.extract(documentId, file) return await openaiDocumentApi.extract(documentId, file)
} catch { } catch {
return await openaiDocumentApi.extract(documentId, undefined, progressHooks) return await openaiDocumentApi.extract(documentId, undefined)
} }
} }
return await openaiDocumentApi.extract(documentId, undefined, progressHooks) return await openaiDocumentApi.extract(documentId, undefined)
} }
return await documentApi.extract(documentId) return await documentApi.extract(documentId)
} }

View File

@ -81,9 +81,6 @@ export default function UploadView() {
accept: { accept: {
'application/pdf': ['.pdf'], 'application/pdf': ['.pdf'],
'image/*': ['.png', '.jpg', '.jpeg', '.tiff'], 'image/*': ['.png', '.jpg', '.jpeg', '.tiff'],
'text/plain': ['.txt'],
'text/markdown': ['.md'],
'application/vnd.openxmlformats-officedocument.wordprocessingml.document': ['.docx'],
}, },
multiple: true, multiple: true,
}) })
@ -117,6 +114,9 @@ export default function UploadView() {
// Bootstrap: charger automatiquement les fichiers de test et les traiter en parallèle // Bootstrap: charger automatiquement les fichiers de test et les traiter en parallèle
useEffect(() => { useEffect(() => {
if (bootstrapped || !import.meta.env.DEV) return if (bootstrapped || !import.meta.env.DEV) return
// Désactivé temporairement pour éviter les appels multiples
setBootstrapped(true)
return
const load = async () => { const load = async () => {
console.log('🔄 [BOOTSTRAP] Chargement automatique des fichiers de test...') console.log('🔄 [BOOTSTRAP] Chargement automatique des fichiers de test...')
@ -306,18 +306,9 @@ export default function UploadView() {
</Box> </Box>
} }
secondary={ secondary={
<Box display="flex" alignItems="center" gap={1} mt={1}> <Typography variant="body2" color="text.secondary">
<Chip {doc.mimeType} {(doc.size / 1024 / 1024).toFixed(2)} MB
label={doc.mimeType} </Typography>
size="small"
variant="outlined"
/>
<Chip
label={`${(doc.size / 1024 / 1024).toFixed(2)} MB`}
size="small"
variant="outlined"
/>
</Box>
} }
/> />
<Box display="flex" gap={1}> <Box display="flex" gap={1}>

155
test-backend-direct.cjs Normal file
View File

@ -0,0 +1,155 @@
#!/usr/bin/env node
/**
* Test direct du backend pour analyser les images CNI
* sans configuration spécifique, juste l'extraction OCR normale
*/
const { createWorker } = require('tesseract.js')
const path = require('path')
const fs = require('fs')
console.log('🔍 Test direct backend - Analyse OCR normale')
console.log('=============================================')
const imagePath = path.join(__dirname, 'test-files', 'IMG_20250902_162210.jpg')
// Vérifier que l'image existe
if (!fs.existsSync(imagePath)) {
console.error('❌ Image non trouvée:', imagePath)
process.exit(1)
}
console.log('📸 Image trouvée:', path.basename(imagePath))
// Fonction d'extraction OCR simple
async function extractTextFromImage(imagePath) {
console.log('\n🚀 Démarrage de l\'extraction OCR...')
const worker = await createWorker('fra+eng')
try {
console.log('⏳ Extraction en cours...')
const { data: { text } } = await worker.recognize(imagePath)
console.log('\n📄 TEXTE EXTRAIT:')
console.log('=' .repeat(50))
console.log(text)
console.log('=' .repeat(50))
return text
} catch (error) {
console.error('❌ Erreur OCR:', error.message)
return null
} finally {
await worker.terminate()
}
}
// Fonction d'analyse simple du texte
function analyzeText(text) {
console.log('\n🔍 ANALYSE DU TEXTE:')
console.log('=' .repeat(50))
if (!text) {
console.log('❌ Aucun texte à analyser')
return
}
console.log(`📊 Longueur du texte: ${text.length} caractères`)
// Recherche de noms (patterns généraux)
const namePatterns = [
/([A-Z][a-zà-öø-ÿ'\-]+\s+[A-Z][a-zà-öø-ÿ'\-]+)/g, // Prénom Nom
/([A-Z][A-ZÀ-ÖØ-öø-ÿ\s\-']{2,30})/g // Noms en majuscules
]
const foundNames = new Set()
for (const pattern of namePatterns) {
for (const match of text.matchAll(pattern)) {
const name = match[1].trim()
if (name.length > 3) {
foundNames.add(name)
}
}
}
console.log(`👥 Noms détectés: ${foundNames.size}`)
foundNames.forEach((name, index) => {
console.log(` ${index + 1}. "${name}"`)
})
// Recherche de numéros CNI (2 lettres + 6 chiffres)
const cniPattern = /([A-Z]{2}\d{6})/g
const cniNumbers = []
for (const match of text.matchAll(cniPattern)) {
cniNumbers.push(match[1])
}
console.log(`🆔 Numéros CNI détectés: ${cniNumbers.length}`)
cniNumbers.forEach((cni, index) => {
console.log(` ${index + 1}. "${cni}"`)
})
// Recherche spécifique pour NICOLAS et CANTU
console.log('\n🔍 RECHERCHE SPÉCIFIQUE:')
console.log('=' .repeat(50))
const hasNicolas = /nicolas/i.test(text)
const hasCantu = /cantu/i.test(text)
const hasNicolasCantu = /nicolas.*cantu|cantu.*nicolas/i.test(text)
console.log(`🔍 "NICOLAS" trouvé: ${hasNicolas ? '✅ OUI' : '❌ NON'}`)
console.log(`🔍 "CANTU" trouvé: ${hasCantu ? '✅ OUI' : '❌ NON'}`)
console.log(`🔍 "NICOLAS CANTU" ensemble: ${hasNicolasCantu ? '✅ OUI' : '❌ NON'}`)
if (hasNicolas || hasCantu) {
console.log('\n📝 Contexte trouvé:')
const lines = text.split('\n')
lines.forEach((line, index) => {
if (/nicolas|cantu/i.test(line)) {
console.log(` Ligne ${index + 1}: "${line.trim()}"`)
}
})
}
// Recherche de mots-clés CNI
const hasCNIKeywords = /carte\s+nationale\s+d'identité|cni|mrz|identite/i.test(text)
console.log(`📋 Mots-clés CNI détectés: ${hasCNIKeywords ? '✅ OUI' : '❌ NON'}`)
return {
text,
names: Array.from(foundNames),
cniNumbers,
hasNicolas,
hasCantu,
hasNicolasCantu,
hasCNIKeywords
}
}
// Fonction principale
async function main() {
try {
const text = await extractTextFromImage(imagePath)
const results = analyzeText(text)
console.log('\n🎯 RÉSULTATS FINAUX:')
console.log('=' .repeat(50))
console.log(`📄 Texte extrait: ${results ? '✅' : '❌'}`)
console.log(`👥 Noms trouvés: ${results?.names.length || 0}`)
console.log(`🆔 CNI trouvés: ${results?.cniNumbers.length || 0}`)
console.log(`🔍 NICOLAS: ${results?.hasNicolas ? '✅' : '❌'}`)
console.log(`🔍 CANTU: ${results?.hasCantu ? '✅' : '❌'}`)
console.log(`📋 Type CNI: ${results?.hasCNIKeywords ? '✅' : '❌'}`)
} catch (error) {
console.error('❌ Erreur:', error.message)
}
}
// Exécuter
main()

168
test-cni-direct.cjs Normal file
View File

@ -0,0 +1,168 @@
#!/usr/bin/env node
/**
* Script de test direct pour analyser l'image CNI
* et extraire les informations sur CANTU, NICOLAS et le code CNI
*/
const { createWorker } = require('tesseract.js')
const path = require('path')
const fs = require('fs')
console.log('🔍 Analyse directe de l\'image CNI')
console.log('==================================')
const imagePath = path.join(__dirname, 'test-files', 'IMG_20250902_162159.jpg')
// Vérifier que l'image existe
if (!fs.existsSync(imagePath)) {
console.error('❌ Image non trouvée:', imagePath)
process.exit(1)
}
console.log('📸 Image trouvée:', imagePath)
// Fonction de correction OCR pour les noms spécifiques
function correctOCRText(text) {
const corrections = {
// Corrections pour "Nicolas"
'N1colas': 'Nicolas', 'Nicol@s': 'Nicolas', 'Nico1as': 'Nicolas',
'Nico1@s': 'Nicolas', 'N1co1as': 'Nicolas', 'N1co1@s': 'Nicolas',
'Nico1as': 'Nicolas', 'N1col@s': 'Nicolas', 'N1co1as': 'Nicolas',
// Corrections pour "Cantu"
'C@ntu': 'Cantu', 'CantU': 'Cantu', 'C@ntU': 'Cantu',
'Cant0': 'Cantu', 'C@nt0': 'Cantu', 'CantU': 'Cantu',
// Autres corrections courantes
'0': 'o', '1': 'l', '5': 's', '@': 'a', '3': 'e'
}
let correctedText = text
for (const [wrong, correct] of Object.entries(corrections)) {
correctedText = correctedText.replace(new RegExp(wrong, 'gi'), correct)
}
return correctedText
}
// Fonction d'extraction des entités
function extractEntitiesFromText(text) {
console.log(`\n🔍 Analyse du texte extrait (${text.length} caractères)`)
console.log('=' .repeat(50))
const correctedText = correctOCRText(text)
if (correctedText !== text) {
console.log('📝 Texte corrigé appliqué')
}
const entities = {
identities: [],
cniNumbers: [],
documentType: 'Document'
}
// Patterns pour détecter "Nicolas Cantu"
const namePatterns = [
// Patterns spécifiques pour "Nicolas Cantu" avec variations OCR
/(N[il][cç][o0][l1][a@][s5]\s+[Cc][a@][n][t][u])/gi,
/(N[il][cç][o0][l1][a@][s5]\s+[Cc][a@][n][t][u])/gi,
// Recherche de "Nicolas" seul
/(N[il][cç][o0][l1][a@][s5])/gi,
// Recherche de "Cantu" seul
/([Cc][a@][n][t][u])/gi,
// Patterns généraux pour noms
/([A-Z][a-zà-öø-ÿ'\-]+\s+[A-Z][a-zà-öø-ÿ'\-]+)/g
]
// Extraction des noms
for (const pattern of namePatterns) {
for (const match of correctedText.matchAll(pattern)) {
const name = match[1].trim()
if (name.length > 3 && !entities.identities.includes(name)) {
entities.identities.push(name)
console.log(`👤 Nom détecté: "${name}"`)
}
}
}
// Extraction des numéros CNI (2 lettres + 6 chiffres)
const cniPattern = /([A-Z]{2}\d{6})/g
for (const match of correctedText.matchAll(cniPattern)) {
entities.cniNumbers.push(match[1])
console.log(`🆔 Numéro CNI détecté: "${match[1]}"`)
}
// Détection du type de document
if (/carte\s+nationale\s+d'identité|cni|mrz|identite/i.test(correctedText)) {
entities.documentType = 'CNI'
console.log('📋 Type de document: CNI détecté')
}
return entities
}
// Fonction principale d'analyse
async function analyzeImage() {
console.log('\n🚀 Démarrage de l\'analyse OCR...')
const worker = await createWorker('fra+eng')
try {
console.log('⏳ Extraction du texte en cours...')
const { data: { text } } = await worker.recognize(imagePath)
console.log('\n📄 Texte brut extrait:')
console.log('=' .repeat(50))
console.log(text)
console.log('=' .repeat(50))
// Extraction des entités
const entities = extractEntitiesFromText(text)
console.log('\n🎯 RÉSULTATS DE L\'ANALYSE:')
console.log('=' .repeat(50))
console.log(`📋 Type de document: ${entities.documentType}`)
console.log(`👥 Identités trouvées: ${entities.identities.length}`)
entities.identities.forEach((identity, index) => {
console.log(` ${index + 1}. ${identity}`)
})
console.log(`🆔 Numéros CNI trouvés: ${entities.cniNumbers.length}`)
entities.cniNumbers.forEach((cni, index) => {
console.log(` ${index + 1}. ${cni}`)
})
// Recherche spécifique pour CANTU et NICOLAS
console.log('\n🔍 RECHERCHE SPÉCIFIQUE:')
console.log('=' .repeat(50))
const hasNicolas = /nicolas/i.test(text)
const hasCantu = /cantu/i.test(text)
const hasNicolasCantu = /nicolas.*cantu|cantu.*nicolas/i.test(text)
console.log(`🔍 "NICOLAS" trouvé: ${hasNicolas ? '✅ OUI' : '❌ NON'}`)
console.log(`🔍 "CANTU" trouvé: ${hasCantu ? '✅ OUI' : '❌ NON'}`)
console.log(`🔍 "NICOLAS CANTU" ensemble: ${hasNicolasCantu ? '✅ OUI' : '❌ NON'}`)
if (hasNicolas || hasCantu) {
console.log('\n📝 Contexte trouvé:')
const lines = text.split('\n')
lines.forEach((line, index) => {
if (/nicolas|cantu/i.test(line)) {
console.log(` Ligne ${index + 1}: "${line.trim()}"`)
}
})
}
} catch (error) {
console.error('❌ Erreur lors de l\'analyse:', error.message)
} finally {
await worker.terminate()
}
}
// Exécuter l'analyse
analyzeImage().then(() => {
console.log('\n🎉 Analyse terminée !')
}).catch(error => {
console.error('❌ Erreur:', error.message)
process.exit(1)
})

206
test-web-interface.cjs Normal file
View File

@ -0,0 +1,206 @@
#!/usr/bin/env node
/**
* Script de test pour analyser les images via l'interface web
* et vérifier la détection de CANTU, NICOLAS et codes CNI
*/
const http = require('http')
const fs = require('fs')
const path = require('path')
console.log('🌐 Test de l\'interface web pour l\'analyse CNI')
console.log('===============================================')
// Vérifier que les images existent
const images = [
'IMG_20250902_162159.jpg',
'IMG_20250902_162210.jpg'
]
console.log('📸 Vérification des images de test:')
images.forEach(image => {
const imagePath = path.join(__dirname, 'test-files', image)
if (fs.existsSync(imagePath)) {
const stats = fs.statSync(imagePath)
console.log(`${image}: ${(stats.size / 1024).toFixed(1)} KB`)
} else {
console.log(`${image}: Non trouvée`)
}
})
// Fonction pour faire une requête HTTP
function makeRequest(url, options = {}) {
return new Promise((resolve, reject) => {
const req = http.request(url, options, (res) => {
let data = ''
res.on('data', chunk => data += chunk)
res.on('end', () => resolve({
statusCode: res.statusCode,
headers: res.headers,
data
}))
})
req.on('error', reject)
req.setTimeout(10000, () => reject(new Error('Timeout')))
req.end()
})
}
// Test de l'interface frontend
async function testFrontendInterface() {
console.log('\n🌐 Test de l\'interface frontend...')
try {
const response = await makeRequest('http://localhost:5174')
if (response.statusCode === 200) {
console.log('✅ Interface frontend accessible sur http://localhost:5174')
} else {
console.log(`❌ Erreur d'accès à l'interface: ${response.statusCode}`)
return false
}
} catch (error) {
console.log(`❌ Erreur de connexion à l'interface: ${error.message}`)
return false
}
return true
}
// Test du serveur backend
async function testBackendServer() {
console.log('\n🔧 Test du serveur backend...')
try {
const response = await makeRequest('http://localhost:3001/api/health')
if (response.statusCode === 200) {
console.log('✅ Serveur backend accessible sur http://localhost:3001')
console.log(`📊 Réponse: ${response.data}`)
} else {
console.log(`❌ Erreur d'accès au backend: ${response.statusCode}`)
return false
}
} catch (error) {
console.log(`❌ Erreur de connexion au backend: ${error.message}`)
return false
}
return true
}
// Test d'accès aux images via le serveur
async function testImageAccess() {
console.log('\n📸 Test d\'accès aux images...')
for (const image of images) {
try {
const imageUrl = `http://localhost:5174/test-files/${image}`
const response = await makeRequest(imageUrl)
if (response.statusCode === 200) {
console.log(`${image}: Accessible via ${imageUrl}`)
} else {
console.log(`${image}: Erreur ${response.statusCode}`)
}
} catch (error) {
console.log(`${image}: Erreur de connexion - ${error.message}`)
}
}
}
// Instructions pour l'analyse manuelle
function printManualInstructions() {
console.log('\n📋 INSTRUCTIONS POUR L\'ANALYSE MANUELLE:')
console.log('=' .repeat(60))
console.log('1. Ouvrez votre navigateur et allez sur: http://localhost:5174')
console.log('2. Ouvrez la console développeur (F12)')
console.log('3. Dans l\'interface, chargez l\'une des images de test:')
images.forEach((image, index) => {
console.log(` ${index + 1}. ${image}`)
})
console.log('4. Observez les logs d\'extraction dans la console du navigateur')
console.log('5. Vérifiez les résultats d\'extraction dans l\'interface')
console.log('\n🔍 ÉLÉMENTS À RECHERCHER:')
console.log('=' .repeat(60))
console.log('• Nom de famille (en MAJUSCULES)')
console.log('• Prénom(s)')
console.log('• Numéro de carte d\'identité (format: 2 lettres + 6 chiffres)')
console.log('• Date de naissance')
console.log('• Lieu de naissance')
console.log('• Spécifiquement: "NICOLAS" et "CANTU"')
console.log('\n⚙ CONFIGURATION RECOMMANDÉE:')
console.log('=' .repeat(60))
console.log('• Mode sans LLM: VITE_DISABLE_LLM=true')
console.log('• Extraction par règles: VITE_USE_RULE_NER=true')
console.log('• Pas de clé API OpenAI requise')
console.log('\n📊 LOGS ATTENDUS DANS LA CONSOLE:')
console.log('=' .repeat(60))
console.log('🔧 [CONFIG] Mode sans LLM activé: { useRuleNer: true, disableLLM: true, ... }')
console.log('🚀 [OCR] Début de l\'extraction OCR locale...')
console.log('⏳ [OCR] Progression: 30%')
console.log('⏳ [OCR] Progression: 70%')
console.log('✅ [OCR] Progression: 100% - Extraction terminée')
console.log('🔍 [NER] Début de l\'extraction par règles...')
console.log('👥 [RULE-NER] Identités extraites: X')
console.log('🏠 [RULE-NER] Adresses extraites: X')
console.log('🆔 [RULE-NER] Numéros CNI détectés: X')
console.log('📅 [RULE-NER] Dates détectées: X')
console.log('📋 [RULE-NER] Type détecté: CNI')
console.log('🚫 [LLM] LLM désactivé - Mode 100% local')
console.log('✅ [LLM] Progression simulée: 100%')
console.log('🎉 [FINAL] Extraction complète terminée')
}
// Fonction principale
async function runTests() {
console.log('\n🚀 Démarrage des tests...')
const frontendOk = await testFrontendInterface()
const backendOk = await testBackendServer()
if (frontendOk && backendOk) {
await testImageAccess()
printManualInstructions()
console.log('\n🎯 RÉSUMÉ:')
console.log('=' .repeat(60))
console.log('✅ Interface frontend: Opérationnelle')
console.log('✅ Serveur backend: Opérationnel')
console.log('✅ Images de test: Disponibles')
console.log('')
console.log('💡 Pour analyser les images et rechercher CANTU/NICOLAS:')
console.log(' 1. Ouvrez http://localhost:5174 dans votre navigateur')
console.log(' 2. Chargez une image de test')
console.log(' 3. Observez les résultats dans la console et l\'interface')
console.log('')
console.log('🔍 Le système est configuré pour détecter:')
console.log(' • "NICOLAS" avec corrections OCR (N1colas, Nicol@s, etc.)')
console.log(' • "CANTU" avec corrections OCR (C@ntu, CantU, etc.)')
console.log(' • Numéros CNI au format 2 lettres + 6 chiffres')
console.log(' • Type de document CNI')
} else {
console.log('\n❌ PROBLÈMES DÉTECTÉS:')
console.log('=' .repeat(60))
if (!frontendOk) {
console.log('❌ Interface frontend non accessible')
console.log(' → Vérifiez que le serveur de développement est démarré')
console.log(' → Commande: npm run dev')
}
if (!backendOk) {
console.log('❌ Serveur backend non accessible')
console.log(' → Vérifiez que le serveur backend est démarré')
console.log(' → Commande: node backend/server.js')
}
}
}
// Exécuter les tests
runTests().then(() => {
console.log('\n🎉 Tests terminés !')
}).catch(error => {
console.error('❌ Erreur lors des tests:', error.message)
process.exit(1)
})

Binary file not shown.

After

Width:  |  Height:  |  Size: 160 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 496 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 191 KiB

View File

@ -0,0 +1,84 @@
%PDF-1.4
1 0 obj
<<
/Type /Catalog
/Pages 2 0 R
>>
endobj
2 0 obj
<<
/Type /Pages
/Kids [3 0 R]
/Count 1
>>
endobj
3 0 obj
<<
/Type /Page
/Parent 2 0 R
/MediaBox [0 0 612 792]
/Contents 4 0 R
/Resources <<
/Font <<
/F1 5 0 R
>>
>>
>>
endobj
4 0 obj
<<
/Length 200
>>
stream
BT
/F1 12 Tf
72 720 Td
(ACTE DE VENTE IMMOBILIERE) Tj
0 -20 Td
/F1 10 Tf
(Entre les soussignes :) Tj
0 -15 Td
(- Vendeur : Jean Dupont, ne le 15/05/1980) Tj
0 -15 Td
(- Acheteur : Marie Martin, nee le 22/03/1985) Tj
0 -20 Td
(Objet : Vente d'un appartement) Tj
0 -15 Td
(Adresse : 123 Rue de la Paix, 75001 Paris) Tj
0 -15 Td
(Surface : 75 m2) Tj
0 -15 Td
(Prix : 250 000 euros) Tj
0 -20 Td
(Fait a Paris, le 15 janvier 2024) Tj
ET
endstream
endobj
5 0 obj
<<
/Type /Font
/Subtype /Type1
/BaseFont /Helvetica
>>
endobj
xref
0 6
0000000000 65535 f
0000000009 00000 n
0000000058 00000 n
0000000115 00000 n
0000000304 00000 n
0000000554 00000 n
trailer
<<
/Size 6
/Root 1 0 R
>>
startxref
650
%%EOF

View File

@ -0,0 +1,84 @@
%PDF-1.4
1 0 obj
<<
/Type /Catalog
/Pages 2 0 R
>>
endobj
2 0 obj
<<
/Type /Pages
/Kids [3 0 R]
/Count 1
>>
endobj
3 0 obj
<<
/Type /Page
/Parent 2 0 R
/MediaBox [0 0 612 792]
/Contents 4 0 R
/Resources <<
/Font <<
/F1 5 0 R
>>
>>
>>
endobj
4 0 obj
<<
/Length 200
>>
stream
BT
/F1 12 Tf
72 720 Td
(ACTE DE VENTE IMMOBILIERE) Tj
0 -20 Td
/F1 10 Tf
(Entre les soussignes :) Tj
0 -15 Td
(- Vendeur : Jean Dupont, ne le 15/05/1980) Tj
0 -15 Td
(- Acheteur : Marie Martin, nee le 22/03/1985) Tj
0 -20 Td
(Objet : Vente d'un appartement) Tj
0 -15 Td
(Adresse : 123 Rue de la Paix, 75001 Paris) Tj
0 -15 Td
(Surface : 75 m2) Tj
0 -15 Td
(Prix : 250 000 euros) Tj
0 -20 Td
(Fait a Paris, le 15 janvier 2024) Tj
ET
endstream
endobj
5 0 obj
<<
/Type /Font
/Subtype /Type1
/BaseFont /Helvetica
>>
endobj
xref
0 6
0000000000 65535 f
0000000009 00000 n
0000000058 00000 n
0000000115 00000 n
0000000304 00000 n
0000000554 00000 n
trailer
<<
/Size 6
/Root 1 0 R
>>
startxref
650
%%EOF

View File

@ -0,0 +1,84 @@
%PDF-1.4
1 0 obj
<<
/Type /Catalog
/Pages 2 0 R
>>
endobj
2 0 obj
<<
/Type /Pages
/Kids [3 0 R]
/Count 1
>>
endobj
3 0 obj
<<
/Type /Page
/Parent 2 0 R
/MediaBox [0 0 612 792]
/Contents 4 0 R
/Resources <<
/Font <<
/F1 5 0 R
>>
>>
>>
endobj
4 0 obj
<<
/Length 200
>>
stream
BT
/F1 12 Tf
72 720 Td
(ACTE DE VENTE IMMOBILIERE) Tj
0 -20 Td
/F1 10 Tf
(Entre les soussignes :) Tj
0 -15 Td
(- Vendeur : Jean Dupont, ne le 15/05/1980) Tj
0 -15 Td
(- Acheteur : Marie Martin, nee le 22/03/1985) Tj
0 -20 Td
(Objet : Vente d'un appartement) Tj
0 -15 Td
(Adresse : 123 Rue de la Paix, 75001 Paris) Tj
0 -15 Td
(Surface : 75 m2) Tj
0 -15 Td
(Prix : 250 000 euros) Tj
0 -20 Td
(Fait a Paris, le 15 janvier 2024) Tj
ET
endstream
endobj
5 0 obj
<<
/Type /Font
/Subtype /Type1
/BaseFont /Helvetica
>>
endobj
xref
0 6
0000000000 65535 f
0000000009 00000 n
0000000058 00000 n
0000000115 00000 n
0000000304 00000 n
0000000554 00000 n
trailer
<<
/Size 6
/Root 1 0 R
>>
startxref
650
%%EOF

View File

@ -0,0 +1,84 @@
%PDF-1.4
1 0 obj
<<
/Type /Catalog
/Pages 2 0 R
>>
endobj
2 0 obj
<<
/Type /Pages
/Kids [3 0 R]
/Count 1
>>
endobj
3 0 obj
<<
/Type /Page
/Parent 2 0 R
/MediaBox [0 0 612 792]
/Contents 4 0 R
/Resources <<
/Font <<
/F1 5 0 R
>>
>>
>>
endobj
4 0 obj
<<
/Length 200
>>
stream
BT
/F1 12 Tf
72 720 Td
(ACTE DE VENTE IMMOBILIERE) Tj
0 -20 Td
/F1 10 Tf
(Entre les soussignes :) Tj
0 -15 Td
(- Vendeur : Jean Dupont, ne le 15/05/1980) Tj
0 -15 Td
(- Acheteur : Marie Martin, nee le 22/03/1985) Tj
0 -20 Td
(Objet : Vente d'un appartement) Tj
0 -15 Td
(Adresse : 123 Rue de la Paix, 75001 Paris) Tj
0 -15 Td
(Surface : 75 m2) Tj
0 -15 Td
(Prix : 250 000 euros) Tj
0 -20 Td
(Fait a Paris, le 15 janvier 2024) Tj
ET
endstream
endobj
5 0 obj
<<
/Type /Font
/Subtype /Type1
/BaseFont /Helvetica
>>
endobj
xref
0 6
0000000000 65535 f
0000000009 00000 n
0000000058 00000 n
0000000115 00000 n
0000000304 00000 n
0000000554 00000 n
trailer
<<
/Size 6
/Root 1 0 R
>>
startxref
650
%%EOF

View File

@ -0,0 +1,84 @@
%PDF-1.4
1 0 obj
<<
/Type /Catalog
/Pages 2 0 R
>>
endobj
2 0 obj
<<
/Type /Pages
/Kids [3 0 R]
/Count 1
>>
endobj
3 0 obj
<<
/Type /Page
/Parent 2 0 R
/MediaBox [0 0 612 792]
/Contents 4 0 R
/Resources <<
/Font <<
/F1 5 0 R
>>
>>
>>
endobj
4 0 obj
<<
/Length 200
>>
stream
BT
/F1 12 Tf
72 720 Td
(ACTE DE VENTE IMMOBILIERE) Tj
0 -20 Td
/F1 10 Tf
(Entre les soussignes :) Tj
0 -15 Td
(- Vendeur : Jean Dupont, ne le 15/05/1980) Tj
0 -15 Td
(- Acheteur : Marie Martin, nee le 22/03/1985) Tj
0 -20 Td
(Objet : Vente d'un appartement) Tj
0 -15 Td
(Adresse : 123 Rue de la Paix, 75001 Paris) Tj
0 -15 Td
(Surface : 75 m2) Tj
0 -15 Td
(Prix : 250 000 euros) Tj
0 -20 Td
(Fait a Paris, le 15 janvier 2024) Tj
ET
endstream
endobj
5 0 obj
<<
/Type /Font
/Subtype /Type1
/BaseFont /Helvetica
>>
endobj
xref
0 6
0000000000 65535 f
0000000009 00000 n
0000000058 00000 n
0000000115 00000 n
0000000304 00000 n
0000000554 00000 n
trailer
<<
/Size 6
/Root 1 0 R
>>
startxref
650
%%EOF

View File

@ -0,0 +1,84 @@
%PDF-1.4
1 0 obj
<<
/Type /Catalog
/Pages 2 0 R
>>
endobj
2 0 obj
<<
/Type /Pages
/Kids [3 0 R]
/Count 1
>>
endobj
3 0 obj
<<
/Type /Page
/Parent 2 0 R
/MediaBox [0 0 612 792]
/Contents 4 0 R
/Resources <<
/Font <<
/F1 5 0 R
>>
>>
>>
endobj
4 0 obj
<<
/Length 200
>>
stream
BT
/F1 12 Tf
72 720 Td
(ACTE DE VENTE IMMOBILIERE) Tj
0 -20 Td
/F1 10 Tf
(Entre les soussignes :) Tj
0 -15 Td
(- Vendeur : Jean Dupont, ne le 15/05/1980) Tj
0 -15 Td
(- Acheteur : Marie Martin, nee le 22/03/1985) Tj
0 -20 Td
(Objet : Vente d'un appartement) Tj
0 -15 Td
(Adresse : 123 Rue de la Paix, 75001 Paris) Tj
0 -15 Td
(Surface : 75 m2) Tj
0 -15 Td
(Prix : 250 000 euros) Tj
0 -20 Td
(Fait a Paris, le 15 janvier 2024) Tj
ET
endstream
endobj
5 0 obj
<<
/Type /Font
/Subtype /Type1
/BaseFont /Helvetica
>>
endobj
xref
0 6
0000000000 65535 f
0000000009 00000 n
0000000058 00000 n
0000000115 00000 n
0000000304 00000 n
0000000554 00000 n
trailer
<<
/Size 6
/Root 1 0 R
>>
startxref
650
%%EOF

View File

@ -0,0 +1,84 @@
%PDF-1.4
1 0 obj
<<
/Type /Catalog
/Pages 2 0 R
>>
endobj
2 0 obj
<<
/Type /Pages
/Kids [3 0 R]
/Count 1
>>
endobj
3 0 obj
<<
/Type /Page
/Parent 2 0 R
/MediaBox [0 0 612 792]
/Contents 4 0 R
/Resources <<
/Font <<
/F1 5 0 R
>>
>>
>>
endobj
4 0 obj
<<
/Length 200
>>
stream
BT
/F1 12 Tf
72 720 Td
(ACTE DE VENTE IMMOBILIERE) Tj
0 -20 Td
/F1 10 Tf
(Entre les soussignes :) Tj
0 -15 Td
(- Vendeur : Jean Dupont, ne le 15/05/1980) Tj
0 -15 Td
(- Acheteur : Marie Martin, nee le 22/03/1985) Tj
0 -20 Td
(Objet : Vente d'un appartement) Tj
0 -15 Td
(Adresse : 123 Rue de la Paix, 75001 Paris) Tj
0 -15 Td
(Surface : 75 m2) Tj
0 -15 Td
(Prix : 250 000 euros) Tj
0 -20 Td
(Fait a Paris, le 15 janvier 2024) Tj
ET
endstream
endobj
5 0 obj
<<
/Type /Font
/Subtype /Type1
/BaseFont /Helvetica
>>
endobj
xref
0 6
0000000000 65535 f
0000000009 00000 n
0000000058 00000 n
0000000115 00000 n
0000000304 00000 n
0000000554 00000 n
trailer
<<
/Size 6
/Root 1 0 R
>>
startxref
650
%%EOF

View File

@ -0,0 +1,84 @@
%PDF-1.4
1 0 obj
<<
/Type /Catalog
/Pages 2 0 R
>>
endobj
2 0 obj
<<
/Type /Pages
/Kids [3 0 R]
/Count 1
>>
endobj
3 0 obj
<<
/Type /Page
/Parent 2 0 R
/MediaBox [0 0 612 792]
/Contents 4 0 R
/Resources <<
/Font <<
/F1 5 0 R
>>
>>
>>
endobj
4 0 obj
<<
/Length 200
>>
stream
BT
/F1 12 Tf
72 720 Td
(ACTE DE VENTE IMMOBILIERE) Tj
0 -20 Td
/F1 10 Tf
(Entre les soussignes :) Tj
0 -15 Td
(- Vendeur : Jean Dupont, ne le 15/05/1980) Tj
0 -15 Td
(- Acheteur : Marie Martin, nee le 22/03/1985) Tj
0 -20 Td
(Objet : Vente d'un appartement) Tj
0 -15 Td
(Adresse : 123 Rue de la Paix, 75001 Paris) Tj
0 -15 Td
(Surface : 75 m2) Tj
0 -15 Td
(Prix : 250 000 euros) Tj
0 -20 Td
(Fait a Paris, le 15 janvier 2024) Tj
ET
endstream
endobj
5 0 obj
<<
/Type /Font
/Subtype /Type1
/BaseFont /Helvetica
>>
endobj
xref
0 6
0000000000 65535 f
0000000009 00000 n
0000000058 00000 n
0000000115 00000 n
0000000304 00000 n
0000000554 00000 n
trailer
<<
/Size 6
/Root 1 0 R
>>
startxref
650
%%EOF

View File

@ -0,0 +1,84 @@
%PDF-1.4
1 0 obj
<<
/Type /Catalog
/Pages 2 0 R
>>
endobj
2 0 obj
<<
/Type /Pages
/Kids [3 0 R]
/Count 1
>>
endobj
3 0 obj
<<
/Type /Page
/Parent 2 0 R
/MediaBox [0 0 612 792]
/Contents 4 0 R
/Resources <<
/Font <<
/F1 5 0 R
>>
>>
>>
endobj
4 0 obj
<<
/Length 200
>>
stream
BT
/F1 12 Tf
72 720 Td
(ACTE DE VENTE IMMOBILIERE) Tj
0 -20 Td
/F1 10 Tf
(Entre les soussignes :) Tj
0 -15 Td
(- Vendeur : Jean Dupont, ne le 15/05/1980) Tj
0 -15 Td
(- Acheteur : Marie Martin, nee le 22/03/1985) Tj
0 -20 Td
(Objet : Vente d'un appartement) Tj
0 -15 Td
(Adresse : 123 Rue de la Paix, 75001 Paris) Tj
0 -15 Td
(Surface : 75 m2) Tj
0 -15 Td
(Prix : 250 000 euros) Tj
0 -20 Td
(Fait a Paris, le 15 janvier 2024) Tj
ET
endstream
endobj
5 0 obj
<<
/Type /Font
/Subtype /Type1
/BaseFont /Helvetica
>>
endobj
xref
0 6
0000000000 65535 f
0000000009 00000 n
0000000058 00000 n
0000000115 00000 n
0000000304 00000 n
0000000554 00000 n
trailer
<<
/Size 6
/Root 1 0 R
>>
startxref
650
%%EOF

View File

@ -0,0 +1,84 @@
%PDF-1.4
1 0 obj
<<
/Type /Catalog
/Pages 2 0 R
>>
endobj
2 0 obj
<<
/Type /Pages
/Kids [3 0 R]
/Count 1
>>
endobj
3 0 obj
<<
/Type /Page
/Parent 2 0 R
/MediaBox [0 0 612 792]
/Contents 4 0 R
/Resources <<
/Font <<
/F1 5 0 R
>>
>>
>>
endobj
4 0 obj
<<
/Length 200
>>
stream
BT
/F1 12 Tf
72 720 Td
(ACTE DE VENTE IMMOBILIERE) Tj
0 -20 Td
/F1 10 Tf
(Entre les soussignes :) Tj
0 -15 Td
(- Vendeur : Jean Dupont, ne le 15/05/1980) Tj
0 -15 Td
(- Acheteur : Marie Martin, nee le 22/03/1985) Tj
0 -20 Td
(Objet : Vente d'un appartement) Tj
0 -15 Td
(Adresse : 123 Rue de la Paix, 75001 Paris) Tj
0 -15 Td
(Surface : 75 m2) Tj
0 -15 Td
(Prix : 250 000 euros) Tj
0 -20 Td
(Fait a Paris, le 15 janvier 2024) Tj
ET
endstream
endobj
5 0 obj
<<
/Type /Font
/Subtype /Type1
/BaseFont /Helvetica
>>
endobj
xref
0 6
0000000000 65535 f
0000000009 00000 n
0000000058 00000 n
0000000115 00000 n
0000000304 00000 n
0000000554 00000 n
trailer
<<
/Size 6
/Root 1 0 R
>>
startxref
650
%%EOF

View File

@ -0,0 +1,84 @@
%PDF-1.4
1 0 obj
<<
/Type /Catalog
/Pages 2 0 R
>>
endobj
2 0 obj
<<
/Type /Pages
/Kids [3 0 R]
/Count 1
>>
endobj
3 0 obj
<<
/Type /Page
/Parent 2 0 R
/MediaBox [0 0 612 792]
/Contents 4 0 R
/Resources <<
/Font <<
/F1 5 0 R
>>
>>
>>
endobj
4 0 obj
<<
/Length 200
>>
stream
BT
/F1 12 Tf
72 720 Td
(ACTE DE VENTE IMMOBILIERE) Tj
0 -20 Td
/F1 10 Tf
(Entre les soussignes :) Tj
0 -15 Td
(- Vendeur : Jean Dupont, ne le 15/05/1980) Tj
0 -15 Td
(- Acheteur : Marie Martin, nee le 22/03/1985) Tj
0 -20 Td
(Objet : Vente d'un appartement) Tj
0 -15 Td
(Adresse : 123 Rue de la Paix, 75001 Paris) Tj
0 -15 Td
(Surface : 75 m2) Tj
0 -15 Td
(Prix : 250 000 euros) Tj
0 -20 Td
(Fait a Paris, le 15 janvier 2024) Tj
ET
endstream
endobj
5 0 obj
<<
/Type /Font
/Subtype /Type1
/BaseFont /Helvetica
>>
endobj
xref
0 6
0000000000 65535 f
0000000009 00000 n
0000000058 00000 n
0000000115 00000 n
0000000304 00000 n
0000000554 00000 n
trailer
<<
/Size 6
/Root 1 0 R
>>
startxref
650
%%EOF

View File

@ -0,0 +1,84 @@
%PDF-1.4
1 0 obj
<<
/Type /Catalog
/Pages 2 0 R
>>
endobj
2 0 obj
<<
/Type /Pages
/Kids [3 0 R]
/Count 1
>>
endobj
3 0 obj
<<
/Type /Page
/Parent 2 0 R
/MediaBox [0 0 612 792]
/Contents 4 0 R
/Resources <<
/Font <<
/F1 5 0 R
>>
>>
>>
endobj
4 0 obj
<<
/Length 200
>>
stream
BT
/F1 12 Tf
72 720 Td
(ACTE DE VENTE IMMOBILIERE) Tj
0 -20 Td
/F1 10 Tf
(Entre les soussignes :) Tj
0 -15 Td
(- Vendeur : Jean Dupont, ne le 15/05/1980) Tj
0 -15 Td
(- Acheteur : Marie Martin, nee le 22/03/1985) Tj
0 -20 Td
(Objet : Vente d'un appartement) Tj
0 -15 Td
(Adresse : 123 Rue de la Paix, 75001 Paris) Tj
0 -15 Td
(Surface : 75 m2) Tj
0 -15 Td
(Prix : 250 000 euros) Tj
0 -20 Td
(Fait a Paris, le 15 janvier 2024) Tj
ET
endstream
endobj
5 0 obj
<<
/Type /Font
/Subtype /Type1
/BaseFont /Helvetica
>>
endobj
xref
0 6
0000000000 65535 f
0000000009 00000 n
0000000058 00000 n
0000000115 00000 n
0000000304 00000 n
0000000554 00000 n
trailer
<<
/Size 6
/Root 1 0 R
>>
startxref
650
%%EOF

View File

@ -0,0 +1,84 @@
%PDF-1.4
1 0 obj
<<
/Type /Catalog
/Pages 2 0 R
>>
endobj
2 0 obj
<<
/Type /Pages
/Kids [3 0 R]
/Count 1
>>
endobj
3 0 obj
<<
/Type /Page
/Parent 2 0 R
/MediaBox [0 0 612 792]
/Contents 4 0 R
/Resources <<
/Font <<
/F1 5 0 R
>>
>>
>>
endobj
4 0 obj
<<
/Length 200
>>
stream
BT
/F1 12 Tf
72 720 Td
(ACTE DE VENTE IMMOBILIERE) Tj
0 -20 Td
/F1 10 Tf
(Entre les soussignes :) Tj
0 -15 Td
(- Vendeur : Jean Dupont, ne le 15/05/1980) Tj
0 -15 Td
(- Acheteur : Marie Martin, nee le 22/03/1985) Tj
0 -20 Td
(Objet : Vente d'un appartement) Tj
0 -15 Td
(Adresse : 123 Rue de la Paix, 75001 Paris) Tj
0 -15 Td
(Surface : 75 m2) Tj
0 -15 Td
(Prix : 250 000 euros) Tj
0 -20 Td
(Fait a Paris, le 15 janvier 2024) Tj
ET
endstream
endobj
5 0 obj
<<
/Type /Font
/Subtype /Type1
/BaseFont /Helvetica
>>
endobj
xref
0 6
0000000000 65535 f
0000000009 00000 n
0000000058 00000 n
0000000115 00000 n
0000000304 00000 n
0000000554 00000 n
trailer
<<
/Size 6
/Root 1 0 R
>>
startxref
650
%%EOF

View File

@ -0,0 +1,84 @@
%PDF-1.4
1 0 obj
<<
/Type /Catalog
/Pages 2 0 R
>>
endobj
2 0 obj
<<
/Type /Pages
/Kids [3 0 R]
/Count 1
>>
endobj
3 0 obj
<<
/Type /Page
/Parent 2 0 R
/MediaBox [0 0 612 792]
/Contents 4 0 R
/Resources <<
/Font <<
/F1 5 0 R
>>
>>
>>
endobj
4 0 obj
<<
/Length 200
>>
stream
BT
/F1 12 Tf
72 720 Td
(ACTE DE VENTE IMMOBILIERE) Tj
0 -20 Td
/F1 10 Tf
(Entre les soussignes :) Tj
0 -15 Td
(- Vendeur : Jean Dupont, ne le 15/05/1980) Tj
0 -15 Td
(- Acheteur : Marie Martin, nee le 22/03/1985) Tj
0 -20 Td
(Objet : Vente d'un appartement) Tj
0 -15 Td
(Adresse : 123 Rue de la Paix, 75001 Paris) Tj
0 -15 Td
(Surface : 75 m2) Tj
0 -15 Td
(Prix : 250 000 euros) Tj
0 -20 Td
(Fait a Paris, le 15 janvier 2024) Tj
ET
endstream
endobj
5 0 obj
<<
/Type /Font
/Subtype /Type1
/BaseFont /Helvetica
>>
endobj
xref
0 6
0000000000 65535 f
0000000009 00000 n
0000000058 00000 n
0000000115 00000 n
0000000304 00000 n
0000000554 00000 n
trailer
<<
/Size 6
/Root 1 0 R
>>
startxref
650
%%EOF

View File

@ -0,0 +1,84 @@
%PDF-1.4
1 0 obj
<<
/Type /Catalog
/Pages 2 0 R
>>
endobj
2 0 obj
<<
/Type /Pages
/Kids [3 0 R]
/Count 1
>>
endobj
3 0 obj
<<
/Type /Page
/Parent 2 0 R
/MediaBox [0 0 612 792]
/Contents 4 0 R
/Resources <<
/Font <<
/F1 5 0 R
>>
>>
>>
endobj
4 0 obj
<<
/Length 200
>>
stream
BT
/F1 12 Tf
72 720 Td
(ACTE DE VENTE IMMOBILIERE) Tj
0 -20 Td
/F1 10 Tf
(Entre les soussignes :) Tj
0 -15 Td
(- Vendeur : Jean Dupont, ne le 15/05/1980) Tj
0 -15 Td
(- Acheteur : Marie Martin, nee le 22/03/1985) Tj
0 -20 Td
(Objet : Vente d'un appartement) Tj
0 -15 Td
(Adresse : 123 Rue de la Paix, 75001 Paris) Tj
0 -15 Td
(Surface : 75 m2) Tj
0 -15 Td
(Prix : 250 000 euros) Tj
0 -20 Td
(Fait a Paris, le 15 janvier 2024) Tj
ET
endstream
endobj
5 0 obj
<<
/Type /Font
/Subtype /Type1
/BaseFont /Helvetica
>>
endobj
xref
0 6
0000000000 65535 f
0000000009 00000 n
0000000058 00000 n
0000000115 00000 n
0000000304 00000 n
0000000554 00000 n
trailer
<<
/Size 6
/Root 1 0 R
>>
startxref
650
%%EOF

View File

@ -0,0 +1,84 @@
%PDF-1.4
1 0 obj
<<
/Type /Catalog
/Pages 2 0 R
>>
endobj
2 0 obj
<<
/Type /Pages
/Kids [3 0 R]
/Count 1
>>
endobj
3 0 obj
<<
/Type /Page
/Parent 2 0 R
/MediaBox [0 0 612 792]
/Contents 4 0 R
/Resources <<
/Font <<
/F1 5 0 R
>>
>>
>>
endobj
4 0 obj
<<
/Length 200
>>
stream
BT
/F1 12 Tf
72 720 Td
(ACTE DE VENTE IMMOBILIERE) Tj
0 -20 Td
/F1 10 Tf
(Entre les soussignes :) Tj
0 -15 Td
(- Vendeur : Jean Dupont, ne le 15/05/1980) Tj
0 -15 Td
(- Acheteur : Marie Martin, nee le 22/03/1985) Tj
0 -20 Td
(Objet : Vente d'un appartement) Tj
0 -15 Td
(Adresse : 123 Rue de la Paix, 75001 Paris) Tj
0 -15 Td
(Surface : 75 m2) Tj
0 -15 Td
(Prix : 250 000 euros) Tj
0 -20 Td
(Fait a Paris, le 15 janvier 2024) Tj
ET
endstream
endobj
5 0 obj
<<
/Type /Font
/Subtype /Type1
/BaseFont /Helvetica
>>
endobj
xref
0 6
0000000000 65535 f
0000000009 00000 n
0000000058 00000 n
0000000115 00000 n
0000000304 00000 n
0000000554 00000 n
trailer
<<
/Size 6
/Root 1 0 R
>>
startxref
650
%%EOF

View File

@ -0,0 +1,84 @@
%PDF-1.4
1 0 obj
<<
/Type /Catalog
/Pages 2 0 R
>>
endobj
2 0 obj
<<
/Type /Pages
/Kids [3 0 R]
/Count 1
>>
endobj
3 0 obj
<<
/Type /Page
/Parent 2 0 R
/MediaBox [0 0 612 792]
/Contents 4 0 R
/Resources <<
/Font <<
/F1 5 0 R
>>
>>
>>
endobj
4 0 obj
<<
/Length 200
>>
stream
BT
/F1 12 Tf
72 720 Td
(ACTE DE VENTE IMMOBILIERE) Tj
0 -20 Td
/F1 10 Tf
(Entre les soussignes :) Tj
0 -15 Td
(- Vendeur : Jean Dupont, ne le 15/05/1980) Tj
0 -15 Td
(- Acheteur : Marie Martin, nee le 22/03/1985) Tj
0 -20 Td
(Objet : Vente d'un appartement) Tj
0 -15 Td
(Adresse : 123 Rue de la Paix, 75001 Paris) Tj
0 -15 Td
(Surface : 75 m2) Tj
0 -15 Td
(Prix : 250 000 euros) Tj
0 -20 Td
(Fait a Paris, le 15 janvier 2024) Tj
ET
endstream
endobj
5 0 obj
<<
/Type /Font
/Subtype /Type1
/BaseFont /Helvetica
>>
endobj
xref
0 6
0000000000 65535 f
0000000009 00000 n
0000000058 00000 n
0000000115 00000 n
0000000304 00000 n
0000000554 00000 n
trailer
<<
/Size 6
/Root 1 0 R
>>
startxref
650
%%EOF

Binary file not shown.

After

Width:  |  Height:  |  Size: 208 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 384 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 368 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 320 KiB

View File

@ -0,0 +1,84 @@
%PDF-1.4
1 0 obj
<<
/Type /Catalog
/Pages 2 0 R
>>
endobj
2 0 obj
<<
/Type /Pages
/Kids [3 0 R]
/Count 1
>>
endobj
3 0 obj
<<
/Type /Page
/Parent 2 0 R
/MediaBox [0 0 612 792]
/Contents 4 0 R
/Resources <<
/Font <<
/F1 5 0 R
>>
>>
>>
endobj
4 0 obj
<<
/Length 200
>>
stream
BT
/F1 12 Tf
72 720 Td
(ACTE DE VENTE IMMOBILIERE) Tj
0 -20 Td
/F1 10 Tf
(Entre les soussignes :) Tj
0 -15 Td
(- Vendeur : Jean Dupont, ne le 15/05/1980) Tj
0 -15 Td
(- Acheteur : Marie Martin, nee le 22/03/1985) Tj
0 -20 Td
(Objet : Vente d'un appartement) Tj
0 -15 Td
(Adresse : 123 Rue de la Paix, 75001 Paris) Tj
0 -15 Td
(Surface : 75 m2) Tj
0 -15 Td
(Prix : 250 000 euros) Tj
0 -20 Td
(Fait a Paris, le 15 janvier 2024) Tj
ET
endstream
endobj
5 0 obj
<<
/Type /Font
/Subtype /Type1
/BaseFont /Helvetica
>>
endobj
xref
0 6
0000000000 65535 f
0000000009 00000 n
0000000058 00000 n
0000000115 00000 n
0000000304 00000 n
0000000554 00000 n
trailer
<<
/Size 6
/Root 1 0 R
>>
startxref
650
%%EOF

View File

@ -0,0 +1,84 @@
%PDF-1.4
1 0 obj
<<
/Type /Catalog
/Pages 2 0 R
>>
endobj
2 0 obj
<<
/Type /Pages
/Kids [3 0 R]
/Count 1
>>
endobj
3 0 obj
<<
/Type /Page
/Parent 2 0 R
/MediaBox [0 0 612 792]
/Contents 4 0 R
/Resources <<
/Font <<
/F1 5 0 R
>>
>>
>>
endobj
4 0 obj
<<
/Length 200
>>
stream
BT
/F1 12 Tf
72 720 Td
(ACTE DE VENTE IMMOBILIERE) Tj
0 -20 Td
/F1 10 Tf
(Entre les soussignes :) Tj
0 -15 Td
(- Vendeur : Jean Dupont, ne le 15/05/1980) Tj
0 -15 Td
(- Acheteur : Marie Martin, nee le 22/03/1985) Tj
0 -20 Td
(Objet : Vente d'un appartement) Tj
0 -15 Td
(Adresse : 123 Rue de la Paix, 75001 Paris) Tj
0 -15 Td
(Surface : 75 m2) Tj
0 -15 Td
(Prix : 250 000 euros) Tj
0 -20 Td
(Fait a Paris, le 15 janvier 2024) Tj
ET
endstream
endobj
5 0 obj
<<
/Type /Font
/Subtype /Type1
/BaseFont /Helvetica
>>
endobj
xref
0 6
0000000000 65535 f
0000000009 00000 n
0000000058 00000 n
0000000115 00000 n
0000000304 00000 n
0000000554 00000 n
trailer
<<
/Size 6
/Root 1 0 R
>>
startxref
650
%%EOF

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

View File

@ -0,0 +1,84 @@
%PDF-1.4
1 0 obj
<<
/Type /Catalog
/Pages 2 0 R
>>
endobj
2 0 obj
<<
/Type /Pages
/Kids [3 0 R]
/Count 1
>>
endobj
3 0 obj
<<
/Type /Page
/Parent 2 0 R
/MediaBox [0 0 612 792]
/Contents 4 0 R
/Resources <<
/Font <<
/F1 5 0 R
>>
>>
>>
endobj
4 0 obj
<<
/Length 200
>>
stream
BT
/F1 12 Tf
72 720 Td
(ACTE DE VENTE IMMOBILIERE) Tj
0 -20 Td
/F1 10 Tf
(Entre les soussignes :) Tj
0 -15 Td
(- Vendeur : Jean Dupont, ne le 15/05/1980) Tj
0 -15 Td
(- Acheteur : Marie Martin, nee le 22/03/1985) Tj
0 -20 Td
(Objet : Vente d'un appartement) Tj
0 -15 Td
(Adresse : 123 Rue de la Paix, 75001 Paris) Tj
0 -15 Td
(Surface : 75 m2) Tj
0 -15 Td
(Prix : 250 000 euros) Tj
0 -20 Td
(Fait a Paris, le 15 janvier 2024) Tj
ET
endstream
endobj
5 0 obj
<<
/Type /Font
/Subtype /Type1
/BaseFont /Helvetica
>>
endobj
xref
0 6
0000000000 65535 f
0000000009 00000 n
0000000058 00000 n
0000000115 00000 n
0000000304 00000 n
0000000554 00000 n
trailer
<<
/Size 6
/Root 1 0 R
>>
startxref
650
%%EOF

View File

@ -0,0 +1,84 @@
%PDF-1.4
1 0 obj
<<
/Type /Catalog
/Pages 2 0 R
>>
endobj
2 0 obj
<<
/Type /Pages
/Kids [3 0 R]
/Count 1
>>
endobj
3 0 obj
<<
/Type /Page
/Parent 2 0 R
/MediaBox [0 0 612 792]
/Contents 4 0 R
/Resources <<
/Font <<
/F1 5 0 R
>>
>>
>>
endobj
4 0 obj
<<
/Length 200
>>
stream
BT
/F1 12 Tf
72 720 Td
(ACTE DE VENTE IMMOBILIERE) Tj
0 -20 Td
/F1 10 Tf
(Entre les soussignes :) Tj
0 -15 Td
(- Vendeur : Jean Dupont, ne le 15/05/1980) Tj
0 -15 Td
(- Acheteur : Marie Martin, nee le 22/03/1985) Tj
0 -20 Td
(Objet : Vente d'un appartement) Tj
0 -15 Td
(Adresse : 123 Rue de la Paix, 75001 Paris) Tj
0 -15 Td
(Surface : 75 m2) Tj
0 -15 Td
(Prix : 250 000 euros) Tj
0 -20 Td
(Fait a Paris, le 15 janvier 2024) Tj
ET
endstream
endobj
5 0 obj
<<
/Type /Font
/Subtype /Type1
/BaseFont /Helvetica
>>
endobj
xref
0 6
0000000000 65535 f
0000000009 00000 n
0000000058 00000 n
0000000115 00000 n
0000000304 00000 n
0000000554 00000 n
trailer
<<
/Size 6
/Root 1 0 R
>>
startxref
650
%%EOF

View File

@ -0,0 +1,84 @@
%PDF-1.4
1 0 obj
<<
/Type /Catalog
/Pages 2 0 R
>>
endobj
2 0 obj
<<
/Type /Pages
/Kids [3 0 R]
/Count 1
>>
endobj
3 0 obj
<<
/Type /Page
/Parent 2 0 R
/MediaBox [0 0 612 792]
/Contents 4 0 R
/Resources <<
/Font <<
/F1 5 0 R
>>
>>
>>
endobj
4 0 obj
<<
/Length 200
>>
stream
BT
/F1 12 Tf
72 720 Td
(ACTE DE VENTE IMMOBILIERE) Tj
0 -20 Td
/F1 10 Tf
(Entre les soussignes :) Tj
0 -15 Td
(- Vendeur : Jean Dupont, ne le 15/05/1980) Tj
0 -15 Td
(- Acheteur : Marie Martin, nee le 22/03/1985) Tj
0 -20 Td
(Objet : Vente d'un appartement) Tj
0 -15 Td
(Adresse : 123 Rue de la Paix, 75001 Paris) Tj
0 -15 Td
(Surface : 75 m2) Tj
0 -15 Td
(Prix : 250 000 euros) Tj
0 -20 Td
(Fait a Paris, le 15 janvier 2024) Tj
ET
endstream
endobj
5 0 obj
<<
/Type /Font
/Subtype /Type1
/BaseFont /Helvetica
>>
endobj
xref
0 6
0000000000 65535 f
0000000009 00000 n
0000000058 00000 n
0000000115 00000 n
0000000304 00000 n
0000000554 00000 n
trailer
<<
/Size 6
/Root 1 0 R
>>
startxref
650
%%EOF

View File

@ -0,0 +1,84 @@
%PDF-1.4
1 0 obj
<<
/Type /Catalog
/Pages 2 0 R
>>
endobj
2 0 obj
<<
/Type /Pages
/Kids [3 0 R]
/Count 1
>>
endobj
3 0 obj
<<
/Type /Page
/Parent 2 0 R
/MediaBox [0 0 612 792]
/Contents 4 0 R
/Resources <<
/Font <<
/F1 5 0 R
>>
>>
>>
endobj
4 0 obj
<<
/Length 200
>>
stream
BT
/F1 12 Tf
72 720 Td
(ACTE DE VENTE IMMOBILIERE) Tj
0 -20 Td
/F1 10 Tf
(Entre les soussignes :) Tj
0 -15 Td
(- Vendeur : Jean Dupont, ne le 15/05/1980) Tj
0 -15 Td
(- Acheteur : Marie Martin, nee le 22/03/1985) Tj
0 -20 Td
(Objet : Vente d'un appartement) Tj
0 -15 Td
(Adresse : 123 Rue de la Paix, 75001 Paris) Tj
0 -15 Td
(Surface : 75 m2) Tj
0 -15 Td
(Prix : 250 000 euros) Tj
0 -20 Td
(Fait a Paris, le 15 janvier 2024) Tj
ET
endstream
endobj
5 0 obj
<<
/Type /Font
/Subtype /Type1
/BaseFont /Helvetica
>>
endobj
xref
0 6
0000000000 65535 f
0000000009 00000 n
0000000058 00000 n
0000000115 00000 n
0000000304 00000 n
0000000554 00000 n
trailer
<<
/Size 6
/Root 1 0 R
>>
startxref
650
%%EOF

View File

@ -0,0 +1,84 @@
%PDF-1.4
1 0 obj
<<
/Type /Catalog
/Pages 2 0 R
>>
endobj
2 0 obj
<<
/Type /Pages
/Kids [3 0 R]
/Count 1
>>
endobj
3 0 obj
<<
/Type /Page
/Parent 2 0 R
/MediaBox [0 0 612 792]
/Contents 4 0 R
/Resources <<
/Font <<
/F1 5 0 R
>>
>>
>>
endobj
4 0 obj
<<
/Length 200
>>
stream
BT
/F1 12 Tf
72 720 Td
(ACTE DE VENTE IMMOBILIERE) Tj
0 -20 Td
/F1 10 Tf
(Entre les soussignes :) Tj
0 -15 Td
(- Vendeur : Jean Dupont, ne le 15/05/1980) Tj
0 -15 Td
(- Acheteur : Marie Martin, nee le 22/03/1985) Tj
0 -20 Td
(Objet : Vente d'un appartement) Tj
0 -15 Td
(Adresse : 123 Rue de la Paix, 75001 Paris) Tj
0 -15 Td
(Surface : 75 m2) Tj
0 -15 Td
(Prix : 250 000 euros) Tj
0 -20 Td
(Fait a Paris, le 15 janvier 2024) Tj
ET
endstream
endobj
5 0 obj
<<
/Type /Font
/Subtype /Type1
/BaseFont /Helvetica
>>
endobj
xref
0 6
0000000000 65535 f
0000000009 00000 n
0000000058 00000 n
0000000115 00000 n
0000000304 00000 n
0000000554 00000 n
trailer
<<
/Size 6
/Root 1 0 R
>>
startxref
650
%%EOF

View File

@ -0,0 +1,84 @@
%PDF-1.4
1 0 obj
<<
/Type /Catalog
/Pages 2 0 R
>>
endobj
2 0 obj
<<
/Type /Pages
/Kids [3 0 R]
/Count 1
>>
endobj
3 0 obj
<<
/Type /Page
/Parent 2 0 R
/MediaBox [0 0 612 792]
/Contents 4 0 R
/Resources <<
/Font <<
/F1 5 0 R
>>
>>
>>
endobj
4 0 obj
<<
/Length 200
>>
stream
BT
/F1 12 Tf
72 720 Td
(ACTE DE VENTE IMMOBILIERE) Tj
0 -20 Td
/F1 10 Tf
(Entre les soussignes :) Tj
0 -15 Td
(- Vendeur : Jean Dupont, ne le 15/05/1980) Tj
0 -15 Td
(- Acheteur : Marie Martin, nee le 22/03/1985) Tj
0 -20 Td
(Objet : Vente d'un appartement) Tj
0 -15 Td
(Adresse : 123 Rue de la Paix, 75001 Paris) Tj
0 -15 Td
(Surface : 75 m2) Tj
0 -15 Td
(Prix : 250 000 euros) Tj
0 -20 Td
(Fait a Paris, le 15 janvier 2024) Tj
ET
endstream
endobj
5 0 obj
<<
/Type /Font
/Subtype /Type1
/BaseFont /Helvetica
>>
endobj
xref
0 6
0000000000 65535 f
0000000009 00000 n
0000000058 00000 n
0000000115 00000 n
0000000304 00000 n
0000000554 00000 n
trailer
<<
/Size 6
/Root 1 0 R
>>
startxref
650
%%EOF

View File

@ -0,0 +1,84 @@
%PDF-1.4
1 0 obj
<<
/Type /Catalog
/Pages 2 0 R
>>
endobj
2 0 obj
<<
/Type /Pages
/Kids [3 0 R]
/Count 1
>>
endobj
3 0 obj
<<
/Type /Page
/Parent 2 0 R
/MediaBox [0 0 612 792]
/Contents 4 0 R
/Resources <<
/Font <<
/F1 5 0 R
>>
>>
>>
endobj
4 0 obj
<<
/Length 200
>>
stream
BT
/F1 12 Tf
72 720 Td
(ACTE DE VENTE IMMOBILIERE) Tj
0 -20 Td
/F1 10 Tf
(Entre les soussignes :) Tj
0 -15 Td
(- Vendeur : Jean Dupont, ne le 15/05/1980) Tj
0 -15 Td
(- Acheteur : Marie Martin, nee le 22/03/1985) Tj
0 -20 Td
(Objet : Vente d'un appartement) Tj
0 -15 Td
(Adresse : 123 Rue de la Paix, 75001 Paris) Tj
0 -15 Td
(Surface : 75 m2) Tj
0 -15 Td
(Prix : 250 000 euros) Tj
0 -20 Td
(Fait a Paris, le 15 janvier 2024) Tj
ET
endstream
endobj
5 0 obj
<<
/Type /Font
/Subtype /Type1
/BaseFont /Helvetica
>>
endobj
xref
0 6
0000000000 65535 f
0000000009 00000 n
0000000058 00000 n
0000000115 00000 n
0000000304 00000 n
0000000554 00000 n
trailer
<<
/Size 6
/Root 1 0 R
>>
startxref
650
%%EOF

View File

@ -0,0 +1,84 @@
%PDF-1.4
1 0 obj
<<
/Type /Catalog
/Pages 2 0 R
>>
endobj
2 0 obj
<<
/Type /Pages
/Kids [3 0 R]
/Count 1
>>
endobj
3 0 obj
<<
/Type /Page
/Parent 2 0 R
/MediaBox [0 0 612 792]
/Contents 4 0 R
/Resources <<
/Font <<
/F1 5 0 R
>>
>>
>>
endobj
4 0 obj
<<
/Length 200
>>
stream
BT
/F1 12 Tf
72 720 Td
(ACTE DE VENTE IMMOBILIERE) Tj
0 -20 Td
/F1 10 Tf
(Entre les soussignes :) Tj
0 -15 Td
(- Vendeur : Jean Dupont, ne le 15/05/1980) Tj
0 -15 Td
(- Acheteur : Marie Martin, nee le 22/03/1985) Tj
0 -20 Td
(Objet : Vente d'un appartement) Tj
0 -15 Td
(Adresse : 123 Rue de la Paix, 75001 Paris) Tj
0 -15 Td
(Surface : 75 m2) Tj
0 -15 Td
(Prix : 250 000 euros) Tj
0 -20 Td
(Fait a Paris, le 15 janvier 2024) Tj
ET
endstream
endobj
5 0 obj
<<
/Type /Font
/Subtype /Type1
/BaseFont /Helvetica
>>
endobj
xref
0 6
0000000000 65535 f
0000000009 00000 n
0000000058 00000 n
0000000115 00000 n
0000000304 00000 n
0000000554 00000 n
trailer
<<
/Size 6
/Root 1 0 R
>>
startxref
650
%%EOF

View File

@ -0,0 +1,84 @@
%PDF-1.4
1 0 obj
<<
/Type /Catalog
/Pages 2 0 R
>>
endobj
2 0 obj
<<
/Type /Pages
/Kids [3 0 R]
/Count 1
>>
endobj
3 0 obj
<<
/Type /Page
/Parent 2 0 R
/MediaBox [0 0 612 792]
/Contents 4 0 R
/Resources <<
/Font <<
/F1 5 0 R
>>
>>
>>
endobj
4 0 obj
<<
/Length 200
>>
stream
BT
/F1 12 Tf
72 720 Td
(ACTE DE VENTE IMMOBILIERE) Tj
0 -20 Td
/F1 10 Tf
(Entre les soussignes :) Tj
0 -15 Td
(- Vendeur : Jean Dupont, ne le 15/05/1980) Tj
0 -15 Td
(- Acheteur : Marie Martin, nee le 22/03/1985) Tj
0 -20 Td
(Objet : Vente d'un appartement) Tj
0 -15 Td
(Adresse : 123 Rue de la Paix, 75001 Paris) Tj
0 -15 Td
(Surface : 75 m2) Tj
0 -15 Td
(Prix : 250 000 euros) Tj
0 -20 Td
(Fait a Paris, le 15 janvier 2024) Tj
ET
endstream
endobj
5 0 obj
<<
/Type /Font
/Subtype /Type1
/BaseFont /Helvetica
>>
endobj
xref
0 6
0000000000 65535 f
0000000009 00000 n
0000000058 00000 n
0000000115 00000 n
0000000304 00000 n
0000000554 00000 n
trailer
<<
/Size 6
/Root 1 0 R
>>
startxref
650
%%EOF

View File

@ -0,0 +1,84 @@
%PDF-1.4
1 0 obj
<<
/Type /Catalog
/Pages 2 0 R
>>
endobj
2 0 obj
<<
/Type /Pages
/Kids [3 0 R]
/Count 1
>>
endobj
3 0 obj
<<
/Type /Page
/Parent 2 0 R
/MediaBox [0 0 612 792]
/Contents 4 0 R
/Resources <<
/Font <<
/F1 5 0 R
>>
>>
>>
endobj
4 0 obj
<<
/Length 200
>>
stream
BT
/F1 12 Tf
72 720 Td
(ACTE DE VENTE IMMOBILIERE) Tj
0 -20 Td
/F1 10 Tf
(Entre les soussignes :) Tj
0 -15 Td
(- Vendeur : Jean Dupont, ne le 15/05/1980) Tj
0 -15 Td
(- Acheteur : Marie Martin, nee le 22/03/1985) Tj
0 -20 Td
(Objet : Vente d'un appartement) Tj
0 -15 Td
(Adresse : 123 Rue de la Paix, 75001 Paris) Tj
0 -15 Td
(Surface : 75 m2) Tj
0 -15 Td
(Prix : 250 000 euros) Tj
0 -20 Td
(Fait a Paris, le 15 janvier 2024) Tj
ET
endstream
endobj
5 0 obj
<<
/Type /Font
/Subtype /Type1
/BaseFont /Helvetica
>>
endobj
xref
0 6
0000000000 65535 f
0000000009 00000 n
0000000058 00000 n
0000000115 00000 n
0000000304 00000 n
0000000554 00000 n
trailer
<<
/Size 6
/Root 1 0 R
>>
startxref
650
%%EOF

View File

@ -0,0 +1,84 @@
%PDF-1.4
1 0 obj
<<
/Type /Catalog
/Pages 2 0 R
>>
endobj
2 0 obj
<<
/Type /Pages
/Kids [3 0 R]
/Count 1
>>
endobj
3 0 obj
<<
/Type /Page
/Parent 2 0 R
/MediaBox [0 0 612 792]
/Contents 4 0 R
/Resources <<
/Font <<
/F1 5 0 R
>>
>>
>>
endobj
4 0 obj
<<
/Length 200
>>
stream
BT
/F1 12 Tf
72 720 Td
(ACTE DE VENTE IMMOBILIERE) Tj
0 -20 Td
/F1 10 Tf
(Entre les soussignes :) Tj
0 -15 Td
(- Vendeur : Jean Dupont, ne le 15/05/1980) Tj
0 -15 Td
(- Acheteur : Marie Martin, nee le 22/03/1985) Tj
0 -20 Td
(Objet : Vente d'un appartement) Tj
0 -15 Td
(Adresse : 123 Rue de la Paix, 75001 Paris) Tj
0 -15 Td
(Surface : 75 m2) Tj
0 -15 Td
(Prix : 250 000 euros) Tj
0 -20 Td
(Fait a Paris, le 15 janvier 2024) Tj
ET
endstream
endobj
5 0 obj
<<
/Type /Font
/Subtype /Type1
/BaseFont /Helvetica
>>
endobj
xref
0 6
0000000000 65535 f
0000000009 00000 n
0000000058 00000 n
0000000115 00000 n
0000000304 00000 n
0000000554 00000 n
trailer
<<
/Size 6
/Root 1 0 R
>>
startxref
650
%%EOF

View File

@ -0,0 +1,84 @@
%PDF-1.4
1 0 obj
<<
/Type /Catalog
/Pages 2 0 R
>>
endobj
2 0 obj
<<
/Type /Pages
/Kids [3 0 R]
/Count 1
>>
endobj
3 0 obj
<<
/Type /Page
/Parent 2 0 R
/MediaBox [0 0 612 792]
/Contents 4 0 R
/Resources <<
/Font <<
/F1 5 0 R
>>
>>
>>
endobj
4 0 obj
<<
/Length 200
>>
stream
BT
/F1 12 Tf
72 720 Td
(ACTE DE VENTE IMMOBILIERE) Tj
0 -20 Td
/F1 10 Tf
(Entre les soussignes :) Tj
0 -15 Td
(- Vendeur : Jean Dupont, ne le 15/05/1980) Tj
0 -15 Td
(- Acheteur : Marie Martin, nee le 22/03/1985) Tj
0 -20 Td
(Objet : Vente d'un appartement) Tj
0 -15 Td
(Adresse : 123 Rue de la Paix, 75001 Paris) Tj
0 -15 Td
(Surface : 75 m2) Tj
0 -15 Td
(Prix : 250 000 euros) Tj
0 -20 Td
(Fait a Paris, le 15 janvier 2024) Tj
ET
endstream
endobj
5 0 obj
<<
/Type /Font
/Subtype /Type1
/BaseFont /Helvetica
>>
endobj
xref
0 6
0000000000 65535 f
0000000009 00000 n
0000000058 00000 n
0000000115 00000 n
0000000304 00000 n
0000000554 00000 n
trailer
<<
/Size 6
/Root 1 0 R
>>
startxref
650
%%EOF

View File

@ -0,0 +1,84 @@
%PDF-1.4
1 0 obj
<<
/Type /Catalog
/Pages 2 0 R
>>
endobj
2 0 obj
<<
/Type /Pages
/Kids [3 0 R]
/Count 1
>>
endobj
3 0 obj
<<
/Type /Page
/Parent 2 0 R
/MediaBox [0 0 612 792]
/Contents 4 0 R
/Resources <<
/Font <<
/F1 5 0 R
>>
>>
>>
endobj
4 0 obj
<<
/Length 200
>>
stream
BT
/F1 12 Tf
72 720 Td
(ACTE DE VENTE IMMOBILIERE) Tj
0 -20 Td
/F1 10 Tf
(Entre les soussignes :) Tj
0 -15 Td
(- Vendeur : Jean Dupont, ne le 15/05/1980) Tj
0 -15 Td
(- Acheteur : Marie Martin, nee le 22/03/1985) Tj
0 -20 Td
(Objet : Vente d'un appartement) Tj
0 -15 Td
(Adresse : 123 Rue de la Paix, 75001 Paris) Tj
0 -15 Td
(Surface : 75 m2) Tj
0 -15 Td
(Prix : 250 000 euros) Tj
0 -20 Td
(Fait a Paris, le 15 janvier 2024) Tj
ET
endstream
endobj
5 0 obj
<<
/Type /Font
/Subtype /Type1
/BaseFont /Helvetica
>>
endobj
xref
0 6
0000000000 65535 f
0000000009 00000 n
0000000058 00000 n
0000000115 00000 n
0000000304 00000 n
0000000554 00000 n
trailer
<<
/Size 6
/Root 1 0 R
>>
startxref
650
%%EOF

View File

@ -0,0 +1,84 @@
%PDF-1.4
1 0 obj
<<
/Type /Catalog
/Pages 2 0 R
>>
endobj
2 0 obj
<<
/Type /Pages
/Kids [3 0 R]
/Count 1
>>
endobj
3 0 obj
<<
/Type /Page
/Parent 2 0 R
/MediaBox [0 0 612 792]
/Contents 4 0 R
/Resources <<
/Font <<
/F1 5 0 R
>>
>>
>>
endobj
4 0 obj
<<
/Length 200
>>
stream
BT
/F1 12 Tf
72 720 Td
(ACTE DE VENTE IMMOBILIERE) Tj
0 -20 Td
/F1 10 Tf
(Entre les soussignes :) Tj
0 -15 Td
(- Vendeur : Jean Dupont, ne le 15/05/1980) Tj
0 -15 Td
(- Acheteur : Marie Martin, nee le 22/03/1985) Tj
0 -20 Td
(Objet : Vente d'un appartement) Tj
0 -15 Td
(Adresse : 123 Rue de la Paix, 75001 Paris) Tj
0 -15 Td
(Surface : 75 m2) Tj
0 -15 Td
(Prix : 250 000 euros) Tj
0 -20 Td
(Fait a Paris, le 15 janvier 2024) Tj
ET
endstream
endobj
5 0 obj
<<
/Type /Font
/Subtype /Type1
/BaseFont /Helvetica
>>
endobj
xref
0 6
0000000000 65535 f
0000000009 00000 n
0000000058 00000 n
0000000115 00000 n
0000000304 00000 n
0000000554 00000 n
trailer
<<
/Size 6
/Root 1 0 R
>>
startxref
650
%%EOF

View File

@ -0,0 +1,84 @@
%PDF-1.4
1 0 obj
<<
/Type /Catalog
/Pages 2 0 R
>>
endobj
2 0 obj
<<
/Type /Pages
/Kids [3 0 R]
/Count 1
>>
endobj
3 0 obj
<<
/Type /Page
/Parent 2 0 R
/MediaBox [0 0 612 792]
/Contents 4 0 R
/Resources <<
/Font <<
/F1 5 0 R
>>
>>
>>
endobj
4 0 obj
<<
/Length 200
>>
stream
BT
/F1 12 Tf
72 720 Td
(ACTE DE VENTE IMMOBILIERE) Tj
0 -20 Td
/F1 10 Tf
(Entre les soussignes :) Tj
0 -15 Td
(- Vendeur : Jean Dupont, ne le 15/05/1980) Tj
0 -15 Td
(- Acheteur : Marie Martin, nee le 22/03/1985) Tj
0 -20 Td
(Objet : Vente d'un appartement) Tj
0 -15 Td
(Adresse : 123 Rue de la Paix, 75001 Paris) Tj
0 -15 Td
(Surface : 75 m2) Tj
0 -15 Td
(Prix : 250 000 euros) Tj
0 -20 Td
(Fait a Paris, le 15 janvier 2024) Tj
ET
endstream
endobj
5 0 obj
<<
/Type /Font
/Subtype /Type1
/BaseFont /Helvetica
>>
endobj
xref
0 6
0000000000 65535 f
0000000009 00000 n
0000000058 00000 n
0000000115 00000 n
0000000304 00000 n
0000000554 00000 n
trailer
<<
/Size 6
/Root 1 0 R
>>
startxref
650
%%EOF

View File

@ -0,0 +1,84 @@
%PDF-1.4
1 0 obj
<<
/Type /Catalog
/Pages 2 0 R
>>
endobj
2 0 obj
<<
/Type /Pages
/Kids [3 0 R]
/Count 1
>>
endobj
3 0 obj
<<
/Type /Page
/Parent 2 0 R
/MediaBox [0 0 612 792]
/Contents 4 0 R
/Resources <<
/Font <<
/F1 5 0 R
>>
>>
>>
endobj
4 0 obj
<<
/Length 200
>>
stream
BT
/F1 12 Tf
72 720 Td
(ACTE DE VENTE IMMOBILIERE) Tj
0 -20 Td
/F1 10 Tf
(Entre les soussignes :) Tj
0 -15 Td
(- Vendeur : Jean Dupont, ne le 15/05/1980) Tj
0 -15 Td
(- Acheteur : Marie Martin, nee le 22/03/1985) Tj
0 -20 Td
(Objet : Vente d'un appartement) Tj
0 -15 Td
(Adresse : 123 Rue de la Paix, 75001 Paris) Tj
0 -15 Td
(Surface : 75 m2) Tj
0 -15 Td
(Prix : 250 000 euros) Tj
0 -20 Td
(Fait a Paris, le 15 janvier 2024) Tj
ET
endstream
endobj
5 0 obj
<<
/Type /Font
/Subtype /Type1
/BaseFont /Helvetica
>>
endobj
xref
0 6
0000000000 65535 f
0000000009 00000 n
0000000058 00000 n
0000000115 00000 n
0000000304 00000 n
0000000554 00000 n
trailer
<<
/Size 6
/Root 1 0 R
>>
startxref
650
%%EOF

View File

@ -0,0 +1,84 @@
%PDF-1.4
1 0 obj
<<
/Type /Catalog
/Pages 2 0 R
>>
endobj
2 0 obj
<<
/Type /Pages
/Kids [3 0 R]
/Count 1
>>
endobj
3 0 obj
<<
/Type /Page
/Parent 2 0 R
/MediaBox [0 0 612 792]
/Contents 4 0 R
/Resources <<
/Font <<
/F1 5 0 R
>>
>>
>>
endobj
4 0 obj
<<
/Length 200
>>
stream
BT
/F1 12 Tf
72 720 Td
(ACTE DE VENTE IMMOBILIERE) Tj
0 -20 Td
/F1 10 Tf
(Entre les soussignes :) Tj
0 -15 Td
(- Vendeur : Jean Dupont, ne le 15/05/1980) Tj
0 -15 Td
(- Acheteur : Marie Martin, nee le 22/03/1985) Tj
0 -20 Td
(Objet : Vente d'un appartement) Tj
0 -15 Td
(Adresse : 123 Rue de la Paix, 75001 Paris) Tj
0 -15 Td
(Surface : 75 m2) Tj
0 -15 Td
(Prix : 250 000 euros) Tj
0 -20 Td
(Fait a Paris, le 15 janvier 2024) Tj
ET
endstream
endobj
5 0 obj
<<
/Type /Font
/Subtype /Type1
/BaseFont /Helvetica
>>
endobj
xref
0 6
0000000000 65535 f
0000000009 00000 n
0000000058 00000 n
0000000115 00000 n
0000000304 00000 n
0000000554 00000 n
trailer
<<
/Size 6
/Root 1 0 R
>>
startxref
650
%%EOF

View File

Before

Width:  |  Height:  |  Size: 958 KiB

After

Width:  |  Height:  |  Size: 958 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

View File

Before

Width:  |  Height:  |  Size: 958 KiB

After

Width:  |  Height:  |  Size: 958 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

View File

Before

Width:  |  Height:  |  Size: 1.0 MiB

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

View File

Before

Width:  |  Height:  |  Size: 958 KiB

After

Width:  |  Height:  |  Size: 958 KiB

View File

Before

Width:  |  Height:  |  Size: 1.0 MiB

After

Width:  |  Height:  |  Size: 1.0 MiB

View File

Before

Width:  |  Height:  |  Size: 958 KiB

After

Width:  |  Height:  |  Size: 958 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 384 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 191 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 560 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 191 KiB

View File

@ -7,6 +7,7 @@ export default defineConfig({
server: { server: {
host: '0.0.0.0', host: '0.0.0.0',
port: 5174, port: 5174,
strictPort: true, // Force le port 5174, échoue si occupé
hmr: { hmr: {
port: 5174, port: 5174,
}, },