Tech Talk : Une approche complète pour automatiser l'extraction d'informations de documents

Tech Talk : Une approche complète pour automatiser l'extraction d'informations de documents

Nous décrivons l'approche adoptée dans ce projet pour la classification des documents et l'extraction d'informations. Découvrez comment nous avons mis en œuvre un processus automatisé pour classifier les documents dans un écosystème opérationnel bien développé.

Nous décrivons l'approche adoptée dans ce projet pour la classification des documents et l'extraction d'informations. Découvrez comment nous avons mis en œuvre un processus automatisé pour classifier les documents dans un écosystème opérationnel bien développé.

Nous décrivons l'approche adoptée dans ce projet pour la classification des documents et l'extraction d'informations. Découvrez comment nous avons mis en œuvre un processus automatisé pour classifier les documents dans un écosystème opérationnel bien développé.

De plus en plus, les organisations appliquent l'apprentissage automatique et les algorithmes associés au traitement automatisé des documents, un domaine également connu sous le nom de Reconnaissance Optique de Caractères (OCR).

Si vous devez gérer de grandes quantités de fichiers visuels ou textuels, vous pouvez économiser beaucoup de temps et d'argent en utilisant l'apprentissage automatique et l'automatisation disponibles dans les bons outils au lieu de traiter les fichiers manuellement.

Cet article couvre l'approche adoptée dans l'un de nos projets pour le défi de la classification des documents et de l'extraction d'informations. Dans le cadre de ce projet, notre client voulait insérer un processus automatisé pour classer les documents dans leur écosystème opérationnel déjà bien développé. L'objectif était de recevoir des scans PDF remplis manuellement par les clients, de récupérer toutes les informations nécessaires et de les envoyer au client.

La solution pour l'extraction d'informations de document

Nous avons créé une chaîne de traitement composée d'une série de vérifications et d'étapes de traitement. Chaque PDF traversait cette chaîne pour être entièrement traité.

Tout d'abord, nous avons reconnu le modèle actuel parmi un ensemble de modèles possibles. Le modèle est reconnu par sa première page, contenant un en-tête et généralement d'autres caractéristiques spéciales. Ces caractéristiques rendent la différenciation plus facile dans OpenCV. Nous utilisons la fonction cv2.matchTemplate pour obtenir un score de corrélation entre la première page du document actuel et toutes les premières pages de la base de données de modèles. Si le meilleur candidat a un score de corrélation supérieur à un seuil minimum, le modèle est considéré comme reconnu.

Nous avons hébergé la base de données de modèles et leurs fichiers de configuration sur un bucket S3 sur AWS, interrogé depuis une image Docker contenant la chaîne de traitement.

Ensuite, chaque page du document actuel que nous devions traiter devait être liée à sa page correspondante du modèle de référence identifié. L'utilisation de cette étape est de s'assurer que les algorithmes savent sur quelle page ils travaillent. Ceci est crucial pour déterminer quelle information correspond à quelle question sur le document. La chaîne compare la première page d'un document de référence à la première page d'un autre en traitement, et ainsi de suite. S'il manque des pages ou si les scans sont désordonnés, la chaîne envoie le document pour un examen manuel. La comparaison page par page utilise le même principe que la reconnaissance de modèles, avec un usage intensif de notre chère cv2.matchTemplate.

Une fois que nous identifions les pages, les cases d'information de chaque page sont alors automatiquement détectées. La détection est réalisée principalement en utilisant les fonctions cv2.morphologyEx et cv2.connectedComponentsWithStats de OpenCV. cv2.morphologyEx applique un filtre de bord horizontal et vertical sur les pages. Et, cv2.connectedComponentsWithStats trouve les boîtes fermées créées par les bords verticaux et horizontaux et renvoie leurs positions.

Ensuite, un filtrage supplémentaire est appliqué pour conserver les boîtes répondant à des contraintes particulières de position et de dimension. A partir des positions finales, la chaîne de traitement découpe les cases d'information de l'image de la page principale. Les boîtes, dans notre cas, contiennent les réponses aux questions du document. La chaîne spécifie les contraintes dans le fichier de configuration du modèle.

Si les fonctions de la chaîne de traitement n'ont pas détecté toutes les cases d'information sur une page, alors l'étape est considérée comme échouée et la chaîne envoie le document pour un examen manuel.

Cette chaîne envoie des images découpées à un Réseau de Neurones Convolutifs (CNN). Le réseau de neurones déjà formé décide de chaque case à cocher et l'associe à un niveau de confiance. Le niveau de confiance est la probabilité associée à l'étiquette du contenu de la case. Si elle est en dessous d'une certaine probabilité seuil, cela signifie que le modèle n'est pas sûr du contenu et la chaîne envoie le document pour un examen manuel.

