- Alignement backend: seules 4 entités retournées (persons, companies, addresses, contractual) - Version API mise à jour à 1.0.1 dans /api/health - Interface onglets d entités: Personnes, Adresses, Entreprises, Contractuel - Correction erreurs TypeScript pour build stricte - Tests et documentation mis à jour - CHANGELOG.md mis à jour avec version 1.1.1
84 lines
3.0 KiB
JavaScript
84 lines
3.0 KiB
JavaScript
/**
|
|
* Tests OCR et extraction de texte
|
|
*/
|
|
|
|
const { describe, it, expect, beforeEach } = require('vitest')
|
|
const { extractTextFromImageEnhanced } = require('../backend/enhancedOcr')
|
|
const { extractEntitiesFromText } = require('../backend/server')
|
|
|
|
describe('OCR et extraction de texte', () => {
|
|
describe('Extraction de texte améliorée', () => {
|
|
it('devrait extraire du texte d\'une image', async () => {
|
|
// Test avec une image de test (à créer)
|
|
const testImagePath = 'tests/fixtures/test-image.jpg'
|
|
|
|
try {
|
|
const result = await extractTextFromImageEnhanced(testImagePath)
|
|
|
|
expect(result).toHaveProperty('text')
|
|
expect(result).toHaveProperty('confidence')
|
|
expect(result).toHaveProperty('method')
|
|
|
|
expect(typeof result.text).toBe('string')
|
|
expect(typeof result.confidence).toBe('number')
|
|
expect(result.confidence).toBeGreaterThanOrEqual(0)
|
|
expect(result.confidence).toBeLessThanOrEqual(100)
|
|
} catch (error) {
|
|
// Si l'image de test n'existe pas, on skip le test
|
|
console.warn('Image de test non trouvée, test ignoré')
|
|
}
|
|
})
|
|
|
|
it('devrait gérer les erreurs d\'OCR', async () => {
|
|
const result = await extractTextFromImageEnhanced('fichier-inexistant.jpg')
|
|
|
|
expect(result).toHaveProperty('text', '')
|
|
expect(result).toHaveProperty('confidence', 0)
|
|
})
|
|
})
|
|
|
|
describe('Extraction d\'entités', () => {
|
|
it('devrait extraire des personnes d\'un texte', () => {
|
|
const text = 'Monsieur Jean DUPONT habite à Paris. Madame Marie MARTIN est directrice.'
|
|
|
|
const entities = extractEntitiesFromText(text)
|
|
|
|
expect(entities).toHaveProperty('persons')
|
|
expect(Array.isArray(entities.persons)).toBe(true)
|
|
expect(entities.persons.length).toBeGreaterThan(0)
|
|
|
|
const firstPerson = entities.persons[0]
|
|
expect(firstPerson).toHaveProperty('firstName')
|
|
expect(firstPerson).toHaveProperty('lastName')
|
|
})
|
|
|
|
it('devrait extraire des adresses d\'un texte', () => {
|
|
const text = 'Adresse: 1 rue de la Paix, 75001 Paris, France'
|
|
|
|
const entities = extractEntitiesFromText(text)
|
|
|
|
expect(entities).toHaveProperty('addresses')
|
|
expect(Array.isArray(entities.addresses)).toBe(true)
|
|
expect(entities.addresses.length).toBeGreaterThan(0)
|
|
|
|
const firstAddress = entities.addresses[0]
|
|
expect(firstAddress).toHaveProperty('street')
|
|
expect(firstAddress).toHaveProperty('city')
|
|
expect(firstAddress).toHaveProperty('postalCode')
|
|
})
|
|
|
|
it('devrait extraire des entreprises d\'un texte', () => {
|
|
const text = 'La société MICROSOFT FRANCE est située à Paris.'
|
|
|
|
const entities = extractEntitiesFromText(text)
|
|
|
|
expect(entities).toHaveProperty('companies')
|
|
expect(Array.isArray(entities.companies)).toBe(true)
|
|
expect(entities.companies.length).toBeGreaterThan(0)
|
|
|
|
const firstCompany = entities.companies[0]
|
|
expect(firstCompany).toHaveProperty('name')
|
|
})
|
|
})
|
|
})
|