Notre expérience : comment préparer des millions de documents scannés que vous devez indexer?

L’indexation de documents est un domaine privilégié de l’intelligence artificielle car il est très compliqué de classer de grosses quantités de documents digitalisés, qui résultent parfois d’un historique de plusieurs dizaines d’années, et contenant différents formats, différentes langues, bref, une collection de documents qui est trop hétérogène pour être triée avec quelques règles simples. Pour résoudre ce problème crucial, les algorithmes d’IA doivent comprendre le contenu de chaque document et en extraire des annotations telles que le titre, la date, le sujet, etc., afin qu’un moteur de recherche puisse facilement les lier aux mots clés entrés par les utilisateurs lors de leurs requêtes.

Cet article résume les deux premières années d’un projet de valorisation d’une archive contenant plusieurs millions de documents et recouvrant des rapports décrivant 60 ans d’activité d’un grand groupe international.

L’indexation automatique est un domaine à l’intersection de l’informatique industrielle et de la recherche académique. À l’heure actuelle, aucun acteur du marché n’est en mesure d’apporter une solution globale. La démarche des ingénieurs de LumenAI est de privilégier le pragmatisme et d’évaluer le potentiel des outils à code source ouvert déployables en interne et de les mettre en parallèle avec les librairies vendues par les grands comptes tels que Google ou IBM. En résumé, l’objectif du projet est de proposer, tester et mettre en production des outils IA pour améliorer et automatiser l’indexation des documents. 

Cet article s’adresse à un public familier avec l’informatique et ses problématiques, et souhaitant se familiariser avec l’utilisation de l’IA. Il vous fera partager notre expérience, les outils que nous utilisons et notre méthodologie. Le domaine du projet étant la pétrochimie, la plupart des exemples en seront tirés.

Vision d’ensemble de la chaı̂ne de traitement

L’objectif final est d’extraire un ensemble d’annotations du document : catégories, titre, date, auteurs, sujet, certificat de conformité…, afin qu’il soit facilement manipulable par un moteur de recherche. Cependant il est difficile de chercher à détecter des entités directement à l’intérieur d’un large texte non structuré. C’est pourquoi les premières étapes de la chaîne de traitement consistent à découper le document en unités logiques plus petites, plus faciles à  manipuler et pour lesquelles des traitements spécifiques peuvent être appliqués, chacun d’entre eux devenant un problème classique de l’intelligence artificielle, bien identifié et pour lequel des solutions à code source ouvert sur l’étagère existent.

Chaîne de traitement globale pour la digitalisation d’un document

Extraction du texte

Les technologies de reconnaissance optique de caractères à partir des images sont relativement matures et des solutions gratuites comme Tesseract donnent généralement de bons résultats. Cependant, les performances se dégradent dans le cas de vieux documents, comportant des notes manuscrites ou avec un scanner de piètre qualité. C’est typiquement pour ce genre de cas où investir davantage d’argent dans une solution de cloud apportera un gain de performances appréciable.

Classification de documents

Cette tâche consiste à attribuer une étiquette à chaque document (rapport technique, bilan comptable, étude de marché,…). La classification est basée sur l’ensemble du texte extrait du document et permet d’effectuer un premier tri. Pour cela, le texte brut est transformé en vecteur grâce à la technique de plongement lexical. Dans notre projet, c’est la librairie opensource Fasttext qui a été utilisée. Comme toute tâche de classification supervisée en IA, sa réussite dépend de la définition des classes à séparer : ainsi certains types de documents vont avoir des champs lexicaux similaires, ce qui peut créer des confusions. En pratique, les performances obtenues pendant ce projet ont été suffisamment satisfaisantes pour l’utiliser sur des cas concrets de classement de plusieurs centaines de milliers de documents.

Segmentation du document