Si toutes les étapes précédentes ont réussi, la chaîne envoie les réponses au client dans un format JSON.

Les défis durant l'extraction d'informations de document

Nous avons rencontré quelques défis durant le développement; la variété des modèles, la variété du comportement humain et les exigences strictes de fiabilité.

Variété des modèles

Tout d'abord, pour l'entreprise, il y a environ dix modèles différents actuellement en usage. Pour avoir une bonne couverture, la chaîne devait être capable de reconnaître quelques-uns d'entre eux. Nous avons opté pour les deux plus courants qui représentent 90% de tous les documents. De plus, pour chaque modèle, nous avions besoin d'un fichier de configuration pour que l'algorithme puisse lier les cases détectées à leurs spécifications de questions.

La solution: Parce que cette configuration peut être complexe pour un utilisateur non initié, nous avons créé un générateur de modèles pour ajouter un nouveau modèle en quelques clics.

Variété de comportement humain

Un autre défi était de comprendre la variété du comportement humain lors du remplissage des documents et d'y faire face. Nous avons dû trouver le compromis entre maximiser la couverture de l'automatisation et minimiser la complexité du processus. Une complexité qui augmente avec le nombre de cas particuliers que vous voulez couvrir.

En outre, en particulier pour la classification des cases avec le Réseau de Neurones, il est impossible de garantir 0% d'erreur dans le cadre actuel. Comme les documents n'ont pas été initialement créés pour être traités automatiquement, il peut y avoir des ambiguïtés dans les réponses écrites des clients.

La solution: Il n'y a pas de réponse parfaite pour trouver un bon compromis. Selon le client, vous pourriez passer plus de temps à développer une infrastructure très complexe pour traiter presque 100% des documents, maximisant ainsi la couverture. Mais le coût de création d'une telle infrastructure ne vaudrait pas le gain. En général, un client voudra optimiser son Retour sur Investissement (ROI), en gardant à l'esprit que les documents papier deviennent plus rares avec l'ère tout numérique.

Concernant le remplissage des cases, le seul moyen d'y faire face est d'installer un cadre propre où nous expliquons la méthode de remplissage aux clients. Ce cadre devrait apparaître sur les futurs modèles.

Exigence stricte de fiabilité pour l'extraction d'informations de document

Enfin, nous devions répondre à une exigence stricte de fiabilité, idéalement 0% d'erreur. En termes d'apprentissage automatique, nous devions assurer 100% de précision, ce qui est la conséquence de l'épuisement du rappel, c'est-à-dire la couverture.

Une fiabilité élevée est nécessaire pour que nos clients aient une confiance totale dans l'automatisation et l'intègrent dans leurs opérations. Cependant, cela a pour conséquence de diminuer le nombre de documents que nous pouvons automatiser.

La solution: Pour une architecture donnée, la manière typique de trouver la meilleure chaîne avec cette précision de 100% tout en maximisant la couverture est d'effectuer une optimisation des hyperparamètres. En utilisant le jeu de données des documents précédents, on peut ajuster les paramètres à chaque étape tout en remplissant les deux conditions. Les paramètres ici sont principalement les seuils de corrélation pour la reconnaissance des modèles et des pages et le seuil de confiance du réseau de neurones. Si nous choisissons un seuil très strict, nous assurerons une précision de 100%, mais la couverture sera réduite. Si nous le choisissons trop librement, des erreurs surgiront et la précision de 100% sera perdue. Nous avons développé deux versions.

Les outils pour l'extraction d'informations de document

Nous avons utilisé une série d'outils pour implémenter une telle chaîne de traitement et la mettre en production complète, à savoir OpenCV, PyTorch, Docker et AWS.

OpenCV

Nous avons fait un usage intensif de la bibliothèque OpenCV à différentes étapes du processus. OpenCV est une bibliothèque open-source connue pour la vision par ordinateur classique. Nous l'avons utilisée pour la reconnaissance des modèles, la vérification de l'ordre des pages et la détection automatique des cases d'information.

PyTorch

Nous avons développé le modèle de réseau de neurones avec PyTorch. C'est un Réseau de Neurones Convolutifs (CNN), parfait pour la classification d'images. L'apprentissage par transfert a été appliqué en partant de l'architecture pré-entraînée ResNet50 avant de la former sur les images du client. Le CNN donne la classe et un score de probabilité sur sa confiance quant à son choix. Ce score est utile pour s'assurer qu'il n'y a pas de mauvaises classifications.

Docker

