Créer un outil d'analyse comparative des données avec Python, l'ensemble de données SROIE et l'apprentissage automatique

Florian Zyprian

Si vous êtes un développeur Python et que vous souhaitez créer un outil de parsing de données, ce tutoriel est fait pour vous. Nous vous montrerons comment créer un outil d'analyse syntaxique de documents efficace avec Python et l'ensemble de données SROIE et nous vous présenterons les possibilités du SDK Konfuzio. Allons-y !

Vous trouverez ici une brève introduction à l'analyse syntaxique de chaînes de caractères en Python.

Étape 1 : Configurer votre environnement

Avant de commencer, assurez-vous que Python et toutes les bibliothèques nécessaires sont installés. Pour ce faire, exécutez les commandes suivantes dans votre ligne de commande ou votre terminal :

# Installer les paquets Python
pip install opencv-python tensorflow numpy scikit-learn

Étape 2 : charger l'ensemble de données SROIE

L'ensemble de données SROIE se compose d'images de Reçus et les fichiers d'annotation correspondants. Voici comment les charger :

import os
import cv2
# Répertoires pour les images et les annotations SROIE
image_folder = "path/to/SROIE/image/folder".
annotation_folder = "path/to/SROIE/annotation/folder".
def load_sroie_dataset(image_folder, annotation_folder) :
    """Load images and corresponding text from the SROIE dataset.""
    images, extracted_texts = [], []
    for nom_du_fichier dans os.listdir(annotation_folder) :
        with open(os.path.join(annotation_folder, filename), "r") as file :
            extracted_text = file.readlines()[1].strip()
            image_path = os.path.join(image_folder, filename.replace(".txt", ".jpg"))
            image = cv2.imread(image_path)
            images.append(image)
            extracted_texts.append(extracted_text)
    return images, extracted_texts
images, extracted_texts = load_sroie_dataset(dossier_image, dossier_annotation)

Étape 3 : Préparer l'ensemble des données

Nous voulons maintenant prétraiter les images de l'ensemble de données SROIE pour la suite de l'entraînement :

output_folder = "chemin/vers/sortie/dossier".
def preprocess_images(image_folder, annotation_folder, output_folder) :
    """Preprocess images and save them to the output directory.""
    for filename in os.listdir(annotation_folder) :
        with open(os.path.join(annotation_folder, filename), "r") as file :
            extracted_text = file.readlines()[1].strip()
            image_path = os.path.join(image_folder, filename.replace(".txt", ".jpg"))
            image = cv2.imread(image_path)
            # Ici, vous pouvez ajouter des étapes de prétraitement d'image
            output_path = os.path.join(output_folder, filename.replace(".txt", ".jpg"))
            cv2.imwrite(output_path, image)
preprocess_images(dossier_image, dossier_annotation, dossier_sortie)

Un autre jeu de données passionnant est proposé LE FUNSD+ EST EN MARCHE. Lisez-en plus maintenant.

Étape 4 : Réglage fin et évaluation avec le modèle Donut

Pour des Partage de documents nous allons créer un modèle de donut pré-entraîné sur nos données prétraitées :

import tensorflow as tf
from tensorflow.keras import couches, modèles
from sklearn.model_selection import train_test_split
# Split data into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(images, extracted_texts, test_size=0.2, random_state=42)
def create_donut_model(input_shape, num_classes) :
    """Create the Donut CNN model for text recognition.""
    model = models.Sequential([
        layers.Conv2D(32, (3, 3), activation='relu', input_shape=input_shape),
        layers.MaxPooling2D((2, 2)),
        layers.Conv2D(64, (3, 3), activation='relu'),
        layers.MaxPooling2D((2, 2)),
        layers.Flatten(),
        layers.Dense(128, activation='relu'),
        layers.Dense(num_classes, activation='softmax')
    ])
    return modèle
model = create_donut_model((height, width, channels), num_classes)
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
model.fit(X_train, y_train, epochs=10, batch_size=32, validation_split=0.1)
test_loss, test_accuracy = model.evaluate(X_test, y_test)

Résumé

La création d'un outil d'analyse syntaxique des données avec Python et l'ensemble de données SROIE peut se faire de manière transparente avec la bonne approche. Pour des fonctions plus avancées et des fonctionnalités plus avancées, vous devriez intégrer le SDK Konfuzio dans vos projets. Jetez un coup d'œil à la documentation de Konfuzio pour un aperçu complet.

Bonne programmation !

Autres liens

    Votre entreprise recherche-t-elle de nouveaux talents en IA ?

    Des talents de premier ordre en IA pour votre entreprise

    Une médiation spécialisée, un succès maximal sans effort : Notre partenaire Opushero vous aide à trouver les meilleurs talents. Un réseau d'agences de conseil spécialisées qui s'occupent aussi bien des jeunes talents que des développeurs IA expérimentés. Recevez des propositions de candidats préqualifiés qui souhaitent prendre leur envol chez vous.

    À propos de moi

    Autres grands articles

    titre de machine learning

    Machine learning : utiliser les décisions basées sur les données

    Dans le monde numérisé d'aujourd'hui, l'apprentissage automatique offre aux entreprises des possibilités nouvelles et passionnantes. En tant que technologie clé de l'intelligence artificielle,...

    Lire l'article
    Loi sur la chaîne d'approvisionnement Modèle de déclaration de principe

    Mise à jour de la loi sur la chaîne d'approvisionnement, y compris un modèle de déclaration de principe

    La déclaration de principe relative à la loi sur la chaîne d'approvisionnement présente les valeurs de votre entreprise sous une forme documentée et constitue la base du dialogue avec les...

    Lire l'article
    end to end titre

    Optimisation de bout en bout pour des processus commerciaux efficaces

    Les processus de bout en bout, qui englobent l'ensemble de la chaîne de création de valeur, s'avèrent être la pierre angulaire de la réussite dans une...

    Lire l'article
    Arrow-up