Přeskočit na obsah

Scanverion pro vývojáře

Vytvořte svou první integraci.

Začněte jedním funkčním požadavkem a potom podle potřeby vyberte SDK, CLI, integraci agentů přes MCP, kolekci nebo úplný návod API.

Živá smlouva APIOpenAPI 3.1.1 / v1

Vygenerováno ze spuštěného .NET API a jeho typovaných modelů požadavků a odpovědí.

Stáhnout OpenAPI JSON

01 / Začínáme

Rychlý start

Vytvořte klíč, nastavte dvě proměnné prostředí a odešlete první ověřený požadavek.

  1. Vytvořte účet pracovního prostoru a vyberte tarif.
  2. Vytvořte API klíč s nejmenším rozsahem zpracování, který služba potřebuje. Tajný údaj ihned zkopírujte; později se už nezobrazí.
  3. Proměnné SCANVERION_API_URL a SCANVERION_API_KEY nastavte pouze v serverovém prostředí.
  4. Odešlete multipart požadavek a uložte vrácené requestId spolu s vlastním trasovacím identifikátorem.
Požadavekbash
curl --request POST "$SCANVERION_API_URL/api/v1/ai/document-processing"   --header "Authorization: Bearer $SCANVERION_API_KEY" \
  --header "Idempotency-Key: invoice-20260807-001"   --form "File=@invoice.pdf;type=application/pdf"   --form "Operations=Scanner" \
  --form "Operations=Rotation"   --form "ScannerFields=invoiceNumber"   --form "ScannerFields=issueDate"   --form "ScannerFields=dueDate"   --form "ScannerFields=paymentReference"   --form "ScannerFields=supplierIban"   --form "ScannerFields=customerIban"   --form "ScannerFields=supplierAddress"   --form "ScannerFields=supplierStreetName"   --form "ScannerFields=supplierStreetNumber"   --form "ScannerFields=supplierPostalCode"   --form "ScannerFields=supplierCity"   --form "ScannerFields=customerAddress"   --form "ScannerFields=supplierVatNumber"   --form "ScannerFields=customerVatNumber"   --form "ScannerFields=netTotal"   --form "ScannerFields=vatTotal"   --form "ScannerFields=vatBreakdown"   --form "ScannerFields=lineItems"   --form "ScannerFields=grossTotal"

02 / Bezpečnost

Autentizace a API klíče

Bezpečně používejte strojové přihlašovací údaje s omezenými oprávněními z důvěryhodného backendu.

Serverový přihlašovací údaj. Odesílejte Authorization: Bearer skv_.... Klíč nikdy nevkládejte do JavaScriptu prohlížeče, mobilní aplikace, analytiky ani logů.
OvěřeníKlíč musí být aktivní, neexpirovaný, neodvolaný a přiřazený k pracovnímu prostoru.
RozsahyOprávnění se vyhodnocuje podle rozsahů uložených u klíče.
Doručení tajného údajeCelý tajný údaj se vrátí pouze při vytvoření nebo rotaci klíče.
Auditní stopaÚspěšné použití aktualizuje čas posledního použití a vytvoří auditní událost.
Veřejné klientské balíčky: TypeScript SDK · Python SDK · .NET SDK · CLI · MCP server

03 / Spolehlivost

Idempotence a opakování

Každému pokusu o zpracování přiřaďte stabilní klíč a vědomě řešte duplicity.

S každým požadavkem na zpracování odešlete Idempotency-Key. Stejnou hodnotu použijte pouze při opakování téhož logického nahrání a stejných operací. Duplicitní rezervace vrátí 409 Conflict; nový klíč může vytvořit druhý účtovaný pokus.

04 / AI endpoint

Zpracování dokumentů

Nahrajte JPEG, PNG, WebP nebo PDF pro synchronní analýzu dokumentu.

Použijte přesné názvy multipart polí ASP.NET: jedno File, jedno nebo více opakovaných Operations, volitelná opakovaná ScannerFields, volitelný JSON CheckboxDefinitions a volitelné DisableObjectSegmentation.

Omezení: Vstup musí mít typ image/jpeg, image/png, image/webp nebo application/pdf a nesmí být větší než 10 MB.

Pole skeneru podle typu dokumentu