Nous avons déployé notre chaîne de traitement dans un conteneur en utilisant Docker. L'avantage réel est de ne plus se soucier des problèmes de compatibilité lors du déploiement sur de nouveaux serveurs. Le processus s'exécute dans le conteneur « boîte noire » et fonctionne sur toute machine ayant Docker installé.

Amazon Web Services (AWS) et le Kit de Développement Cloud

Notre client avait déjà plusieurs services dans une pile déployée sur AWS. Nous nous sommes assurés d'adapter ce projet au reste de leur écosystème. En pratique, cela signifie que les opérations se déroulent quotidiennement sur les serveurs d'Amazon, loués par notre client.

L'intérêt d'utiliser le Kit de Développement Cloud est que toute l'infrastructure peut être spécifiée en tant que code et déployée en ligne de commande. Les principaux composants utilisés sont les Buckets, les fonctions Lambda et le Service de Conteneurs Élastiques et le Batch. Tout cela permet de déployer des conteneurs Docker et de s'adapter de manière flexible au nombre de documents à traiter en allouant plus ou moins de serveurs.

AWS offre également un outil pour effectuer l'étiquetage d'images humain efficacement sur de grands ensembles de données. Il a été instrumental pour former le Réseau de Neurones sur les données du client. L'outil distribue l'étiquetage à différentes personnes qui assigneront la bonne étiquette à l'image.

Conclusion

Dans la version finale de notre solution, le client a pu automatiser 47% de tous les documents entrant dans la chaîne après l'extraction des informations du document. On peut dire en toute sécurité que cela a permis au client d'économiser un temps et des dépenses considérables.

Estimation des gains pour l'extraction d'informations de document

Notre client reçoit en moyenne 100 documents chaque jour. Chaque document prend 75 secondes pour être traité manuellement. Le client estime que cela coûte environ 26.000 € par an. Compte tenu des tarifs des serveurs Amazon, notre installation devrait coûter moins de 100 € par an, ce qui est négligeable. Parce que nous automatisons environ 50% des documents, le montant épargné par an est d'environ 13.000 €.

L'autre impact est que grâce à la modularité de l'architecture, elle pourrait, à moindre coût, être étendue à différents types de documents client, où il y a extraction d'information.

Limitations et améliorations possibles

La chaîne fonctionnera si le document provient d'un modèle approprié, avec des pages dans le bon ordre, et le document contient des informations correctement remplies dans les cases dédiées.

Un autre risque possible dans de tels processus d'apprentissage automatique est l'évolution des données. Cela s'appelle un déplacement du jeu de données. Si les types de modèles changent, si la qualité des scans PDF se détériore, la couverture pourrait chuter. Pour faire face à un tel problème, un rapport quotidien des performances doit être mis en place pour mesurer toute différence notable dans les résultats.

Les idées pour améliorer la couverture de l'automatisation seraient de créer de meilleures directives de remplissage dans le document et de ne garder qu'un bon modèle pour le document.

Pour l'architecture actuelle, deux améliorations directes pourraient donner de meilleurs résultats : améliorer la détection automatique des cases (seulement 75% et pourrait s'approcher de 100%) et un réordonnancement automatique des pages d'un document désordonné.

Enfin, pour garantir un ROI significatif, l'idéal serait d'étendre l'architecture à tous les documents encore traités manuellement contenant des cases à cocher.

De plus en plus, les organisations appliquent l'apprentissage automatique et les algorithmes associés au traitement automatisé des documents, un domaine également connu sous le nom de Reconnaissance Optique de Caractères (OCR).

Si vous devez gérer de grandes quantités de fichiers visuels ou textuels, vous pouvez économiser beaucoup de temps et d'argent en utilisant l'apprentissage automatique et l'automatisation disponibles dans les bons outils au lieu de traiter les fichiers manuellement.

Cet article couvre l'approche adoptée dans l'un de nos projets pour le défi de la classification des documents et de l'extraction d'informations. Dans le cadre de ce projet, notre client voulait insérer un processus automatisé pour classer les documents dans leur écosystème opérationnel déjà bien développé. L'objectif était de recevoir des scans PDF remplis manuellement par les clients, de récupérer toutes les informations nécessaires et de les envoyer au client.

La solution pour l'extraction d'informations de document

Nous avons créé une chaîne de traitement composée d'une série de vérifications et d'étapes de traitement. Chaque PDF traversait cette chaîne pour être entièrement traité.

