Azure Form Recognizer Voor Betrouwbare Documentverwerking In De Overheid

đź’Ľ Management Samenvatting

Azure Form Recognizer – tegenwoordig onderdeel van Azure AI Document Intelligence – biedt Nederlandse overheidsorganisaties de mogelijkheid om grote hoeveelheden gescande formulieren, brieven en pdf‑dossiers automatisch te analyseren en om te zetten naar gestructureerde gegevens. Door slim gebruik te maken van vooraf getrainde en layout‑gebaseerde AI‑modellen kan informatie die nu handmatig wordt overgetypt, veilig, reproduceerbaar en controleerbaar worden uitgelezen.

Aanbeveling
IMPLEMENT
Risico zonder
High
Risk Score
8/10
Implementatie
120u (tech: 70u)
Van toepassing op:
âś“ Azure
âś“ M365
âś“ AI Services

Zonder een goed ontworpen en beheerde inzet van Form Recognizer blijven veel documentgedreven processen traag, foutgevoelig en lastig te auditen. Medewerkers besteden kostbare tijd aan overtypwerk, waardoor de kans op invoerfouten toeneemt en dossiers niet overal op dezelfde manier worden vastgelegd. Tegelijkertijd neemt de druk toe om sneller besluiten te nemen, transparant te zijn over onderliggende informatie en aan te tonen dat de verwerking van documenten voldoet aan de AVG, de BIO en de eisen uit de EU AI Act. Wanneer instellingen Form Recognizer ad‑hoc of ongecontroleerd inzetten – bijvoorbeeld door losse scripts of experimenten – ontstaat het risico dat persoonsgegevens buiten het gezichtsveld van security en privacy worden verwerkt, dat de herkomst van data niet meer is vast te stellen en dat beslissingen onvoldoende uitlegbaar zijn voor burgers, rechters of auditors.

PowerShell Modules Vereist
Primary API: Azure Portal, Azure Resource Manager
Connection: Connect-AzAccount
Required Modules: Az.Accounts

Implementatie

Dit artikel beschrijft hoe u Azure Form Recognizer op een beheerste en aantoonbaar betrouwbare manier inzet binnen Nederlandse overheidsorganisaties. We gaan in op architectuurkeuzes, het selecteren van geschikte scenario’s, het inrichten van een veilige data‑aanvoer, het gebruik van prebuilt‑ en layout‑modellen en de rol van aanvullende custom models. Vervolgens laten we zien hoe u datakwaliteit, uitlegbaarheid en compliance structureel borgt, onder meer door duidelijke documentatie‑eisen, gescheiden omgevingen voor test en productie, en geautomatiseerde controles op configuratie en documentatie. Tot slot koppelen we deze aanpak aan een PowerShell‑script waarmee u periodiek kunt controleren of de Form Recognizer‑omgeving, verbonden opslag en documentatie nog in lijn zijn met de kaders van de "Nederlandse Baseline voor Veilige Cloud".

Architectuur en gebruiksscenario’s voor Form Recognizer

De inzet van Azure Form Recognizer begint met een heldere architectuur en een expliciete keuze voor de processen waarin automatische documentverwerking daadwerkelijk waarde toevoegt. In Nederlandse overheidsorganisaties gaat het vaak om vergunningaanvragen, subsidies, handhavingsdossiers, bezwaarschriften, Wob/Woo‑verzoeken en andere documentstromen waarin dezelfde informatie op uiteenlopende manieren wordt aangeleverd. Traditioneel lezen medewerkers deze documenten handmatig en registreren zij de relevante velden in een zaaksysteem of documentmanagementsysteem. Dat is arbeidsintensief, vertraagt besluitvorming en maakt het lastig om achteraf te reconstrueren welke informatie precies aan een besluit ten grondslag lag. Door Form Recognizer centraal te positioneren als dienst voor optische tekenherkenning (OCR) en semantische extractie, kan deze basisinname van gegevens grotendeels worden geautomatiseerd, terwijl de interpretatie en besluitvorming nadrukkelijk bij de mens blijft.