V opakovaných hodnotách ScannerFields používejte níže uvedené kanonické názvy polí. Porovnávání nerozlišuje velká a malá písmena, kanonický zápis však zachovává konzistentnost integrace. Každá kategorie podporuje také společná pole. Požadované pole může být null, pokud OCR nemá dostatek podkladů.

Typ dokumentuDetekovaná kategorieDalší ScannerFields
Každý dokument*
rawTextdocumentType
Fakturainvoice
invoiceNumberissueDatedueDatedeliveryDatepaymentReferencecurrencysupplierNamesupplierAddresssupplierStreetNamesupplierStreetNumbersupplierCitysupplierCityPartsupplierPostalCodesupplierCountryCodesupplierCompanyRegistrationNumbersupplierTaxNumbersupplierVatNumbersupplierIbansupplierBiccustomerNamecustomerAddresscustomerStreetNamecustomerStreetNumbercustomerCitycustomerCityPartcustomerPostalCodecustomerCountryCodecustomerCompanyRegistrationNumbercustomerTaxNumbercustomerVatNumbercustomerIbancustomerBicdeliveryNamedeliveryAddressdeliveryStreetNamedeliveryStreetNumberdeliveryCitydeliveryCityPartdeliveryPostalCodedeliveryCountryCodenetTotalvatTotalvatBreakdowngrossTotallineItemsbankAccounts
Cestovní paspassport
documentNumberdateOfBirthsexnationalitynationalityNamepersonalNumberdateOfIssuedateOfExpiryissuedByplaceOfBirth
Občanský průkaz EU, přední stranaeuidfront
documentNumberdateOfBirthsexnationalitynationalityNamepersonalNumberdateOfIssuedateOfExpiryissuedByplaceOfBirth
Občanský průkaz EU, zadní stranaeuidback
addressstreetNamestreetNumbercitycityPartpostalCodecountryCodemaidenNameplaceOfBirthbloodTypepersonalNumbermaritalStatusissuedBydocumentNumbernationalitynationalityNamedateOfBirthsexdateOfExpiry
Řidičský průkaz EU, přední stranaeudriverlicensefront
dateOfBirthplaceOfBirthdateOfIssuedateOfExpiryissuedBydocumentNumberlicenseAllowedCategories
Osvědčení o registraci, část I, přední stranaeutechnicallicensefront
vinlicensePlateaddressownerdocumentNumber
Osvědčení o registraci, část I, zadní stranaeutechnicallicenseback
vinmanufacturervariantmodelvalidUntilvehicleCategoryengineVolumeenginePerformancefuelTypenumberOfSeatsmaximumSpeedlargestWeightKg
Technický průkaz, část II, přední stranabigtechnicallicensefront
registrationCertificatePartdocumentNumberlicensePlatedateOfFirstRegistrationvinvehicleKindvehicleCategorymanufacturermodeltypeVariantVersionvehicleManufacturertypeApprovalNumbertypeApprovalDateengineManufacturerengineTypeengineVolumeCm3catalystenginePerformanceKwengineSpeedRpmfuelTypetransmission
Technický průkaz, část II, zadní stranabigtechnicallicenseback
bodyTypecolorproductionNumbernumberOfSeatsnumberOfStandingPlacesnumberOfBedsroofLoadKgfuelTankVolumeLlengthMmwidthMmheightMmoperationalWeightKgmaximumWeightKgmaximumBrakedTrailerWeightKgmaximumUnbrakedTrailerWeightKgnumberOfAxleswheelbaseMmfrontTyresrearTyresfrontRimsrearRimsmaximumSpeedKphstationaryNoiseDbdriveByNoiseDbemissionStandardco2GKmfuelConsumptionL100Km
Povolení k pobytu, přední stranaresidencepermitfront
documentNumbersexnationalitynationalityNamedateOfBirthpersonalNumbertypeOfPermitdateOfExpirynotescardAccessNumber
Povolení k pobytu, zadní stranaresidencepermitback
documentNumbersexnationalitynationalityNamedateOfBirthdateOfExpirydateOfIssueissuedByplaceOfBirthaddresspersonalNumbercountryCode
Průkaz osoby se zdravotním postiženímdisabilitycard
dateOfBirthdateOfIssuedocumentNumberissuedByaddress
Celý obrázek nebo nerozpoznaný dokumentfullimage / other
-
Strukturovaná pole faktury zůstávají poli JSON v řetězcovém slovníku: vatBreakdown obsahuje { rate, netAmount, amount, grossAmount }, lineItems obsahuje { description, quantity, unit, unitPrice, netAmount, vatRate, vatAmount, grossAmount } a bankAccounts obsahuje { partyRole, iban, bic }. Původní pole iban je zastaralý alias pole supplierIban. Údaje o jménu osoby se vracejí v scanner.fields.name se jménem, prostředním jménem, příjmením, tituly a hodnotami v původním i latinském písmu.