Tout d'abord, nous avons reconnu le modèle actuel parmi un ensemble de modèles possibles. Le modèle est reconnu par sa première page, contenant un en-tête et généralement d'autres caractéristiques spéciales. Ces caractéristiques rendent la différenciation plus facile dans OpenCV. Nous utilisons la fonction cv2.matchTemplate pour obtenir un score de corrélation entre la première page du document actuel et toutes les premières pages de la base de données de modèles. Si le meilleur candidat a un score de corrélation supérieur à un seuil minimum, le modèle est considéré comme reconnu.

Nous avons hébergé la base de données de modèles et leurs fichiers de configuration sur un bucket S3 sur AWS, interrogé depuis une image Docker contenant la chaîne de traitement.

Ensuite, chaque page du document actuel que nous devions traiter devait être liée à sa page correspondante du modèle de référence identifié. L'utilisation de cette étape est de s'assurer que les algorithmes savent sur quelle page ils travaillent. Ceci est crucial pour déterminer quelle information correspond à quelle question sur le document. La chaîne compare la première page d'un document de référence à la première page d'un autre en traitement, et ainsi de suite. S'il manque des pages ou si les scans sont désordonnés, la chaîne envoie le document pour un examen manuel. La comparaison page par page utilise le même principe que la reconnaissance de modèles, avec un usage intensif de notre chère cv2.matchTemplate.

Une fois que nous identifions les pages, les cases d'information de chaque page sont alors automatiquement détectées. La détection est réalisée principalement en utilisant les fonctions cv2.morphologyEx et cv2.connectedComponentsWithStats de OpenCV. cv2.morphologyEx applique un filtre de bord horizontal et vertical sur les pages. Et, cv2.connectedComponentsWithStats trouve les boîtes fermées créées par les bords verticaux et horizontaux et renvoie leurs positions.

Ensuite, un filtrage supplémentaire est appliqué pour conserver les boîtes répondant à des contraintes particulières de position et de dimension. A partir des positions finales, la chaîne de traitement découpe les cases d'information de l'image de la page principale. Les boîtes, dans notre cas, contiennent les réponses aux questions du document. La chaîne spécifie les contraintes dans le fichier de configuration du modèle.

Si les fonctions de la chaîne de traitement n'ont pas détecté toutes les cases d'information sur une page, alors l'étape est considérée comme échouée et la chaîne envoie le document pour un examen manuel.

Cette chaîne envoie des images découpées à un Réseau de Neurones Convolutifs (CNN). Le réseau de neurones déjà formé décide de chaque case à cocher et l'associe à un niveau de confiance. Le niveau de confiance est la probabilité associée à l'étiquette du contenu de la case. Si elle est en dessous d'une certaine probabilité seuil, cela signifie que le modèle n'est pas sûr du contenu et la chaîne envoie le document pour un examen manuel.

Si toutes les étapes précédentes ont réussi, la chaîne envoie les réponses au client dans un format JSON.

Les défis durant l'extraction d'informations de document

Nous avons rencontré quelques défis durant le développement; la variété des modèles, la variété du comportement humain et les exigences strictes de fiabilité.

Variété des modèles

Tout d'abord, pour l'entreprise, il y a environ dix modèles différents actuellement en usage. Pour avoir une bonne couverture, la chaîne devait être capable de reconnaître quelques-uns d'entre eux. Nous avons opté pour les deux plus courants qui représentent 90% de tous les documents. De plus, pour chaque modèle, nous avions besoin d'un fichier de configuration pour que l'algorithme puisse lier les cases détectées à leurs spécifications de questions.

La solution: Parce que cette configuration peut être complexe pour un utilisateur non initié, nous avons créé un générateur de modèles pour ajouter un nouveau modèle en quelques clics.

Variété de comportement humain

Un autre défi était de comprendre la variété du comportement humain lors du remplissage des documents et d'y faire face. Nous avons dû trouver le compromis entre maximiser la couverture de l'automatisation et minimiser la complexité du processus. Une complexité qui augmente avec le nombre de cas particuliers que vous voulez couvrir.

En outre, en particulier pour la classification des cases avec le Réseau de Neurones, il est impossible de garantir 0% d'erreur dans le cadre actuel. Comme les documents n'ont pas été initialement créés pour être traités automatiquement, il peut y avoir des ambiguïtés dans les réponses écrites des clients.

La solution: Il n'y a pas de réponse parfaite pour trouver un bon compromis. Selon le client, vous pourriez passer plus de temps à développer une infrastructure très complexe pour traiter presque 100% des documents, maximisant ainsi la couverture. Mais le coût de création d'une telle infrastructure ne vaudrait pas le gain. En général, un client voudra optimiser son Retour sur Investissement (ROI), en gardant à l'esprit que les documents papier deviennent plus rares avec l'ère tout numérique.

