Initial addition of ms-ai-architect plugin to the open-source marketplace. Private content excluded: orchestrator/ (Linear tooling), docs/utredning/ (client investigation), generated test reports and PDF export script. skill-gen tooling moved from orchestrator/ to scripts/skill-gen/. Security scan: WARNING (risk 20/100) — no secrets, no injection found. False positive fixed: added gitleaks:allow to Python variable reference in output-validation-grounding-verification.md line 109. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
20 KiB
Document Intelligence - Custom Model Training
Last updated: 2026-02 Status: GA Category: Azure AI Services (Foundry Tools)
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
// 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 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:
- Samle 5+ samples per dokumentvariant
- Label alle felter i Document Intelligence Studio
- Tren med
buildMode: "neural" - Test med dokumenter fra alle varianter
# 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:
- Tren separate template models for hver layoutvariant
- Compose models til én modell-ID
- Document Intelligence klassifiserer automatisk ved analyse
# 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:
- Tren custom classification model (min. 5 samples per klasse)
- Tren custom extraction models for hver dokumenttype
- 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
Azure AI Foundry (tidligere Azure ML)
# 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:
- I AI Builder: Use a Custom Model → Import Document Intelligence model-ID
- I Power Automate: Process and save information from documents → Velg custom model
- 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
// 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
// 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:
- Tren modell i West Europe (EU-region, GDPR-compliant)
- Kopier modell til Norway East for produksjon
- Analyser dokumenter med Norway East-endpoint
# 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å:
- Bevare original - Lagre både original dokument OG ekstraherte data
- Audit trail - Logg hvilken modell-versjon som analyserte dokumentet
- 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:
- Bruk EU Data Boundary (alle tjenester i EU-regioner)
- Krypter sensitive felter før opplasting til Azure Blob Storage
- Vurder customer-managed keys (CMK) for encryption at rest
- 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 Betalt: ~$1.50/time |
Per time faktisk treningstid (min. 30 min) |
| Trening (v3.x) | Gratis: 20 builds/mnd 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
- Bruk prebuilt models først - Custom models kun for unike behov
- Batch processing - Reduser API-kall ved å analysere flere dokumenter i én operasjon (opptil 2000 sider)
- Caching - Lagre results for identiske dokumenter (sjekk hash før analyse)
- Model lifecycle - Re-tren kun når accuracy faller (ikke på fast schedule)
- Free tier testing - Bruk F0 tier for utvikling/testing (4 MB limit, 2 sider)
For arkitekten (Cosmo)
Spørsmål å stille klienten
- Dokumentvariasjoner: "Har fakturaene/dokumentene konsistent layout, eller varierer strukturen mellom leverandører/avdelinger?"
- Volum og frekvens: "Hvor mange dokumenter analyserer dere per måned, og hva er topp-belastningen?"
- Eksisterende prosess: "Hvordan håndteres dokumentene i dag - manuell registrering, OCR, eller ingen prosess?"
- Data retention: "Hvor lenge må treningsdata og analyserte dokumenter lagres for compliance?"
- Accuracy-krav: "Hva er akseptabelt feilnivå? Kan dere akseptere 5% feilrate med manuell review, eller kreves 99%+ accuracy?"
- Real-time vs batch: "Må dokumenter analyseres umiddelbart (real-time), eller kan de prosesseres i batch?"
- Integration: "Skal resultatene integreres med eksisterende systemer (ERP, CRM, SharePoint)? Hvilke?"
- 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)
- 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)
- 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)
- 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)
- 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)
- 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)
- 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.