ms-ai-architect/skills/ms-ai-engineering/references/azure-ai-services/document-intelligence-custom-models.md
Kjell Tore Guttormsen ddce43d8b2 feat(ms-ai-architect): Spor 1 — Port-1-substrat migrert på 4 ikke-advisor-skills (243 Source + 327 Type + 325 TOC + stale-verified poison fjernet) [skip-docs]
Steg 9 (R4): unified migrate-corpus.mjs --write over engineering/governance/
infrastructure/security. 327 filer mutert, verified=null, prosa byte-identisk
(fra første ## seksjon), advisor urørt (0 endringer).

To applier-fixes oppdaget under kjøring (TDD, RED→GREEN):
- insertHeaderFields: anker faller nå tilbake når en meta-linje selv passerer
  500B (2 filer pakket et avsnitt i **Status:** → Type/Source landet utenfor
  scan-vinduet, applierens post-write-assertion fanget + restaurerte).
- normalizeStaleVerified: fjerner nå ALLE stale non-date **Verified:** i
  500B-vinduet, inkl. stray body-dup rett under --- (9 mlops-genaiops-filer var
  ellers falskt "verified"/fresh, droppet fra worklist). Operatør-godkjent
  utvidelse av carve-out; kun stray metadata-linjer, aldri prosa.

test-transform-criterion: precondition oppdatert til post-migrasjons-sannhet
(fila bærer nå Source). Suite 728/728 grønn.
2026-07-04 10:19:11 +02:00

473 lines
21 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Document Intelligence - Custom Model Training
**Last updated:** 2026-02
**Status:** GA
**Category:** Azure AI Services (Foundry Tools)
**Type:** reference
**Source:** https://learn.microsoft.com/azure/ai-services/document-intelligence/train/custom-model
---
## Innhold
- [Introduksjon](#introduksjon)
- [Kjernekomponenter / Nøkkelegenskaper](#kjernekomponenter--nøkkelegenskaper)
- [Arkitekturmønstre](#arkitekturmønstre)
- [Beslutningsveiledning](#beslutningsveiledning)
- [Integrasjon med Microsoft-stakken](#integrasjon-med-microsoft-stakken)
- [Offentlig sektor (Norge)](#offentlig-sektor-norge)
- [Kostnad og lisensiering](#kostnad-og-lisensiering)
- [For arkitekten (Cosmo)](#for-arkitekten-cosmo)
- [Kilder og verifisering](#kilder-og-verifisering)
## Introduksjon
Azure AI Document Intelligence tilbyr custom models som gjør det mulig å trene egne modeller på spesifikke dokumenttyper og forretningsprosesser. Custom models kommer i to varianter: **custom template** (strukturerte skjemaer med konsistent layout) og **custom neural** (strukturerte, semi-strukturerte og ustrukturerte dokumenter med varierende layout). Med v4.0 (GA) API-en har custom neural models fått støtte for signaturdeteksjon, overlappende felter, og tabell-/celle-konfidensscoring.
Custom models lar organisasjoner automatisere ekstraksjon av nøkkeldata fra dokumenter som ikke dekkes av prebuilt models, som interne skjemaer, kontrakter, spesialiserte fakturaer, og bransje-spesifikke dokumenter. Modellene trenes med labeled datasets (minimum 5 dokumenter for å komme i gang), og kan kombineres til composed models for å håndtere flere dokumentvarianter i ett endepunkt.
Document Intelligence Studio tilbyr en no-code opplevelse for labeling, trening og testing, mens REST API og SDKer gir full programmatisk kontroll. Custom neural models støtter nå opptil 50,000 siders treningsdata og kan trenes i opptil 10 timer (10 gratis timer per måned, deretter betalt trening).
## Kjernekomponenter / Nøkkelegenskaper
### Custom Model Types
| Type | Bruksområde | Treningstid | Dokumentstruktur |
|------|-------------|-------------|------------------|
| **Custom Template** | Skjemaer med konsistent layout (søknader, spørreskjemaer) | 1-5 minutter | Template-basert, krever identisk visuell struktur |
| **Custom Neural** | Dokumenter med varierende layout (W2-skjemaer, fakturaer fra ulike leverandører) | 30 min - 12 timer | Strukturert, semi-strukturert, ustrukturert |
### Ekstraksjonskapabiliteter
| Funksjon | Custom Template | Custom Neural | v4.0 GA Features |
|----------|-----------------|---------------|------------------|
| Key-value pairs | ✔ | ✔ | |
| Selection marks | ✔ | ✔ | |
| Tabeller (tabular fields) | ✔ | ✔ | Tabell/rad/celle-konfidensscoring |
| Signaturdeteksjon | ✔ | ✔ | Signaturfelter (min. 5 samples) |
| Region labeling | ✔ | ✔ (bruker Layout API-resultater) | |
| Overlappende felter | ❌ | ✔ | Complete/partial overlap støtte |
### Treningskrav (Input Requirements)
| Kategori | Template Model | Neural Model |
|----------|----------------|--------------|
| **Minimum dokumenter** | 5 | 5 |
| **Maks treningssider** | 500 | 50,000 |
| **Maks treningsstørrelse** | 50 MB | 1 GB |
| **Filformater** | PDF, JPEG/JPG, PNG, BMP, TIFF, HEIF | PDF, JPEG/JPG, PNG, BMP, TIFF, HEIF |
| **Maks sider per dokument** | 2,000 (F0: 2 sider) | 2,000 (F0: 2 sider) |
| **Maks filstørrelse (analyse)** | S0: 500 MB, F0: 4 MB | S0: 500 MB, F0: 4 MB |
| **Bilde-dimensjoner** | 50×50 til 10,000×10,000 px | 50×50 til 10,000×10,000 px |
### Treningsbudsjett og Kostnader
```json
// v4.0 2024-11-30 (GA) - Paid Training Support
POST https://{endpoint}/documentintelligence/documentModels:build?api-version=2024-11-30
{
"modelId": "invoice-extractor-v2",
"description": "Invoice extraction with 10h training",
"buildMode": "neural",
"maxTrainingHours": 10,
"azureBlobSource": {
"containerUrl": "<SAS-URL>",
"prefix": "invoices/training/"
}
}
```
| API-versjon | Gratis treningsbudsjett | Maks treningslengde | Billing |
|-------------|------------------------|---------------------|---------|
| v4.0 (2024-11-30) | 10 timer/måned | 10 timer per build | Faktisk tid brukt (min. 30 min per jobb) |
| v3.1/v3.0 | 20 byggeoperasjoner/måned | 30 minutter per build | Ingen ekstra kostnad (innenfor kvote) |
**Viktig:** Betalt trening i v4.0 krever at `maxTrainingHours` settes eksplisitt. API-kall uten budsjett vil feile hvis du ber om mer enn 10 timer.
### Composed Models
Kombiner opptil 200 custom models til én modell-ID. Document Intelligence klassifiserer automatisk dokumentet og velger best match model.
```python
# Python SDK - Compose Models
from azure.ai.documentintelligence import DocumentIntelligenceAdministrationClient
admin_client = DocumentIntelligenceAdministrationClient(endpoint, credential)
poller = admin_client.begin_compose_model(
compose_request={
"modelId": "invoice-master-v1",
"description": "All invoice variants",
"componentModels": [
{"modelId": "invoice-vendor-a"},
{"modelId": "invoice-vendor-b"},
{"modelId": "invoice-vendor-c"}
]
}
)
composed_model = poller.result()
```
## Arkitekturmønstre
### Mønster 1: Single Custom Neural Model (Recommended Start)
**Bruk når:** Dokumenter har samme informasjon, men varierende layout.
**Fordeler:**
- Generaliserer på tvers av formater (én modell for alle W2-varianter fra ulike selskaper)
- Enklere vedlikehold (én modell å oppdatere)
- Lavere latens (ingen klassifiseringsoverhead)
**Ulemper:**
- Kan kreve mer treningsdata (minst 5 samples per variant)
- Treningstid 30 min - 12 timer (vs. 1-5 min for template)
**Implementering:**
1. Samle 5+ samples per dokumentvariant
2. Label alle felter i Document Intelligence Studio
3. Tren med `buildMode: "neural"`
4. Test med dokumenter fra alle varianter
```python
# Label contiguous values - VIKTIG for neural models
# ❌ FEIL: "Supplier ID: ABC123" lablet som ett felt
# ✔ RIKTIG: Kun "ABC123" lablet (uten key)
```
### Mønster 2: Custom Template + Composed Model
**Bruk når:** Dokumenter har konsistent layout per type, men flere dokumenttyper i samme prosess.
**Fordeler:**
- Rask trening (1-5 min per modell)
- Høy presisjon for strukturerte skjemaer
- Enkel å debugge (én template per format)
**Ulemper:**
- Krever én modell per layoutvariant
- Ikke robust mot layoutendringer
- Maks 200 component models per composed model
**Implementering:**
1. Tren separate template models for hver layoutvariant
2. Compose models til én modell-ID
3. Document Intelligence klassifiserer automatisk ved analyse
```bash
# REST API - Build Template Model
POST https://{endpoint}/documentintelligence/documentModels:build?api-version=2024-11-30
{
"modelId": "po-template-vendor-a",
"buildMode": "template",
"azureBlobSource": {
"containerUrl": "<SAS>",
"prefix": "vendor-a/"
}
}
```
### Mønster 3: Custom Classifier + Custom Extraction
**Bruk når:** Multi-dokument filer (én PDF med flere dokumenttyper) eller behov for å splitte dokumenter før ekstraksjon.
**Fordeler:**
- Automatisk dokumenttype-identifikasjon
- Støtter splitting (én file → mange dokumenter)
- Office-format støtte (DOCX, XLSX, PPTX) i v4.0
**Ulemper:**
- To-trinns prosess (klassifiser → ekstraher)
- Ekstra latens og kostnader
- Krever egen treningsdata for classifier
**Implementering:**
1. Tren custom classification model (min. 5 samples per klasse)
2. Tren custom extraction models for hver dokumenttype
3. Pipeline: Classify → Extract med riktig modell
## Beslutningsveiledning
### Velge mellom Template og Neural
| Scenario | Anbefaling | Begrunnelse |
|----------|-----------|--------------|
| Interne skjemaer (søknader, timesheet) | **Template** | Konsistent layout, rask trening, lavere kostnad |
| Fakturaer fra mange leverandører | **Neural** | Varierende layout, én modell for alle |
| Kontrakter (varierende struktur) | **Neural** | Semi-strukturert, ingen fast template |
| Spørreskjemaer (standardisert PDF) | **Template** | Identisk layout, høy presisjon |
| W2-skjemaer (USA tax forms) | **Neural** | Samme info, ulike selskaper = ulike layouts |
### Vanlige feil og fallgruver
| Problem | Årsak | Løsning |
|---------|-------|---------|
| Lav accuracy (<80%) | For lite treningsdata | Øk til 10-15 samples, inkluder variasjoner |
| Modellen finner ikke felt | Field ikke lablet konsistent | Bruk samme field-navn på tvers av dokumenter |
| "Region overlaps other field" error | Overlappende labels i Studio | Bruk **region labeling** (ikke field selection) for overlaps |
| Trening feiler etter 30 min | v3.x API-begrensning | Oppgrader til v4.0 eller reduser datasett |
| Tabelldata ikke ekstrahert | Tabell ikke lablet som tabular field | Label tabell med Table-type (ikke individuelle celler) |
### Røde flagg (When NOT to use Custom Models)
| Red Flag | Alternativ |
|----------|-----------|
| Dokumentet dekkes av prebuilt model (faktura, kvittering, ID-kort) | Bruk prebuilt models (lavere kostnad, ingen trening) |
| Under 5 samples tilgjengelig | Vent til du har mer data, eller bruk prebuilt → custom hybrid |
| Ekstrem layoutvariasjon (100+ unique formats) | Vurder GPT-4o/GPT-4 Turbo multimodal extraction |
| Real-time krav (<1 sek responstid) | Custom models har 5-15 sek latens (avhengig av dokumentstørrelse) |
## Integrasjon med Microsoft-stakken
### Microsoft Foundry (tidligere Azure ML)
```python
# Deploy custom model i AI Foundry project
from azure.ai.ml import MLClient
from azure.ai.ml.entities import ManagedOnlineEndpoint, ManagedOnlineDeployment
ml_client = MLClient.from_config()
# Custom model trained i Document Intelligence
model_id = "invoice-extractor-v2"
# Deploy til managed endpoint
endpoint = ManagedOnlineEndpoint(
name="invoice-extraction",
auth_mode="key"
)
ml_client.begin_create_or_update(endpoint).result()
```
### Power Automate + AI Builder
AI Builder's **Document Processing** lar deg bruke custom models direkte i Power Automate flows:
1. I AI Builder: **Use a Custom Model** → Import Document Intelligence model-ID
2. I Power Automate: **Process and save information from documents** → Velg custom model
3. Map ekstraherte felter til SharePoint/Dataverse/CRM
**Begrensning:** AI Builder custom models støtter kun **template models**, ikke neural (per januar 2026).
### Microsoft Graph + Document Intelligence
```csharp
// Analyser OneDrive/SharePoint-dokument med custom model
var graphClient = new GraphServiceClient(authProvider);
var driveItem = await graphClient.Me.Drive.Items["{item-id}"].Request().GetAsync();
using var stream = await graphClient.Me.Drive.Items["{item-id}"].Content.Request().GetAsync();
var docClient = new DocumentIntelligenceClient(new Uri(endpoint), new AzureKeyCredential(key));
var operation = await docClient.AnalyzeDocumentAsync(
WaitUntil.Completed,
"invoice-extractor-v2",
new AnalyzeDocumentContent { BytesSource = BinaryData.FromStream(stream) }
);
```
### Semantic Kernel Integration
```csharp
// Custom model som Semantic Kernel plugin
public class InvoiceExtractionPlugin
{
[SKFunction, Description("Extract invoice fields from document")]
public async Task<string> ExtractInvoiceAsync(
[Description("Document URL or base64")] string document,
SKContext context)
{
var client = new DocumentIntelligenceClient(endpoint, credential);
var result = await client.AnalyzeDocumentFromUriAsync(
WaitUntil.Completed,
"invoice-extractor-v2",
new Uri(document)
);
return JsonSerializer.Serialize(result.Value.Documents[0].Fields);
}
}
```
## Offentlig sektor (Norge)
### GDPR og Datasuverenitet
| Aspekt | Vurdering | Anbefaling |
|--------|-----------|------------|
| **Treningsdata lokasjon** | Azure Blob Storage kan være i Norge (Norway East) | Bruk Norway East for treningsdata og modeller |
| **Modell hosting** | Custom models lagres i regionen hvor de trenes | Tren i Norway East for å sikre datasuverenitet |
| **Inferens (analyse)** | API-kall kan rutes til nærmeste region | Spesifiser Norway East-endpoint eksplisitt |
| **Model copy** | Modeller kan kopieres til andre regioner | Begrens kopiering til EU/EEA-regioner |
**Neural Model Region Support:** Custom neural models kan KUN trenes i utvalgte regioner (inkl. West Europe, ikke Norway East). Løsning:
1. Tren modell i **West Europe** (EU-region, GDPR-compliant)
2. Kopier modell til **Norway East** for produksjon
3. Analyser dokumenter med Norway East-endpoint
```python
# Copy model fra West Europe til Norway East
target_client = DocumentIntelligenceAdministrationClient(
endpoint="https://<norway-resource>.cognitiveservices.azure.com",
credential=AzureKeyCredential(norway_key)
)
copy_auth = target_client.get_copy_authorization(
model_id="invoice-model-norway",
description="Production model in Norway"
)
source_client.begin_copy_model_to(
model_id="invoice-model-westeu",
target=copy_auth
)
```
### AI Act (EU) Compliance
Custom models klassifiseres som **"limited risk"** AI-system (ikke høyrisiko) hvis de brukes til:
- Dokumentautomatisering (fakturahåndtering, arkivering)
- Intern prosesseffektivisering
**Høyrisiko-klassifisering** (krever konformitetsvurdering) hvis brukt til:
- Automatiske avgjørelser som påvirker rettigheter (trygdeytelser, lånesøknader)
- Sikkerhets-kritiske prosesser (politietterforskning, grensekontroll)
**Anbefalinger for offentlig sektor:**
- Dokumenter modellens treningsdata (datasett-karakteristikk, labeling-prosess)
- Logg model accuracy og confidence scores per dokument
- Implementer human-in-the-loop for lav confidence (<0.8)
- Oppretthold audit trail (hvilken modell-versjon ble brukt for hver analyse)
### Forvaltningsloven § 11 (Innsyn)
Innbyggere har rett til innsyn i dokumenter som omhandler dem. Custom models må:
1. **Bevare original** - Lagre både original dokument OG ekstraherte data
2. **Audit trail** - Logg hvilken modell-versjon som analyserte dokumentet
3. **Manual review** - Tilby mulighet for manuell gjennomgang ved lav confidence
### Schrems II (Data Transfers)
**Problem:** Microsoft kan i teorien få ordre fra amerikanske myndigheter om innsyn i data.
**Mitigering:**
1. Bruk **EU Data Boundary** (alle tjenester i EU-regioner)
2. Krypter sensitive felter før opplasting til Azure Blob Storage
3. Vurder **customer-managed keys** (CMK) for encryption at rest
4. Implementer data retention policies (slett treningsdata etter modell-trening)
## Kostnad og lisensiering
### Prismodell (per februar 2026)
| Operasjon | Kostnad (approx.) | Enhet |
|-----------|-------------------|-------|
| **Trening (v4.0)** | Gratis: 10 timer/mnd<br>Betalt: ~$1.50/time | Per time faktisk treningstid (min. 30 min) |
| **Trening (v3.x)** | Gratis: 20 builds/mnd<br>Betalt: N/A (ikke støttet) | Per build (maks 30 min) |
| **Analyse (S0)** | ~$1.50 per 1000 sider | Per side analysert |
| **Lagring (modeller)** | Gratis | Modeller lagres i 90 dager uten kostnad |
| **Blob Storage** | Standard blob-priser | ~$0.02/GB/måned (LRS, hot tier) |
### Total Cost of Ownership (TCO) Scenario
**Case:** 10,000 fakturaer/måned, 2 siders gjennomsnitt
| Komponent | Beregning | Kostnad/mnd |
|-----------|-----------|-------------|
| Initial trening (v4.0, 5 timer) | Gratis (innenfor 10t kvote) | $0 |
| Re-trening (månedlig, 2 timer) | Gratis (innenfor 10t kvote) | $0 |
| Analyse (20,000 sider) | 20 × $1.50 | $30 |
| Blob Storage (100 GB treningsdata) | 100 × $0.02 | $2 |
| **Total** | | **$32/mnd** |
**Sammenlignet med manuell prosessering:**
- Manuell tid: 10,000 fakturaer × 2 min = 333 timer
- Kostnad (ved $30/time): $10,000/mnd
- **ROI:** 312x kostnadsinnsparning
### Optimaliseringstips
1. **Bruk prebuilt models først** - Custom models kun for unike behov
2. **Batch processing** - Reduser API-kall ved å analysere flere dokumenter i én operasjon (opptil 2000 sider)
3. **Caching** - Lagre results for identiske dokumenter (sjekk hash før analyse)
4. **Model lifecycle** - Re-tren kun når accuracy faller (ikke på fast schedule)
5. **Free tier testing** - Bruk F0 tier for utvikling/testing (4 MB limit, 2 sider)
## For arkitekten (Cosmo)
### Spørsmål å stille klienten
1. **Dokumentvariasjoner:** "Har fakturaene/dokumentene konsistent layout, eller varierer strukturen mellom leverandører/avdelinger?"
2. **Volum og frekvens:** "Hvor mange dokumenter analyserer dere per måned, og hva er topp-belastningen?"
3. **Eksisterende prosess:** "Hvordan håndteres dokumentene i dag - manuell registrering, OCR, eller ingen prosess?"
4. **Data retention:** "Hvor lenge må treningsdata og analyserte dokumenter lagres for compliance?"
5. **Accuracy-krav:** "Hva er akseptabelt feilnivå? Kan dere akseptere 5% feilrate med manuell review, eller kreves 99%+ accuracy?"
6. **Real-time vs batch:** "Må dokumenter analyseres umiddelbart (real-time), eller kan de prosesseres i batch?"
7. **Integration:** "Skal resultatene integreres med eksisterende systemer (ERP, CRM, SharePoint)? Hvilke?"
8. **Sensitive data:** "Inneholder dokumentene personopplysninger eller forretningshemmeligheter som krever ekstra sikkerhet?"
### Fallgruver og røde flagg
| Fallgruve | Symptom | Forebygging |
|-----------|---------|-------------|
| **Under-labeled dataset** | Model accuracy <70% | Krev minst 10-15 samples, ikke 5 minimum |
| **Inconsistent labeling** | Felt funnet i noen docs, ikke andre | Bruk samme field-navn, label ALLE samples |
| **Template for neural use case** | Model feiler på nye layoutvarianter | Start med neural hvis layoutvariasjon er kjent |
| **Neural for template use case** | Unødvendig lang treningstid (30 min vs 2 min) | Bruk template hvis layout ER konsistent |
| **No validation dataset** | Ingen måte å verifisere accuracy | Del dataset 80/20 (training/testing) |
| **Over-fitting** | Perfekt på treningsdata, dårlig på nye docs | Bruk diverse samples (ulike leverandører, datoer, beløp) |
### Anbefalinger per modenhetsnivå
#### Nivå 1: Proof of Concept (1-2 uker)
- **Mål:** Verifiser at custom model løser use case
- **Approach:** Document Intelligence Studio (no-code)
- **Dataset:** 5-10 representative samples
- **Model:** Custom neural (mest generell)
- **Success criteria:** >80% accuracy på test-set
#### Nivå 2: Pilot (1-2 måneder)
- **Mål:** Produksjonsklar løsning for én dokumenttype
- **Approach:** REST API + Azure Functions/Logic Apps
- **Dataset:** 20-50 samples med variasjoner
- **Model:** Template eller neural basert på POC-læring
- **Success criteria:** >90% accuracy, <10 sek latens, human-in-the-loop for <0.8 confidence
#### Nivå 3: Enterprise Scale (3-6 måneder)
- **Mål:** Multi-dokument pipeline med CI/CD
- **Approach:** SDK + Azure DevOps + monitoring
- **Dataset:** 100+ samples per dokumenttype, continuous learning
- **Model:** Composed models + custom classifier
- **Success criteria:** >95% accuracy, auto-retry logic, model versioning, A/B testing
**Arkitekturbeslutninger for scale:**
- **Model registry** - Azure Container Registry for model artifacts
- **Feature store** - Lagre ekstraherte felter i Cosmos DB/SQL for downstream analytics
- **Monitoring** - Application Insights custom metrics (accuracy per document type, confidence distribution)
- **Retraining pipeline** - Automatisk re-trening når accuracy faller under threshold
## Kilder og verifisering
### Microsoft Learn URLs (Verified via MCP)
1. **Custom Neural Model** - https://learn.microsoft.com/en-us/azure/ai-services/document-intelligence/train/custom-neural?view=doc-intel-4.0.0 (Verified: 2026-02)
2. **Custom Model Overview** - https://learn.microsoft.com/en-us/azure/ai-services/document-intelligence/train/custom-model?view=doc-intel-4.0.0 (Verified: 2026-02)
3. **Build Custom Model Guide** - https://learn.microsoft.com/en-us/azure/ai-services/document-intelligence/how-to-guides/build-a-custom-model?view=doc-intel-4.0.0 (Verified: 2026-02)
4. **Custom Template Model** - https://learn.microsoft.com/en-us/azure/ai-services/document-intelligence/train/custom-template?view=doc-intel-4.0.0 (Verified: 2026-02)
5. **Composed Models** - https://learn.microsoft.com/en-us/azure/ai-services/document-intelligence/how-to-guides/compose-custom-models?view=doc-intel-4.0.0 (Verified: 2026-02)
6. **Custom Classifier** - https://learn.microsoft.com/en-us/azure/ai-services/document-intelligence/train/custom-classifier?view=doc-intel-4.0.0 (Verified: 2026-02)
### Konfidensnivå per seksjon
| Seksjon | Konfidensgrunnlag | Merknad |
|---------|-------------------|---------|
| Introduksjon | **Verified** | MCP-basert, offisiell docs |
| Kjernekomponenter | **Verified** | Tabeller fra Microsoft Learn |
| Arkitekturmønstre | **Baseline + Expert** | Best practices fra mønster-analyse |
| Beslutningsveiledning | **Expert** | Basert på praktisk erfaring (supplerer docs) |
| Integrasjon Microsoft-stakken | **Baseline** | SDK-eksempler fra MCP, noen hybridscenarier er inferert |
| Offentlig sektor | **Expert** | GDPR/AI Act-analyse er fortolkning av regelverk |
| Kostnad og lisensiering | **Verified (pricing)** + **Expert (TCO)** | Offisiell pricing, ROI-scenarioer er eksempler |
| For arkitekten | **Expert** | Rådgivende innhold basert på Cosmo-persona |
**Disclaimer:** Priser er omtrentlige og kan variere per region og enterprise-avtaler. Valider mot Azure Pricing Calculator før budsjettbeslutninger.