Concernant le remplissage des cases, le seul moyen d'y faire face est d'installer un cadre propre où nous expliquons la méthode de remplissage aux clients. Ce cadre devrait apparaître sur les futurs modèles.

Exigence stricte de fiabilité pour l'extraction d'informations de document

Enfin, nous devions répondre à une exigence stricte de fiabilité, idéalement 0% d'erreur. En termes d'apprentissage automatique, nous devions assurer 100% de précision, ce qui est la conséquence de l'épuisement du rappel, c'est-à-dire la couverture.

Une fiabilité élevée est nécessaire pour que nos clients aient une confiance totale dans l'automatisation et l'intègrent dans leurs opérations. Cependant, cela a pour conséquence de diminuer le nombre de documents que nous pouvons automatiser.

La solution: Pour une architecture donnée, la manière typique de trouver la meilleure chaîne avec cette précision de 100% tout en maximisant la couverture est d'effectuer une optimisation des hyperparamètres. En utilisant le jeu de données des documents précédents, on peut ajuster les paramètres à chaque étape tout en remplissant les deux conditions. Les paramètres ici sont principalement les seuils de corrélation pour la reconnaissance des modèles et des pages et le seuil de confiance du réseau de neurones. Si nous choisissons un seuil très strict, nous assurerons une précision de 100%, mais la couverture sera réduite. Si nous le choisissons trop librement, des erreurs surgiront et la précision de 100% sera perdue. Nous avons développé deux versions.

Les outils pour l'extraction d'informations de document

Nous avons utilisé une série d'outils pour implémenter une telle chaîne de traitement et la mettre en production complète, à savoir OpenCV, PyTorch, Docker et AWS.

OpenCV

Nous avons fait un usage intensif de la bibliothèque OpenCV à différentes étapes du processus. OpenCV est une bibliothèque open-source connue pour la vision par ordinateur classique. Nous l'avons utilisée pour la reconnaissance des modèles, la vérification de l'ordre des pages et la détection automatique des cases d'information.

PyTorch

Nous avons développé le modèle de réseau de neurones avec PyTorch. C'est un Réseau de Neurones Convolutifs (CNN), parfait pour la classification d'images. L'apprentissage par transfert a été appliqué en partant de l'architecture pré-entraînée ResNet50 avant de la former sur les images du client. Le CNN donne la classe et un score de probabilité sur sa confiance quant à son choix. Ce score est utile pour s'assurer qu'il n'y a pas de mauvaises classifications.

Docker

Nous avons déployé notre chaîne de traitement dans un conteneur en utilisant Docker. L'avantage réel est de ne plus se soucier des problèmes de compatibilité lors du déploiement sur de nouveaux serveurs. Le processus s'exécute dans le conteneur « boîte noire » et fonctionne sur toute machine ayant Docker installé.

Amazon Web Services (AWS) et le Kit de Développement Cloud

Notre client avait déjà plusieurs services dans une pile déployée sur AWS. Nous nous sommes assurés d'adapter ce projet au reste de leur écosystème. En pratique, cela signifie que les opérations se déroulent quotidiennement sur les serveurs d'Amazon, loués par notre client.

L'intérêt d'utiliser le Kit de Développement Cloud est que toute l'infrastructure peut être spécifiée en tant que code et déployée en ligne de commande. Les principaux composants utilisés sont les Buckets, les fonctions Lambda et le Service de Conteneurs Élastiques et le Batch. Tout cela permet de déployer des conteneurs Docker et de s'adapter de manière flexible au nombre de documents à traiter en allouant plus ou moins de serveurs.

AWS offre également un outil pour effectuer l'étiquetage d'images humain efficacement sur de grands ensembles de données. Il a été instrumental pour former le Réseau de Neurones sur les données du client. L'outil distribue l'étiquetage à différentes personnes qui assigneront la bonne étiquette à l'image.

Conclusion

Dans la version finale de notre solution, le client a pu automatiser 47% de tous les documents entrant dans la chaîne après l'extraction des informations du document. On peut dire en toute sécurité que cela a permis au client d'économiser un temps et des dépenses considérables.

Estimation des gains pour l'extraction d'informations de document

Notre client reçoit en moyenne 100 documents chaque jour. Chaque document prend 75 secondes pour être traité manuellement. Le client estime que cela coûte environ 26.000 € par an. Compte tenu des tarifs des serveurs Amazon, notre installation devrait coûter moins de 100 € par an, ce qui est négligeable. Parce que nous automatisons environ 50% des documents, le montant épargné par an est d'environ 13.000 €.

