in

Extraction de données de documents sans OCR grâce aux Transformers (1/2) | par Toon Beerten | Avr, 2023


DONUT CONTRE PIX2STRUCT SUR DONNÉES PERSONNALISÉES

Le Donut et le Pix2Struct sont tous deux des modèles de conversion d’image en texte qui combinent la simplicité des entrées de pixel pur avec les tâches de compréhension du langage visuel. En d’autres termes, une image est introduite et des indexes sont extraits sous forme de JSON.

Récemment, j’ai publié un modèle Donut affiné sur les factures. On me pose souvent la question de savoir comment entraîner un modèle avec un ensemble de données personnalisé. De plus, un modèle similaire a été publié : le Pix2Struct, qui prétend être nettement meilleur. Mais est-ce vraiment le cas ?

Il est temps de se retrousser les manches. Je vais vous montrer :

– comment préparer vos données pour affiner le Donut et le Pix2Struct
– la procédure d’entraînement pour les deux modèles
– les résultats comparatifs sur un ensemble de données réelles

Bien sûr, je vais également fournir les cahiers Colab, pour une expérimentation facile et/ou une réplication à partir de votre fin.

En ce qui concerne l’ensemble de données, j’ai choisi un ensemble de données public. J’ai évité les ensembles habituels pour les tâches de compréhension des documents tels que le CORD, j’ai cherché et j’ai trouvé l’ensemble de données Ghega. Il est assez petit (~250 documents) et se compose de deux types de documents : les demandes de brevet et les fiches techniques. Avec les différents types, nous pouvons simuler un problème de classification. Pour chaque type, nous avons plusieurs indexes à extraire. Ces indexes sont uniques pour chaque type.

Le jeu de données semble être assez vieux, donc il faut vérifier s’il convient toujours à notre objectif.

Lorsque vous obtenez un nouvel ensemble de données, vous devez d’abord vous familiariser avec sa structure. Heureusement, la description détaillée du site web nous aide. La structure du fichier de l’ensemble de données ressemble à ceci :

– ghega-dataset
– datasheets
– central-zener-1
– central-zener-2
– diodes-zener
– document-000-123542.blocks.csv
– document-000-123542.groundtruth.csv
– document-000-123542.in.000.png
– document-000-123542.out.000.png
– document-001-123663.blocks.csv
– patents
– adams
– bloch
– cooper
– document-1997-0029036.blocks.csv
– malinowski
– pettit
– watt

Nous pouvons voir qu’il y a deux sous-dossiers principaux pour les deux types de documents : datasheets et brevets. Un niveau inférieur, nous avons des sous-dossiers qui ne sont pas importants en eux-mêmes, mais qui contiennent des fichiers qui commencent par un certain préfixe. Nous pouvons voir un identifiant unique, par exemple document-000-123542. Pour chacun de ces identifiants, nous avons quatre sortes de données :

1. Le fichier blocks.csv contient des informations sur les boîtes de délimitation. Comme Donut ou Pix2Struct n’utilisent pas ces informations, nous pouvons ignorer ces fichiers.
2. Le fichier out.000.png est le fichier d’image post-traité (deskewed). Comme je préfère tester sur des fichiers non traités, je vais également les ignorer.
3. L’image brute et non traitée du document porte la mention in.000.png. C’est ce qui nous intéresse.
4. Enfin, le fichier groundtruth.csv correspondant. Cela contient des indexes pour cette image que nous considérons comme la vérité de terrain.

Nous ne nous intéressons qu’à la première et à la dernière colonne. Le premier étant la clé et le dernier étant la valeur. Dans ce cas :

– Clé : Case
– Valeur : MELF CASE
– Clé : StorageTemperature
– Valeur : -65 à +200

Cela signifie que pour ce document, nous affinons les modèles pour chercher une ‘Case’ avec une valeur ‘MELF CASE’ et pour extraire une ‘Temperature de stockage’ qui est ‘-65 à +200’.

Les indexes suivants existent dans les métadonnées groundtruth :

– datasheets : Modèle, Type, Case, Dissipation de puissance, Température de stockage, Tension, Poids, Résistance thermique
– patents : Titre, Demandeur, Inventeur, Représentant, Date de dépôt, Date de publication, Numéro de demande, Numéro de publication, Priorité, Classification, Première ligne d’abstract

En examinant la qualité de la vérité de terrain et la faisabilité, j’ai choisi de conserver les indexes suivants :

elements_to_extract = [‘Date de dépôt’, ‘ReprésentativeFL’, ‘Classification’, ‘Date de publication’, ‘Numéro de demande’, ‘Modèle’, ‘Tension’, ‘Température de stockage’]

Pour la conversion d’image en texte, j’ai utilisé la version 0.2 d’Ocropus. Cela remonte à la fin de 2014. C’est ancien en termes de science des données, donc la qualité de la vérité de terrain est-elle à la hauteur de notre tâche ?

Pour cela, j’ai examiné des images aléatoires et comparé la vérité de terrain à ce qui était réellement écrit sur le document. Il y a de nombreuses erreurs de ce type dans l’ensemble de données. On peut choisir de les corriger ou de les ignorer. Comme je vais utiliser les mêmes données pour comparer les deux modèles, j’ai choisi la deuxième option. Si les données doivent être utilisées pour la production, vous pouvez choisir la première option pour obtenir les meilleurs résultats.

En ce qui concerne la structure de l’ensemble de données Donut, pour affiner le modèle, nous devons avoir les données organisées dans un dossier avec tous les documents en tant que fichiers d’image distincts et un fichier de métadonnées, structuré sous forme de fichier JSON lines.

Le fichier JSONL contient pour chaque fichier d’image une ligne comme celle-ci :

{“file_name” : “document-034-127420.in.000.png”, “ground_truth” : “{\”gt_parse\”: { \”DocType\”: \”datasheet\”, \”

What do you think?

Written by Barbara

Leave a Reply

Your email address will not be published. Required fields are marked *

AITalk de Trancy – Une nouvelle application d’entraînement à la langue parlée basée sur ChatGPT

Les règles de l’UE obligent Apple à divulguer les chiffres des utilisateurs de l’App Store en Europe.