MyÚčto MyÚčto.cz Manuál
Stáhnout PDF Zpět na hlavní stránku

25. AI extrakce faktur

Přijaté i vydané faktury lze importovat z PDF pomocí AI extrakce. Extrakci provádí jeden ze čtyř podporovaných poskytovatelů AI (Anthropic Claude, Azure OpenAI, OpenAI nebo Google Gemini) — volbu a přihlašovací údaje nastavíš v § 25.7 Multi-provider AI brána. Tato kapitola dále popisuje kontrolu výsledků extrakce a automatiky, které doklad daňově připraví.

Při AI extrakci z PDF se po importu automaticky spustí sanity check: sečtou se řádky bez DPH a porovnají s celkovým základem daně, který AI přečetla z PDF „K úhradě". Pokud se hodnoty liší o víc než 2 %, faktura získá flag „Ke kontrole" a uživatel by měl řádky před zaúčtováním ověřit.

Indikátory v UI

Jak zrušit warning

Auto-upgrade modelu

Pokud levnější model (Haiku 4.5) vrátí slabý výsledek (vendor se shoduje s tenantem nebo součet řádků se výrazně liší od totalu), extractor automaticky zkusí znovu se silnějším modelem (Sonnet 4.6, ~4× dráž za extract). Pokud máš Sonnet/Opus jako default, retry se přeskočí.

Katastrofální mismatch — placeholder

Když ani silnější model nezvládne rozparsovat řádky (typicky komplexní multi-column servisní faktury) a součet řádků se liší od totalu o víc než 50 %, extractor:

  1. Zachová popisy řádků z AI extraktu (jsou obvykle správně)
  2. Vynuluje jejich qty a unit_price (0)
  3. Přidá první řádek KOREKCE s AI totalem z „K úhradě", aby seděl celkový součet faktury

Uživatel pak postupně doplní qty/cenu k jednotlivým řádkům a nakonec smaže korekční řádek.

Backfill existujících faktur

CLI skript php api/bin/recheck-ai-extracted-invoices.php projde přijaté faktury s PDF přílohou, re-spustí AI extrakci a porovná AI total s aktuálním DB totalem. Při rozdílu nad práh (default 2 %) zapíše varování:

php api/bin/recheck-ai-extracted-invoices.php                    # dry-run
php api/bin/recheck-ai-extracted-invoices.php --apply            # zápis
php api/bin/recheck-ai-extracted-invoices.php --supplier-id=1
php api/bin/recheck-ai-extracted-invoices.php --threshold=0.05

Dodavatel neplátce DPH