L'autre impact est que grâce à la modularité de l'architecture, elle pourrait, à moindre coût, être étendue à différents types de documents client, où il y a extraction d'information.

Limitations et améliorations possibles

La chaîne fonctionnera si le document provient d'un modèle approprié, avec des pages dans le bon ordre, et le document contient des informations correctement remplies dans les cases dédiées.

Un autre risque possible dans de tels processus d'apprentissage automatique est l'évolution des données. Cela s'appelle un déplacement du jeu de données. Si les types de modèles changent, si la qualité des scans PDF se détériore, la couverture pourrait chuter. Pour faire face à un tel problème, un rapport quotidien des performances doit être mis en place pour mesurer toute différence notable dans les résultats.

Les idées pour améliorer la couverture de l'automatisation seraient de créer de meilleures directives de remplissage dans le document et de ne garder qu'un bon modèle pour le document.

Pour l'architecture actuelle, deux améliorations directes pourraient donner de meilleurs résultats : améliorer la détection automatique des cases (seulement 75% et pourrait s'approcher de 100%) et un réordonnancement automatique des pages d'un document désordonné.

Enfin, pour garantir un ROI significatif, l'idéal serait d'étendre l'architecture à tous les documents encore traités manuellement contenant des cases à cocher.

De plus en plus, les organisations appliquent l'apprentissage automatique et les algorithmes associés au traitement automatisé des documents, un domaine également connu sous le nom de Reconnaissance Optique de Caractères (OCR).

Si vous devez gérer de grandes quantités de fichiers visuels ou textuels, vous pouvez économiser beaucoup de temps et d'argent en utilisant l'apprentissage automatique et l'automatisation disponibles dans les bons outils au lieu de traiter les fichiers manuellement.

Cet article couvre l'approche adoptée dans l'un de nos projets pour le défi de la classification des documents et de l'extraction d'informations. Dans le cadre de ce projet, notre client voulait insérer un processus automatisé pour classer les documents dans leur écosystème opérationnel déjà bien développé. L'objectif était de recevoir des scans PDF remplis manuellement par les clients, de récupérer toutes les informations nécessaires et de les envoyer au client.

La solution pour l'extraction d'informations de document

Nous avons créé une chaîne de traitement composée d'une série de vérifications et d'étapes de traitement. Chaque PDF traversait cette chaîne pour être entièrement traité.

Tout d'abord, nous avons reconnu le modèle actuel parmi un ensemble de modèles possibles. Le modèle est reconnu par sa première page, contenant un en-tête et généralement d'autres caractéristiques spéciales. Ces caractéristiques rendent la différenciation plus facile dans OpenCV. Nous utilisons la fonction cv2.matchTemplate pour obtenir un score de corrélation entre la première page du document actuel et toutes les premières pages de la base de données de modèles. Si le meilleur candidat a un score de corrélation supérieur à un seuil minimum, le modèle est considéré comme reconnu.

Nous avons hébergé la base de données de modèles et leurs fichiers de configuration sur un bucket S3 sur AWS, interrogé depuis une image Docker contenant la chaîne de traitement.

Ensuite, chaque page du document actuel que nous devions traiter devait être liée à sa page correspondante du modèle de référence identifié. L'utilisation de cette étape est de s'assurer que les algorithmes savent sur quelle page ils travaillent. Ceci est crucial pour déterminer quelle information correspond à quelle question sur le document. La chaîne compare la première page d'un document de référence à la première page d'un autre en traitement, et ainsi de suite. S'il manque des pages ou si les scans sont désordonnés, la chaîne envoie le document pour un examen manuel. La comparaison page par page utilise le même principe que la reconnaissance de modèles, avec un usage intensif de notre chère cv2.matchTemplate.

Une fois que nous identifions les pages, les cases d'information de chaque page sont alors automatiquement détectées. La détection est réalisée principalement en utilisant les fonctions cv2.morphologyEx et cv2.connectedComponentsWithStats de OpenCV. cv2.morphologyEx applique un filtre de bord horizontal et vertical sur les pages. Et, cv2.connectedComponentsWithStats trouve les boîtes fermées créées par les bords verticaux et horizontaux et renvoie leurs positions.

Ensuite, un filtrage supplémentaire est appliqué pour conserver les boîtes répondant à des contraintes particulières de position et de dimension. A partir des positions finales, la chaîne de traitement découpe les cases d'information de l'image de la page principale. Les boîtes, dans notre cas, contiennent les réponses aux questions du document. La chaîne spécifie les contraintes dans le fichier de configuration du modèle.

