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 senke


Starting Point


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.


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.


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:

Ähnliche Projekte