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 :
# Install Python packages
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
# Verzeichnisse für SROIE-Bilder und -Annotationen
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 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)
images.append(image)
extracted_texts.append(extracted_text)
return images, extracted_texts
images, extracted_texts = load_sroie_dataset(image_folder, annotation_folder)
É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 = "path/to/output/folder"
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)
# Hier können Sie Bildvorverarbeitungsschritte hinzufügen
output_path = os.path.join(output_folder, filename.replace(".txt", ".jpg"))
cv2.imwrite(output_path, image)
preprocess_images(image_folder, annotation_folder, output_folder)
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 layers, models
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 model
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