By · Last updated 2026-05-27

Powrót do blogaTechniczne

Anonimizacja danych treningowych ML zgodna z RODO

RODO ogranicza wykorzystanie danych osobowych do trenowania modeli ML poza pierwotnym celem ich pobrania. Zespoły data science polegające na doraźnych skryptach Python narażają się na poważne ryzyko.

May 27, 20267 min czytania
ML training dataGDPR data scienceSchrems IItraining dataset anonymizationresponsible AI

Jeden skrypt to za mało

Każdy zespół data science napisał coś podobnego:

import re
def anonymize_email(text):
    return re.sub(r'[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}', '[EMAIL]', text)

To zastępuje adresy e-mail. I tylko to robi. Zbiór danych nadal zawiera imiona i nazwiska, numery telefonów oraz identyfikatory medyczne. Nie przejdzie audytu RODO.

Przepaść między stwierdzeniem „zanonimizowałem e-maile” a „ten zbiór jest zgodny z RODO” jest ogromna. Zespoły nieustannie ją bagatelizują.

Dlaczego RODO ogranicza wykorzystanie danych do trenowania ML

Kluczowym przepisem jest art. 5 ust. 1 lit. b) RODO — zasada ograniczenia celu. Dane osobowe mogą być wykorzystywane wyłącznie w celu, w jakim zostały zebrane.

Zamówienia klientów zebrano na potrzeby realizacji zamówień — nie po to, by trenować model rekomendacji. Dokumentacja medyczna powstała w celach leczniczych — nie do trenowania modelu przewidującego ponowne przyjęcia. Odpowiedzi ankietowe zebrano jako informacje zwrotne o produkcie — nie do trenowania klasyfikatora nastrojów.

Aby użyć tych danych do trenowania ML, zespół potrzebuje jednej z trzech rzeczy:

  1. Wyraźnej zgody każdej osoby na cel ML — trudnej do uzyskania, często niemożliwej wstecznie
  2. Oceny uzasadnionego interesu wykazującej zgodność użycia ML — prawnie niepewnej, zależnej od interpretacji organu nadzorczego
  3. Anonimizacji — zastąpienia lub usunięcia danych osobowych tak, by zbiór nie stanowił już danych osobowych w rozumieniu RODO

Właściwa anonimizacja daje największą pewność prawną. Wyzwanie polega na jej konsekwentnym prawidłowym wykonaniu.

Problem z doraźnymi skryptami

Zespoły piszące nowy skrypt Python dla każdego zbioru danych generują narastające problemy.

Niepełne pokrycie. Skrypt zbudowany dla jednego schematu pomija nowe pola. Kolumna z notatkami klinicznymi dodana sześć miesięcy temu? Nie ma jej w wyrażeniu regularnym. Pole z drugim imieniem? Skrypt obsługuje tylko wzorce imienia i nazwiska.

Brak spójności. Zbiór A przetworzono skryptem v1. Zbiór B użył v3. Zbiór C przetworzył inny członek zespołu. Scalony zbiór treningowy zawiera trzy różne metody. Inspektor ochrony danych nie może go poświadczyć.

Brak ścieżki audytu. Skrypt uruchomiono. Co zmienił? Które encje znaleziono? Bez zapisów z przetwarzania zgodność jest niemożliwa do wykazania. Gdy audytor z organu nadzorczego pyta „skąd wiadomo, że ten zbiór treningowy jest czysty?”, odpowiedź „uruchomiliśmy skrypt Python” nie wystarczy.

Dryft modelu. Wzorce regex działające w 2023 roku nie wychwytują nowych formatów identyfikatorów z 2024 roku. Skrypty nie aktualizują się samoczynnie.

Przewodnik po przetwarzaniu wsadowym

Zespół AI w ochronie zdrowia musi zanonimizować 8000 rekordów pacjentów. Zespół z USA potrzebuje dostępu z europejskiego biura. Obowiązuje Schrems II — rekordy z UE nie mogą trafiać do infrastruktury w USA bez odpowiednich zabezpieczeń.

