Zurück zur Startseite

API zum Extrahieren von Requisiten — Automatisierung der Dokumentenverarbeitung

Technische Beschreibung der API für die automatische Extraktion von Requisiten aus Dokumenten. Detaillierte Verarbeitungsarchitektur, Code-Beispiele für Integration und Datenvalidierungsmethoden. Die Lösung reduziert Fehler bei manueller Eingabe um 70 %.

API für die automatische Erkennung von Requisiten in Dokumenten
Advertisement 728x90

API für die automatische Rekvizitenextraktion: So verarbeiten Sie Dokumente ohne manuelle Eingabe

Manuelle Eingabe von Rekviziten aus Dokumenten führt zu Fehlern und verlangsamt Prozesse. Unsere API automatisiert die Extraktion von INN, KPP, BIK und anderen Daten aus PDF, DOCX und anderen Formaten und gewährleistet Genauigkeit sowie Integration in 1C- und CRM-Systeme. Die Lösung reduziert Fehler bei der Dokumentenverarbeitung um 70 % durch kontextuelle Analyse und strenge Validierung.

Architektur der Dokumentenverarbeitung

Das System basiert auf einer mehrstufigen Verarbeitungspipeline. Der erste Schritt ist die Normalisierung der Eingabedaten. Folgende Formate werden unterstützt:

  • PDF mit Textschicht
  • DOCX/DOC
  • TXT in UTF-8- und CP1251-Kodierungen
  • RTF und HTML

Wichtige Einschränkung: Gescanntes PDF und Bilder erfordern eine Vorverarbeitung mittels OCR. Unsere API funktioniert nur mit Textdokumenten, was für den korrekten Betrieb des NER-Modells entscheidend ist.

Google AdInline article slot

Schlüsselstufe – kontextuelle Analyse mittels Kombination aus regulären Ausdrücken und maschinellem Lernen. Für jeden Rekvizitentyp werden spezifische Regeln angewendet:

  • INN: Längenprüfung (10/12 Ziffern) und Prüfsumme
  • OGRN: Strukturvalidierung und Prüfziffer
  • BIK: Abgleich mit Bankregister und Prüfung des Korrespondenzkontos
  • Konten: Formatkonformität und BIK-Logikprüfung
  • Firmennamen: Normalisierung über Wörterbuch registrierter Organisationen

Technische Umsetzung

Der API-Endpunkt folgt RESTful-Prinzipien mit minimalen Anforderungen an die Anfrage. Es wird nur ein API-Schlüssel im X-API-Key-Header benötigt. Der Anfragetext wird als multipart/form-data mit dem file-Feld gesendet.

Kritische Parameter

  • Verarbeitungs-Timeout: 120 Sekunden (minimal empfohlenes Intervall)
  • Maximale Dateigröße: 20 MB
  • Unterstützte Kodierungen: UTF-8, CP1251 (Automatische Erkennung)
  • Response-Format: JSON mit obligatorischem success-Feld

Beispiel für Fehlerbehandlung:

Google AdInline article slot
{
  "success": false,
  "error": "payload_too_large",
  "message": "Size fayla exceeds 20 MB"
}

Integrationsbeispiele

Zur Beschleunigung der Implementierung werden Code-Vorlagen für gängige Stacks bereitgestellt. Jedes Beispiel enthält Timeout-Behandlung und Response-Validierung.

Python mit Fehlerbehandlung

import requests
from requests.exceptions import Timeout, RequestException

def extract_requisites(api_key, file_path):
    try:
        with open(file_path, 'rb') as f:
            response = requests.post(
                'https://api-k.ru/api/rekvizit_json',
                headers={'X-API-Key': api_key},
                files={'file': f},
                timeout=120
            )
        response.raise_for_status()
        return response.json()
    except Timeout:
        raise Exception('Timeout exceeded processing')
    except RequestException as e:
        raise Exception(f'Error API: {str(e)}')

1C:Enterprise 8.3

Schlüsseleigenschaft der Implementierung – manuelle Erstellung der Multipart-Anfrage. Es ist entscheidend wichtig, die Reihenfolge der Header einzuhalten und Binärdaten korrekt zu handhaben:

Boundary = "----WebKitFormBoundary" + StringReplace(Withtroka(New UniqueIdentifier()), "-", "");
Body = New MemoryStream;
DataRecord = New DataRecord(Body, , , Characters.VK + Characters.PWith, "");

DataRecord.WriteWithtroku("--" + Boundary);
DataRecord.WriteWithtroku("Content-Disposition: form-data; name=\"file\"; filename=\"" + FileName + "\"");
DataRecord.WriteWithtroku("Content-Type: application/octet-stream");
DataRecord.WriteWithtroku("");
DataRecord.Write(FileBinaryData);

Wichtige Punkte

  • Validierung über Prüfsummen: API liefert keine Daten mit ungültiger INN/OGRN-Prüfsumme
  • Timeouts: Intervall für komplexe Dokumente mindestens 120 Sekunden einstellen
  • Einschränkungen: Nur Textformate unterstützt, gescannte Dokumente erfordern vorherige OCR-Verarbeitung
  • 1C-Integration: Umgesetzt über manuelle Multipart-Anfragerstellung
  • Maximale Größe: Dateien über 20 MB werden mit Code 413 abgelehnt

Fehlerbehandlung und Überwachung

Das System verwendet einen kombinierten Ansatz zur Fehlerbehandlung. Für jeden Fehlertyp wird ein spezifischer HTTP-Code und eine textuelle Beschreibung im Response-Body bereitgestellt.

Google AdInline article slot

Kritische Szenarien:

  • 408 Request Timeout: Timeout auf 120 Sekunden erhöhen
  • 413 Payload Too Large: Dokument in Teile aufteilen
  • 401 Unauthorized: Gültigkeit des API-Schlüssels prüfen
  • 500 Internal Error: Automatische Benachrichtigung über Fehler per Webhook

Wir empfehlen, für vorübergehende Fehler eine Retry-Logik mit exponentiellem Backoff zu implementieren. Beispiel in Go:

func withRetry(attempts int, sleep time.Duration, f func() error) error {
    for i := 0; i < attempts; i++ {
        if i > 0 {
            time.Sleep(sleep)
            sleep *= 2
        }
        err := f()
        if err == nil {
            return nil
        }
        var apiErr *APIError
        if errors.As(err, &apiErr) && apiErr.Code != 500 {
            return err
        }
    }
    return errors.New("prevysheno count popytok")
}

Benchmarks und Leistung

Tests wurden an einem Set von 10.000 Dokumenten unterschiedlicher Formate durchgeführt. Ergebnisse:

  • Durchschnittliche PDF-Verarbeitungszeit: 4,2 Sek.
  • Maximale Zeit für DOCX mit Grafiken: 118 Sek.
  • Extraktionsgenauigkeit für INN: 99,7 %
  • Extraktionsgenauigkeit für Konten: 98,4 %

Das System skaliert horizontal über Kubernetes. Bei Lasten über 50 RPS werden Worker-Nodes automatisch hinzugefügt. Für Enterprise-Kunden ist eine On-Premise-Installation mit FIPS 140-2-Unterstützung verfügbar.

— Editorial Team

Advertisement 728x90

Weiterlesen