>
Générateur de documents synthétiques
Synthetic documents generator

Objectifs du projet

L'objectif principal est de pouvoir générer une base d'apprentissage pour un système de détection d'informations clés dans des documents de types divers et variés tels que factures, attestations d'assurance, etc. En effet, ces documents tombent sous les règles du RGPD et de telles collections sont difficiles à obtenir. Ainsi, nous devons créer un programme qui puisse générer des documents qui semblent aussi réalistes que possibles. Il faudra également générer des annotations qui identifient les parties importantes dans le document généré, comme le numéro de SIRET d’une entreprise, le montant total d’une facture, le nom et prénom d’une personne assurée, etc. Notre programme doit être en capacité de générer des documents variés afin d'avoir un jeu d'entraînement pertinent.

Project Goals

The main objective is to be able to generate a learning base for a system of detection of key information in documents of various types such as invoices, insurance certificates, etc. Indeed, these documents fall under the rules of the RGPD and such collections are difficult to obtain. Thus, we need to create a program that can generate documents that look as realistic as possible. We will also need to generate annotations that identify important parts of the generated document, such as the SIRET number of a company, the total amount of an invoice, the first and last name of an insured person, etc. Our program must be able to generate different kinds of documents in order to have a homogeneous training set.

Contraintes du projet

Constraints of the project

Vraisemblance des documents

Realism of the documents

Les documents que va retourner notre générateur doivent ressembler à de vrais documents personnels

The documents generated by our program must resemble real personal documents.

Variété des documents

les documents qui seront générés par notre programme vont servir d'ensemble d'entraînement à un modèle de l'entreprise Luminess. Nous devons produire des documents différents pour éviter le surapprentissage.

Variety of Documents

The documents that will be generated by our program will be used as a training set for an artificial intelligence that belongs to Luminess. Thus, we must produce different documents to avoid overfitting.

Pas de données d'entraînement

No training data

Les documents de l'entreprise étant confidentiels, nos clients n'ont pas pu nous fournir un ensemble de documents sur lesquels se baser.

As the company's documents are confidential, our clients were unable to provide us with a set of documents to use as a basis.

Architecture

Architecture

Notre logiciel se divise en deux parties: une interface graphique où l'utilisateur peut concevoir la structure du document. La seconde partie est un générateur qui génère des documents pdf conformes à la structure à la première partie.

Our software is divided into two parts: a graphical interface where the user can design the structure of the document, and a generator to generate PDF documents that conform to the structure defined by the user.

Interface graphique

Graphical User Interface

The user is presented with a white rectangle in the shape of an A4 sheet, and can drag and drop various elements at their disposal, such as tables, titles, amounts, etc. This allows them to design the structure of the document they want to generate.

L'utilisateur a devant lui un rectangle blanc de la forme d'une feuille A4 et il peut venir y glisser différents éléments mis à sa disposition comme des tableaux, des titres, des montants, etc. Il pourra ainsi concevoir la structure du document qu'il souhaite générer.

En savoir plus Learn more

Générateur

Generator

L'interface graphique va produire en sortie un fichier JSON qui contient toutes les informations nécessaires à la construction du document ainsi que les annotations demandées. Ce fichier JSON est utilisé par le générateur pour générer les différents documents pdf.

The graphic interface produces a JSON file that contains all the information necessary for building the document as well as the document annotation. This JSON file is used by the generator to create the PDF documents.

Learn more

Interface graphique

Graphical User Interface

Notre interface graphique se compose de 3 zones:

Our graphical user interface is composed of three main areas:

  • Area 1

    Is used for importing bounding boxes (i.e Different components of the document like charts, titles, etc). The users can also design their own bounding box, and can choose the font and language.
  • Zone 1

    L'importation des boites englobantes (i.e éléments qui constituent le document comme des tableaux, titres, etc.). L'utilisateur peut aussi créer sa propre boite englobante. Il a le choix entre plusieurs langues et polices.

  • Area 2

    Is used for positioning and resizing the different bounding boxes. Next to it, there is a list of all the bounding boxes currently present on the document. Below that, the user has on display the parameters associated with the selected bounding box.
  • Zone 2

    Permet de positioner et redimensionner les différentes boites englobantes. À côté, il y a une liste regroupant les boîtes englobantes présentes actuellement sur le document. En dessous, ce sont les paramètres associés à la boîte englobante sélectionnée.

  • Area 3

    Displays the generated document, along with any annotations that may be present.
  • Zone 3

    Le résultat de la génération du document est affiché, les annotations peuvent être visualisées.

Each bounding box is represented by one or more predefined generators. The user can also create their own generator through this interface.

