# Content Understanding - Multimodal Analysis and Video Intelligence

**Last updated:** 2026-02
**Status:** Preview (GA for core features, Limited Access for face description)
**Category:** Azure AI Services (Foundry Tools)

---

## Introduksjon

Azure AI Content Understanding er en generativ AI-tjeneste designet for å transformere ustrukturert multimodalt innhold – dokumenter, bilder, video og audio – til strukturert, maskinlesbar informasjon. Tjenesten kombinerer avansert innholdsekstraksjon med generative modeller for å skape skreddersydd metadata og innsikter på tvers av modaliteter.

For video- og audioanalyse opererer Content Understanding i to hovedfaser: **innholdsekstraksjon** (transcription, shot detection, keyframe extraction) og **feltekstraksjon** (custom fields, segmentering basert på generative modeller). Dette muliggjør alt fra RAG-optimaliserte workflows til detaljert media asset management og compliance-sjekk.

Tjenesten skiller seg fra Azure AI Video Indexer ved at den fokuserer på fleksibel, schema-drevet ekstraksjon med generative modeller, mens Video Indexer leverer et bredere spekter av pre-definerte AI-innsikter (face recognition, celebrity identification, content moderation, observed people detection). Content Understanding er ideell når du trenger tilpassede felt og segmenteringslogikk definert i naturlig språk, mens Video Indexer passer bedre for omfattende, predefinerte video-innsikter.

---

## Kjernekomponenter

### Støttede modaliteter

| Modalitet | Format-eksempler | Bruksområder |
|-----------|------------------|--------------|
| **Video** | MP4, AVI, MOV, MKV | Media asset management, advertising analysis, training videos |
| **Audio** | MP3, WAV, AAC, FLAC | Podcast transcription, call center analytics, audio content classification |
| **Dokumenter** | PDF, DOCX, XLSX, PPTX, HTML | Document intelligence, form processing, contract analysis |
| **Bilder** | JPEG, PNG, BMP, TIFF | Image classification, OCR, visual content analysis |

**Tekniske begrensninger (video/audio):**
- Frame sampling: ~1 FPS (raske bevegelser eller single-frame events kan gå tapt)
- Frame resolution: 512 × 512 px resize (små detaljer eller fjerne objekter kan bli utydelige)
- Audio: Kun tale transkriberes (musikk, lydeffekter, bakgrunnsstøy ignoreres)

### Prebuilt analyzers

| Analyzer ID | Formål | Output-format |
|-------------|--------|---------------|
| `prebuilt-videoSearch` | RAG-optimalisert video-analyse med markdown og JSON | Transcript (WEBVTT), keyframes, scene descriptions, segmentering |
| `prebuilt-videoAnalysis` | Generell video-metadata for asset management | JSON med visual + audio metadata |
| `prebuilt-documentSearch` | Dokument-ekstraksjon for RAG | Markdown med pages, tables, figures, paragraphs |

**Eksempel (prebuilt-videoSearch output):**

```markdown
# Video: 00:00.000 => 00:06.000
A lively room filled with people watching a sports event on television.

Transcript

WEBVTT

00:03.600 --> 00:06.000
<Speaker 1>Get new years ready.

Key Frames
- 00:00.600 ![](keyFrame.600.jpg)
- 00:01.200 ![](keyFrame.1200.jpg)
```

### Custom analyzers

Definer egne feltschemaer og segmenteringslogikk for å trekke ut domene-spesifikk informasjon.

**Nøkkelegenskaper:**
- **Field extraction**: Strukturerte felt (string, array, object, enum) definert i JSON-schema
- **Custom segmentation**: Naturlig språk-beskrivelser av hvordan video skal segmenteres (nyhetssegmenter, kapitler, annonser)
- **Face description** (Limited Access): Ansiktsattributter (facial hair, expressions), identifisering av kjente personer

**Eksempel (custom analyzer config):**

