Extraktion von Jahresabschlüssen
Wandelt Berichts-PDFs in geprüfte Fakten um: financial_fact(document, period, label, scope, value, unit, audit status).
Entwickelt und erprobt an zwei Jahren von Einreichungen der Colombo Stock Exchange (2.707 Berichte, 720.000 Zahlen, 99,4 % vollständig geladen).
Die Methode ist der Schlüssel zur Geschwindigkeit: Ein automatischer Parser erledigt die meisten Berichte, arithmetische Prüfungen entscheiden, was vertrauenswürdig ist, ein
Triage-Schritt sagt genau, warum jeder verbleibende Bericht fehlgeschlagen ist, und nur diese Berichte werden bildbasiert in Batches von Unter-Agenten gelesen. Jede Änderung erreicht die veröffentlichte Datenbank nur über einen gestaffelten Lade- und Prüfprozess.
Die eine Regel, auf der alles beruht
Eine Zahl wird nur geladen, wenn ihre Spalte die arithmetischen Prüfungen besteht (Aktiva = Eigenkapital + Verbindlichkeiten; Gewinn vor Steuern - Steuern = Gewinn; Eigentümer + Anteile ohne Beherrschung = Gewinn; Cashflow-Abschnitte summieren sich zur Nettoveränderung; Anfangsbestand + Veränderung = Endbestand). Es wird nichts angepasst, um eine Prüfung zu bestehen. Prüfungen erlauben nur den ausgedruckten Rundungsfehler (einige Einheiten der letzten gedruckten Ziffer: 2 für zwei Terme, 3 für drei, 5 für mehr), sodass eine Summe, die 1-2 Einheiten von ihren Teilen abweicht, bestanden wird und eine größere Abweichung ein Lese- oder Druckfehler ist. Aus diesem Grund können ein Parser, eine OCR-Engine, eine Bildtranskription und ein Mensch dieselbe Datenbank speisen: Die Prüfungen, nicht die Quelle, entscheiden. Wenn eine Prüfung fehlschlägt, ist entweder die Lesung falsch (erneut lesen) oder der Druck falsch (Grund dokumentieren, weglassen).
In der Praxis wichtige Folgerungen:
- Beschriftungen bleiben exakt wie gedruckt und werden nur durch exakte Aliasse (
label_alias) auf Standardpositionen abgebildet, niemals durch unscharfe Übereinstimmung. Eine falsch gedruckte Beschriftung macht einen Bericht unladbar, anstatt stillschweigend falsch zu sein. - Eine Summe ohne Beschriftung kann eine geklammerte Beschriftung erhalten (
[Summe Aktiva]), weil ihre Position sie definiert. - „UNCHECKED