Chaque boîte englobante est représentée par un ou plusieurs générateurs pré-définis. L'utilisateur peut également à travers cette interface créer son propre générateur.

Once the user has finished structuring their document, they can click on the "Generate" button. This sends the necessary information to the document generation process, which will call the dedicated generators.

Lorsque l’utilisateur finit de structurer son document, il a la possibilité de cliquer sur le bouton « Générer ». Ce dernier envoie les informations nécessaires au procédé de génération du document qui appellera les générateurs dédiés.

Générateur

PDF Generator

The PDF generator's purpose is to use the data provided by the graphical interface to create a document that respects the requested layout. Once generated, they will be transformed into png files and used to train Luminess' different AIs, as well as ours. Thus, these documents must respect the structure given by the graphical interface, look realistic, and be different enough from each other to avoid overfitting of the model.

Le générateur de pdf a pour but d’utiliser les données fournies par l’interface graphique pour créer un document qui respecte la mise en page demandée. Une fois générés, ils seront par la suite transformés en fichiers png et serviront à entraîner les différentes IA de Luminess, mais aussi celle de notre projet. Ainsi, ces documents doivent respecter la structure donnée par l’interface graphique, paraître réalistes, et être suffisamment différents les uns des autres pour éviter le phénomène de sur-apprentissage du modèle.

Notre générateur se constitue d’un générateur principal qui va se charger de créer le document pdf final. Pour cela, il repose sur des générateurs de contenus dont il orchestre la position en accord avec la structure définie par l'interface homme-machine.

Architecture Logicielle du générateur

Software architecture of the generator

Notre solution fournit des générateurs de contenus prédéfinis mais d’autres peuvent être ajoutés plus tard en respectant l’interface Générateur. Ainsi, nous nous retrouvons avec l'architecture logicielle suivante :

Our solution provides predefined content generators but more can be added later by respecting the Generator interface. Thus, we end up with the following software architecture:

Nous pouvons noter que des générateurs peuvent être redondants comme le GénerateurTableau1 et le GénerateurTableau2. Ainsi des générateurs plus spécifiques peuvent être définis pour permettre une plus grande variabilité du système.

We can note that generators can be redundant like TableGenerator1 and TableGenerator2. Thus more specific generators can be defined to allow for greater variability in the system.

Test de notre solution

Testing our solution

Les documents et leurs annotations générés par notre logiciel sont destinés à constituer un jeu de données pour l’entraînement et le test d’un modèle d'intelligence artificielle capable d’analyser un document et d’en extraire les données clés.
Au sein de notre groupe, afin de tester la qualité des documents que nous avons généré, nous avons entraîné un modèle d’IA capable de reconnaître trois éléments communs par la majorité des factures et de prédire leur boîte englobante qui se présente sous la forme d'une zone rectangulaire de l’image dans laquelle se situe l’élément détecté par l’IA.
Ces trois éléments sont le total hors taxe (Total HT), le total toutes taxes comprises (Total TTC) et l’adresse de l’entreprise.
L’IA doit être entraînée grâce aux documents synthétiques.
Les indications obtenus à l’issue des tests nous permettent ainsi de mieux jauger le niveau d’intensité de variabilité à définir lors de la génération de nos documents afin qu’une IA puisse correctement généraliser sa prise de décision.

The documents and their annotations generated by our software are intended to constitute a dataset for the training and testing of a model capable of analyzing the structure and extracting data from a document.
In our group, in order to test the quality of the documents we generated, we trained an AI model capable of recognizing three common elements of the majority of invoices and predict their bounding box.
These three elements are the total excluding tax (Total HT), the total including all taxes (Total TTC), and the company address.
The AI must be trained using synthetic documents.
The indications obtained from the tests allow us to better gauge the level of variability to define when generating our documents so that an AI can correctly generalize its decision-making process.

Ci-dessous un échantillon des résultats obtenus après avoir entrainé un modèle avec nos propres documents générés.


Below is a sample of the results obtained after training a model with our own generated documents.

En vert : Total TTC ; en bleu : Total HT ; en rouge : adresse de l’entreprise
On observe que la prédiction du total TTC se fait relativement correctement mais avec un niveau de confiance très faible. Le total HT n’est pas toujours prédit et l’adresse est moins bien localisée que les autres informations et quand elle l’est correctement, le niveau de confiance est bas. On observe aussi une tendance du réseau à prédire leur position sur des zones où l’on trouve du texte en gras.

In green: Total TTC; in blue: Total HT; in red: company address
It can be observed that the prediction of the Total TTC is relatively correct, but with a very low level of confidence. The Total HT is not always predicted, and the address is less well located than the other information, and when it is correctly located, the level of confidence is low. There is also a tendency of the network to predict their position on areas where bold text is present.