Při AI importu se ověří plátcovství dodavatele (ARES/VIES, případně signál z dokladu „DIČ: Neplátce DPH"). U neplátce se automaticky nastaví Bez nároku na odpočet, vynulují sazby a doplní varování — aby se neoprávněný odpočet nedostal do přiznání. Detail viz § 23.2.4.

Reverse charge ze zahraničí — automatika

Když extraktor detekuje reverse charge (zahraniční dodavatel + všechny řádky bez DPH), doklad automaticky daňově připraví:

Detail daňové logiky viz § 23.2.6.

25.7 Multi-provider AI brána (výběr poskytovatele)

AI extrakce neběží natvrdo nad jedním modelem — MyÚčto.cz nabízí AI bránu se čtyřmi poskytovateli, mezi kterými si každý dodavatel (tenant) vybere podle toho, co už používá, kde chce mít API klíč a jaké má požadavky na rezidenci dat:

Nastavení je per dodavatel (celá firma/tenant sdílí jednoho aktivního poskytovatele a jeho přihlašovací údaje, ne po jednotlivých uživatelích).

25.7.1 Kde se to nastavuje

Admin otevře Firma → AI nastavení (položka menu je viditelná jen adminům; vede na /admin/integrations?tab=ai). Pokud AI přihlašovací údaje ještě nejsou nastavené, sekce Nastavení AI extrakční brány je automaticky rozbalená; jakmile je aktivní poskytovatel nakonfigurovaný, sbalí se a nahoře zůstane jen zelené ✓ s jeho jménem (a případně štítek EU data residency).

V sekci nastavíš:

  1. Poskytovatele AI — přepínač se čtyřmi tlačítky (Anthropic / Azure OpenAI / OpenAI / Gemini), zelené ✓ u tlačítka znamená, že ten poskytovatel má už uložené přihlašovací údaje. Klik na tlačítko jen přepne, které přihlašovací údaje a model se dole zobrazí/upravují — neuloží to ještě aktivní volbu.
  2. Vynutit EU rezidenci dat (checkbox) a Region dat (EU/US) — viz § 25.7.2.
  3. Tlačítko Uložit nastavení brány — teprve tím se aktivní poskytovatel a EU volba zapíší k dodavateli a od té chvíle je používá i "Import přijatých" / drag&drop PDF na této stránce i AI import v Přijatých fakturách.

Pod tím je formulář Přihlašovací údaje — {poskytovatel}:

U nakonfigurovaného poskytovatele vidíš i počet dosud provedených extrakcí (počítadlo per poskytovatel, nezávislé na tom, jestli je zrovna aktivní) a jeho štítek rezidence (např. *„EU (Azure OpenAI)"*).

Poznámka

Pokud brána ještě není pro dodavatele vůbec nakonfigurovaná a uživatel se pokusí o AI import v Import přijatých, zobrazí se upozornění s odkazem přímo sem („→ AI nastavení").

25.7.2 EU rezidence dat — co to znamená a jak se vynucuje

Checkbox Vynutit EU rezidenci dat říká systému: *„tento dodavatel smí AI extrakci posílat jen na servery fyzicky v EU, nikdy do USA."* Hodí se pro firmy se zpřísněnými požadavky na GDPR/rezidenci dat (např. veřejná správa, citlivější obory, interní compliance politika).

Ne každý poskytovatel to ale umí stejně:

PoskytovatelEU-schopný?Jak se region určí
Azure OpenAIAnoPodle hostname Azure endpointu — pokud obsahuje token EU regionu (westeurope, swedencentral, germanywestcentral, northeurope, francecentral, norwayeast, switzerlandnorth, polandcentral, italynorth, spaincentral, uksouth, ukwest…), region = EU. Jinak platí deklarovaný region dodavatele, ale jen pro ověřený Azure host — neplatný/cizí host padá fail-closed na US.
OpenAIAnoJen když je Base URL nastaveno přesně na https://eu.api.openai.com (OpenAI project data residency). Cokoli jiného (včetně prázdného pole = výchozí api.openai.com) = US.
Anthropic ClaudeNe (v1)Přímé API v1 nabízí jen US region.
Google GeminiNe (v1)Přímé API (AI Studio) je jen US; EU by šlo jen přes Vertex AI regionální endpoint, což zatím nepodporujeme.

Pokud zaškrtneš Vynutit EU rezidenci dat u poskytovatele, který EU neumí (Anthropic, Gemini, nebo Azure/OpenAI se špatně nastaveným endpointem), tlačítko poskytovatele se v přepínači znepřístupní a pod přepínačem se zobrazí červené upozornění *„Vybraný poskytovatel/konfigurace nepodporuje EU rezidenci…"*. Volba Region dat: US je navíc v selectu zamčená, dokud je vynucení EU zapnuté.

Upozornění

Tohle není jen kosmetika ve formuláři. Server vynucuje stejné pravidlo fail-closed i nezávisle na UI — každé volání extrakce (i test připojení, i automatický upgrade na silnější model) si znovu ověří skutečný region podle konfigurace poskytovatele. Pokud by se dostal EU-required dodavatel přesto na non-EU endpoint, volání skončí chybou residency_conflict, žádná data se neodešlou a žádný cross-provider ani cross-tenant fallback se nekoná — buď proběhne extrakce ve správném regionu, nebo neproběhne vůbec.

25.7.3 Výběr modelu a chování shodné napříč poskytovateli

Ať zvolíš kteréhokoli poskytovatele, chování zbytku extrakce zůstává stejné — funkce popsané výše v této kapitole (sanity check, flag „Ke kontrole", auto- upgrade modelu, katastrofální mismatch/placeholder, kontrola plátcovství DPH, reverse charge automatika) fungují nad výsledkem libovolného aktivního poskytovatele, ne jen nad Anthropic:

25.7.4 Omezení a tipy

Tip

Nejsi si jistý, kterého poskytovatele zvolit? Anthropic Claude je výchozí a nejodladěnější volba (nativní čtení PDF, nejlepší přesnost na komplexních fakturách). Azure OpenAI zvol, pokud firma potřebuje EU rezidenci dat se smluvním zajištěním nebo už Azure OpenAI používá pro jiné účely.

25.8 AI import vydaných faktur

Cesta: Prodej → AI import. Položku vidí uživatel, který smí vytvářet vydané faktury.

Stránka přijímá PDF, obrázek, ISDOC nebo ISDOCX a vždy vytváří jen koncept vydané faktury. Pokud soubor obsahuje platný ISDOC, systém použije jeho strukturovaná data a AI vůbec nevolá. Teprve když strukturovaná data chybí, použije aktivního poskytovatele a model z § 25.7.

Z jednoho souboru systém vytěží odběratele, data dokladu, měnu, platební údaje a položky. Odběratele vyhledá nebo založí, vytvoří koncept stejnou interní cestou jako ruční editor a přepočítá jeho součty. Číslo z dokladu převezme jen tehdy, pokud v aktuální firmě nekoliduje; jinak dostane koncept nové číslo až při vystavení. U ISDOC navíc ověří, že dodavatelem je aktuálně zvolená firma. Existující ISDOC se stejným variabilním symbolem vrátí jako duplicita místo založení druhé faktury.

Po úspěchu klikni na odkaz do editoru a ověř zejména odběratele, typ dokladu, DUZP, splatnost, režim cen s/bez DPH, sazby a text položek. Import sám fakturu nevystaví, neodešle a nezaúčtuje.

Při přetažení více souborů vznikne dávka. Zpracovává se postupně po jednom, aby nepřetížila limit poskytovatele; u každého řádku je samostatný výsledek a odkaz na vytvořený koncept. Pro jednotlivý import i dávku lze dočasně vybrat jiný model z whitelistu aktivního poskytovatele. Maximální velikost jednoho uploadu je 32 MiB; konkrétní poskytovatel může mít nižší limit uvedený v § 25.7.3.

Výsledek nese zdroj (ISDOC, AI nebo duplicita), poskytovatele, model, region a případně spotřebu tokenů. Tyto údaje se spolu s názvem a velikostí souboru zapisují do activity logu; samotné přihlašovací údaje ani obsah dokladu se do něj nezapisují.