PromptShieldpromptShieldpromptShield
Bekijk het in actieFunctiesHoe het werktAI-workflowsGemoedsrustLicentiebeheerCompliancebewaking
PrijzenDownloaden
Ontwikkelaars
OverzichtAPI-documentatieAPI-sleutels
Veelgestelde vragen
Inloggen
  1. Home
  2. Blog
  3. Engineering
Engineering2026-06-08· 9 min leestijd

Waarom we onze eigen detectiemotor bouwden in plaats van Presidio uit te leveren

Microsoft Presidio is een van de beste open-source toolkits voor persoonsgegevens die er bestaan. We lazen de broncode, we leerden ervan, en we kozen er toch voor om het niet uit te leveren. Dit is het eerlijke verhaal waarom.

Kort gezegd: Presidio vindt persoonsgegevens binnen een blok tekst. promptShield doet iets nauwers en fysiekers — het neemt een PDF op iemands laptop, zonder internetverbinding, en laat de gebruiker op een naam op de pagina klikken en die voor zijn ogen zwart zien worden. Beide taken draaien om "persoonsgegevens vinden", dus ze klinken als hetzelfde werk. Dat zijn ze niet. En de verschillen ertussen zijn precies de delen waar we al onze tijd hadden besteed aan het worstelen met Presidio om het iets te laten doen waarvoor het nooit was gebouwd.

Dit is dus geen geval van het wiel opnieuw uitvinden voor de lol. We hadden werkelijk een ander wiel nodig. Hier is waarom.

Wat wij uitleveren is geen tekststroom

Presidio denkt in platte tekst: u geeft het een string, en het levert een lijst posities terug — "tekens 40 tot 51 zijn een naam". Dat is perfect als u chatberichten of een databasekolom doorzoekt, waar tekst gewoon tekst is. Voor ons is het het verkeerde uitgangspunt, want onze gebruiker kijkt niet naar een string. Hij kijkt naar een pagina.

Een PDF-pagina is geen regel tekst — het is een opmaak. Woorden zitten in vakjes op specifieke coördinaten. Eén naam kan over twee regels gesplitst zijn, over twee kolommen verspreid, of zelfs gedraaid. En de gebruiker redigeert niet "tekens 40 tot 51" — hij maakt een rechthoek zwart op de pagina die hij ziet. Voor ons zijn de naam vinden en weten waar hij op de pagina staat dus geen twee aparte stappen die we aan elkaar zouden lijmen. Het is dezelfde stap.

Zo ziet dat er in de praktijk uit. Wanneer onze pijplijn "Pierre Dubois" vindt, gewikkeld over het einde van de ene regel en het begin van de volgende, moet hij die ene naam omzetten in twee rechthoeken en beide zwart maken. Wanneer hij een naam op pagina 1 vindt, onthoudt hij die en maakt hem automatisch zwart op pagina 4, zodat de beoordelaar niet elf keer met de hand dezelfde persoon hoeft te markeren. Presidio heeft van dit alles geen weet — het kent alleen posities in een string. Om het werkend te krijgen hadden we het in zoveel pagina- en opmaakcode moeten wikkelen dat Presidio het kleine, makkelijke deel zou hebben afgehandeld en onze eigen code alles wat werkelijk moeilijk is.

We draaien niet één model. We draaien vijf lagen die stemmen.

In Presidio werkt elke detector op zichzelf en pool je simpelweg alles wat ze vinden. Dat is flexibel, maar er zit een addertje onder: als ook maar één detector overijverig is, belanden al zijn valse alarmen in uw resultaten. Uw nauwkeurigheid wordt omlaag getrokken naar die van uw luidruchtigste detector.

Wij kozen een andere aanpak: onze detectoren moeten het met elkaar eens zijn. Vijf ervan lopen over dezelfde pagina:

  • Regex — gestructureerde patronen met hoge precisie (BSN, IBAN, e-mail, telefoon, bedrijfsidentificatie), met een contextvenster zodat een kaal getal van 9 cijfers pas een BSN is als de omringende woorden dat zeggen.
  • spaCy-entiteiten — statistische modellen per taal, één voor elk van de 7 talen.
  • GLiNER — zero-shot entiteitsdetectie voor types die de getrainde modellen missen.
  • Transformer-entiteiten — door transformers ondersteunde herkenning waar de kleinere modellen te weinig vinden.
  • LLM — optioneel, lokaal GGUF of een externe API, voor de contextbeoordelingen in de lange staart.