Een robuuste referentie‑architectuur koppelt Form Recognizer aan bestaande publieksportalen, zaak‑ en archiefsystemen. Inkomende documenten worden eerst veilig opgeslagen in een afgeschermde broncontainer in Azure Storage, waarbij encryptie aan de serverzijde is ingeschakeld en toegang uitsluitend via beheerde identiteiten of service principals verloopt. Vanuit deze container roept een verwerkingscomponent – bijvoorbeeld Azure Functions of Logic Apps – de Form Recognizer API aan met verwijzing naar het document. De ruwe output van Form Recognizer wordt vervolgens vertaald naar het gegevensmodel van de organisatie: velden worden gemapt naar zaakkenmerken, metadata of gestructureerde tabellen. Door deze verwerkingsketen als herhaalbare pipeline te implementeren, bijvoorbeeld met Azure Data Factory of een DevOps‑pipeline, ontstaat een gestandaardiseerde weg van ongeordend document naar gecontroleerde data.

Belangrijk is dat u per scenario expliciet vastlegt welke rol Form Recognizer speelt en hoe groot de mate van automatisering mag zijn. Voor laagrisico‑processen, zoals het verwerken van generieke informatieverzoeken, kan het verantwoord zijn om bepaalde velden volledig automatisch over te nemen zodra de nauwkeurigheid aantoonbaar hoog is. Bij hoogrisico‑besluiten – bijvoorbeeld besluiten met grote financiële of juridische impact – blijft menselijke controle noodzakelijk. In die gevallen gebruikt u Form Recognizer vooral om gegevens voor te vullen, waarna behandelaars deze gegevens beoordelen en zo nodig corrigeren voordat het dossier definitief wordt opgeslagen. Deze werkwijze past bij de EU AI Act, waarin human oversight een kernprincipe is voor AI‑toepassingen met impact op burgers.

Daarnaast moet de architectuur rekening houden met dataminimalisatie, doelbinding en bewaartermijnen. Niet elk veld dat Form Recognizer technisch kan extraheren, mag of hoeft te worden opgeslagen. Voor elk scenario bepaalt u welke gegevens noodzakelijk zijn om de publiekrechtelijke taak uit te voeren of de overeenkomst na te komen, en welke informatie direct na verwerking kan worden verwijderd of geanonimiseerd. Hierbij hoort een ontwerp waarin log‑bestanden en technische traces geen volledige documenten of gevoelige velden bevatten, maar alleen de informatie die nodig is voor foutanalyse en prestatiemonitoring. Door dit al in de architectuur te verankeren, reduceert u het risico op datalekken en voldoet u beter aan de AVG‑principes van minimale gegevensverwerking en privacy by design.

Datakwaliteit, beveiliging en compliance in de verwerking

De toegevoegde waarde van Form Recognizer staat of valt met de kwaliteit en veiligheid van de documenten die worden verwerkt. Voor overheidsorganisaties betekent dit dat de volledige keten – van upload tot opslag en uitgelezen gegevens – moet worden ontworpen vanuit het perspectief van informatiebeveiliging en privacy. Alle opslaglocaties die met Form Recognizer samenwerken, moeten standaard zijn voorzien van versleuteling, netwerkisolatie (bijvoorbeeld via private endpoints of een vNet‑integratie) en strikte toegangscontrole op basis van rol‑ en taakverdeling. Alleen systemen en personen die de documenten daadwerkelijk nodig hebben voor hun rol, krijgen toegang, waarbij toegang wordt gelogd en periodiek wordt herzien. Hiermee sluit de organisatie aan bij de BIO‑eisen rond toegangsbeheer en logging, en bij de NIS2‑verplichting om kritieke digitale processen aantoonbaar te beschermen.