Podporované dokumenty

Podívejte se, co Scanverion dokáže přečíst.

Zřetelně neplatné AI vzory vycházejí z odkazovaných veřejných rozložení dokladů. Karty odlišují kategorii API od implementovaného a testovaného strukturovaného výstupu skeneru.

Fiktivní česká firemní faktura

Faktura

Podle rozložení

Extrakce faktur podle obsahu a rozložení

Příklady polí
Kategorie API

Invoice

Příklady polí
invoiceNumbersupplierNamecustomerNamepaymentReferencelineItemsgrossTotal
Předloha rozložení: Původní česká AI ukázka faktury Scanverion · Fiktivní ukázka

AI ukázky používájí fiktivní údaje, viditelné označení VZOR/SPECIMEN a neplatné strojově čitelné hodnoty. Nejde o skutečné ani zákaznické doklady.

Fiktivní česká žádost se zaškrtávacími políčky, podpisem a neplatnými vzorovými kódy

Obecné dokumenty

Vizuální operace fungují i mimo známé typy dokladů.

Zaškrtávací políčka, čárové kódy, podpisy, tváře, rozmazání a otočení lze analyzovat na formulářích, smlouvách, skenech i neznámých dokumentech. Samostatný profil skeneru není potřeba.

  • Detection: Najde dokumenty a další objekty.
  • Rotation: Změří otočení dokumentu.
  • Blur: Vyhodnotí ostrost obrázku.
  • BarcodeReading: Přečte QR a čárové kódy.
  • CheckboxDetection: Vyhodnotí oblasti zaškrtávacích políček z požadavku.
  • SignatureDetection: Najde viditelný podpis.
  • FaceDetection: Najde viditelné tváře.
  • FaceExtraction: Vrátí výřezy nalezených tváří.
Příklady polí

CheckboxDetection používá CheckboxDefinitions z požadavku. Zpracování celého obrázku může vrátit také vyžádaná ScannerFields.

Předloha rozložení: Původní český AI formulář Scanverion · Fiktivní ukázka

Podpora zemí

Tato česká rozložení dokumentů jsou ověřená.

Cestovní pasy používájí globální standard MRZ. Zobrazené národní doklady jsou omezené na kategorie testované s českým rozložením.

01

Cestovní pasy

Všechny vydávající země s čitelnou ICAO TD3 MRZ
Testované tištěné rozložení
CZ
02

Občanský průkaz

Strukturovaná extrakce pro testovanou českou přední a zadní stranu
Testovaná země
CZ

05 / AI endpoint

Zpracování vozidel

Spusťte detekci nebo kontrolu rozmazání snímku vozidla.

Struktura požadavku odpovídá zpracování dokumentů, ale požadavky na vozidla přijímají pouze Detection a Blur. Nepodporované kombinace vracejí 422 Unprocessable Entity.

06 / Více souborů

Dávkové zpracování

Zpracujte více dokumentů nebo snímků vozidel jedním synchronním požadavkem.

Pole Files zopakujte pro každý soubor. Soubory se zpracovávají postupně, každý výsledek zůstává identifikovatelný v dávkové odpovědi a využití se sčítá za celý požadavek.

Požadavekbash
curl --request POST "$SCANVERION_API_URL/api/v1/ai/document-processing/batches" \
  --header "Authorization: Bearer $SCANVERION_API_KEY" \
  --header "Idempotency-Key: onboarding-batch-42" \
  --form "Files=@front.jpg;type=image/jpeg" \
  --form "Files=@back.jpg;type=image/jpeg" \
  --form "Operations=Scanner"

Adresář endpointů zpracování

MetodaCestaPole souboruSmlouva
POST/api/v1/ai/document-processingFileJPEG, PNG, WebP nebo PDF; nejvýše 10 MB
POST/api/v1/ai/vehicle-processingFileJPEG, PNG nebo WebP; pouze Detection a Blur
POST/api/v1/ai/document-processing/batchesFilesVíce souborů; výsledky zůstávají seskupené podle souboru
POST/api/v1/ai/vehicle-processing/batchesFilesVíce snímků vozidel; pouze Detection a Blur
GET/api/v1/ai/capabilities-Podporované typy MIME, operace a maximální velikost souboru