```json
{
  "config": {
    "enableSegment": true,
    "contentCategories": {
      "news-story": {
        "description": "Segment video based on each distinct news segment. Use timestamp to identify start/end, no overlap. Ignore ads.",
        "analyzerId": "NewsAnalyzer"
      }
    },
    "fieldSchema": {
      "fields": {
        "brandLogo": {
          "type": "string",
          "method": "generate",
          "description": "Brand being promoted in the video. Include product name if available."
        },
        "sentiment": {
          "type": "string",
          "method": "classify",
          "enum": ["Positive", "Neutral", "Negative"]
        }
      }
    }
  }
}
```

### Ekstraherte elementer (audioVisual)

| Element | Audio | Video | Krever `returnDetails: true` |
|---------|-------|-------|------------------------------|
| Markdown content | ✓ | ✓ | Nei |
| Contents collection | ✓ | ✓ | Nei |
| Transcript phrases | ✓ | ✓ | Ja |
| Timing information | ✓ | ✓ | Nei |
| Key frames | ✗ | ✓ | Nei |
| Camera shots | ✗ | ✓ | Ja |
| Field extraction | ✓ | ✓ | Nei |

**Transcript phrases (JSON):**

```json
{
  "transcriptPhrases": [
    {
      "speaker": "Speaker 1",
      "startTimeMs": 280,
      "endTimeMs": 3560,
      "text": "Welcome to this first session",
      "words": []
    }
  ]
}
```

**Keyframes (JSON):**

```json
{
  "keyFrameTimesMs": [660, 1320, 2970, 3927, 4884]
}
```

Keyframes er uniformt samplet fra hver camera shot, minimum én per shot (selv ved korte shots < 1 sekund). Deterministisk utvalg på tvers av kjøringer.

**Camera shots (JSON):**

```json
{
  "cameraShotTimesMs": [2002, 22356, 26960, 53353]
}
```

Timestamps indikerer startpunktet for hver shot (unntatt første shot som alltid starter ved 0 ms). Detekterer abrupte og gradvise overganger.

---

## Arkitekturmønstre

### Mønster 1: RAG-optimalisert video-indexing

**Use case:** Gjøre video- og audio-innhold søkbart i RAG-workflows (chatbots, agent-systemer).

**Arkitektur:**
1. Last opp video/audio til Content Understanding med `prebuilt-videoSearch` analyzer
2. Tjenesten returnerer strukturert markdown (transcript + keyframes) og JSON (fields, segments)
3. Markdown + JSON lagres i Azure AI Search index med multimodal embeddings
4. RAG-systemet søker på tvers av tekst og visuelt innhold

**Fordeler:**
- Drop-in format for AI Search (ingen post-processing)
- Multimodal søk (tekst + bilde) i én pipeline
- Temporal context bevares (timestamps, keyframes)

**Ulemper:**
- Frame sampling (~1 FPS) kan miste raske handlinger
- Ikke egnet for real-time eller live video-analyse
- Krever Azure OpenAI/embedding-modeller for vektorisering

**Når bruke:** E-learning platforms, corporate training libraries, media archives, compliance video search.

---

### Mønster 2: Custom media asset management

**Use case:** Klassifisere og tagge stort video-library med domene-spesifikke kategorier (sport, nyheter, reklame).

**Arkitektur:**
1. Opprett custom analyzer med feltschema for `videoCategory`, `colorScheme`, `primaryTopic`, `brandPresence`
2. Aktiver `enableSegment: false` for hele-video-analyse
3. Batch-prosesser eksisterende video-bibliotek via REST API eller SDK
4. Lagre ekstraherte metadata i database/fabric for filtering og retrieval

**Fordeler:**
- Fleksibel feltdefinisjon i naturlig språk (ingen ML-trening)
- Støtter både klassifisering (enum) og generering (string)
- Confidence scores for kvalitetssikring