Si les fonctions de la chaîne de traitement n'ont pas détecté toutes les cases d'information sur une page, alors l'étape est considérée comme échouée et la chaîne envoie le document pour un examen manuel.

Cette chaîne envoie des images découpées à un Réseau de Neurones Convolutifs (CNN). Le réseau de neurones déjà formé décide de chaque case à cocher et l'associe à un niveau de confiance. Le niveau de confiance est la probabilité associée à l'étiquette du contenu de la case. Si elle est en dessous d'une certaine probabilité seuil, cela signifie que le modèle n'est pas sûr du contenu et la chaîne envoie le document pour un examen manuel.

Si toutes les étapes précédentes ont réussi, la chaîne envoie les réponses au client dans un format JSON.

Les défis durant l'extraction d'informations de document

Nous avons rencontré quelques défis durant le développement; la variété des modèles, la variété du comportement humain et les exigences strictes de fiabilité.

Variété des modèles

Tout d'abord, pour l'entreprise, il y a environ dix modèles différents actuellement en usage. Pour avoir une bonne couverture, la chaîne devait être capable de reconnaître quelques-uns d'entre eux. Nous avons opté pour les deux plus courants qui représentent 90% de tous les documents. De plus, pour chaque modèle, nous avions besoin d'un fichier de configuration pour que l'algorithme puisse lier les cases détectées à leurs spécifications de questions.

La solution: Parce que cette configuration peut être complexe pour un utilisateur non initié, nous avons créé un générateur de modèles pour ajouter un nouveau modèle en quelques clics.

Variété de comportement humain

Un autre défi était de comprendre la variété du comportement humain lors du remplissage des documents et d'y faire face. Nous avons dû trouver le compromis entre maximiser la couverture de l'automatisation et minimiser la complexité du processus. Une complexité qui augmente avec le nombre de cas particuliers que vous voulez couvrir.

En outre, en particulier pour la classification des cases avec le Réseau de Neurones, il est impossible de garantir 0% d'erreur dans le cadre actuel. Comme les documents n'ont pas été initialement créés pour être traités automatiquement, il peut y avoir des ambiguïtés dans les réponses écrites des clients.

La solution: Il n'y a pas de réponse parfaite pour trouver un bon compromis. Selon le client, vous pourriez passer plus de temps à développer une infrastructure très complexe pour traiter presque 100% des documents, maximisant ainsi la couverture. Mais le coût de création d'une telle infrastructure ne vaudrait pas le gain. En général, un client voudra optimiser son Retour sur Investissement (ROI), en gardant à l'esprit que les documents papier deviennent plus rares avec l'ère tout numérique.

Concernant le remplissage des cases, le seul moyen d'y faire face est d'installer un cadre propre où nous expliquons la méthode de remplissage aux clients. Ce cadre devrait apparaître sur les futurs modèles.

Exigence stricte de fiabilité pour l'extraction d'informations de document

Enfin, nous devions répondre à une exigence stricte de fiabilité, idéalement 0% d'erreur. En termes d'apprentissage automatique, nous devions assurer 100% de précision, ce qui est la conséquence de l'épuisement du rappel, c'est-à-dire la couverture.

Une fiabilité élevée est nécessaire pour que nos clients aient une confiance totale dans l'automatisation et l'intègrent dans leurs opérations. Cependant, cela a pour conséquence de diminuer le nombre de documents que nous pouvons automatiser.

La solution: Pour une architecture donnée, la manière typique de trouver la meilleure chaîne avec cette précision de 100% tout en maximisant la couverture est d'effectuer une optimisation des hyperparamètres. En utilisant le jeu de données des documents précédents, on peut ajuster les paramètres à chaque étape tout en remplissant les deux conditions. Les paramètres ici sont principalement les seuils de corrélation pour la reconnaissance des modèles et des pages et le seuil de confiance du réseau de neurones. Si nous choisissons un seuil très strict, nous assurerons une précision de 100%, mais la couverture sera réduite. Si nous le choisissons trop librement, des erreurs surgiront et la précision de 100% sera perdue. Nous avons développé deux versions.

Les outils pour l'extraction d'informations de document

Nous avons utilisé une série d'outils pour implémenter une telle chaîne de traitement et la mettre en production complète, à savoir OpenCV, PyTorch, Docker et AWS.

OpenCV

Nous avons fait un usage intensif de la bibliothèque OpenCV à différentes étapes du processus. OpenCV est une bibliothèque open-source connue pour la vision par ordinateur classique. Nous l'avons utilisée pour la reconnaissance des modèles, la vérification de l'ordre des pages et la détection automatique des cases d'information.

PyTorch