07 / Funkce

Operace a závislosti

Vyberte podporované operace a seznamte se s automaticky přidanými závislostmi.

OperaceÚčelZávislost nebo omezení
DetectionVyhledá a klasifikuje objekty dokumentu nebo vozidla.U většiny dokumentových postupů se přidá automaticky.
ScannerExtrahuje typovaná pole z podporovaných dokumentů.Vyžaduje jej LostOrStolenCardCheck.
RotationUvádí orientaci dokumentu.Přidá jej FaceExtraction.
BlurVyhodnotí rozmazání obrázku.Podporováno pro dokumenty a vozidla.
FaceDetectionNajde tváře v detekovaném dokumentu.Přidá jej FaceExtraction.
FaceExtractionVrátí extrahované údaje nebo obrázky tváří.Přidává FaceDetection a Rotation.
BarcodeReadingČte podporované jednorozměrné a dvourozměrné kódy.Pouze zpracování dokumentů.
CheckboxDetectionVyhodnocuje nakonfigurované oblasti zaškrtávacích polí.CheckboxDefinitions musí být platný JSON.
SignatureDetectionVyhledá podpisy v dokumentu.Pouze detekce; porovnávání podpisů není zveřejněno.
Zvláštní případy. Detection spolu se Scanner automaticky použijí OCR celé strany, když údaje na úrovni strany identifikují fakturu. DisableObjectSegmentation zůstává volitelným vynucením celého obrázku; při kombinaci se Scanner jsou ScannerFields povinná. Vyhledávání poštovního směrovacího čísla má samostatný validační endpoint a není multipart AI operací.

08 / Schéma

Model odpovědi

Čtěte výsledky objektů, stavy operací, časování a účtované kredity.

objects zachovává vztah mezi každým detekovaným objektem a výsledky jeho operací. operations uvádí požadovanou a automaticky přidanou práci. usage je autoritativní účtovaná hodnota odpovědi.

Odpověďjson
{
  "requestId": "7f6a7b7f0ad74729a4c4d13fa7dc6dd4",
  "model": "Document",
  "processingTimeMs": 412,
  "objects": [{
    "objectId": "document-1",
    "category": "Invoice",
    "confidence": 1,
    "bounds": { "left": 0, "top": 0, "right": 1, "bottom": 1 },
    "results": {
      "scanner": {
        "fields": {
          "invoiceNumber": "2026-0007",
          "issueDate": "2026-08-07",
          "dueDate": "2026-08-21",
          "paymentReference": "26000006",
          "supplierIban": "SK5511000000002628210731",
          "customerIban": null,
          "supplierName": "Scanverion s. r. o.",
          "supplierAddress": "Pribinova 10, 811 09 Bratislava",
          "supplierStreetName": "Pribinova",
          "supplierStreetNumber": "10",
          "supplierPostalCode": "81109",
          "supplierCity": "Bratislava",
          "supplierVatNumber": "SK2120720041",
          "customerName": "Example Customer s. r. o.",
          "customerAddress": "Main Street 12, 040 01 Kosice",
          "customerVatNumber": "SK2020123456",
          "netTotal": "19.29",
          "vatTotal": "4.44",
          "vatBreakdown": "[{"rate":"23","amount":"4.44"}]",
          "lineItems": "[{"description":"Monthly subscription","quantity":"1","unit":"pcs","unitPrice":"19.29","netAmount":"19.29","vatRate":"23","vatAmount":"4.44","grossAmount":"23.73"}]",
          "grossTotal": "23.73",
          "currency": "EUR"
        },
        "issuingCountry": null,
        "detectedLanguages": [{ "code": "sk", "confidence": 0.97 }]
      },
      "rotation": { "degrees": 0 }
    },
    "pageNumber": 1
  }],
  "operations": [
    { "operation": "Detection", "status": "Completed", "message": null },
    { "operation": "Scanner", "status": "Completed", "message": null },
    { "operation": "Rotation", "status": "Completed", "message": null }
  ],
  "usage": {
    "units": 3,
    "unitsByOperation": { "Detection": 1, "Scanner": 1, "Rotation": 1 }
  }
}