La segmentation du document peut s’envisager de deux manières complémentaires : en exploitant le texte ou les pixels de l’image. Dans un premier cas, le texte de chaque partie peut être vu comme un texte à classer en utilisant la même approche que lors de la classification de documents. Dans le deuxième cas, la tâche est formulée comme une détection d’objets dans des images. En particulier, il existe de nombreux modèles, Yolo ou MaskRCNN étant particulièrement populaires à l’heure actuelle, qui donnent de très bon résultats. Dans la pratique, les deux approches sont évidemment complémentaires. Les images, les paragraphes et les tableaux sont très différents visuellement, alors que les titres et les légendes sont plutôt discriminables par leur contenu textuel.

Il existe des modèles et des jeu de données accessibles pour les documents modernes. Pour les besoins de ce projet, un corpus de 10000 pages de documents internes à l’entreprise a été créé afin de traiter les documents anciens et scannés.

Classification d’images

Un dessin vaut mieux qu’un discours, et c’est encore plus vrai quand le texte extrait du document est un jargon inintelligible à cause de la piètre qualité de l’extraction du texte ou lorsque le texte est absent et ne permet pas d’identifier le document.

La classification d’image est une des applications où l’intelligence artificielle, et notamment les approches d’apprentissage profond ont démontré leurs premiers succès. Comme dans les cas précédents, d’excellents modèles comme ResNet sont disponibles et pré-initialisés. Ce type d’approche va permettre de classer efficacement des images visuellement différentes comme des cartes, des images d’installations pétrolières, des schémas de coupes géologiques, versus des enregistrements des puits, etc.

En revanche, il est plus difficile de distinguer entre deux types de schémas, ou deux images représentant des courbes même si elles sont de différents domaines. Encore une fois, la multimodalité apporte une plus value. Ainsi, le texte présent dans les légendes est une information très utile. L’extraction du texte à partir des images a été réalisée avec l’outil open source CRAFT. Cependant, des performances supérieures ont été notées à partir des outils disponibles sur Microsoft Azur.

Reconnaissance d’entités nommées

Chaque zone de texte d’un document donné est analysée pour extraire des entités : noms propres, organisation, lieux, dates ou d’autres entités métiers plus spécifiques. Ainsi, dans les applications de pétrochimie, il est important de retrouver les identifiants des puits de pétrole, et certaines caractéristiques géophysiques.

Dans ce projet, la librairie open source Spacy a fréquemment été utilisée. Cependant, le problème de la détection des entités nommées est difficile pour le cas général. Pour cette raison, les étapes de segmentation précédentes permettant de sélectionner des zones de texte appropriées sont fondamentales.

Comme dans la plupart des tâches de traitement automatique de la langue (TAL), et entre autres pour la tâche de classification de document vu précédemment, une composante essentielle est d’obtenir d’obtenir un modèle de plongement lexical qui va permettre de transformer des mots en vecteurs de nombres compréhensibles par la machine.

Construction de modèles de plongements lexicaux

Qu’il s’agisse de classer des documents, des phrases ou des mots, la majorité des techniques de TAL utilise un modèle de langage afin de convertir les éléments textuels en vecteurs. Ces modèles permettent de modéliser la sémantique générale.

Illustration de la séparation des tâches entre le modèle de langue et les classifieurs spécifiques aux tâches finales.

Ces modèles appelés modèles de plongements lexicaux sont construits à partir de grands corpus de texte et des versions pré-entraînées sont disponibles dans de nombreuses langues et construits à partir de ressources comme l’ensemble du texte contenu dans wikipédia.

Dans le cas où l’on dispose d’une large collection de documents, il est intéressant de l’utiliser pour construire un modèle spécifique qui va se concentrer sur le sens et l’importance des mots qui sont spécifiques à un domaine. Ainsi, dans le domaine de la pétrochimie, le nom commun anglais “well” a un sens différent de celui de l’adjectif courant puisqu’il désigne aussi un puits de pétrole. Dans le cadre de ce projet, différents modèles ont été construits comme word2vec ou des modèles contextuels comme BERT, publié en 2018 par les équipes de Google et largement popularisés depuis.

  1. https://github.com/tesseract-ocr/tesseract
  2. https://fasttext.cc/
  3. https://arxiv.org/pdf/2006.01038.pdf
  4.  spacy.io/