**Ulemper:**
- Generative modeller konsumerer tokens (kostnad skalerer med video-lengde og antall felt)
- Ikke real-time (asynkron long-running operation)
- Krever manuell validering av ekstraherte verdier for produksjonskritiske use cases

**Når bruke:** Broadcast media, advertising analysis, sports analytics, news archiving.

---

### Mønster 3: Compliance og brand safety screening

**Use case:** Skanne annonser/video-innhold for upassende innhold, konkurrent-merkevarer, eller regulatoriske krav.

**Arkitektur:**
1. Kombiner Content Understanding med Azure AI Content Safety (multimodal analysis)
2. Content Understanding ekstraherer `brandLogo`, `spokespersonName`, `productPlacement`
3. Content Safety analyserer visuelt innhold for harm categories (hate, violence, sexual)
4. Custom logic sammenligner ekstraherte felt mot whitelist/blacklist

**Fordeler:**
- Multimodal harm detection (tekst + bilde kombinert)
- Structured output for audit trails
- Integrasjon med Azure AI Services økosystem

**Ulemper:**
- Content Safety multimodal er limited til spesifikke regions (East US, West Europe)
- Ingen real-time screening (batch-orientert)
- False positives krever human-in-the-loop review

**Når bruke:** Ad network compliance, social media moderation, brand safety for advertisers.

---

## Beslutningsveiledning

### Når bruke Content Understanding vs. Video Indexer

| Kriterium | Content Understanding | Video Indexer |
|-----------|----------------------|---------------|
| **Custom field extraction** | ✅ Ja, via naturlig språk-schema | ❌ Nei, predefinerte insights |
| **RAG-optimalisert output** | ✅ Ja, markdown + JSON drop-in | ⚠️ Krever post-processing |
| **Face recognition** | ❌ Nei (kun face description med Limited Access) | ✅ Ja, celebrity + custom faces |
| **Custom segmentation** | ✅ Ja, NL-basert logic | ❌ Nei, predefinert scene detection |
| **Real-time analysis** | ❌ Nei (async batch) | ✅ Ja (live video streaming) |
| **Observed people tracking** | ❌ Nei | ✅ Ja (bounding boxes, clothing detection) |
| **Audio insights** | ⚠️ Transcript, diarization | ✅ Ja, keywords, emotions, topics, audio effects |
| **Pricing model** | Token-basert (generative models) | Page/minute-basert (predefined models) |

**Beslutningstre:**

```
Trenger du real-time analyse?
├─ Ja → Video Indexer (live streaming støtte)
└─ Nei → Trenger du custom fields definert i naturlig språk?
          ├─ Ja → Content Understanding
          └─ Nei → Trenger du face recognition/celebrity identification?
                   ├─ Ja → Video Indexer
                   └─ Nei → Trenger du RAG-optimalisert output uten post-processing?
                            ├─ Ja → Content Understanding (prebuilt-videoSearch)
                            └─ Nei → Vurder begge basert på cost/features

```

### Vanlige feil

| Feil | Årsak | Løsning |
|------|-------|---------|
| **Manglende detaljer i transcript** | `returnDetails: false` i analyzer config | Sett `"returnDetails": true` for å få `transcriptPhrases`, `cameraShotTimesMs` |
| **Feil språk i transcript** | Multilingual transcription brukt på usupportert locale | Spesifiser språk eksplisitt (`"language": "nb-NO"`) eller bruk `"auto"` kun for supported locales |
| **Tomme custom fields** | Prompt-beskrivelse for vag eller motsier video-innhold | Iterer på field descriptions, test med sample videos, bruk `method: "classify"` + enum for standardiserte verdier |
| **Face description ikke tilgjengelig** | Limited Access feature, krever approval | Send Azure support request for å aktivere `disableFaceBlurring: true` |
| **Høy kostnad på lange videoer** | Generative models konsumerer tokens per frame + segment | Optimaliser med `enableSegment: false` for hele-video, reduser antall custom fields, bruk prebuilt analyzers hvor mulig |

