Zpět na domů

API pro extrakci rekvizit — automatizace zpracování dokumentů

Technický popis API pro automatickou extrakci rekvizit z dokumentů. Podrobná architektura zpracování, příklady kódu pro integraci a metody validace dat. Řešení snižuje chyby při ručním zadávání o 70 %.

API pro automatické rozpoznávání rekvizit v dokumentech
Advertisement 728x90

API pro automatické extrahování rekvizit: jak zpracovávat dokumenty bez ručního zadávání

Ruční zadávání rekvizit z dokumentů vede k chybám a zpomaluje procesy. Naše API automatizuje extrakci INN, KPP, BIK a dalších údajů z PDF, DOCX a dalších formátů, zajišťuje přesnost a integraci s 1C a CRM-systémy. Řešení snižuje počet chyb při zpracování dokumentů o 70 % díky kontextové analýze a přísné validaci.

Architektura zpracování dokumentů

Systém je postavený kolem vícestupňového konvejéru zpracování. První etapa – normalizace vstupních dat. Jsou podporovány následující formáty:

  • PDF s textovou vrstvou
  • DOCX/DOC
  • TXT v kódováních UTF-8 a CP1251
  • RTF a HTML

Důležité omezení: naskenované PDF a obrázky vyžadují předchozí zpracování prostřednictvím OCR. Naše API pracuje pouze s textovými dokumenty, což je klíčové pro správnou funkci NER-modelu.

Google AdInline article slot

Klíčová etapa – kontextová analýza s využitím kombinace regulárních výrazů a strojového učení. Pro každý typ rekvizity se aplikují specifická pravidla:

  • INN: kontrola délky (10/12 číslic) a kontrolní součtu
  • OGRN: validace struktury a digitálního podpisu
  • BIK: shoda s bankovním rejstříkem a kontrola korespondenčního účtu
  • Výpočetní účty: kontrola shody s formátem a logikou BIK
  • Právní názvy: normalizace prostřednictvím slovníku registrovaných organizací

Technická realizace

Endpoint API je postavený na RESTful principech s minimálními požadavky na požadavek. Pro práci je nutný pouze API-klíč v hlavičce X-API-Key. Tělo požadavku se předává jako multipart/form-data s polem file.

Kritické parametry

  • Timeout zpracování: 120 sekund (minimální doporučený interval)
  • Maximální velikost souboru: 20 MB
  • Podporovaná kódování: UTF-8, CP1251 (autodetekce)
  • Formát odpovědi: JSON s povinným polem success

Příklad zpracování chyb:

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

Integrační příklady

Pro urychlení implementace jsou připravené šablony kódu pro hlavní stacky. Každý příklad zahrnuje zpracování timeoutů a validaci odpovědi.

Python se zpracováním chyb

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

Peculiarita implementace – ruční tvorba multipart požadavku. Klíčové je dodržet pořadí hlaviček a správně zpracovat binární data:

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);

Co je důležité

  • Validace prostřednictvím kontrolních součtů: API nevrací data s nesprávným kontrolním součtem INN/OGRN
  • Timeouty: Nastavte interval ne méně než 120 sekund pro zpracování složitých dokumentů
  • Omezení: Podporovány pouze textové formáty, naskenované dokumenty vyžadují předchozí OCR zpracování
  • Integrace s 1C: Realizováno prostřednictvím ruční tvorby multipart požadavků
  • Maximální velikost: Soubory nad 20 MB jsou odmítnuty s kódem 413

Zpracování chyb a monitorování

Systém využívá kombinovaný přístup k zpracování selhání. Pro každý typ chyby je předviden specifický HTTP kód a textový popis v těle odpovědi.

Google AdInline article slot

Kritické scénáře:

  • 408 Request Timeout: Zvyšte timeout na 120 sekund
  • 413 Payload Too Large: Rozdělte dokument na části
  • 401 Unauthorized: Zkontrolujte správnost API-klíče
  • 500 Internal Error: Automaticky upozorňujeme na selhání prostřednictvím webhooku

Doporučujeme implementovat retry logiku s exponenciálním zpožděním pro dočasné chyby. Příklad v 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")
}

Benchmarky a výkon

Testování probíhalo na sadě z 10 000 dokumentů různých formátů. Výsledky:

  • Průměrný čas zpracování PDF: 4,2 s
  • Maximální čas pro DOCX s grafikou: 118 s
  • Přesnost extrakce INN: 99,7 %
  • Přesnost extrakce výpočetních účtů: 98,4 %

Systém se škáluje horizontálně prostřednictvím Kubernetes. Při zátěži nad 50 RPS se automaticky přidávají worker-nody. Pro enterprise-klienty je dostupná on-premise instalace s podporou FIPS 140-2.

— Editorial Team

Advertisement 728x90

Číst dál