09 / Vyhrazené zdroje

Validační zdroje

Použijte samostatné endpointy pro ztracené doklady a poštovní směrovací čísla.

MetodaCestaVstup
POST/api/v1/validation/id-cards/lost-or-stolenTělo JSON: cardNumber a cardType
GET/api/v1/validation/postal-codesQuery: address a volitelný countryCode=SK nebo SVK
Požadavekbash
curl --request POST "$SCANVERION_API_URL/api/v1/validation/id-cards/lost-or-stolen" \
  --header "Authorization: Bearer $SCANVERION_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{ "cardNumber": "AA123456", "cardType": "nationalId" }'

10 / Účtování

Využití a kredity

Získejte volání, vážené kredity, denní součty, funkce a cenový náhled.

Kredity jsou vážené podle nastaveného násobitele produktu, proto jsou volání a kredity samostatné metriky. Endpointy využití přijímají včetně data from a to; ve výchozím nastavení období začíná prvním dnem aktuálního kalendářního měsíce a končí dnes.

MetodaCestaVrácené údaje
GET/api/v1/usage/summaryVolání a vážené kredity za období
GET/api/v1/usage/dailyDenní součty volání a kreditů
GET/api/v1/usage/by-capabilitySoučty seskupené podle účtované funkce
GET/api/v1/usage/price-previewNáhled zahrnutých kreditů, nadlimitní ceny a celku v EUR
Chování účtování. Zahrnuté kredity se obnovují každý kalendářní měsíc. Nadlimitní účtování funguje pouze s autorizovanou opakovaně použitelnou platební metodou a kladným rozpočtem.

11 / Obnova

Chyby a strategie opakování

Řešte chyby autentizace, oprávnění, validace, duplicit a poskytovatelů.

StavVýznamAkce klienta
401 UnauthorizedKlíč chybí, je nesprávný, neaktivní, expirovaný, odvolaný nebo není přiřazen k pracovnímu prostoru.Požadavek neopakujte, dokud neopravíte přihlašovací údaje.
402 Payment RequiredOprávnění pracovního prostoru nebo limit zpracování je vyčerpaný.Změňte tarif nebo nastavení nadlimitního účtování.
409 ConflictIdempotency key již rezervoval tento požadavek na zpracování.Považujte jej za stejný pokus; nevytvářejte nový klíč bez důvodu.
422 Unprocessable EntitySoubor, kombinace operací, pole, rozsah dat nebo validační vstup nejsou platné.Před opakováním opravte požadavek.
502 Bad GatewayNadřazený poskytovatel AI nebo validace selhal či vrátil nejednoznačný výsledek.Je-li operace bezpečná k opakování, zkuste ji znovu s odstupem.
503 Service UnavailablePotřebný poskytovatel zpracování je dočasně nedostupný.Opakujte s omezeným exponenciálním odstupem.

Zaznamenejte requestId odpovědi, stav HTTP a idempotency key. Náhodné omezené exponenciální opakování používejte pouze při dočasných chybách; validační chyby a chyby přihlašovacích údajů vyžadují změnu požadavku.

12 / Generovaná smlouva

Reference OpenAPI

Otevřete generovaný Scalar explorer nebo stáhněte strojově čitelnou smlouvu.

Reference Scanverion API

Spuštěná smlouva je zdrojem pravdy pro schémata, hodnoty enumů, požadavky autentizace a deklarované výsledky HTTP.

Integrace MCP

Lokální nastavení stdio pro VS Code a Claude Desktop, vstupy nástrojů, bezpečnost a diagnostika.

Lokální stdio / veřejný npm balíček

Zpřístupněte nástroje Scanverion agentovi ve VS Code nebo Claude Desktop. Veřejný npm balíček běží lokálně přes stdio a nahrává schválené vstupy do API; OCR neprobíhá lokálně. Hostované HTTP MCP je omezená vývojářská ukázka s API klíčem, nikoli obecně dostupná služba ani MCP OAuth. Tento návod popisuje lokální stdio.

1. Instalace balíčku

Použijte Node.js 22 nebo novější a npm. Veřejný balíček nainstalujte do samostatného instalačního adresáře pomocí uvedeného příkazu. npm nainstaluje také závislost Scanverion SDK. Přístup k repozitáři není potřeba.