### Røde flagg

- **Video > 2 timer:** Content Understanding er optimalisert for kortere videoer (ads, training, clips). For lang-format innhold (filmer, full-length shows), vurder Video Indexer.
- **Real-time krav:** Content Understanding er asynkron batch-prosessering. For live video, bruk Video Indexer real-time analysis.
- **Biometric data uten consent:** Face description krever Legal/Privacy review og brukersamtykke under GDPR/AI Act. Ikke aktiver uten juridisk godkjenning.
- **Mission-critical accuracy:** Generative modeller kan hallusinere. Krever human review for compliance/legal use cases.

---

## Integrasjon med Microsoft-stakken

### Azure AI Foundry

Content Understanding er en core Foundry service, tilgjengelig via:
- **Azure AI Foundry portal**: GUI for testing analyzers, viewing results
- **Foundry SDK** (Python, .NET): `ContentUnderstandingClient` klasse
- **REST API**: `POST /contentunderstanding/analyzers/{analyzerId}:analyze`

**Integrasjon med andre Foundry-tjenester:**

| Tjeneste | Integrasjonspunkt |
|----------|-------------------|
| **Azure OpenAI** | Generative modeller (GPT-4o, o1) for field extraction og segmentering |
| **Azure AI Speech** | Transcription engine (samme språkstøtte som Speech in Foundry Tools) |
| **Azure AI Vision** | Image analysis for keyframes (OCR, object detection) |
| **Azure Document Intelligence** | Document extraction for multimodal documents (PDF, DOCX) |

### Azure AI Search

**Multimodal search skillset:**

Content Understanding kan integreres som skill i Azure AI Search indexer pipeline via `Azure Content Understanding skill` (cognitive-search-skill-content-understanding).

**Sammenligning med Document Layout + Vision vectorization:**

| Komponent | Document Extraction skill | Document Layout skill | Content Understanding skill |
|-----------|---------------------------|------------------------|------------------------------|
| **Text location metadata** | Nei | Ja (single page) | Ja (cross-page) |
| **Image location metadata** | Ja (PDF only) | Ja (multi-format) | Ja (multi-format) |
| **Table extraction** | Nei | Nei | Ja (cross-page tables) |
| **Semantic chunking** | Nei (use Text Split skill) | Ja (paragraph boundaries) | Ja (semantic units) |
| **Supported formats** | PDF, images | PDF, DOCX, XLSX, PPTX | PDF, DOCX, XLSX, PPTX, video, audio |
| **Pricing** | AI Search pricing | Document Intelligence pricing | Content Understanding pricing |

**Når bruke Content Understanding skill:**
- Krever cross-page table extraction (contracts, financial reports)
- Multimodal dokumenter med innebygde videoer/audio
- Trenger semantic chunking over paragraph-level chunking

### Microsoft Fabric

Ekstraherte metadata kan eksporteres til Fabric for:
- **Data lakehouse**: Strukturert lagring av video metadata
- **Power BI**: Dashboards for video analytics (views, sentiment, brand exposure)
- **Dataflows**: ETL-prosessering av ekstraherte felt

**Eksempel-workflow:**
1. Content Understanding → JSON output til Azure Blob Storage
2. Fabric dataflow leser JSON fra blob
3. Transformasjon til tabellformat (flate strukturer)
4. Lagre i Fabric lakehouse
5. Power BI rapport over video library insights

### Power Platform

**Power Automate:**
- Trigger: "When video uploaded to SharePoint/Blob"
- Action: Call Content Understanding REST API
- Action: Parse JSON response og lagre til Dataverse/SharePoint list

**Power Apps:**
- Custom connector for Content Understanding API
- Video metadata viewer app for content editors

