Zum Inhalt springen
Gini Logo
  • Lösungen
    • Spacing column
    • Menu image 1
    • Banken
      • Bezahlen per Foto
      • Payment Initiierung
      • Mobile Wallet
    • Versicherungen
      • In-App Payment
      • Mobile Belegerfassung
      • Smarter Einreichungsordner
    • Spacing column
  • Produkte
    • Spacing column
    • Menu image 2
    • Extrahieren
      • Gini Smart
      • Gini Smart OCR+
      • Gini Smart Mobile Input
    • Bezahlen
      • Gini Pay Connect
      • Fotoüberweisung
      • Gini Request-to-pay
    • Spacing column
  • Über uns
    • Spacing column
    • Menu image 3
    • Spacing column
    • Über Gini
      • Jobs
      • Blog
      • Presse
    • Spacing column
  • Entwickler
  • Kontakt
  • DE
  • EN
  • Lösungen
    • Banken
      • Bezahlen per Foto
      • Payment Initiierung
      • Mobile Wallet
    • Versicherungen
      • Mobile Belegerfassung
      • In-App Payment
      • Smarter Einreichungsordner
  • Produkte
    • Extrahieren
      • Gini Smart
      • Gini Smart OCR+
      • Gini Smart Mobile Input
    • Bezahlen
      • Gini Pay Connect
      • Fotoüberweisung
      • Gini Request-to-pay
  • Über uns
    • Über Gini
    • Jobs
    • Blog
    • Presse
  • Entwickler
  • Kontakt
  • DE
  • EN

Datenset mit künstlich generierten Daten vergrößern

Expanding our data set with generated data
Valentin Deyringer

Valentin Deyringer

Mai 22, 2018 • 

5,6 min read

Wie wir den Durst unserer KI nach Daten stillen

Gini nutzt KI-Systeme, um Informationen aus Dokumenten zu extrahieren. Eine Anwendung unserer KI-Technologie ist die Fotoüberweisung, die Rechnungen analysiert, um Felder wie IBAN, Zahlungsbetrag und Zahlungsempfänger für Überweisungen mit z.B. mobilen Banking-Apps automatisch zu füllen. Wir erweitern unsere Produktpalette auf andere Bereiche, was es erforderlich macht, zusätzliche Arten von Dokumenten zu verarbeiten und zusätzliche Arten von Informationen extrahieren.

Warum generierte Daten?

Zum Start unseres Systems haben wir unsere solide Basis an semantischen Regeln erweitert, um mit Gehaltsabrechnungen zu arbeiten, die Kerninformationen enthalten, die für Kreditanträge benötigt werden, wie das Gehalt des Antragstellers. Mit diesen Regeln erreicht unser System eine durchschnittliche Extraktionsgenauigkeit von etwa 78 %. Hier sind einige unserer Genauigkeitsraten für spezifische Extraktionen auf 168 Beispiel-Lohnzetteln:

  • Dokumentendatum: 87%
  • Geburtsdatum des Mitarbeiters: 90%
  • Name des Mitarbeiters: 88%
  • Name des Arbeitgebers: 37%
  • Auszahlungsbetrag: 85%
  • Sozialversicherungsnummer: 91%
  • Steuerklasse: 93%
  • Kinderfreibetrag: 81%

Informationen über den Arbeitgeber werden oft in kleinen Buchstaben geschrieben, wie man im folgenden Beispiel sehen kann.

Ein Ausschnitt aus einem generierten Dokument mit zufälligen Daten, die nicht mit einer realen Person in Verbindung gebracht werden

Besonders wenn ein Bild von geringer Qualität ist, ist es für unsere OCR-Engine schwer, dieses korrekt zu erkennen, was die niedrige Genauigkeit für den Arbeitgebernamen oben erklärt.

Abgesehen von solchen Ausreißern ist dies eine fundierte Basis, die allerdings unserem Streben nach Exzellenz (einer unserer Werte, siehe unser Handbuch, um mehr darüber zu erfahren) noch nicht ausreichend gerecht wird, und wir damit noch nicht zufrieden sind.

Darum entwickeln wir maschinelle Lernmodelle, die noch bessere Ergebnisse versprechen, ohne in der Zwischenzeit die Wartung unseres Produktionssystems zu vernachlässigen 😉.

 

.        .        .

 