Tradycyjna droga: Inżynier danych pisze niestandardowy skrypt. Dwa do trzech dni tworzenia. Jeden do dwóch dni przeglądu IOD. Jeden dzień iteracji. Łącznie: cztery do sześciu dni. Projekt ML się opóźnia.

Droga przez przetwarzanie wsadowe:

  1. Eksportuj 8000 rekordów jako CSV
  2. Prześlij do przetwarzania wsadowego
  3. Ustaw typy encji: PERSON, EMAIL_ADDRESS, PHONE_NUMBER, US_SSN, MEDICAL_RECORD, DATE_OF_BIRTH, LOCATION
  4. Wybierz metodę: Replace (podmienia realistycznymi wartościami syntetycznymi, zachowując strukturę)
  5. Przetwarzanie: 45 minut dla 8000 rekordów
  6. Pobierz czysty CSV
  7. IOD sprawdza metadane z przetwarzania — liczby encji per rekord, zastosowane metody: 2 godziny
  8. IOD zatwierdza. Transfer przebiega bez przeszkód.

Łączny czas: 45 minut plus 2 godziny przeglądu IOD — zamiast czterech do sześciu dni.

Szczegóły dotyczące wymogów art. 10 Aktu o AI znajdziesz w przewodniku po danych treningowych dla EU AI Act.

Replace vs. Redact w kontekście ML

Metoda anonimizacji ma znaczenie dla jakości modelu.

Redact zastępuje PII tokenem, np. [REDACTED]. Sprawdza się w modelach do wykrywania PII. Dla innych zadań — analizy nastrojów, klasyfikacji, rekomendacji — szkodzi. Model uczy się, że [REDACTED] to specjalny token. Nie może uczyć się z naturalnego rozkładu imion i wartości.

Replace zamienia „Jan Kowalski” na „Piotr Nowak”. Zamienia „jkowalski@firma.pl” na „pnowak@synthetic.pl”. Struktura pozostaje nienaruszona. Rozmieszczenie encji, wzorce współwystępowania, przepływ zdań — wszystko zachowane. Model uczy się z realistycznego kontekstu.

Dla zbiorów treningowych ML właściwym wyborem jest Replace. Model nie uczy się fałszywych wartości — uczy się wzorców wokół nich. To właśnie ma znaczenie.

Schrems II i transfery transgraniczne

Wyrok Schrems II (TSUE, 2020) unieważnił Tarczę Prywatności UE–USA. Dane z UE nie mogą trafiać do infrastruktury ML w USA — AWS US-East, GCP US-Central — bez odpowiednich zabezpieczeń transferu.

Trzy główne zabezpieczenia to:

  • Standardowe Klauzule Umowne z Oceną Skutków Transferu
  • Wiążące Reguły Korporacyjne dla transferów wewnątrz grupy spółek
  • Derogacja dla danych zanonimizowanych — pliki właściwie zanonimizowane przestają być danymi osobowymi w rozumieniu RODO i są wyłączone z zasad transferu

Dla zespołów korzystających z infrastruktury w USA z zestawami danych pochodzącymi z UE prawidłowa anonimizacja eliminuje problem Schrems II. Czysty zbiór danych nie jest danymi osobowymi. Może być swobodnie przesyłany.

To jedna z najważniejszych praktycznych korzyści anonimizacji wsadowej. Nie tylko spełnia wymogi RODO — całkowicie usuwa tarcia transgraniczne.

Więcej o ograniczeniach transferu znajdziesz w przewodniku po zasadzie ograniczenia celu RODO.

Co przekazać IOD