Op het vlak van datakwaliteit is het cruciaal om structureel te meten hoe goed Form Recognizer de vereiste velden herkent. Dit gaat verder dan het globaal beoordelen van de leesbaarheid van de OCR‑output. Voor elk proces wordt een set kritieke velden gedefinieerd – bijvoorbeeld zaaknummer, beslissingsdatum, naam aanvrager, onderwerp en juridische grondslag – waarvoor periodiek steekproeven worden genomen. In deze steekproeven vergelijkt men de door Form Recognizer uitgelezen waarden met de werkelijke waarden in het bronbestand of met handmatig vastgestelde gouden standaarden. Fouten worden niet alleen geteld, maar ook geclassificeerd naar ernst en impact op het proces. Een verkeerde postcode kan bijvoorbeeld minder ernstig zijn dan een verkeerd ingevulde beslissingsdatum die de bezwaartermijn beïnvloedt. Op basis van deze analyses wordt bepaald welke mate van automatische overname aanvaardbaar is en waar aanvullende menselijke controles nodig blijven.

Compliance vraagt bovendien om goede documentatie van de datastromen en verwerkingsdoeleinden. Voor elke Form Recognizer‑bron definieert u in het verwerkingsregister welke typen persoonsgegevens worden verwerkt, onder welke grondslag, hoe lang de data wordt bewaard en met welke externe diensten gegevens eventueel worden gedeeld. Omdat Form Recognizer regelmatig wordt gecombineerd met andere Azure‑diensten, zoals Cognitive Search of generatieve AI, is het belangrijk deze ketens integraal te beschrijven. Burgers moeten bij een inzageverzoek kunnen begrijpen hoe hun documenten zijn verwerkt en welke geautomatiseerde stappen daarop zijn toegepast. Dit vergt heldere gebruikersinformatie, maar ook interne documentatie over de koppeling tussen Form Recognizer, de opslaglagen en de zaaksystemen. Het ontbreken van deze documentatie leidt tot risico’s bij audits, inspecties of juridische procedures.

Tot slot moet de organisatie nadenken over foutafhandeling en incidentrespons rond Form Recognizer. Wanneer bijvoorbeeld blijkt dat een verwerkingsstroom gedurende enige tijd documenten in de verkeerde map heeft geplaatst, of dat een configuratiewijziging tot systematische uitleesfouten heeft geleid, moet duidelijk zijn hoe dit wordt opgespoord, gecorrigeerd en gemeld. Dit vraagt om goede logging – inclusief correlatie‑ID’s om individuele documenten te kunnen volgen – en om afgesproken procedures in het incidentresponsplan. Door Form Recognizer integraal op te nemen in het informatiebeveiligingsbeleid, wordt het geen los experiment, maar een volwassen, beheersbare component van de digitale ruggengraat van de organisatie.

Monitoring, governance en geautomatiseerde controles

Gebruik PowerShell-script form-recognizer.ps1 (functie Invoke-Monitoring) – Voert geautomatiseerde controles uit op de configuratie, documentatie en logische scheiding van de Form Recognizer‑omgeving en rapporteert over compliance‑status..

Naarmate Form Recognizer wordt opgeschaald naar meerdere processen en organisatieonderdelen, groeit de noodzaak om grip te houden op configuratie, documentatie en operationele prestaties. Governance begint met het benoemen van een formele proceseigenaar en een technische eigenaar van de Form Recognizer‑omgeving. De proceseigenaar is verantwoordelijk voor de rechtmatigheid, proportionaliteit en uitlegbaarheid van de inzet, terwijl de technische eigenaar toeziet op beveiliging, beschikbaarheid, capaciteitsplanning en versiebeheer. Samen stellen zij acceptatiecriteria op, bijvoorbeeld minimale nauwkeurigheid per veld, maximale doorlooptijden en eisen aan logging en documentatie. Deze criteria worden vervolgens vastgelegd in beheerprocedures en service‑niveaudoelstellingen zodat duidelijk is wanneer het platform als gezond wordt beschouwd.

