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

Florian Zyprian

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.

Dieser Artikel wurde auf Deutsch verfasst und redaktionell überprüft. Weitere Sprachen stehen als automatische Übersetzung zur Verfügung. Wir freuen uns über Feedback am Ende des Artikels.

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

    🐍✨Auf der Suche nach einer neuen Herausforderung?

    Tritt dem AI Comedy Club bei! Tauche ein in eine Welt, in der sich KI und Humor treffen, und nutze diese Bühne für deine Fähigkeiten. Ob aufstrebender Youngster oder erfahrener Entwickler, hier hast du die Chance, dein Python-Können auf eine lustige und innovative Art zu zeigen. Entdecke außerdem Möglichkeiten, einen Beitrag zu leisten und dich sogar für einen Job bei uns zu bewerben.

    Bereit zum Coden, Lachen und Beeindrucken?

    Sieh dir unsere AI Comedy Club Challenge an und finde heraus, wohin dich dein Humor und deine Python-Skills führen können!

    Apply for data scientist, 
backend developer, 
data engineer, 
software developer, 
python software developer jobs.

    Über mich

    Weitere Artikel

    optical mark recognition for data forms software

    Was ist Optical Mark Recognition?

    Bei der Analyse von Dokumenten muss es nicht immer technisch kompliziert werden. Manchmal geht es lediglich um die Erfassung einfacher...

    Zum Artikel
    KPIs Software Tests

    KPIs für Software Tests – Qualitätssicherung für Ihr Produkt

    Die Entwicklung einer Software, die einen „pain point“ für den Benutzer löst, ist zweifellos das Fundament eines erfolgreichen Softwareprodukts. Es...

    Zum Artikel
    PoC Meaning

    Was ist ein Proof of Concept (POC)?

    Ein Proof of Concept (POC) ist ein kleinerer, vorläufiger Test oder eine Demonstration einer Geschäftsidee oder einer technischen Lösung, die...

    Zum Artikel
    Arrow-up