Presidio-NL is een modulaire API-service voor het detecteren en anonimiseren van privacygevoelige informatie (PII) in Nederlandse tekst. De service is gebaseerd op Microsoft Presidio en biedt ondersteuning voor verschillende NLP-modellen (zoals spaCy of HuggingFace transformers) zonder dat de API of logica hoeft te worden aangepast.
Zie ook:
- Gebruikshandleiding met Swagger-stappen:
docs/use-cases.md - API voorbeelden (curl):
docs/api-examples.md - Productie Swagger: https://api.openanonymiser.commonground.nu/api/v1/docs
- Staging Swagger: https://api.openanonymiser.accept.commonground.nu/api/v1/docs
Installeer dependencies en start de API:
uv venv
uv sync
uv run api.pyDe API is nu bereikbaar op http://localhost:8080/api/v1/docs (Swagger UI).
Start beide services (API + UI) met docker-compose:
docker-compose up -dNa opstarten zijn de services bereikbaar op:
- API: http://localhost:8001/api/v1/docs (Swagger UI)
- UI: http://localhost:8002 (Web interface)
Bouw het backend image:
docker build -t openanonymizer .Start alleen de backend container:
docker run -d -p 8001:8080 --name openanonymiser openanonymizerAPI bereikbaar op http://localhost:8001/api/v1/docs
OpenAnonymiser vereist persistent storage voor:
- SQLite database (
/app/openanonymiser.db) - Geüploade PDF-bestanden (
/app/temp/source/) - Geanonimiseerde bestanden (
/app/temp/anonymized/) - Applicatielogs (
/app/logs/)
Zonder PVC gaan alle gegevens verloren bij pod restart!
Installeer de API service in Kubernetes met Helm:
# Installeer de chart
helm install openanonymiser ./charts/openanonymiser
# Of met custom values
helm install openanonymiser ./charts/openanonymiser -f values-production.yaml
# Upgrade bestaande deployment
helm upgrade openanonymiser ./charts/openanonymiserBelangrijke configureerbare waarden in values.yaml:
# Image configuratie
image:
repository: mwest2020/openanonymiser
tag: latest
# Ingress voor externe toegang
ingress:
enabled: true
className: nginx
hosts:
- host: "api.openanonymiser.example.com"
# KRITIEK: Persistent storage configuratie
persistence:
enabled: true # VERPLICHT voor productie!
storageClass: "fast-ssd" # Pas aan voor jouw cluster
size: 50Gi # Database + bestanden
# Environment variabelen
app:
env:
defaultNlpEngine: "spacy" # of "transformers"
defaultSpacyModel: "nl_core_news_md"
cryptoKey: "your-secret-key" # Wijzig dit!
auth:
username: "admin" # Wijzig dit!
password: "secure-password" # Wijzig dit!
# Resources
resources:
requests:
cpu: 500m
memory: 4Gi
limits:
cpu: 1500m
memory: 8GiVoor productie gebruik:
- Secrets: Gebruik Kubernetes secrets voor gevoelige waarden:
kubectl create secret generic openanonymiser-secrets \
--from-literal=crypto-key=your-secret-key \
--from-literal=auth-password=secure-password-
TLS: Enable TLS in ingress configuratie
-
Monitoring: Health checks zijn al geconfigureerd op
/health
Gebruik de nieuwe use-case tests in tests/test_usecases.py. Stel een BASE URL in of laat default (localhost:8080).
# Tegen lokale server
pytest -q -k usecases
# Tegen staging of productie
OPENANONYMISER_BASE_URL="https://api.openanonymiser.accept.commonground.nu" pytest -q -k usecases
# of
OPENANONYMISER_BASE_URL="https://api.openanonymiser.commonground.nu" pytest -q -k usecases