Vytěžování dokladů a dalších dat v ESO9 Start pomocí AI
Vytěžování dokladů a dalších dat v ESO9 Start pomocí AI
V ESO9 Start je k dispozici řešení pro vytěžování libovolných dat z PDF nebo obrázků bez integrace vytěžovacích nástrojů 3.stran (např.wFlow). Typicky jej lze využít pro vytěžování a zakládání dokladů libovolných typů, ale i pro vytěžování dat z obrázků (např. fotografií produktů).
Základní mechanismus vytěžení dat
Vytěžování je v ESO9 Start zapojeno jako běžná akce na tlačítko. Základním vstupem je vytěžovaný dokument v DMS; může se jednat o PDF nebo obrázek. Akce na tlačítko provede vytěžení zadaného dokumentu, jehož výstupem jsou získaná data ve formátu JSON. Tato data jsou následně poslána na vstup uživatelské stored procedury, která je zpracuje - např. z nich založí doklad.
Celé řešení sestává z akce na tlačítko, která volá webovou službu pro spolupráci s AI (ESO9AIsvc).
Webová služba ESO9AIsvc
Vytěžování v ESO9 Start je založeno na enginu Open AI a Azure AI Document Intelligence a je součástí stejné webové služby, jako AI asistent a online Podpora. Instalace a konfigurace této služby je proto stejná, jako v případě AI asistenta (tj. může běžet jako web v Internet Information Services pod Windows nebo v Linuxovém Docker kontejneru.
Uživatelská akce pro vytěžení dat
Komunikaci ESO9 s webovou službou zprostředkovává knihovna ExtractDataAI.dll, která je součástí instalace aplikačního serveru. Knihovna se volá z libovolného formuláře ESO9 jako běžná akce na tlačítko se syntaxí:
<input type="button" name="Actx_ExtractDataAI.ExtractData" value="Vytěž PDF dokument" BrwAction="10">
Akce pro své spuštění potřebuje tyto parametry z datového zdroje stránky:
- DOKUMENTFILEGUID - FileGUID (identifikátor) vytěžovaného dokumentu z DMS ESO9
- MF_EXTRACT_STORED_PROCEDURE - jméno stored procedury použité pro zpracování vytěžených dat (např. založení dokladu)
- MF_EXTRACT_TYPE - typ vytěžovaných dat:
- 1 = PDF dokument (faktura, objednávka, skladový doklad,...) vytěžovaný přes OpenAI
- 2 = obrázek vytěžovaný přes OpenAI
- 3 = PDF dokument (faktura, objednávka, skladový doklad,...) vytěžovaný přes Azure AI Document Intelligence
- 4 = PDF dokument s účtenkou vytěžovaný přes Azure AI Document Intelligence
- 5 = PDF dokument (faktura, objednávka, skladový doklad,...) vytěžený OCR přes Azure AI Document Intelligence a následně analyzovaný přes OpenAI Výstupní parametry akce jsou:
- MF_TABLENAME_CREATED a MF_IDTABLE_CREATED - jméno tabulky a ID záznamu, který vznikl jako výsledek zpracování vytěžených dat. Položky lze ve formuláři použít k sestavení odkazu na nově založenou entitu (např. doklad).
- CIS_DOK - v případě, že se jedná o vytěžování a zakládání dokladů, akce vrací číslo nově založeného dokladu.
- SLOZKA_IDENT - v případě, že se jedná o vytěžování a zakládání složek dokladů, akce vrací identifikátor zkoží nebo služby na nově vzniklé složce dokladu.
Stored procedura pro zpracování vytěžených dat
Vytěžená data ve formátu JSON jsou zaslána na vstup stored procedury předané do akce v parametru MF_EXTRACT_STORED_PROCEDURE.
Procedura očekává tyto vstupní parametry:
- @ExtractedJson NVARCHAR(MAX) - vytěžená data ve formátu JSON. Konkrétní struktura závisí na zadaném promptu, viz níže.
- @IdDokument INT - ID vytěžovaného dokumentu. Slouží pro propojení vytěžených dat (která se také ukládají do DMS jako soubor) ze zdrojovým dokumentem (PDF nebo obrázek).
- @IDLOGUSER INT - ID uživatele, pod nímž se zakládají záznamy z vytěžených dat (např. doklady).
- @TABLENAME VARCHAR(128) - výstupní parametr s názvem tabulky, ve které se založil nový záznam. V případě vytěžování dokladů se jedná o tabulku "HDOK".
- @IDTABLE INT - výstupní parametr, ve kterém je k dispozici ID nově založeného záznamu. Položky @TABLENAME a @IDTABLE jsou zároveň ve výstupním recordsetu, který je výsledkem volání procedury.
V ESO9 Start jsou k dispozici tyto dvě procedury pro zpracování vytěžených dat a založení dokladu prodejní objednávky:
- spAIPDF_ExtractedOrder2ESO9 - procedura pro založení dokladu z dat vytěžených OpenAI
- spAzurAIPDF_ExtractedOrder2ESO9 - procedura pro založení dokladu z dat vytěžených Azure AI Document Intelligence
Prompt pro vytěžení dat
Při vytěžování dat je klíčový správně zadaný prompt, který se používá na vstupu požadavku na AI. Pro každý typ vytěžovaných dat se hodí jiné zadání. V rámci ESO9 Start se pro získání promptu používá položka //POPIS_TYPDOC// z číselníku typů dokumentů. Každý vytěžovaný dokument tedy musí mít předem zadán svůj typ a podle něj se při vytěžování použije správný prompt. V ESO9 Start je jako ukázka zadaný prompt pro vytěžení objednávek:
Jsi expert na analýzu obchodních dokumentů.
Budeš zpracovávat více dokumentů v sérii. Pro každý dokument:
- Extrahuj VŠECHNA strukturovaná data a vrať je ve formátu JSON
- Zachyť kompletní informace včetně všech subjektů, adres, položek, částek
- Použij popisné názvy polí
- NEVYMÝŠLEJ žádná data - pouze to, co je v dokumentu
- JE POVOLENO přiřazovat texty k položkám podle jejich vizuální blízkosti a pořadí
- Vrať pouze validní JSON bez markdown formátování
- MUSÍŠ vrátit ÚPLNÝ JSON se VŠEMI položkami z dokumentu!
- NEzkracuj seznam položek
- Vždy vypíš kompletní pole "items" se všemi řádky z dokumentu
Vrať přesně tento JSON tvar:
{
"ExtractedJson": {
"document_type": null,
"order_number": null,
"document_series": null,
"document_code": null,
"document_number": null,
"issue_date": null,
"requested_delivery_date": null,
"payment_terms_days": null,
"payment_method": null,
"incoterms": null,
"purpose_of_delivery": null,
"contract_number": null,
"project_code": null,
"buyer": {
"name": null,
"company_id": null,
"vat_id": null,
"address": {
"street": null,
"postal_code": null,
"city": null,
"country": null
}
},
"supplier": {
"name": null,
"company_id": null,
"vat_id": null,
"address": {
"street": null,
"postal_code": null,
"city": null,
"country": null
}
},
"delivery_address": {
"name": null,
"street": null,
"postal_code": null,
"city": null,
"country": null
},
"items": [
{
"line_number": null,
"item_code": null,
"description": null,
"order_reference": null,
"project_code": null,
"quantity": null,
"unit": null,
"unit_price": null,
"vat_rate": null,
"line_total_ex_vat": null,
"line_total_vat": null,
"line_total_inc_vat": null
}
],
"totals": {
"currency": null,
"total_ex_vat": null,
"total_vat": null,
"total_inc_vat": null
},
"prepared_by": null,
"notes": []
}
}
Podmínky pro extrakci:
- Pokud pole v dokumentu není, vrať null nebo [] podle typu
- company_id a vat_id vrať vždy jako string
- unit ponech v původním tvaru z dokumentu
- payment_method ponech jako text z dokumentu, nenormalizuj na ERP hodnoty
- Pokud je položka víceřádková, spoj popis do jednoho stringu
- Texty umístěné bezprostředně POD řádkem položky (např. na dalším řádku)
považuj za součást této položky
- Pokud položka nemá description, použij nejbližší text pod ní
- Pokud je více řádků textu mezi dvěma položkami, patří k první z nich
- U položek bez popisu použij nejbližší textový blok pod nimi
- Text mezi dvěma položkami patří k předchozí položce, pokud není zjevně jinak
- buyer = objednavatel / odběratel / kupující
- supplier = dodavatel / prodávající
- delivery_address vyplň jen pokud je z dokumentu zjevná
- notes musí být pole čistých textových řetězců bez markdownu, bez odkazů a bez formátování
- Emaily, telefony a kontakty vracej jako plain text
- Pokud je dokument obchodně purchase order / objednávka, nastav document_type na "objednavka"
- order_number musí obsahovat pouze hlavní číslo objednávky, ne doprovodný text, ne účel dodávky, ne název projektu
- Pokud je v jednom řádku například "Objednávka: ESCO 26/33 Nábytok", pak:
- order_number = "ESCO 26/33"
- "Nábytok" nepatří do order_number
- purpose_of_delivery vyplň jen pokud je skutečně z dokumentu zřejmý účel dodávky jako samostatná informace
- notes neplň běžnými identifikačními údaji firem, pokud nejde o skutečné poznámky nebo instrukce
- Do notes nezařazuj obsah, který už je správně uložen v jiných polích, například:
- buyer
- supplier
- delivery_address
- payment_method
- totals
- prepared_by
- Pokud je poznámka zjevně navázaná na konkrétní položku, preferuj ji v položce jako description, order_reference nebo project_code, ne v notes
- Pokud je měna uvedena symbolem, převeď:
- Kč / KC -> CZK
- € -> EUR
- $ -> USD
- Pokud je v dokumentu více možných čísel, do order_number dej hlavní číslo objednávky
- document_series vyplň jen pokud je zjevně oddělená od čísla objednávky
- document_number vyplň jen pokud je zjevně oddělené od řady nebo kódu
- payment_terms_days vyplň jen pokud je počet dnů přímo uveden nebo jednoznačně vyplývá z dokumentu
Zcela jiné zadání bude např. v případě vytěžování obrázků s označením pneumatik (příklad z praxe):
Jsi expert na rozpoznávání označení pneumatik.
Budeš zpracovávat fotografie pneumatik. Pro každou z nich:
- Extrahuj VŠECHNA strukturovaná data a vrať je ve formátu JSON
- NEVYMÝŠLEJ žádná data - pouze to, co je na fotografii
Vrať přesně tento JSON tvar:
{
"ExtractedJson": {
"mark": null
}
Vytěžování pomocí Azure AI Document Intelligence
V některých případech (typicky víceřádkové popisy položek/složek dokladu) se nemusí pomocí OpenAI podařit úspěšně vytěžit všechny texty v položkách dokladu, popř. je správně přiřadit do požadovaných polí v JSON struktuře.
V takovém případě je výhodnější použít pro vytěžování dat službu Azure AI Document Intelligence. V takovém případě není třeba určovat vytěžovanému dokumentu jeho typ, resp. zadávat při vytěžování prompt; tato OCR služba jej nevyužívá. Dokumenty se vytěžují pomocí předdefinovaných vytrénovaných šablon invoice a receipt. Týká se to hodnot parametru MF_EXTRACT_TYPE = 3 a 4.
Příklad vytěžování objednávek
Na základě předchozích bodů lze sestavit jednoduchý příklad z praxe, v němž budeme vytěžovat (prodejní) objednávky, které nám posílají odběratelé v PDF s různými formáty. Protože je posílají na jeden sběrný mail, využijeme automat pro Vyčítání e-mailů a jejich ukládání do ESO9. Při zakládání příloh z došlých e-mailů jim rovnou přidělíme typ dokumentu POBJAI, na který máme v číselníku typů dokumentů navázaný prompt z předchozí kapitoly. Zároveň můžeme do stejného číselníku založit typ dokumentu JSON, který se standardně používá pro označení souboru JSON s vytěženými daty.
Do formuláře s přílohou (tj. PDF dokumentem uloženým v DMS) si zapojíme tlačítko pro volání akce
<input type="button" name="Actx_ExtractDataAI.ExtractData" value="Vytěž PDF dokument" BrwAction="10">
Do datového zdroje formuláře DMS doplníme povinné položky pro volání této akce:
select *
, 0 as MF_IDTABLE_CREATED
, '' as MF_TABLENAME_CREATED
, 1 as MF_EXTRACT_TYPE
, 'spAIPDF_ExtractedOrder2ESO9' as MF_EXTRACT_STORED_PROCEDURE
from QDOKUMENT
Do formuláře zároveň přidáme odkaz na nově založený doklad:
<a href="esoform.asp?TPage=Prodej/PObj.htm&HDOKSTYLE=&SDOKSTYLE=&IDTYPDOK_STAVHDOK=52&Cinnost=2. 2. 4.10&TModule=Prodej&VZORTEXT=Prodejní objednávka&RelType=PARAMETERS&StartFilter=0&WHERE=where IDHDOK=%MF_IDTABLE_CREATED%&FormType=Editor">Založená prodejní objednávka</a>
Pokud si chceme pro jednotlivé dokumenty měnit způsob jejich vytěžování přímo ve formuláři DMS, můžeme přidat jednoduchý combo box pro výběr typu vytěžování:
<td><span>Vytěžování dat</span></td>
<td>
<select name="MF_EXTRACT_TYPE" id="fpMF_EXTRACT_TYPE">
<option value="1">OpenAI - PDF dokument typu faktura/objednávka</option>
<option value="2">OpenAI - Obrázek</option>
<option value="3">Azure AI - Faktura/objednávka</option>
<option value="4">Azure AI - Účtenka</option>
<option value="5">OpenAI - PDF dokument s OCR přes Azure AI</option>
</select>
</td>
Totéž můžeme udělat pro výběr procedury pro zpracování vytěžených dat:
<td><span>Zpracující procedura</span></td>
<td>
<select name="MF_EXTRACT_STORED_PROCEDURE" id="fpMF_EXTRACT_STORED_PROCEDURE">
<option value="spAIPDF_ExtractedOrder2ESO9">spAIPDF_ExtractedOrder2ESO9</option>
<option value="spAzurAIPDF_ExtractedOrder2ESO9">spAzurAIPDF_ExtractedOrder2ESO9</option>
<option value="spEmpty_ExtractedOrder2ESO9">spEmpty_ExtractedOrder2ESO9</option>
</select>
</td>
Z došlého e-mailu se nám do DMS založí objednávka v PDF formátu s typem dokumentu POBJAI:
![]()
Stiskem tlačítka "Vytěž PDF dokument" dojde k vytěžení PDF dokumentu a založení dokladu, jehož přílohou je PDF dokument, z něhož vznikla:
![]()
Zároveň v DMS vznikne dokument typu JSON, který obsahuje (syrová) vytěžená data pro snazší kontrolu správnosti vytěžení. V případě použití OpenAI bude formáto tohoto JSON souboru následující:
{
"ESO9ExtractType": "PDF_Invoice_via_OpenAI",
"sourceFileName": "E.pdf",
"ExtractedJson": {
"document_type": "objednavka",
"order_number": "000260538",
"document_series": "000",
"document_code": null,
"document_number": null,
"issue_date": "13. 4. 2026",
"requested_delivery_date": "16. 4. 2026",
"payment_terms_days": "30",
"payment_method": "Platebním příkazem",
"incoterms": "FCA",
"purpose_of_delivery": null,
"contract_number": null,
"project_code": null,
"buyer": {
"name": "xxx",
"company_id": "xxx",
"vat_id": "xxx",
"address": {
"street": "xxx",
"postal_code": "xxx",
"city": "xxx",
"country": null
}
},
"supplier": {
"name": "xxx",
"company_id": "xxx",
"vat_id": "xxx",
"address": {
"street": "xxx",
"postal_code": "763 02",
"city": "Zlín 4",
"country": null
}
},
"delivery_address": {
"name": null,
"street": null,
"postal_code": null,
"city": null,
"country": null
},
"items": [
{
"line_number": 1,
"item_code": "01/962O",
"description": "LÁTKA VELVETY 10",
"order_reference": "26K0139",
"project_code": null,
"quantity": 18.30,
"unit": "bm",
"unit_price": 515.00,
"vat_rate": null,
"line_total_ex_vat": 9424.50,
"line_total_vat": null,
"line_total_inc_vat": 11403.65
},
{
"line_number": 2,
"item_code": "01/962Q",
"description": "LÁTKA VELVETY 17",
"order_reference": "26K0182",
"project_code": null,
"quantity": 15.10,
"unit": "bm",
"unit_price": 515.00,
"vat_rate": null,
"line_total_ex_vat": 7776.50,
"line_total_vat": null,
"line_total_inc_vat": 9409.57
}
],
"totals": {
"currency": "CZK",
"total_ex_vat": 17201.00,
"total_vat": null,
"total_inc_vat": 20813.22
},
"prepared_by": "ruzickova",
"notes": [
"Dodavatel byl seznámen s účelem použití objednaného materiálu a služby.",
"Spokojený uživatel informačního systému Helios Orange"
]
}
}
V případě, že k vytěžení použijeme Azure AI Document Intelligence, bude formát vytěžených JSON dat mírně odlišný:
{
"ESO9ExtractType": "PDF_Invoice_via_MSAI",
"metadata": {
"extractionDate": "2026-05-29T11:33:14.2451227Z",
"sourceFileGUID": "45801835-a82f-4b83-b712-0855ffaa2ae1",
"sourceFileName": "L.pdf",
"documentId": 8866,
"userId": 75,
"content": "xxxx Registrace KOS v Brně , oddíl C, vložka 11421\nPřevzal:\nRazítko:\nEkonomický a informační systém POHODA",
"modelId": "prebuilt-invoice",
"confidence": 1,
"pageCount": 1
},
"supplier": {
"name": "xxx s.r.o.",
"vat_id": "xxx",
"recipient": "yyy s.r.o.",
"address": {
"street": "xxx",
"road": "xxx",
"postal_code": "xxx",
"city": "xxx",
"full_address": "xxx"
}
},
"customer": {
"name": "xxx s.r.o.",
"vat_id": "xxx",
"recipient": "xxx",
"address": {
"street": "xxx",
"road": "tř. Tomáše Bati",
"postal_code": "xxx",
"city": "xxx",
"full_address": "xxx"
}
},
"billing": {
"address": null
},
"shipping": {
"address": null
},
"remittance": {
"address": null
},
"service": {
"address": null
},
"paymentDetails": null,
"taxDetails": null,
"invoice_id": "269111",
"invoice_date": "09.04.2026",
"payment_term": "Příkazem",
"sub_total": "0,00",
"sub_total_currency": "CZK",
"total_tax": "0,00",
"total_tax_currency": "CZK",
"invoice_total": "0,00",
"invoice_total_currency": "CZK",
"items": [
{
"description": {
"type": "string",
"valueString": "Objednáváme si u Vás:\nCAREX A82 PU",
"content": "Objednáváme si u Vás:\nCAREX A82 PU",
"confidence": 0.517,
"spans": [
{
"offset": 562,
"length": 34
}
]
},
"quantity": {
"type": "number",
"valueNumber": 21,
"content": "21",
"confidence": 0.887,
"spans": [
{
"offset": 597,
"length": 2
}
]
},
"unit": {
"type": "string",
"valueString": "m2",
"content": "m2",
"confidence": 0.609,
"spans": [
{
"offset": 600,
"length": 2
}
]
},
"unit_price": {
"type": "currency",
"valueCurrency": {
"amount": 0,
"currencyCode": "CZK"
},
"content": "0,00",
"confidence": 0.606,
"spans": [
{
"offset": 603,
"length": 4
}
]
},
"tax": {
"type": "currency",
"valueCurrency": {
"amount": 0,
"currencyCode": "CZK"
},
"content": "0,00",
"confidence": 0.852,
"spans": [
{
"offset": 616,
"length": 4
}
]
},
"tax_rate": {
"type": "string",
"valueString": "0%",
"content": "0%",
"confidence": 0.852,
"spans": [
{
"offset": 613,
"length": 2
}
]
},
"amount": {
"type": "currency",
"valueCurrency": {
"amount": 0,
"currencyCode": "CZK"
},
"content": "0,00",
"confidence": 0.913,
"spans": [
{
"offset": 621,
"length": 4
}
]
}
}
],
"keyValuePairs": [
{
"key": "Tel .:",
"value": "123 456 789",
"confidence": 0.995
},
{
"key": "Provozovna:",
"value": "xxx",
"confidence": 0.987
},
{
"key": "IČ:",
"value": "xxx",
"confidence": 0.997
}
],
"tables": [
{
"table_index": 0,
"row_count": 4,
"column_count": 2,
"is_items_table": false,
"rows": [
[
{
"row": 0,
"column": 0,
"content": "Objednávka č .:",
"spans": [
{
"offset": 370,
"length": 15
}
]
},
{
"row": 0,
"column": 1,
"content": "269111",
"spans": [
{
"offset": 386,
"length": 6
}
]
}
],
[
{
"row": 1,
"column": 0,
"content": "Forma úhrady:",
"spans": [
{
"offset": 393,
"length": 13
}
]
},
{
"row": 1,
"column": 1,
"content": "Příkazem",
"spans": [
{
"offset": 407,
"length": 8
}
]
}
],
[
{
"row": 2,
"column": 0,
"content": "Datum objednávky:",
"spans": [
{
"offset": 429,
"length": 17
}
]
},
{
"row": 2,
"column": 1,
"content": "09.04.2026",
"spans": [
{
"offset": 447,
"length": 10
}
]
}
],
[
{
"row": 3,
"column": 0,
"content": "Datum dodání:",
"spans": [
{
"offset": 474,
"length": 13
}
]
},
{
"row": 3,
"column": 1,
"content": "14.04.2026",
"spans": [
{
"offset": 488,
"length": 10
}
]
}
]
]
}
]
}
Ve všech případech je součástí vytěžených JSON dat vždy název vytěženého souboru a použitý algoritmus vytěžování.
Alternativní převod PDF na obrázek
V případě, že je struktura vytěžovaného PDF složitější, je možné, že výsledky nebudou uspokojivé. V takovém případě může pomoci převod PDF na obrázek na následné OCR obrázku, které v některých případech poskytuje lepší výsledky. Pro tuto variantu postačí nastavit hodnotu řídícího parametru MF_EXTRACT_TYPE na hodnotu 2. Na pozadí dojde k automatickému převodu PDF na obrázek ve vysokém rozlišení a následně je jiným způsobem provedeno OCR.
Příklad vytěžování označení pneumatik
Dalším příkladem z praxe je vytěžování označení pneumatik. Fotografie pneumatik vznikají v mobilní aplikaci, pro naše účely je podstatný pouze fakt, že fotografie pneumatiky se objeví v DMS ESO9.
Pro ukázku použijeme stejný formulář DMS, pouze v položce "Vytěžování dat" zvolíme "Obrázek" (tj.MF_EXTRACT_TYPE=2):
![]()
Výsledkem je opět JSON soubor s daty vytěženými z obrázku dle zadaného promptu (záměrně ponecháno vč.chyby, kterou je třeba doladit zlepšením promptu):
{
"ExtractedJson": {
"mark": "PUH7995ZH"
}
}
Praktické poznatky
Jaký způsob vytěžení použít pro má data ?
Obecně lze říci, že nejlepší způsob pro všechny typu PDF dokumentů je zřetězení OCR pomocí Azure AI Document Intelligence a následná analýza syrových JSON dat přes OpenAI, tedy varianta MF_EXTRACT_TYPE = 5. OCR pomocí Azure AI Document Intelligence poskytuje velmi dobré výsledky, co se týče rozpoznání a správné strukturování všech textů a tabulek v dokumentu. Tento komplexní JSON popis vytěženého dokumentu se následně pošle do OpenAI, která je naproti tomu velmi silná v chápání významu dat.
Pokud má PDF dokument a zejména řádky či položky dokumentu jednodušší strukturu, bude i samoztné vytěžování přes OpenAI nabo Azure AI Document Intelligence poskytovat dobré výsledky.
Vždy je ale třeba vyzkoušet si několik různých šablon reálně používaných PDF dokumentů a podle výsledků zvolit vhodný přístup.
Jak sestavit správný prompt ?
Pro správné vytěžení je klíčový vhodný prompt. K jeho sestavení může opět pomoci AI:
- Do běžného webového promptu https://chatgpt.com/ vložíme vzorek PDF specifický např. pro jednoho odběratele / jednu tiskovou šablonu.
- Prompt doplníme ukázkou promptu z ESO9 Start s tím, že je třeba jej přizpůsobit formátu konkrétní šablony (např. specifické požadavky na umístění kódu zboží nebo jiné klíčové položky).
- Navržený prompt vyzkoušíme na vytěžení několika PDF dokumentů daného typu.
- Ověříme doklad vzniklý vytěžením a v případě nesrovnalostí opakujeme kroky výše.
Kolik stojí vytěžení jednoho dokladu ?
OpenAI API je zpoplatněno dle využitých tokenů s tím, že jsou zvlášť zpoplatněny vstupní a výstupní tokeny a cena samozřejmě závisí na použitém jazykovém modelu. Z dosavadní praxe vyplývá, že cena vytěžení jednostránkového dokladu se pohybuje mezi 0,2 - 0,3 Kč, v případě vícestránkového dokladu s desítkami položek/řádků se může cena vyšplhat na 1,0 -1,2 Kč. Ve druhém uvedeném případě, kde se AI používá k vytěžení označení pneumatiky, se cena vytěžení jedné fotky pohybuje okolo 0,05 Kč.
Azure AI Document Intelligence je k dispozici pro 500 stránek měsíčně zdarma. Tzv. bezplatný tier (F0) je však omezen pouze na 2 stránky na jeden PDF dokument, 4MB jako maximální velikost jednoho PDF dokumentu a ve špičkách je tento bezplatný tier výrazně rychlostně omezen (throttling, rate limiting). Placený tier (S0) je placený dle skutečně vytěžených stránek za cenu $10 / 1 000 stránek pro prebuild modely (invoice, receipt).