**AI Builder:**
- Ingen direkte integrasjon (AI Builder fokuserer på structured data, forms, text)
- Bruk Content Understanding som preprocessing step før AI Builder models

---

## Offentlig sektor (Norge)

### GDPR og personvern

**Risikovurdering:**

| Feature | GDPR-risiko | Mitigering |
|---------|-------------|------------|
| **Transcript (speaker diarization)** | Moderat (personidentifisering via stemme) | Anonymiser speaker labels ("Speaker 1" vs. navn), lagre transkripsjon separert fra audio-fil |
| **Face description** | Høy (biometric data, Article 9) | Krever eksplisitt samtykke, DPIA, Legal review. Ikke aktiver uten godkjenning. |
| **Keyframes** | Lav-Moderat (kan inneholde personer) | Blur faces i keyframes hvis nødvendig (custom post-processing) |
| **Custom fields (names, roles)** | Høy hvis felt ekstraherer persondata | Definer klare data retention policies, tilgangskontroll, slettingsrutiner |

**Face description (Limited Access):**
- Krever Azure support request + justification
- Microsoft vurderer use case før godkjenning
- Må dokumentere legal basis (consent, public interest, legitimate interest)
- Under AI Act (EU): High-risk system hvis brukt til identifisering i offentlige rom

### Schrems II og datasuverenitet

Content Understanding er en Azure Foundry service, underlagt samme datasuverenitet-krav som andre Azure-tjenester.

**Data processing locations:**
- **EU-regioner:** West Europe, North Europe (data residency i EU)
- **Generative models (Azure OpenAI):** Kan prosesseres i US-regions (avhenger av OpenAI deployment)

**Anbefalinger:**
- Deploy Content Understanding resources i **Norway East** eller **West Europe** for EU data residency
- Verifiser at Azure OpenAI deployment også er i EU-region (eller bruk customer-managed keys + EU Boundary)
- For sensitive offentlige videoer: Vurder Azure Government Cloud (ikke tilgjengelig i Norge, men for US gov customers)

**Data retention:**
- Input-filer lagres ikke av tjenesten (kun transiently under prosessering)
- Output (JSON/markdown) returneres til customer storage (blob, AI Search index)
- Ingen logging av video-innhold i Microsoft telemetry (kun metadata som file size, duration)

### AI Act (EU)

Content Understanding faller inn under flere AI Act-kategorier:

| Use Case | AI Act Classification | Obligations |
|----------|----------------------|-------------|
| **Video surveillance (public spaces)** | High-risk (Annex III) | Conformity assessment, risk management, transparency, human oversight |
| **Emotion detection (face description)** | Prohibited (Article 5) hvis brukt til inferring emotions in workplace/education | Ikke bruk `faceSmilingFrowning` felt i HR/school contexts |
| **Content moderation** | High-risk hvis brukt til automated decision-making | Human review loop, appeal mechanism |
| **Media asset management** | Low-risk / minimal risk | Transparency notice (AI-generated metadata) |

**Compliance checklist:**
- [ ] DPIA utført hvis face description aktiveres
- [ ] Transparency notice til brukere om AI-genererte metadata
- [ ] Human-in-the-loop for high-risk decisions (content removal, compliance violations)
- [ ] Dokumentasjon av training data (for custom models, hvis relevant)
- [ ] Regular accuracy testing og bias monitoring

### Forvaltningsloven (Norge)

Hvis Content Understanding brukes i saksbehandling (f.eks. analyse av innsendte videoer i klagesaker):

**§ 11 (informasjonsplikt):**
- Informer sakspart om at video analyseres med AI
- Forklar hvilke metadata som ekstraheres (transcript, faces, sentiment)
- Gi rett til å motsette seg automatisert behandling

**§ 17 (begrunnelsesplikt):**
- Vedtak basert på AI-ekstraherte insights må begrunnes
- Ikke "systemet sa at videoen inneholder X" — menneskelig vurdering må dokumenteres

