Daten-Parsing-Tool mit Python, SROIE-Datensatz und maschinellem Lernen erstellen

Wenn Sie ein Python-Entwickler sind und ein Daten-Parsing-Tool erstellen möchten, ist dieses Tutorial genau das Richtige für Sie. Wir zeigen Ihnen, wie Sie ein effizientes Dokument-Parsing-Tool mit Python und dem SROIE-Datensatz erstellen und führen Sie in die Möglichkeiten des Konfuzio SDK ein. Legen wir los!

Einen kurzen Einstieg zum String Parsing in Python finden Sie hier.

Schritt 1: Einrichtung Ihrer Umgebung

Bevor wir beginnen, stellen Sie sicher, dass Python und alle benötigten Bibliotheken installiert sind. Führen Sie dazu die folgenden Befehle in Ihrer Kommandozeile oder Ihrem Terminal aus:

# Install Python packages
pip install opencv-python tensorflow numpy scikit-learn

Schritt 2: SROIE-Datensatz laden

Der SROIE-Datensatz besteht aus Bildern von Quittungen und den dazugehörigen Annotationsdateien. So können Sie sie laden:

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)

Schritt 3: Datensatz vorbereiten

Jetzt wollen wir die Bilder aus dem SROIE-Datensatz für das weitere Training vorverarbeiten:

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)

Einen weiteren spannenden Datensatz bietet FUNSD+. Lesen Sie jetzt mehr.

Schritt 4: Feinabstimmung und Bewertung mit Donut-Modell

Für genaues Dokument-Parsing werden wir ein vortrainiertes Donut-Modell auf unseren vorverarbeiteten Daten feinabstimmen:

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)

Zusammenfassung

Das Erstellen eines Daten-Parsing-Tools mit Python und dem SROIE-Datensatz kann mit dem richtigen Ansatz nahtlos erfolgen. Für erweiterte Funktionen und fortschrittlichere Funktionen sollten Sie das Konfuzio SDK in Ihre Projekte integrieren. Werfen Sie einen Blick in die Dokumentation von Konfuzio für umfassende Einblicke.

Viel Spaß beim Programmieren!

Weitere Links

«
»
Avatar von Florian Zyprian

Neueste Artikel