Otevřít MCP balíček
npm install @scanverion/mcp-server@0.1.1

2. Nastavení klienta

Klient MCP

Sloučte konfiguraci se souborem .vscode/mcp.json nebo s uživatelskou konfigurací MCP. VS Code si vyžádá klíč v maskovaném poli. Klíč nevkládejte do chatu.

Na této stránce se klíč nezadává ani neukládá. Prázdný adresář vypne přístup k místním souborům; i nahrání přes base64 vyžaduje výslovný souhlas.

.vscode/mcp.json
{
  "inputs": [
    {
      "id": "scanverion-api-key",
      "type": "promptString",
      "description": "API klíč Scanverion",
      "password": true
    }
  ],
  "servers": {
    "scanverion": {
      "type": "stdio",
      "command": "node",
      "args": [
        "C:/path/to/mcp/node_modules/@scanverion/mcp-server/dist/index.js"
      ],
      "env": {
        "SCANVERION_API_URL": "https://api.scanverion.com",
        "SCANVERION_ALLOWED_DIRECTORIES": "[]",
        "SCANVERION_TIMEOUT_MS": "120000",
        "SCANVERION_API_KEY": "${input:scanverion-api-key}"
      }
    }
  }
}

3. Ověření bez zpracování

Po nastavení klíče v prostředí terminálu spusťte příkaz doctor. Zkontroluje adresáře a funkce dostupné po autentizaci, ale nenahrává soubory ani nepotvrzuje oprávnění ke zpracování.

node ./node_modules/@scanverion/mcp-server/dist/index.js --doctor

V klientovi MCP zavolejte list_capabilities a načtěte scanverion://guide. Tento samostatný návod přibalený k serveru je v angličtině a obsahuje postup pro MCP Inspector i ukázku se syntetickým vzorkem.

Nástroje a účtování

analyze_document
Zpoplatněné. Ve výchozím stavu pouze Detection; pro OCR a extrakci polí výslovně zvolte Scanner.
analyze_vehicle
Zpoplatněné. Podporuje Detection a Blur.
list_capabilities
Katalog modelů AI a limitů bez poplatku za zpracování; nejde o kontrolu oprávnění.
list_api_capabilities
Veřejný katalog API bez poplatku za zpracování; neověřuje přístup konkrétního účtu.
get_usage_summary
Volání a kredity bez poplatku za zpracování, pro data YYYY-MM-DD včetně obou hranic. Odhad ceny není dostupný, není nulový.

První zpracování dokumentu

Použijte syntetický nebo schválený vzorek v povoleném adresáři. Toto volání nahraje soubor a může spotřebovat kredity.

{
  "filePath": "C:/approved-samples/sample.png",
  "operations": [
    "Scanner"
  ],
  "scannerFields": [
    "documentNumber"
  ],
  "idempotencyKey": "sample-document-001"
}

Zadejte právě jeden vstup: filePath nebo imageBase64. Base64 vyžaduje podporovaný název souboru nebo typ MIME. Vstupy JPEG, PNG, WebP a PDF nesmějí být prázdné ani větší než 10 MiB. Výsledky zachovávají text JSON a přidávají structuredContent.data.

Řešení problémů a bezpečné opakování

  • CONFIGURATION_ERROR: Zkontrolujte klíč, pole absolutních cest adresářů, HTTPS adresu API a časový limit (1 000 až 300 000 ms).
  • INVALID_INPUT: Zkontrolujte přístup k souboru, formát, base64, operace a rozsah dat.
  • 401 / 403: Zkontrolujte platnost klíče, přístup k pracovnímu prostoru a rozsah process:write.
  • 402 / 429: Zkontrolujte kredity nebo limity volání. Prohlédněte kód chyby, ID požadavku a možnost opakování.
  • Časový limit ani zrušení nezaručují vrácení poplatku nebo zastavení práce na serveru. Automatické opakování je vypnuté. Stejný idempotency key použijte pouze pro stejný logický požadavek; duplicita může vrátit 409.

Nepovolujte celé domovské adresáře. Kontrola vyřešených cest blokuje přechod mimo adresář i únik přes symbolické odkazy, ale není izolací na úrovni OS. Proces nezpřístupňujte nedůvěryhodným klientům a nedovolte jiným uživatelům měnit povolené adresáře. Extrahovaný text považujte za nedůvěryhodná data, nikoli za pokyny.