**Anbefalinger:**
- Bruk Content Understanding som beslutningsstøtte, ikke automatisert saksbehandling
- Lagre audit trail av hvilke felt som ble ekstrahert og hvordan de påvirket beslutning
- Tilby innsyn i ekstraherte metadata til sakspart

---

## Kostnad og lisensiering

### Prismodell

Content Understanding prises basert på **token consumption** for generative models + **content extraction** for audio/video processing.

**Komponenter:**

| Komponent | Prisingsmetrikk | Estimert kostnad (NOK, Feb 2026) |
|-----------|-----------------|-----------------------------------|
| **Content extraction (video)** | Per minute video | ~0.50 NOK/min |
| **Content extraction (audio)** | Per minute audio | ~0.30 NOK/min |
| **Field extraction (generative)** | Per 1000 tokens (input + output) | ~0.10 NOK/1K tokens (GPT-4o) |
| **Segmentation (generative)** | Per 1000 tokens | Inkludert i field extraction |

**Eksempel-beregning (5-minutters reklame-video):**

1. **Content extraction:** 5 min × 0.50 NOK = 2.50 NOK
2. **Keyframe extraction:** 5 frames/min × 5 min = 25 keyframes (inkludert i extraction)
3. **Transcript:** ~150 ord/min × 5 min = 750 ord ≈ 1000 tokens (inkludert i extraction)
4. **Field extraction (3 custom fields):**
   - Input: 750 transcript tokens + 25 keyframes × 1000 tokens/image = 25,750 tokens
   - Output: ~500 tokens (3 felt × ~150 tokens hver)
   - Total: 26,250 tokens ≈ 26K tokens × 0.10 NOK/1K = 2.60 NOK
5. **Total:** 2.50 + 2.60 = **5.10 NOK per video**

**Prebuilt analyzers:**
- `prebuilt-videoSearch`: Lavere kostnad enn custom (færre tokens, optimaliserte prompts)
- Estimat: 60-70% av custom analyzer kostnad

### Optimaliseringstips

| Strategi | Besparelse | Trade-off |
|----------|------------|-----------|
| **Bruk prebuilt analyzers** | 30-40% lavere kostnad | Mindre fleksibilitet i output-format |
| **Disable segmentation** (`enableSegment: false`) | 20-30% lavere tokens | Ingen segment-level metadata |
| **Reduser antall custom fields** | Lineær besparelse per felt | Mindre granulær metadata |
| **Batch-prosessering** | Ingen direkte besparelse, men bedre ressursutnyttelse | Ingen real-time output |
| **Lower frame sampling** | Ikke konfigurerbart (fast ~1 FPS) | N/A |
| **Bruk AI Search skill** | AI Search absorber en del preprocessing-kostnad | Krever AI Search subscription |

### Lisensiering

Content Understanding er en **Azure Foundry Tools** tjeneste, inkludert i:

| Lisens | Inkludert | Begrensninger |
|--------|-----------|---------------|
| **Azure subscription (pay-as-you-go)** | Full tilgang | Kostnad per bruk (token-basert) |
| **Azure commitment (EA)** | Inkludert i Foundry commitment | Samme prising, men prepaid credits |
| **Free tier** | Ikke tilgjengelig | Krever betalt subscription |

**MCP-servere (for Claude Code):**
- Ingen lisensieringskrav utover Azure subscription
- Bruk `microsoft-learn` MCP for dokumentasjonssøk (gratis)
- Content Understanding API-tilgang krever Azure keys

---

## For arkitekten (Cosmo)

### Spørsmål å stille kunden

1. **Volum og format:**
   - Hvor mange videoer/audio-filer skal prosesseres? (per dag/uke/måned)
   - Typisk video-lengde? (< 5 min, 5-30 min, > 30 min)
   - Format-variasjon? (kun MP4, eller også legacy formater?)