Eine der größten Herausforderungen bei der Entwicklung von maschinellen Lernmodellen ist das Sammeln der Daten, mit denen die Modelle trainiert werden. Wir erhalten in unserem Produktionssystem zwar täglich viele Daten, allerdings enthalten diese Daten sensible personenbezogene Informationen, die wir nicht ohne weiteres für das Training verwenden können. Außerdem löschen wir alle Produktionsdaten nach 28 Tagen unwiederbringlich, um die Sicherheit der Daten zu gewährleisten. Diese Fluktuation stellt eine weitere Herausforderung dar. Zudem sind diese Daten nicht immer mit den tatsächlichen Werten (die sogenannte Ground Truth) versehen, was mühsam von Hand ergänzt werden muss, bevor sie für überwachte Lernansätze verwendet werden können.

Um diese Herausforderungen zu meistern und dennoch unseren Datensatz zu erweitern, haben wir uns entschieden künstliche Dokumente zu erzeugen. Das Scraping von Dokumenten aus dem Web erwies sich in diesem Bereich nicht praktikabel.

Zunächst legten wir die Anforderungen fest, die unsere Daten erfüllen müssen, damit wir sie für die Entwicklung unseres Systems verwenden können. Die von uns erzeugten Dokumente müssen

  • datenschutzkonform sein, d. h. keine sensiblen Daten enthalten, die mit realen Personen in Verbindung stehen (unsere Produkte befassen sich mit den Finanzen von Usern, daher geben wir hier besonders acht)
  • echte Daten in Bezug auf Layout, Inhalt und Bildqualität repräsentieren
  • Ground-Truth-Werte liefern, damit wir überwachtes Lernen durchführen können

Generierung von Inhalten

Im ersten Schritt müssen wir die eigentlichen Inhalte erstellen, die auf den Dokumenten stehen sollen. Zum Beispiel benötigen Gehaltsabrechnungen neben anderen Informationen die Namen und Adressen von Arbeitgeber und Arbeitnehmer. Um diese zu generieren, stellen wir Listen mit Vor- und Nachnamen sowie Straßennamen aus öffentlich zugänglichen Quellen wie Wikipedia zusammen. Durch das zufällige Mischen dieser Namen und die Anwendung einiger von Hand erstellter Regeln zur Diversifizierung der Schreibweisen (z. B. verschiedene Abkürzungen) erhalten wir alle Informationen, die zur Erzeugung erfundener Adressen benötigt werden.

Es werden numerische Werte wie Nettogehalt, Auszahlungsbetrag, Steuerabzüge und deren kumulierte Werte errechnet. Wir berechnen diese steuerrechtskonform unter Einbeziehung von Informationen über Steuerklasse, Versicherungszahlungen etc. – insgesamt generieren wir 95 Informationsfelder pro Gehaltsabrechnung.

Diese können wir in einem späteren Schritt durch entsprechende Transformationen in unser Ground-Truth-Format umwandeln. Damit ist die Forderung nach verfügbaren Ground-Truth-Werten erfüllt.

Dokumentenerstellung

Um Dokumente mit den zuvor generierten Inhalten zu erstellen, sammeln wir Gehaltsabrechnungen und entfernen alle vorhandenen Informationen mit grafischen Bearbeitungswerkzeugen, um leere Vorlagen zu erstellen. Dieser Schritt macht es unmöglich, personenbezogene Daten aus dem endgültigen Dokument abzurufen, so dass die generierten Dokumente mit unseren Datenschutzrichtlinien konform sind.

Für diese Vorlagen definieren wir die Positionen, an denen bestimmte Informationen platziert werden sollen. Das Ausfüllen der eigentlichen Informationen erfolgt über LaTeX, da es im Vergleich zu anderen Open-Source-Tools die besten Ergebnisse gezeigt hat.

Wir simulieren die Schriftarten der Originaldokumente, um die Ergebnisse realistisch aussehen zu lassen. Einige Abweichungen von echten Dokumenten sind jedoch von Vorteil, um die Vielfalt unseres Datensatzes zu erweitern. Wir gehen davon aus, dass diese Abweichungen für Aufgaben wie maschinelles Lernen sogar wünschenswert sind, da ähnliche Variationen auch in ungesehenen Dokumentenlayouts auftreten könnten.

Visuelle Diversifizierung

Die bisherigen Schritte ermöglichen es uns, bei Bedarf eine Vielzahl von Dokumenten im PDF-Format zu erzeugen. Echte Dokumente, die wir von Benutzern erhalten, sind jedoch oft gescannt oder mit einem Handy aufgenommen. Wir führen mehrere Schritte durch, um eine ähnliche visuelle Vielfalt zu simulieren.

  1. Zunächst wenden wir verschiedene Bildtransformationen an. Dazu gehören Unschärfeeffekte wie Bewegungsunschärfe und Verwischen.
  2. Dann wenden wir affine und perspektivische Transformationen an, um die Effekte zu simulieren, die bei der Verwendung einer Handkamera auftreten, wie z. B. Verwackeln.
  3. Anschließend wird ein Hintergrund von zufällig aus im Internet geladenen Bildern hinzugefügt (z. B. ein unordentlicher Schreibtisch).
  4. Zuletzt fügen wir zusätzliche Beleuchtungsvariationen zu unserem Bild hinzu, einschließlich Helligkeits- und räumliche Gamma-Variationen, um eine Lichtquelle wie ein Kamerablitz zu simulieren.

