OcrPostProcessingTest.kt 80 lignes · 2707 octets
package fr.ebii.card2vcf.ocr

import kotlin.test.Test
import kotlin.test.assertEquals
import kotlin.test.assertTrue

class OcrPostProcessingTest {
    @Test fun extraitEmailEtTelephone() {
        val text = """
            Jean Dupont
            Directeur
            06 12 34 56 78
            jean.dupont@acme.fr
            https://acme.fr
        """.trimIndent()
        val r = OcrPostProcessor.process(text)
        assertTrue(r.emails.contains("jean.dupont@acme.fr"))
        assertTrue(r.phones.any { it.contains("0612345678") })
        assertTrue(r.urls.contains("https://acme.fr"))
    }

    @Test fun multiEmails() {
        val r = OcrPostProcessor.process("a@b.fr et c@d.fr")
        assertEquals(2, r.emails.size)
    }

    @Test fun lignesNettoyees() {
        val r = OcrPostProcessor.process("  ligne1  \n\n  ligne2  ")
        assertEquals(listOf("ligne1", "ligne2"), r.lines)
    }

    @Test fun neFusionnePasTelephoneEtCodePostalSurLignesVoisines() {
        val text = """
            Jean Dupont
            Tél. 04 75 35 12 34
            07200 Aubenas
        """.trimIndent()
        val r = OcrPostProcessor.process(text)
        assertEquals(listOf("0475351234"), r.phones)
    }

    @Test fun neFusionnePasNumeroDeRueEtTelephone() {
        val text = """
            245
            04 75 35 12 34
        """.trimIndent()
        val r = OcrPostProcessor.process(text)
        assertEquals(listOf("0475351234"), r.phones)
    }

    @Test fun ignoreCodePostalSeul() {
        val r = OcrPostProcessor.process("07200 Aubenas")
        assertEquals(emptyList(), r.phones)
    }

    @Test fun rejetteLongueursImplausiblesSansIndicatif() {
        // 9 chiffres, 11 chiffres, ou 10 chiffres sans 0 initial : pas des numéros FR
        val r = OcrPostProcessor.process("123 45 67 89\n0 12 34 56 78 90\n61 23 45 67 89")
        assertEquals(emptyList(), r.phones)
    }

    @Test fun extraitCarteDimoCommeSurAppareil() {
        val text = """
            dimo
            SOFTWARE
            Jean Pau! GENOUX
            Directeur Général/CEO
            jpgenoux@dimosoftware.com
            Mobile : +33 (0)6 74 64 05 44 / Tél. : +33 (0)4 72 86 O1 92
            Siège Social
            561, alée des Noisetiers - 69 760 Limonest - France
            www.dimosoftware.fr
        """.trimIndent()
        val r = OcrPostProcessor.process(text)
        assertEquals(listOf("jpgenoux@dimosoftware.com"), r.emails)
        assertTrue(r.phones.any { it == "+33674640544" || it.endsWith("674640544") })
        assertTrue(r.phones.any { it.contains("472860192") || it.endsWith("472860192") })
        assertTrue(r.urls.any { it.contains("dimosoftware.fr") })
    }
}