Effectieve governance vraagt om structurele monitoring, niet alleen op infrastructuurniveau maar ook op het niveau van de documentstroom en datakwaliteit. Naast het standaard monitoren van CPU‑belasting, storingen en API‑fouten via Azure Monitor, richt u dashboards in die inzicht geven in aantallen verwerkte documenten, foutpercentages, doorlooptijden en afwijkingen per proces. Deze dashboards leggen de link met de eerder gedefinieerde kwaliteits‑ en compliance‑eisen. Een plotselinge stijging van het aantal mislukkende uitleesacties of een toename van correcties door behandelaars is een signaal dat er mogelijk iets is gewijzigd in de documentstroom (bijvoorbeeld een nieuw formulier) of in de configuratie van het model. Door deze signalen actief te volgen, kan de organisatie tijdig bijsturen voordat de kwaliteit van besluiten in gevaar komt.

Een praktische manier om governance te operationaliseren is het combineren van dashboards met periodieke PowerShell‑scripts die de configuratie en documentatie tegen een vast kader aanhouden. Het bijbehorende script voor dit artikel leest een lokaal configuratiebestand waarin Form Recognizer‑resources, gekoppelde opslaglocaties en documentatiebestanden zijn geregistreerd. Voor elke resource controleert het script of de verwachte documentatiebestanden aanwezig en recent genoeg zijn, of de gebruikte regio en prijs‑tier aansluiten op de architectuurafspraken, en of er signalen zijn dat log‑bestanden of audittrails ontbreken. De resultaten worden samengevat in een compact rapport dat kan worden gebruikt in CAB‑vergaderingen, audits en periodieke risicobeoordelingen. Zo wordt governance geen papieren tijger, maar een concreet en herhaalbaar controleproces.

Remediatie en continue verbetering van Form Recognizer‑implementaties

Gebruik PowerShell-script form-recognizer.ps1 (functie Invoke-Remediation) – Genereert acties en templates voor het aanvullen van ontbrekende documentatie en het herstellen van configuratie‑issues in Form Recognizer‑omgevingen..

Zelfs een zorgvuldig ontworpen Form Recognizer‑implementatie veroudert in de tijd. Formulieren veranderen, processen worden heringericht, nieuwe wetgeving treedt in werking en AI‑modellen worden door Microsoft vernieuwd. Daarom moet de organisatie remediatie niet zien als een eenmalige opschoonactie, maar als vast onderdeel van het reguliere beheer. Wanneer monitoring laat zien dat bepaalde omgevingen onvoldoende documentatie hebben, dat log‑instellingen niet langer voldoen of dat foutpercentages boven de afgesproken drempelwaarden uitkomen, is het nodig om gerichte verbeteracties te plannen. Dit kan variëren van het bijwerken van handleidingen en architectuurdocumenten tot het herinrichten van opslagstructuren en het opnieuw doornemen van machtigingen op containers en resources.

Het remediatieproces verloopt idealiter volgens een vaste cyclus: detecteren, analyseren, plannen, uitvoeren en evalueren. Na een geautomatiseerde detectie – bijvoorbeeld een rapport waaruit blijkt dat de documentatie van een omgeving ouder is dan een jaar – volgt een inhoudelijke analyse door proceseigenaren en security‑specialisten. Zij bepalen welke risico’s hiermee samenhangen en welke acties prioriteit hebben. Vervolgens worden concrete verbetermaatregelen gepland, inclusief verantwoordelijkheden en streefdata, en wordt vastgelegd welke aanvullende controles nodig zijn om te bevestigen dat de ingrepen effect hebben gehad. Door deze cyclus expliciet op te nemen in het reguliere change‑ en releaseproces, blijft Form Recognizer niet hangen in experimentele stadia, maar ontwikkelt het zich tot een stabiele, volwassen dienst.

De bij dit artikel horende PowerShell‑scripts ondersteunen deze cyclus door automatisch inzichtelijk te maken waar documentatie ontbreekt of verouderd is en welke omgevingen mogelijk niet volledig voldoen aan de afgesproken configuratiestandaarden. Het script kan, indien gewenst, zelfs standaardtemplates voor documentatiebestanden genereren en basisrapportages produceren met daarin de belangrijkste bevindingen, zodat bestuurders en auditors snel een beeld krijgen van de status. Door deze tooling structureel te gebruiken – bijvoorbeeld voorafgaand aan belangrijke audits, bij lifecycle‑momenten van applicaties of bij grote wijzigingen in processen – ontstaat een continu verbeterproces waarin techniek, beleid en praktijk elkaar versterken en waarin Azure Form Recognizer veilig en verantwoord wordt ingezet ten dienste van burgers en medewerkers.