In plaats van enkel te poolen wat ze vinden, laten we ze stemmen. Als twee detectoren hetzelfde markeren, vertrouwen we het meer; als drie het eens zijn, nog meer. Iets wat slechts één zenuwachtige detector opmerkte moet een veel hogere drempel halen voordat we het aan de gebruiker tonen. Deze stemlogica — hoe we overeenstemming wegen, overlappende hits samenvoegen en resultaten over pagina's heen meedragen — ís het product. Daar komt onze nauwkeurigheid werkelijk vandaan. Presidio geeft u de detectoren, maar laat het oordeel over hoe je ze met elkaar verzoent bewust aan u over. En het schrijven van dat oordeel is het schrijven van het grootste deel van een motor — dus schreven we het hele ding.

Het moet draaien met de netwerkkabel eruit getrokken

promptShield is een offline desktopapplicatie. De hele belofte is dat uw documenten nooit uw apparaat verlaten — geen cloud-omweg, geen API-sleutel, geen "we beloven dat we het niet loggen". Dat is een harde randvoorwaarde, en ze geeft de afhankelijkheidsvraag een andere vorm.

Presidio kan ook lokaal draaien — maar zo gebruiken de meeste mensen het niet. Om er een goede nauwkeurigheid uit te halen is de gangbare weg het aan te sluiten op de cloud-taaldiensten van Microsoft of Amazon. Dat zijn precies de cloud-aanroepen die we beloofd hebben nooit te doen. Dan blijft de volledig lokale optie van Presidio over, die leunt op kleinere, lichtere modellen — en dat is toevallig precies de opzet die we in onze benchmark hebben gemeten, degene die financiële documenten overspoelt met valse positieven.

En het gaat dieper dan nauwkeurigheid. We moeten elk AI-model in de installer van de app verpakken en het op de machine van de gebruiker draaien. Elk model moet worden gebundeld, vastgezet op een versie, gecontroleerd op manipulatie, in het geheugen geladen en — het deel waar niemand u voor waarschuwt — netjes weer uitgeladen. Op Windows weigert het systeem domweg de bestanden te verwijderen als een gebruiker een taalpakket weghaalt terwijl ook maar een deel van dat model nog in het geheugen wordt vastgehouden. Daarom houden we een zorgvuldig onderhouden lijst bij van elke plek waar een model nog geladen zou kunnen zijn, over alle vijf de detectoren, en geven we ze allemaal vrij voordat we ook maar iets verwijderen. Dat soort huishouding werkt alleen als we precies bepalen hoe en wanneer elk model wordt geladen. Een externe motor die zijn eigen modellen laadt, volgens zijn eigen schema, zou hier voortdurend over struikelen.

De ruisfiltering is de echte slotgracht — en ze is van ons

In onze directe benchmark bracht Presidio in de standaardconfiguratie 666 spans uit op een corpus van 14 documenten; wij brachten er 252 uit op dezelfde documenten. Het verschil is bijna volledig ruis die wij wegfilteren en die een standaardinstallatie niet wegfiltert: jurisdictionele vermeldingen van landen ("beheerst door het recht van Frankrijk"), URL's in voetteksten, functietitels die voor namen worden aangezien, generieke afdelingsnamen die als organisaties worden getagd, dezelfde persoon versplinterd in drie overlappende spans.

Elk van die filters werkt over alle zeven talen, is afgesteld op echte contracten en jaarrekeningen, en draait binnen de stemstap — waar het zowel kan wegen hoe zeker de detectoren zijn als waar de tekst werkelijk op de pagina staat. U zou dit allemaal kunnen herbouwen als uitbreidingen die op Presidio worden gemonteerd. Maar tegen die tijd draait Presidio enkel nog de detectoren, terwijl alles wat onze uitvoer schoon maakt — de filtering, het stemmen, het paginabewustzijn — nog steeds code is die we zelf moesten schrijven. We zouden een grote afhankelijkheid meeslepen, vooral om grote delen ervan uit te zetten.