Nous avons développé le modèle de réseau de neurones avec PyTorch. C'est un Réseau de Neurones Convolutifs (CNN), parfait pour la classification d'images. L'apprentissage par transfert a été appliqué en partant de l'architecture pré-entraînée ResNet50 avant de la former sur les images du client. Le CNN donne la classe et un score de probabilité sur sa confiance quant à son choix. Ce score est utile pour s'assurer qu'il n'y a pas de mauvaises classifications.

Docker

Nous avons déployé notre chaîne de traitement dans un conteneur en utilisant Docker. L'avantage réel est de ne plus se soucier des problèmes de compatibilité lors du déploiement sur de nouveaux serveurs. Le processus s'exécute dans le conteneur « boîte noire » et fonctionne sur toute machine ayant Docker installé.

Amazon Web Services (AWS) et le Kit de Développement Cloud

Notre client avait déjà plusieurs services dans une pile déployée sur AWS. Nous nous sommes assurés d'adapter ce projet au reste de leur écosystème. En pratique, cela signifie que les opérations se déroulent quotidiennement sur les serveurs d'Amazon, loués par notre client.

L'intérêt d'utiliser le Kit de Développement Cloud est que toute l'infrastructure peut être spécifiée en tant que code et déployée en ligne de commande. Les principaux composants utilisés sont les Buckets, les fonctions Lambda et le Service de Conteneurs Élastiques et le Batch. Tout cela permet de déployer des conteneurs Docker et de s'adapter de manière flexible au nombre de documents à traiter en allouant plus ou moins de serveurs.

AWS offre également un outil pour effectuer l'étiquetage d'images humain efficacement sur de grands ensembles de données. Il a été instrumental pour former le Réseau de Neurones sur les données du client. L'outil distribue l'étiquetage à différentes personnes qui assigneront la bonne étiquette à l'image.

Conclusion

Dans la version finale de notre solution, le client a pu automatiser 47% de tous les documents entrant dans la chaîne après l'extraction des informations du document. On peut dire en toute sécurité que cela a permis au client d'économiser un temps et des dépenses considérables.

Estimation des gains pour l'extraction d'informations de document

Notre client reçoit en moyenne 100 documents chaque jour. Chaque document prend 75 secondes pour être traité manuellement. Le client estime que cela coûte environ 26.000 € par an. Compte tenu des tarifs des serveurs Amazon, notre installation devrait coûter moins de 100 € par an, ce qui est négligeable. Parce que nous automatisons environ 50% des documents, le montant épargné par an est d'environ 13.000 €.

L'autre impact est que grâce à la modularité de l'architecture, elle pourrait, à moindre coût, être étendue à différents types de documents client, où il y a extraction d'information.

Limitations et améliorations possibles

La chaîne fonctionnera si le document provient d'un modèle approprié, avec des pages dans le bon ordre, et le document contient des informations correctement remplies dans les cases dédiées.

Un autre risque possible dans de tels processus d'apprentissage automatique est l'évolution des données. Cela s'appelle un déplacement du jeu de données. Si les types de modèles changent, si la qualité des scans PDF se détériore, la couverture pourrait chuter. Pour faire face à un tel problème, un rapport quotidien des performances doit être mis en place pour mesurer toute différence notable dans les résultats.

Les idées pour améliorer la couverture de l'automatisation seraient de créer de meilleures directives de remplissage dans le document et de ne garder qu'un bon modèle pour le document.

Pour l'architecture actuelle, deux améliorations directes pourraient donner de meilleurs résultats : améliorer la détection automatique des cases (seulement 75% et pourrait s'approcher de 100%) et un réordonnancement automatique des pages d'un document désordonné.

Enfin, pour garantir un ROI significatif, l'idéal serait d'étendre l'architecture à tous les documents encore traités manuellement contenant des cases à cocher.

Prêt à atteindre vos objectifs avec les données ?

Si vous souhaitez atteindre vos objectifs grâce à une utilisation plus intelligente des données et de l'IA, vous êtes au bon endroit.

Prêt à atteindre vos objectifs avec les données ?

Si vous souhaitez atteindre vos objectifs grâce à une utilisation plus intelligente des données et de l'IA, vous êtes au bon endroit.

Prêt à atteindre vos objectifs avec les données ?

Si vous souhaitez atteindre vos objectifs grâce à une utilisation plus intelligente des données et de l'IA, vous êtes au bon endroit.

Prêt à atteindre vos objectifs avec les données ?

Si vous souhaitez atteindre vos objectifs grâce à une utilisation plus intelligente des données et de l'IA, vous êtes au bon endroit.

© 2025 Agilytic

© 2025 Agilytic

© 2025 Agilytic