2. **Custom fields vs. prebuilt:**
   - Trenger dere domene-spesifikke metadata-felt? (Eksempler: `productType`, `complianceStatus`, `brandSafety`)
   - Er predefinerte insights (transcript, keyframes, scene descriptions) tilstrekkelig?
   - Hvor kritisk er accuracy? (toleranse for feil i ekstraherte verdier)

3. **Segmentering:**
   - Skal videoer analyseres som helhet, eller segmentert i kapitler/scener?
   - Har dere eksisterende segmenteringslogikk? (timecodes, manual tagging)
   - Trenger dere variable segment-lengder? (news clips vs. full episodes)

4. **Personvern og compliance:**
   - Inneholder videoer personer? (faces, voices)
   - Trenger dere face description/identification? (krever Legal review + Limited Access)
   - Er dette offentlige videoer (web-published) eller interne/sensitive?
   - Hvilke GDPR Article 6/9 legal bases gjelder?

5. **Integrasjon:**
   - Hvor skal metadata lagres? (AI Search, SQL, Fabric, SharePoint)
   - Trenger dere RAG-optimalisert output? (markdown + embeddings)
   - Eksisterende video storage? (blob, SharePoint, on-prem NAS)
   - Real-time krav? (live video streams vs. batch uploaded files)

6. **Kostnad:**
   - Hva er budsjettet per video? (eller totalt per måned)
   - Er token-basert prising akseptabelt? (variabel kostnad per video-kompleksitet)
   - Preferanse for flat-rate pricing? (vurder Video Indexer hvis ja)

7. **Modenhet:**
   - Har teamet erfaring med generative AI APIs?
   - Finnes ML/AI-kompetanse for å validere output-kvalitet?
   - Trenger dere managed service (Azure support) eller self-serve?

8. **Fallback og feilhåndtering:**
   - Hva skjer hvis analyse feiler? (retry logic, manual fallback)
   - Toleranse for hallucinations i custom fields?
   - Human-in-the-loop review-prosess etablert?

### Fallgruver

| Fallgruve | Symptom | Forebygging |
|-----------|---------|-------------|
| **Over-engineering custom fields** | Høy kostnad, treg prosessering, inkonsistente verdier | Start med prebuilt analyzer, iterer til custom fields kun hvis nødvendig |
| **Manglende human review** | Feil metadata i produksjon, compliance-brudd | Implementer confidence thresholds, flag lav-confidence outputs for review |
| **Ignorer technical constraints** | Klager om "hvorfor fant ikke systemet denne 1-sekunders hendelsen?" | Dokumenter frame sampling (1 FPS) + resolution limits i user documentation |
| **Face description uten Legal review** | GDPR/AI Act violations, PR-kriser | Alltid involver Legal før aktivering av `disableFaceBlurring` |
| **Ingen test av multilingual transcription** | Feil språk i transkripsjon, uleselig output | Test med sample files, spesifiser språk eksplisitt vs. `auto` |
| **Undervurdere token consumption** | Budsjettoverskridelse | Kalkuler tokens på forhånd, bruk prebuilt analyzers for cost control |
| **Synkron polling-mønster** | Timeout issues, dårlig UX | Bruk async polling (`.begin_analyze()` + polling hver 20 sek), eller webhooks (ikke GA, men preview) |

### Anbefalinger per modenhetsnivå

**Nivå 1 - Exploratory (PoC):**
- Bruk `prebuilt-videoSearch` for rask demonstrasjon av RAG on video
- Test med 5-10 sample videos (varierende lengde, innhold)
- Deploy i development subscription (ikke prod)
- Fokus: Bevise at teknologien kan ekstrahere relevant info

**Nivå 2 - Pilot (MVP):**
- Definer 1-3 custom fields basert på faktisk business need
- Implementer confidence thresholds (f.eks. flag outputs < 0.7 confidence for review)
- Deploy i prod-lignende miljø (West Europe eller Norway East)
- Integrer med eksisterende storage (blob, AI Search)
- Etabler cost monitoring (Azure Cost Management alerts)