Składając czysty zbiór treningowy do zatwierdzenia przez IOD, dołącz pięć elementów:

  1. Opis źródła. Czym był pierwotny zbiór? Jaki był cel jego pobrania? Jakie kategorie danych osobowych zawierał?
  2. Konfiguracja anonimizacji. Jakie typy encji wykrywano i zastępowano? Jaką metodę zastosowano?
  3. Metadane z przetwarzania. Liczby encji per rekord, poziomy ufności, łączna liczba przetworzonych rekordów.
  4. Ocena ryzyka rezydualnego. Jakie jest prawdopodobieństwo ponownej identyfikacji osoby? Dla anonimizacji metodą Replace z 285+ typami encji na tekście strukturalnym prawdopodobieństwo to jest bardzo niskie.
  5. Planowane zastosowanie. Jaki model będzie trenowany? Jaki jest cel trenowania?

Przetwarzanie wsadowe dostarcza elementów 2 i 3 automatycznie. Elementy 1, 4 i 5 przygotowuje data scientist.

Szczegóły dotyczące zwracanych metadanych znajdziesz w opisie interfejsu API wsadowego anonym.legal.

Co zyskujesz

Zbiory ML zgodne z RODO są osiągalne bez niestandardowych skryptów, bez wielodniowych opóźnień i bez utraty jakości modelu.

Metoda Replace zachowuje właściwości języka naturalnego ważne dla trenowania NLP. Usuwa dane osobowe stwarzające ryzyko naruszenia RODO.

45 minut przetwarzania wsadowego to różnica między przedłużonym przeglądem zgodności a prostą akceptacją IOD.

Źródła

Gotowy, aby chronić swoje dane?

Rozpocznij anonimizację PII z 285+ typami podmiotów w 48 językach.

About this page

We update this page when our platform or the law changes.

Read our founder note for how we work.

Each change shows up in the timestamp at the top.

Related reading

We follow these rules

  • GDPR (EU 2016/679).
  • ISO/IEC 27001:2022.
  • NIS2 (EU 2022/2555).
  • HIPAA safe harbor under 45 CFR § 164.514(b)(2).

Our promise

We do not sell your data.

We do not train models on your text.

We store your files in Germany.

You can delete your account at any time.

You own your work.

Where we run

Our servers live in Falkenstein, Germany.

We use Hetzner. They hold ISO 27001 certification.

All data stays in the EU.

Backups run every day.

Need help?

Email support@anonym.legal.

We reply within one business day.

How we test

We run a full check suite on every release.

Each surface gets its own sweep script and report.

Human reviewers spot-check the output each week.

We track recall and precision on a labelled set.

Bad runs block the deploy.

What we never do

  • We never sell your information to third parties.
  • We never train models on what you upload.
  • We never keep your work after you delete it.
  • We never share keys with any outside firm.
  • We never run ads inside the product.

Plans in plain words

We sell credits, not seats.

One credit covers one short job.

Long jobs use a few credits each.

You can top up at any time.

Unused credits roll over each month.

Read the plans page for current rates.

Who built this

A small team of engineers and lawyers built this.

We ship from Europe and work in the open.

Our founder note spells out why we started.

Where to start

How the parts fit

A browser add-on cleans text inside Chrome.

A Word plug-in handles drafts in Office.

A small desktop tool works on whole folders.

An agent protocol link feeds large models safely.

All four share one core engine and one rule set.

Words from our team

We started this work after a lunch about cookies.

One friend kept getting odd ads on her phone.

We asked why a court file leaked through a draft.

We sketched the first build on a napkin that week.

By month three we had a tiny demo for a friend.

She used it on her first case the next day.

Common questions we hear

Can the tool read scanned PDFs? Yes, with OCR.

Does it work on long files? Yes, in small chunks.

Can I roll my own rule set? Yes, save it as a preset.

Does it run offline? The desktop build runs offline.

Do you keep my files? No, the cloud build wipes after each run.

Will it learn from my work? No, we never train on inputs.

A short tour of the workflow

Upload a file or paste a snippet of prose.

Pick the entities you want gone from the draft.

Choose a method: replace, mask, hash, encrypt, or redact.

Press run and watch the side panel show each hit.

Skim the result and tweak any rule that misfired.

Save the cleaned file or send it to a teammate.