Rechnungserkennung und Textextraktion – Systembeschreibung

Schritte des gemeinsamen Erkennungsprozesses, Sammel-Einreihung, die zwei Hintergrundaufgaben (Erkennung, PDF-Text) und die Rechte der Text-Endpunkte.

Die Rechnungserkennung läuft über einen gemeinsamen Einstiegspunkt (Erkennungsbibliothek run()), manuell für ein Dokument oder als Hintergrundaufgabe für viele. Eine neue Rechnung entsteht ausschließlich über die Methode addInvoice() des Finanzmoduls.

Datenmodell

Die Tabellennamen tragen in der Datenbank das eigene Präfix der Installation.

TabelleRolle
docrecog_status, recog_note, content_text, text_status
doc_linkVerknüpfung Dokument ↔ Rechnung (Typ invoice_image)
invoicedie erkannte Rechnung (mit Positionen, über das Finanzmodell)
companyErgänzung von Partnerdaten
cron_queueAufgaben doc_recognise, doc_text

Erkennungsschritte

  1. Bereichsprüfung; Zusammenführen früherer Kopien derselben Datei.
  2. Existiert eine verknüpfte Rechnung, entsteht keine neue (beim technischen Kunden nur Kundentausch, bei verknüpfter Rechnung Ergänzung).
  3. Text: Textebene → lokales OCR → bei Bedarf ein kostenpflichtiges Sprachmodell; Proforma-Erkennung (wird keine Rechnung); Rechnungs-Vorprüfung.
  4. Auslesen; wenn vollständig (verified): Zuordnung zu einer bestehenden oder neue Rechnung über finance/invoice::addInvoice(), doc_link + Typ invoice_image, Partnerdatenergänzung, Abgleich von Spiegelrechnungen.
  5. Ergebnis: strukturierte Antwort (Status, doc_id, invoice_id, Änderungen), Protokoll, setRecogResult am Dokument.

Hintergrundaufgaben

  • bulkrecognise: max. 2000 Dokumente; fehlende, im Papierkorb liegende oder bereichsfremde werden übersprungen (protokolliert); je Unternehmen eine Erkennungszeile (queueRecognition) und eine Aufgabe doc_recognise mit der Liste doc_ids.
  • doc_recognise (einmalig, je Unternehmen): Stapel zu 25 im Zeitbudget, das gemeinsame run() im eingeschränkten Systemkontext (nur Dokumente des Unternehmens der Aufgabe, ohne Löschen, mit classify-Vorfilter); Erfolg ins Systemprotokoll, Fehler ins Fehlerprotokoll; Benachrichtigung am Ende eines Sammellaufs.
  • doc_text (einmalig, je Dokument; vom Upload eingereiht): lädt die PDF lokal oder aus Drive, extrahiert mit einem PDF-Parser, speichert in content_text; text_status 1 = extrahiert, 2 = kein extrahierbarer Text; die temporäre Datei wird gelöscht.

Text-Endpunkte

  • extracttext: ein oder mehrere Dokumente (der Client sendet in Stapeln); textOf() → saveExtractedText(); Zählwerte in counts.
  • textcontent: der gespeicherte Text; aussagekräftige Meldung bei JSON-Kodierungsfehlern; ohne Recht ist das Abzeichen nur eine Beschriftung.

Berechtigungen

  • recogniseinvoice (UNMAPPED) + Core modify; gesammelt canBulkAction(recogniseinvoice).
  • Die Bibliothek erhält vom Aufrufer: Bereichsunternehmen, document delete, finance/invoice repoint und statusdelete (Neuaufbau), company/company edit.
  • textextract (nicht im Katalog), gesammelt canBulkAction(textextract); textview (BASE); Bereich je Dokument.
  • Voraussetzung: OCR- und Sprachmodell-Einstellungen für das kostenpflichtige Auslesen.