**Nivå 3 - Production (Scale):**
- Optimaliser custom field descriptions basert på pilot-data
- Implementer batch-prosessering pipeline (Azure Functions + Durable Functions for orchestration)
- Sett opp monitoring (Application Insights, Log Analytics)
- Legal/Privacy review av face description hvis aktivert
- Etabler SLA for processing time (f.eks. "videoer < 10 min prosesseres innen 5 min")

**Nivå 4 - Optimization (Mature):**
- A/B-test prebuilt vs. custom analyzers (cost vs. accuracy trade-offs)
- Fine-tune field descriptions basert på production feedback
- Implementer caching av frequently accessed metadata
- Vurder Video Indexer for real-time use cases (hybrid approach)
- Contributor til Microsoft feedback (feature requests, bug reports)

---

## Kilder og verifisering

### Microsoft Learn (MCP-verifiserte)

| Seksjon | Kilde-URL | Konfidensnivå |
|---------|-----------|---------------|
| Video overview, capabilities | https://learn.microsoft.com/en-us/azure/ai-services/content-understanding/video/overview | Verified (Feb 2026) |
| AudioVisual elements, JSON schema | https://learn.microsoft.com/en-us/azure/ai-services/content-understanding/video/elements | Verified (Feb 2026) |
| Video Indexer scene/shot/keyframe detection | https://learn.microsoft.com/en-us/azure/azure-video-indexer/scene-shot-keyframe-detection-insight | Verified (Feb 2026) |
| Standard vs. Pro modes | https://learn.microsoft.com/en-us/azure/ai-services/content-understanding/concepts/standard-pro-modes | Verified (Feb 2026) |
| Multimodal search (AI Search integration) | https://learn.microsoft.com/en-us/azure/search/multimodal-search-overview | Verified (Feb 2026) |
| Azure AI Video Indexer insights overview | https://learn.microsoft.com/en-us/azure/azure-video-indexer/insights-overview | Verified (Feb 2026) |
| Python SDK (ContentUnderstandingClient) | https://learn.microsoft.com/en-us/python/api/overview/azure/ai-contentunderstanding-readme | Verified (Feb 2026) |
| Data privacy and security | https://learn.microsoft.com/en-us/azure/ai-foundry/responsible-ai/content-understanding/data-privacy | Verified (Feb 2026) |

### Baseline (modellkunnskap)

| Seksjon | Konfidensnivå | Merknad |
|---------|---------------|---------|
| Kostnadsestimater (NOK) | Baseline (est. Feb 2026) | Priser kan variere, sjekk Azure Pricing Calculator for nøyaktige tall |
| GDPR/AI Act compliance | Baseline (legal interpretation) | Krever juridisk review per use case, ikke definitive legal advice |
| Offentlig sektor (Norge) guidance | Baseline (expert recommendation) | Basert på generell forståelse av norske lover, ikke case law |
| Fallgruver og best practices | Baseline (arkitektur-erfaring) | Basert på typiske anti-patterns, ikke spesifikke customer incidents |

### Manglende dokumentasjon (gaps)

- **Webhooks for async completion**: Preview feature, ikke dokumentert i GA docs (per Feb 2026)
- **Token consumption per field type**: Ingen offisiell dokumentasjon av hvordan `method: "classify"` vs. `"generate"` påvirker token usage
- **Face description approval process**: Limited Access request-prosedyre er dokumentert, men approval-kriterier er ikke offentlige
- **AI Search skill pricing**: Content Understanding skill pricing er ikke eksplisitt skilt fra Document Extraction/Layout skills i Azure Search pricing page

---

**Sist oppdatert av:** Cosmo Skyberg
**Neste review:** 2026-04 (eller ved ny GA release av Content Understanding)