Compliance & Frameworks

Automation

Gebruik het onderstaande PowerShell script om deze security control te monitoren en te implementeren. Het script bevat functies voor zowel monitoring (-Monitoring) als remediation (-Remediation).

PowerShell
<# .SYNOPSIS Monitoring en remediatie voor Azure Form Recognizer implementaties .DESCRIPTION Voert geautomatiseerde controles uit op configuratie- en documentatiestatus van Azure Form Recognizer omgevingen en genereert waar nodig acties en templates voor remediatie. .NOTES Filename: form-recognizer.ps1 Author: Nederlandse Baseline voor Veilige Cloud Created: 2025-11-26 Last Modified: 2025-11-26 Version: 1.0 Related JSON: content/ai/document-intelligence/form-recognizer.json .LINK https://github.com/[org]/m365-tenant-best-practise .EXAMPLE .\form-recognizer.ps1 -Monitoring Voert controles uit op de status van Form Recognizer-omgevingen en bijbehorende documentatie. .EXAMPLE .\form-recognizer.ps1 -Remediation Genereert templates en basisdossiers voor ontbrekende documentatie en configuratiestandaarden. #> #Requires -Version 5.1 [CmdletBinding()] param( [Parameter(HelpMessage = "Monitor huidige configuratie- en documentatiestatus")] [switch]$Monitoring, [Parameter(HelpMessage = "Genereer remediatie-acties en documentatietemplates")] [switch]$Remediation, [Parameter(HelpMessage = "Toon wat er zou gebeuren zonder daadwerkelijk te wijzigen")] [switch]$WhatIf, [Parameter(HelpMessage = "Pad naar lokale configuratie van Form Recognizer-resources")] [string]$ConfigPath = "D:\Github\m365-tenant-best-practise\config\ai\form-recognizer-config.json", [Parameter(HelpMessage = "Rootpad waar documentatiebestanden van Form Recognizer worden opgeslagen")] [string]$DocumentationRoot = "D:\Github\m365-tenant-best-practise\documentatie\ai-form-recognizer" ) $ErrorActionPreference = 'Stop' $VerbosePreference = 'Continue' # ============================================================================ # HULPFUNCTIES # ============================================================================ function Get-FormRecognizerConfig { <# .SYNOPSIS Leest lokale configuratie van Form Recognizer-omgevingen in. .DESCRIPTION Verwacht een JSON-bestand met minimaal de volgende structuur: { "environments": [ { "name": "Prod-FormRecognizer", "resourceGroup": "rg-baseline-ai", "endpoint": "https://xxxx.cognitiveservices.azure.com/", "region": "westeurope", "documentationFile": "prod-formrecognizer.md", "lastQualityReview": "2025-10-01", "status": "Production" } ] } Wanneer het bestand ontbreekt of leeg is, wordt een object met een lege Environments-lijst teruggegeven. .OUTPUTS Object met een eigenschap Environments (array) voor verdere verwerking. #> [CmdletBinding()] param( [Parameter(Mandatory = $true)] [string]$Path ) if (-not (Test-Path -Path $Path)) { Write-Verbose "Configuratiebestand niet gevonden op pad: $Path. Er wordt een lege configuratie gebruikt." return [pscustomobject]@{ Environments = @() } } Write-Verbose "Lezen van Form Recognizer-configuratie: $Path" $raw = Get-Content -Path $Path -Raw -ErrorAction Stop if (-not $raw.Trim()) { Write-Verbose "Configuratiebestand is leeg. Er wordt een lege configuratie gebruikt." return [pscustomobject]@{ Environments = @() } } $json = $raw | ConvertFrom-Json -ErrorAction Stop if (-not $json.environments) { Write-Verbose "Geen 'environments' sectie gevonden in configuratie. Er wordt een lege lijst gebruikt." return [pscustomobject]@{ Environments = @() } } return [pscustomobject]@{ Environments = $json.environments } } function Test-FormRecognizerEnvironment { <# .SYNOPSIS Controleert documentatie- en basisconfiguratiestatus van Form Recognizer-omgevingen. .OUTPUTS PSCustomObject met compliance-resultaten. #> [CmdletBinding()] param( [Parameter(Mandatory = $true)] [string]$ConfigPath, [Parameter(Mandatory = $true)] [string]$DocumentationRoot, [Parameter(HelpMessage = "Maximale ouderdom (in dagen) van documentatiebestanden")] [int]$MaxDocAgeDays = 365, [Parameter(HelpMessage = "Maximale ouderdom (in dagen) van kwaliteitsreviews")] [int]$MaxQualityReviewAgeDays = 365 ) Write-Verbose "Start controle Form Recognizer-omgevingen met configuratie: $ConfigPath" $config = Get-FormRecognizerConfig -Path $ConfigPath $environments = @($config.Environments) if ($environments.Count -eq 0) { Write-Host " Geen Form Recognizer-omgevingen geregistreerd in configuratie." -ForegroundColor Yellow return [pscustomobject]@{ IsCompliant = $false TotalEnvironments = 0 DocumentedEnvironments= 0 MissingDocumentation = @() OutdatedDocumentation = @() MissingQualityReview = @() OutdatedQualityReview = @() } } if (-not (Test-Path -Path $DocumentationRoot)) { Write-Host " Documentatie-root bestaat niet: $DocumentationRoot" -ForegroundColor Red } $documentedEnvironments = 0 $missingDocs = @() $outdatedDocs = @() $missingQuality = @() $outdatedQuality = @() foreach ($env in $environments) { $name = $env.name $docFileName = $env.documentationFile $lastQualityReview = $env.lastQualityReview Write-Verbose "Controleren Form Recognizer-omgeving: $name" $docPath = if ($docFileName -and $DocumentationRoot) { Join-Path -Path $DocumentationRoot -ChildPath $docFileName } else { $null } if ($docPath -and (Test-Path -Path $docPath)) { $docItem = Get-Item -Path $docPath $age = (Get-Date) - $docItem.LastWriteTime if ($age.Days -gt $MaxDocAgeDays) { Write-Host " ⚠️ Verouderde documentatie voor omgeving '$name' ($($age.Days) dagen oud)" -ForegroundColor Yellow $outdatedDocs += $name } else { Write-Host " ✅ Documentatie actueel voor omgeving '$name'" -ForegroundColor Green $documentedEnvironments++ } } else { Write-Host " ❌ Ontbrekende documentatie voor omgeving '$name'" -ForegroundColor Red $missingDocs += $name } if (-not $lastQualityReview) { Write-Host " ❌ Geen kwaliteitsreview-datum geregistreerd voor omgeving '$name'" -ForegroundColor Red $missingQuality += $name } else { $parsed = $null if ([DateTime]::TryParse($lastQualityReview, [ref]$parsed)) { $qAge = (Get-Date) - $parsed if ($qAge.Days -gt $MaxQualityReviewAgeDays) { Write-Host " ⚠️ Verouderde kwaliteitsreview voor omgeving '$name' ($($qAge.Days) dagen oud)" -ForegroundColor Yellow $outdatedQuality += $name } } else { Write-Host " ❌ Ongeldige kwaliteitsreview-datum voor omgeving '$name': $lastQualityReview" -ForegroundColor Red $missingQuality += $name } } } $isCompliant = ( ($missingDocs.Count -eq 0) -and ($outdatedDocs.Count -eq 0) -and ($missingQuality.Count -eq 0) -and ($outdatedQuality.Count -eq 0) ) return [pscustomobject]@{ IsCompliant = $isCompliant TotalEnvironments = $environments.Count DocumentedEnvironments = $documentedEnvironments MissingDocumentation = $missingDocs OutdatedDocumentation = $outdatedDocs MissingQualityReview = $missingQuality OutdatedQualityReview = $outdatedQuality } } function New-FormRecognizerDocumentationTemplate { <# .SYNOPSIS Genereert een documentatietemplate voor een Form Recognizer-omgeving. #> [CmdletBinding()] param( [Parameter(Mandatory = $true)] [string]$EnvironmentName, [Parameter(Mandatory = $true)] [string]$OutputPath ) $template = @" # Azure Form Recognizer omgeving: $EnvironmentName **Laatst bijgewerkt:** $(Get-Date -Format "yyyy-MM-dd") **Documentatie-eigenaar:** [Naam eigenaar] **Status:** Concept ## 1. Doel en processen [Beschrijf de processen en use-cases waarin deze Form Recognizer-omgeving wordt gebruikt, inclusief type documenten en beslissingen die worden ondersteund.] ## 2. Architectuur en datastromen [Beschrijf hoe documenten worden aangeleverd, waar ze worden opgeslagen, hoe Form Recognizer wordt aangeroepen en naar welke systemen de resultaten worden doorgestuurd.] ## 3. Beveiligingsmaatregelen [Beschrijf netwerkisolatie, toegangsbeheer, encryptie-instellingen, logging en monitoring die voor deze omgeving zijn ingericht.] ## 4. Datakwaliteit en validatie [Beschrijf hoe de nauwkeurigheid van uitleesresultaten wordt gemeten, welke steekproeven worden uitgevoerd en welke drempelwaarden gelden.] ## 5. Privacy, AVG en Woo [Beschrijf welke typen persoonsgegevens worden verwerkt, de grondslag, bewaartermijnen, eventuele DPIA's en hoe burgers worden geïnformeerd.] ## 6. Governance en verantwoordelijkheden [Beschrijf rollen, verantwoordelijkheden, changeproces en hoe incidenten rond deze omgeving worden afgehandeld.] ## 7. Audit- en rapportageafspraken [Beschrijf welke rapportages periodiek worden opgesteld, welke scripts of tooling worden gebruikt en hoe lang auditinformatie wordt bewaard.] "@ $folder = Split-Path -Path $OutputPath -Parent if (-not (Test-Path -Path $folder)) { New-Item -Path $folder -ItemType Directory -Force | Out-Null } $template | Out-File -FilePath $OutputPath -Encoding UTF8 Write-Host " Template gegenereerd: $OutputPath" -ForegroundColor Green } function Invoke-Monitoring { <# .SYNOPSIS Hoofdentrypoint voor monitoring van Form Recognizer-omgevingen. #> [CmdletBinding()] param() Write-Host "`nMonitoring: Azure Form Recognizer omgevingen" -ForegroundColor Yellow Write-Host "================================================" -ForegroundColor Yellow $result = Test-FormRecognizerEnvironment -ConfigPath $ConfigPath -DocumentationRoot $DocumentationRoot Write-Host "`nResultaten:" -ForegroundColor Cyan Write-Host " Totaal omgevingen: $($result.TotalEnvironments)" -ForegroundColor Cyan Write-Host " Omgevingen met actuele documentatie: $($result.DocumentedEnvironments)" -ForegroundColor Cyan Write-Host " Ontbrekende documentatie: $($result.MissingDocumentation.Count)" -ForegroundColor $(if ($result.MissingDocumentation.Count -eq 0) { "Green" } else { "Red" }) Write-Host " Ontbrekende kwaliteitsreviews: $($result.MissingQualityReview.Count)" -ForegroundColor $(if ($result.MissingQualityReview.Count -eq 0) { "Green" } else { "Red" }) Write-Host " Verouderde documentatie: $($result.OutdatedDocumentation.Count)" -ForegroundColor $(if ($result.OutdatedDocumentation.Count -eq 0) { "Green" } else { "Yellow" }) Write-Host " Verouderde kwaliteitsreviews: $($result.OutdatedQualityReview.Count)" -ForegroundColor $(if ($result.OutdatedQualityReview.Count -eq 0) { "Green" } else { "Yellow" }) if ($result.IsCompliant) { Write-Host "`n✅ COMPLIANT - Alle Form Recognizer-omgevingen hebben actuele documentatie en kwaliteitsreviews." -ForegroundColor Green return $result } else { Write-Host "`n❌ NON-COMPLIANT - Er zijn hiaten in documentatie of kwaliteitsreviews." -ForegroundColor Red Write-Host " Gebruik -Remediation om templates te genereren voor ontbrekende documentatie." -ForegroundColor Yellow return $result } } function Invoke-Remediation { <# .SYNOPSIS Genereert templates voor ontbrekende documentatie. #> [CmdletBinding()] param() Write-Host "`nRemediatie: Azure Form Recognizer omgevingen" -ForegroundColor Yellow Write-Host "================================================" -ForegroundColor Yellow $result = Test-FormRecognizerEnvironment -ConfigPath $ConfigPath -DocumentationRoot $DocumentationRoot if ($result.MissingDocumentation.Count -eq 0) { Write-Host " Geen ontbrekende documentatie gevonden." -ForegroundColor Green return } Write-Host "`nGenereren van documentatietemplates..." -ForegroundColor Cyan $config = Get-FormRecognizerConfig -Path $ConfigPath $envByName = @{} foreach ($env in $config.Environments) { if ($env.name) { $envByName[$env.name] = $env } } foreach ($envName in $result.MissingDocumentation) { if (-not $envByName.ContainsKey($envName)) { Write-Host " Kon configuratie voor omgeving '$envName' niet vinden, overslaan." -ForegroundColor Yellow continue } $env = $envByName[$envName] $docFileName = if ($env.documentationFile) { $env.documentationFile } else { ($envName -replace '\s+', '-') + ".md" } $outputPath = Join-Path -Path $DocumentationRoot -ChildPath $docFileName if ($WhatIf) { Write-Host " [WhatIf] Zou template genereren voor omgeving '$envName' -> $outputPath" -ForegroundColor Yellow } else { New-FormRecognizerDocumentationTemplate -EnvironmentName $envName -OutputPath $outputPath } } Write-Host "`n✅ Remediatie voltooid. Vul de gegenereerde templates aan met omgevingsspecifieke details." -ForegroundColor Green } # ============================================================================ # MAIN EXECUTION # ============================================================================ try { Write-Host "`n========================================" -ForegroundColor Cyan Write-Host "Azure Form Recognizer Monitoring" -ForegroundColor Cyan Write-Host "Nederlandse Baseline voor Veilige Cloud" -ForegroundColor Cyan Write-Host "========================================`n" -ForegroundColor Cyan if ($Monitoring) { Invoke-Monitoring | Out-Null } elseif ($Remediation) { Invoke-Remediation } else { # Standaard: voer een compacte check uit en retourneer het resultaat $result = Test-FormRecognizerEnvironment -ConfigPath $ConfigPath -DocumentationRoot $DocumentationRoot if ($result.IsCompliant) { Write-Host "`n✅ COMPLIANT" -ForegroundColor Green } else { Write-Host "`n❌ NON-COMPLIANT" -ForegroundColor Red Write-Host "Run met -Monitoring voor gedetailleerde rapportage." -ForegroundColor Yellow Write-Host "Run met -Remediation om documentatietemplates te genereren." -ForegroundColor Yellow } return $result } } catch { Write-Error "Er is een fout opgetreden: $_" throw } finally { Write-Host "`n========================================`n" -ForegroundColor Cyan }

Risico zonder implementatie

Risico zonder implementatie
High: Zonder een goed ingerichte en gemonitorde inzet van Azure Form Recognizer blijven documentgedreven processen traag, foutgevoelig en moeilijk uitlegbaar, met verhoogd risico op AVG‑inbreuken, datalekken en negatieve auditbevindingen rond AI‑gebruik.

Management Samenvatting

Azure Form Recognizer maakt het mogelijk om grote volumes overheidsdocumenten gecontroleerd en reproduceerbaar te ontsluiten, mits architectuur, beveiliging, datakwaliteit en governance expliciet worden ontworpen en periodiek worden gecontroleerd met geautomatiseerde scripts en duidelijke documentatie.