anonimizer-local

De anonimizer als CLI: documenten in batch anonimiseren, met hergebruik van eerdere keuzes.

Status: in gebruik. Draait en wordt gebruikt; installatie via pip.

Verwijder persoonsgegevens en organisatiespecifieke informatie uit documenten - interactief, transparant, EU-soeverein.

Bijdragen    Meepraten

👉 Iets delen, feedback geven of een vraag stellen? Klik op een van de knoppen hierboven - geen Git-ervaring nodig. Zie CONTRIBUTING.md voor meer opties.

Gebouwd zodat CISO's en ISO's interne kennis kunnen delen via de kennisbank zonder privacyrisico's.

Nieuw hier? Lees de handleiding - stap-voor-stap gids met voorbeelden, redactionele keuzes en troubleshooting.

Voor wie

Power users die regelmatig documenten anonimiseren.

Snel starten

1. Vereisten

2. Haal de code op

git clone https://github.com/security-commons-nl/anonimizer.git
cd anonimizer
pip install -r requirements.txt

3. Maak een API-sleutel aan

De tool gebruikt een taalmodel (Mistral) om namen en organisaties te herkennen. Je hebt hiervoor een gratis account nodig:

  1. Ga naar console.mistral.ai
  2. Maak een account aan
  3. Ga naar API Keys en klik Create new key
  4. Kopieer de sleutel

4. Stel de sleutel in

cp .env.example .env

Open .env in een teksteditor en vul je sleutel in:

AI_API_KEY=jouw-sleutel-hier

5. Stel standaard-vervangingen in (optioneel maar aanbevolen)

cp standaard.yaml.example standaard.yaml

Open standaard.yaml en pas de namen aan voor jouw organisatie. Alles wat hier staat wordt automatisch vervangen zonder dat je er per keer naar gevraagd wordt.

Bijdragen

Zie de CONTRIBUTING van de organisatie: daar staat per project een formulier, ook zonder Git-ervaring.

Licentie

EUPL-1.2, zie LICENSE.

Wat het doet

Je geeft een document op (PDF, Word, PowerPoint, Excel, Markdown, HTML). De tool:

  1. Haalt de tekst eruit en verwijdert afbeeldingen
  2. Past automatisch bekende vervangingen toe (bijv. jouw gemeentenaam → VOORBEELDGEMEENTE)
  3. Laat je per nieuw gevonden naam, e-mailadres of interne term zelf kiezen wat ermee gebeurt
  4. Onthoudt jouw keuzes voor de volgende keer
  5. Slaat het resultaat op als .md én .html

Gebruik

# Eén document
python anonimizer.py verwerk document.pdf

# Word-bestand
python anonimizer.py verwerk beleid.docx

# Hele map
python anonimizer.py verwerk map/ --batch

# Met opgegeven uitvoernaam
python anonimizer.py verwerk document.pdf --output schoon.md

Ondersteunde formaten

Formaat Extensie
PDF .pdf
Word .docx
PowerPoint .pptx
Excel .xlsx
Markdown .md
Platte tekst .txt
HTML .html, .htm

Interactie

Per nieuw gevonden element kies je wat er mee gebeurt:

[1/8] Persoon: "Jan de Vries"
      Suggestie: "de CISO"
      > (Enter = akkoord, eigen tekst = jouw vervanging, s = overslaan, q = stop)

Bevestigde keuzes worden onthouden in memory.json. De volgende keer dat je een document verwerkt worden ze automatisch toegepast.

Configuratie

.env - API-instellingen

Variabele Standaard Beschrijving
AI_API_BASE https://api.mistral.ai/v1 LLM API-endpoint
AI_API_KEY - API-sleutel (verplicht)
AI_MODEL_NAME mistral-small-latest Taalmodel

Volledig lokaal draaien via Ollama: stel AI_API_BASE=http://localhost:11434/v1 en AI_API_KEY=ollama in.

standaard.yaml - altijd-toepassen vervangingen

Vervangingen die je hier opneemt worden zonder prompt toegepast op elk document. Zie standaard.yaml.example voor een startpunt met gangbare gemeente- en regionamen.

memory.json - geleerd geheugen

Wordt automatisch aangemaakt. Bevat alle eerder bevestigde vervangingen. Niet in git - lokaal per gebruiker.

Meer documentatie

Principes

Dit project volgt de architectuur- en communityprincipes van security-commons-nl: EU-soevereiniteit, AI altijd adviserend, auditbaarheid by design, least privilege en open source als standaard.

anonimizer — Roadmap

CLI-tool om documenten te anonimiseren voor publicatie in de commons.


Huidige staat

De anonimizer is functioneel als CLI-tool met aangescherpte detectiekwaliteit.

Basis (oorspronkelijke release):

Detectiekwaliteit (uitgewerkt in docs/plan-aanscherping.md):

Robuustheid:

Kwaliteitsborging:

Eindmetingen op testset (8 documenten, Leidse regio + synthetisch):


Openstaand werk

Fase 2 — Uitbreidingen en integratie

Fase 3 — Afbeeldingen anonimiseren in plaats van verwijderen

Huidige gedrag: alle afbeeldingen worden uit het document gestript en vervangen door [AFBEELDING VERWIJDERD]. Daarmee verdwijnt essentiële context — architectuurplaten, processchema's, screenshots die het verhaal dragen zijn onvervangbaar als tekst.

Doel: afbeeldingen behouden in de output, maar inhoudelijk geanonimiseerd.

Dit is de grootste waarde-toevoeging voor de kennisbank: documenten met behouden visuele structuur zonder PII-risico.

Fase 4 — anonimizer-browser

Browser-gebaseerde UI zodat CISO's zonder Python-kennis documenten kunnen anonimiseren.

Zie anonimizer-browser voor de browser-versie. (De eerdere Flask-app anonimizer-web is gearchiveerd en vervangen door anonimizer-browser.)


Bijdragen

Heb je ideeën of wil je bijdragen? Open een issue of zie CONTRIBUTING.md.