Sélectionner une page

Extraction de données de tickets de caisse / reçus avec prétraitement d’image en Python

Prétraitement d’image

Prenons une photo d’un reçu, pourquoi pas de mes courses, et faisons-le mal :

  • Le reçu n’est pas centré, pire encore, il est dans la mauvaise orientation
  • Avoir un autre élément dans l’image qui n’a rien à voir le ticket

La seule nécessité est que le texte sur le reçu soit lisible (en zoomant). Pas de magie ici, peut-être un autre jour.. Voici la photo prise avec mon téléphone (ancien Android) :

Photo de ticket

Cette image, nous devons la nettoyer, la transformer pour qu’elle soit utilisable en supprimant tout « bruit ». Pour cela, nous allons d’abord « détecter » les éléments dont nous avons besoin. Suivons une logique simple et facile : nous cherchons le plus grand élément ressemblant à une forme rectangulaire et nous supposons qu’il s’agit de notre reçu. Pour ce cas d’application, j’ai utilisé Python pour faire toute la préparation de l’image. La détection des formes donne ce résultat :

Ticket surligné

Il faut à présent effectuer une transformation géométrique en changeant la perspective de l’image : l’image ne doit contenir que le reçu et être dans la bonne orientation. Cela peut être fait avec une autre hypothèse simple : la plus grande longueur doit être verticale. Nous ne voulons pas que notre robot lise en diagonale, cela ne fera aucun sens. Mais un peu de distorsion est acceptable. Et pour finir, nous appliquons un filtre pour faire ressortir le texte plus clairement (effet de scanner). L’image finale prête pour l’extraction de données ressemble à ceci :

Ticket préparé

Extraction de données de tickets par un robot UiPath

Après ce prétraitement, notre reçu est prêt à être traité par le module de UiPath Document Understanding pour extraire les données souhaitées comme la « date » et le « montant total ». Si nécessaire, nous pouvons également extraire le tableau des articles et leur prix, mais ceci-ci nécessitera plus souvent une intervention humaine car la qualité d’impression n’est pas toujours parfaite. Cela peut être fait avec la station de validation UiPath décrite dans cet article. Un exemple d’extraction peut être vu ici :

Validation d'extraction des tickets

Comme on peut le voir, la date et le montant total sont correctement extraits. Mais pour le tableau, la qualité d’impression n’est pas excellente et demande certaines validations manuelles. Cette technique peut s’appliquer à d’autres documents pris en photo et dans tous ces cas d’utilisation, le gain en temps et en qualité est énorme.

Comment disposer de son propre extracteur de données de reçu?

Vous aurez besoin des connaissances et des éléments suivants :

  • Expérience Python en transformation d’images
  • Expertise UiPath avec les solutions:
    • Document Understanding et extraction de données
    • Long running process
    • Action Center

Vous pouvez également faire appel à un consultant suisse chevronné en RPA qui le fera rapidement pour vous!