16/07/2020
query_builder6 min de lecture
IA Factory

Automatiser la vérification des paraphes et signatures d’un contrat

De nombreux contrats sont rédigés et signés au quotidien, que ce soit par une ESN comme Aubay ou par les diverses entreprises que sont nos clients, notamment les banques et assurances. Afin qu’un contrat soit juridiquement valide, il est nécessaire pour chaque mandataire d’apposer un paraphe sur chaque page du contrat ainsi que sa signature sur au moins une page du contrat.

Aujourd’hui, ces contrats sont vérifiés manuellement lors de la signature, et un paraphe peut vite être oublié sur un long document. Cette erreur anodine peut invalider un contrat et causer de nombreux problèmes pour l’entreprise l’ayant rédigé.

C’est pourquoi nous avons travaillé sur un projet permettant la détection des paraphes et signatures sur chaque page du contrat, ainsi que la vérification de la validité de ce contrat. Cet outil repose sur des méthodes de traitement d’images et d’intelligence artificielle. La détection des clauses manuscrites est en cours d’implémentation, elle permettra d’obtenir un outil encore plus performant.

Récupération et traitement des données


La récupération d’un contrat peut se faire sous plusieurs formats (pdf, image) et la qualité du contrat n’est pas toujours optimale. En effet, le document n’est pas toujours scanné droit et des éléments parasites peuvent apparaître lors du scan. La première étape du traitement consiste donc à convertir les contrats en images que l’on va redresser puis à supprimer au mieux les éléments parasites.

 

Exemple de nettoyage d’un contrat, les éléments parasites en haut de l’image sont supprimés et le contrat est redressé.

Pour cela nous utilisons la bibliothèque openCV en python, le redressement se fait par rapport aux lignes horizontales (texte et parfois lignes de tableaux) et le nettoyage est obtenu à l’aide d’opérations morphologiques (érosion, dilatation).

Une fois le contrat nettoyé, sa vérification s’effectue en deux étapes. Dans un premier temps, il faut localiser l’ensemble des paraphes et signatures du contrat puis il faut vérifier que ces éléments sont valides.

Localiser les paraphes et signatures


Pour pouvoir vérifier la validité des paraphes et signatures sur le contrat, il faut d’abord pouvoir trouver ces objets sur l’image. Le terme objet est utilisé car pour localiser les paraphes et signatures le projet utilise un réseau de neurones dit de « détection d’objet ». Ce type de réseau sert à localiser toutes les apparitions d’éléments qu’il s’est entraîné à reconnaître sur une image. C’est le même type de réseau qui est utilisé pour les voitures autonomes : le réseau détecte alors les voitures et les piétons depuis l’image de la caméra de la voiture. Dans notre cas, nous détectons les paraphes et les signatures depuis l’image du contrat.


Schéma expliquant le fonctionnement global du réseau


Pour qu’un tel réseau fonctionne, il faut l’entraîner avec une base de données conséquente et correspondant à la réalité de ce que l’on souhaite détecter. Il nous a été fourni plusieurs contrats pour entraîner le réseau, mais leurs nombres étaient insuffisants. À l’aide d’un procédé nommé DataAugmentation et des contrats que nous possédions nous avons alors pu créer des milliers de nouveaux contrats, avec paraphe et signature. C’est avec ce lot de contrat que nous avons entraîné le réseau. Cependant, ce procédé tend à diminuer l’efficacité du réseau. Nos résultats sont bons, notre réseau est capable de détecter les paraphes et les signatures, mais il aurait été encore meilleur avec une plus grande diversité de contrats.


Figure 1: Le score 0.84 est la certitude du modèle en sa prédiction, 1 est une prédiction certaine


Nous avons choisi un modèle pré-entraîné pour la détection d’objet nommé RetinaNet pour créer notre réseau. Choisir un modèle pré-entraîné permet d’avoir les premières couches du modèle fixées. Celles-ci ne servent pas à détecter l’objet, mais uniquement à extraire des features d’une image. Le travail de Transfer Learning a ensuite été effectué pour pouvoir détecter les paraphes et signatures.

Le modèle est entraîné sous le Framework Detectron2. Créé par le FAIR ( Facebook AI Research), ce Framework est l’un des plus évolué permettant des temps d’entraînement raccourci et des résultats probants.