Wat we hebben opgegeven

Dit was niet gratis, en het zou oneerlijk zijn om te doen alsof.

  1. We krijgen de breedte aan herkenners van Presidio er niet gratis bij. Hun community levert herkenners voor entiteitstypes en talen die wij niet hebben gebouwd. Elke die we willen, schrijven en testen we zelf.
  2. We dragen ons eigen onderhoud. Wanneer een transformer-bibliotheek een breaking change uitbrengt, is dat ons probleem om op te vangen — er is geen upstream om een issue bij in te dienen en op te wachten. We hebben er een paar van geslikt.
  3. We kunnen niet leunen op de naam van Presidio. "Gebouwd op Microsoft Presidio" is een snelle weg naar geloofwaardigheid in een inkoopgesprek. We ruilden het in voor "hier is onze reproduceerbare benchmark", wat meer werk is en minder lenen van een merk.

Wanneer u juist naar Presidio moet grijpen

Als uw probleem op een van deze lijkt, is Presidio zeer waarschijnlijk de juiste keuze en zou uw eigen versie bouwen verspilling zijn:

  • U doorzoekt tekststromen — chatlogs, databasekolommen, API-payloads — en geen afgebakende, opgemaakte documenten.
  • U wilt controle op bibliotheekniveau binnen een groter Python-DLP-systeem, en u neemt de precisie-afstemming graag voor uw rekening.
  • U kunt een cloud-entiteitenbackend (Azure, AWS) gebruiken en wilt één PII-abstractie over meerdere aanbieders.
  • U hebt meer behoefte aan breedte van entiteitstypes en talen dan aan een schone beoordelaarservaring op een vaste documentklasse.

Presidio is de betere tool voor een groot, gevarieerd deel van de wereld van persoonsgegevensdetectie. Wij zitten niet in dat deel.

De eigenlijke beslisregel

Hier is de test die wij hebben toegepast, en die we iedereen zouden aanraden die "de bibliotheek overnemen" afweegt tegen "de motor bouwen":

Als de afhankelijkheid het makkelijke deel zou doen en u het moeilijke deel erbovenop schrijft, neemt u geen bibliotheek over — u neemt een randvoorwaarde over.

Voor ons vormen de moeilijke delen — weten waar tekst op de pagina staat, vijf detectoren laten stemmen, AI-modellen offline beheren, ruis filteren in zeven talen — het grootste deel van het product, en ze zijn allemaal nauw met elkaar verweven. Presidio zou onderaan hebben gezeten en de detectoren hebben gedraaid, terwijl elke beslissing die er werkelijk toe deed in onze eigen code plaatsvond. Dus schreven we ook die onderste laag — en kwamen we uit op een motor waarvan we elk onderdeel begrijpen, die we volledig offline uitleveren, en die we afstellen op precies het soort documenten dat onze gebruikers daadwerkelijk redigeren.

We werden geïnspireerd door Presidio. We hadden alleen een ander document om te redigeren.

Delen

AI-gestuurde documentanonimisering. Detecteer en redigeer gevoelige gegevens offline, met volledige privacy.

Product

  • Chrome extension

Account

Juridisch

Canada flagProudly Canadian
promptShield Inc. · 222, Wayman, Gaspé (QC) G4X 1T1, Canada · D-U-N-S® 243371918 · IP geolocation by DB-IP
© 2026 promptShield inc. Alle rechten voorbehouden.
promptShieldpromptShieldpromptShield
Functies
Prijzen
Downloaden
Ontwikkelaars
Hoe het werkt
AI-workflows
Gemoedsrust
vs Microsoft Presidio
Alternatieven
Blog
Team
Inloggen
Aanmelden
Dashboard
Privacybeleid
Gebruiksvoorwaarden
Beveiliging
Gegevensverwerking (DPA)
Terugbetalingsbeleid
Contact
Wisselkoersen