Automatische Überprüfung von Nebenkosten­abrechnungen

Unsere Software schützt Mieter vor überhöhten Nebenkosten­abrechnungen.

Input:Eingescannte Dokumente
Output:    Gültigkeit der einzelnen Kostenpunkte
Ziel:Kosten der Gültigkeitsprüfung senken

Auf einen Blick

10 Sekunden
für eine vollständige Überprüfung
88-95% Genauigkeit
in den einzelnen Aufgaben

Ausgangspunkt

Unser Kunde ist ein Online-Mieterschutzclub, der seinen Kunden die Expertise von Mietrechtsanwälten zur Verfügung stellt. Viele Kundenanfragen betreffen die Gültigkeit von Nebenkostenabrechnungen.

Diese können aus verschiedenen Gründen ungültig sein:

  • Materielle Fehler:

    • Kostenpositionen nicht auf Mieter umlegbar

    • Kosten unverhältnismäßig hoch

    • Verteilerschlüssel unzulässig

    • ...

  • Formelle Fehler:

    • Rechnungsstellung nicht fristgerecht

    • Falscher Abrechnungszeitraum

    • Aufstellung und Umlage der Kosten nicht nachvollziehbar

Bisher werden alle eingehenden Nebenkostenabrechnungen manuell von Mietrechtsexperten geprüft, was zeitaufwendig und entsprechend kostenintensiv ist. 

Ziel des Projektes war die Entwicklung einer KI-gestützten Software, welche Nebenkostenabrechnungen automatisch auf diese Fehler prüft.

Nicht alle Kosten dürfen auf die Mieter umgelegt werden

Nicht alle Kosten dürfen auf die Mieter umgelegt werden

Herausforderungen

  • Die Prüfung soll live erfolgen, d.h. sie darf nur wenige Sekunden dauern.

  • Die Ausgangsdaten sind von Kunden hochgeladene, zumeist eingescannte Dokumente. Daher muss die Software robust gegenüber schlechter Scanqualität sein.

  • Die Ergebnisse müssen interpretierbar und transparent sein, um gegebenenfalls durch einen Anwalt nachgeprüft werden zu können.

  • Die Logik der Prüfungen soll an potenzielle zukünftige rechtliche Änderungen anpassbar sein.

Lösung

Für die Entwicklung der Algorithmen haben wir Methoden aus den Bereichen Natural Language Processing und Computer Vision kombiniert und unter anderem auf folgende Methoden gesetzt:

  • OCR (automatische Zeichenerkennung)

  • Fuzzy-String-Suche

  • Feature-Engineering

  • Neuronale Netze (R-CNN)

  • Reguläre Ausdrücke

Die entwickelte Software überprüft eine dreiseitige Nebenkostenabrechnung in ca. 10 Sekunden und erreicht für die Überprüfungen der verschiedenen Fehlertypen Genauigkeiten von 88-95%. Sie liegt damit auf dem Niveau der Performance eines Mietrechtsexperten.

Wolf Winkler

Principal Consultant - AI, Automation and Digital Innovation

wolf.winkler@dida.do

Technische Details

Tabellenextraktion

In nahezu allen Nebenkostenabrechnungen ist ein Großteil der relevanten Informationen in einer Tabelle zusammengefasst. Die Erkennung und Extraktion dieser Tabelle ist essentiell für viele Prüfungsschritte.

Da die Performance bestehender kommerzieller und Open-Source-Lösungen zur Tabellenextraktion in Tests nicht ausreichend war (nur 60-70% der Tabellen wurden korrekt erkannt), haben wir uns zu einer Eigenentwicklung entschlossen:

  1. Wir nutzen ein CascadeTabNet, um Bereiche des Dokuments zu identifizieren, in denen sich Tabellen befinden. Diese Identifikation vollzieht sich ausschließlich auf der Bildebene.

  2. Anschließend analysieren wir innerhalb dieser Bereiche die Positionen der Zeichenketten und ihre relative Anordnung zueinander, um Spalten und Reihen der Tabellen zu erkennen und ihren Inhalt strukturiert auslesen zu können.

Mithilfe dieses Ansatzes konnten wir die Genauigkeit der Tabellenerkennung auf 93% steigern.

Überprüfung der Kostenpositionen

Auf Grundlage der extrahierten Tabelle lassen sich aufgeführten Kostenpositionen auslesen und bewerten. Bewertet wird, ob sie tatsächlich auf die Mieter umlegbar sind.

Aufgrund der oftmals schlechten Qualität der hochgeladenen Dokumente haben wir uns für einen Ansatz entschieden, der robust gegenüber OCR-Fehlern ist: Die einzelnen Kostenpositionen werden als Zeichenketten mit Listen

  1. bekannter zulässiger und  

  2. bekannter unzulässiger Positionen verglichen.

Der Vergleich erfolgt über eine Fuzzy-String-Suche, welche für ein Paar zu vergleichender Zeichenketten einen Ähnlichkeitswert ausgibt:

>>> fuzz.ratio("cable fees", "cable fees") -> 100 
>>> fuzz.ratio("cable fees", "cable/TV fees") -> 87
>>> fuzz.ratio("cable fees", "property tax") -> 18


Da es eine Vielzahl unterschiedlicher Algorithmen für die Fuzzy-String-Suche gibt (die unterschiedlichen Definitionen der Ähnlichkeit von Zeichenketten entsprechen), haben wir einen Machine-Learning-Classifier trainiert, um mehrere Ähnlichkeitswerte zu berücksichtigen und zu gewichten. Auf Basis der zugehörigen Ähnlichkeitswerte trifft der Classifier eine Einschätzung, ob eine gegebene Position umlegbar ist oder nicht:

KI-News jedes Quartal

Erhalten Sie Nachrichten über Machine Learning und Neuigkeiten rund um dida.

Erfolgreich angemeldet.

Gültige Email-Adresse benötigt.

Email-Adresse bereits registriert.

Etwas ist schiefgelaufen. Bitte versuchen Sie es nochmal.

Mit dem Klick auf "Anmelden" erklären Sie sich mit unserer Datenschutzerklärung einverstanden.

dida Logo