Vérification de la validité du contrat


Deux méthodes sont possibles pour vérifier la validité des paraphes et signatures trouvées :

  • La première suppose que le nombre de mandataires est connu et permet un traitement rapide.

  • La seconde n’émet aucune hypothèse, mais est plus coûteuse en temps


Les deux méthodes sont implémentées dans le projet.

Dans la première méthode, le nombre de mandataires est connu, s’il est par exemple de deux, il est possible de vérifier de manière algorithmique la présence de deux paraphes par page. De même pour les signatures où il faudra vérifier que les deux signatures sont présentes pour les pages concernées.

En revanche, la seconde méthode est plus complexe. Il faut s’assurer que le même nombre de paraphes est présent à chaque page et que ceux-ci correspondent.

Les différents paraphes de chaque page sont alors comparés afin de rassembler chaque groupement de paraphes. On appelle ces groupements une classe. Chaque classe correspond à un mandataire.

Afin de savoir si des paraphes appartiennent à la même classe (paraphes effectués par la même personne), nous calculons 6 différentes features pour chaque image. Les features sont des vecteurs contenant des informations sur l’image.

Chaque feature est obtenue par un processus algorithmique sur l’image que nous avons mis en place. Tous les vecteurs sont concaténés un en seul. Ainsi, chaque image possède un vecteur contenant les informations issues des 6 features. Pour comparer deux paraphes, nous comparons les distances (norme euclidienne) entre les vecteurs features des images correspondantes.

Les features calculées pour chaque paraphe sont : le profil radial, l’histogramme, le zonage, le profil, les points clé et la direction.



Dans un contrat de cinq pages à deux mandataires, les paraphes sont regroupés en 2 classes de 5 éléments chacune (Ici le contrat est invalide, il manque des paraphes aux pages 2 et 5).

Pour les pages où des signatures sont détectées, nous vérifions qu’il y a autant de signatures que de classes dans le contrat.

NB : Puisque nous ne possédons en général pas un exemple de la signature d’un mandataire, il n’est pas possible dans ce projet de vérifier que la signature est valide. Il est toutefois possible de vérifier la validité d’une signature en la comparant à une originale à l’aide d’un modèle siamois.

Performances


La performance de l’outil en terme de temps dépend de la méthode utilisée ainsi que du matériel.

Le graphique suivant donne le temps de traitement d’un contrat en fonction de son nombre de pages et du matériel utilisé. On remarque qu’une utilisation sans carte graphique est peu envisageable, cependant un GPU peu puissant permet de gagner un temps considérable. L’utilisation d’une carte RTX4000 permet la vérification d’un contrat de 22 pages en moins de 5 secondes.



La performance en terme de qualité pour le modèle de détection s’effectue à l’aide d’une métrique nommée mAP (mean average precision). Cette métrique permet d’obtenir un score entre 0 et 1 où 1 est un modèle parfait.

Notre modèle obtient un mAP de 98.6% (0.986) ce qui est un bon résultat, car il est proche de 100%. Cependant afin d’obtenir des résultats plus réalistes nous aurions besoin de tester le modèle sur une plus grande base de données (issue de contrats réels).

Evolutions futures


Ce projet est à l’état de POC et il est possible d’envisager plusieurs améliorations pour une mise en production.

La première serait de faire le lien avec l’équipe RPA d’Aubay afin d’automatiser la collecte des contrats et de renvoyer un mail aux mandataires en cas d’oubli sur l’un des contrats.

Une seconde amélioration serait la vérification des clauses manuscrites (« lu et approuvé », « bon pour accord » …). Cette étape est déjà amorcée : nous avons ré-entraîné Retinanet pour localiser les mentions « Lu et approuvé ». Il faudrait, pour détecter tout type de mentions, une base de données suffisamment fournies en exemple de mentions manuscrites.

Conclusion


Le projet permet donc de vérifier la validité de paraphes et des signatures sur un contrat. Plusieurs méthodes permettent d’arriver au résultat en fonction des hypothèses émises sur les contrats. Il serait encore possible de rendre ce projet plus performant notamment en utilisant un plus grand nombre de contrats pour l’entraînement.


Figure 2: interface de présentation du projet permettant une utilisation facile et rapide

Vous avez aimé ?
Partagez avec votre réseau
favorite0
favorite0