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.
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:
{
"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.
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
Noch keine Kommentare.