Unten siehst Du ein Beispiel für ein generiertes Dokument mit generierten Daten, sowie eine transformierte Variante davon.

Eine generierte Gehaltsabrechnung

 

Eine visuell manipulierte Variante der obigen Gehaltsabrechnung

 

Erste Ergebnisse

In einem vorläufigen Experiment erreichte das Trainieren eines Modells auf einem Datensatz mit ca. 20 % generierten Gehaltsabrechnungen eine um 2 % höhere Genauigkeit für eine extrahierte Information auf einem Testsatz von 199 Dokumenten im Vergleich zu einem Modell, das auf die gleiche Weise auf denselben Daten ohne generierte Dokumente trainiert wurde. Wir sind gespannt darauf, weitere Verbesserungen zu erzielen. In den kommenden Beiträgen werden wir genauer darauf eingehen, wie wir unsere Machine-Learning-Modelle entwickeln und wie wir sie in der Produktion einsetzen.

 

.        .        .

 

Wenn Du Spaß daran hast, Herausforderungen des Machine Learnings wie diese zu meistern, solltest Du Sie Dir unsere offenen Stellen ansehen. Wir sind immer auf der Suche nach exzellenten Entwicklern, die sich uns anschließen möchten!

Valentin Deyringer

Valentin Deyringer

interested in all aspects of NLP, fascinated by machine learning, Semantics Engineer @Gini

Weitere Posts

Wie wir bei Gini Binärbilder erzeugen

Wie wir bei Gini Binärbilder erzeugen

Sep, 26 2022
Wie wir OCR mit Deep Learning betreiben

Wie wir OCR mit Deep Learning betreiben

Jun, 22 2022
Wie wir das Vertrauen in unsere Datenextraktionen vorhersagen

Wie wir das Vertrauen in unsere Datenextraktionen vorhersagen

Mai, 29 2020
Certificates

Footer list slide 1

Über 10 Jahre am Markt

Rechenzentrum in Deutschland

Footer list slide 2

Einbindung per SDK

ISO 27001 zertifiziert

Footer list slide 3

Datenextraktion in Echtzeit

Verschlüsselter Datentransport

Footer list mobile slide 1

Über 10 Jahre am Markt

Rechenzentrum in Deutschland

Einbindung per SDK

Footer list mobile slide 2

ISO 27001 zertifiziert

Datenextraktion in Echtzeit

Verschlüsselter Datentransport

Lösungen

  • Banken
  • Versicherungen

Ressourcen

  • Input Channel
  • Entwicklerressourcen
  • Status

Unternehmen

  • Übersicht
  • Jobs
  • Blog
  • Presse
  • Gini Handbook

Rechtliches

  • Impressum
  • Datenschutz
  • Blog
  • Twitter
  • Kununu
  • YouTube
  • Github
  • LinkedIn

Kontakt

Vielen Dank!

Wie dürfen wir Dich ansprechen?

Damit wir uns auf unser erstes Gespräch mit Dir am besten vorbereiten können, verrate uns doch noch ein paar Details über dein Projekt:

Danke für deine Nachricht. Es wurde gesendet.
Beim Senden Ihrer Nachricht ist ein Fehler aufgetreten. Bitte versuchen Sie es später noch einmal.

Kontakt

Hi – wie können wir helfen?

Wie dürfen wir Dich ansprechen?

Damit wir uns auf unser erstes Gespräch mit Dir am besten vorbereiten können, verrate uns doch noch ein paar Details über dein Unternehmen:

Vielen Dank – deine Nachricht wurde gesendet.
Beim Senden der Nachricht ist ein Fehler aufgetreten – bitte versuche es später noch einmal.

Supportanfrage

Support ticket

Wie dürfen wir Dich ansprechen?

Bitte beschreibe uns dein Problem inklusive deiner Umgebung und der verwendeten Versionen.

Vielen Dank – deine Nachricht wurde gesendet.
Beim Senden der Nachricht ist ein Fehler aufgetreten – bitte versuche es später noch einmal.
Page load link
Nach oben