# text.anonymize Regex-basierte PII-Anonymisierung für reinen Text. Erkennt typische Personenbezugs-Muster und ersetzt sie durch stabile Tokens der Form `⟦TYPE_N⟧`. Zusätzlich entsteht ein JSON-Bericht, mit dem ein Folge-Schritt die Vollständigkeit prüfen kann. ## Capability - `text.anonymize@0.1.0` ## Eingaben | Name | Typ | Beschreibung | | -------------- | ---- | ---------------------------------------------------------------------------------- | | `text` | text | UTF-8-String, der anonymisiert werden soll. | | `custom_terms` | text | Optional. Newline-getrennte Liste zusätzlicher Begriffe (ganz-Wort, Groß/Klein-egal). | ## Ausgaben | Name | Typ | Beschreibung | | ------------ | ---- | -------------------------------------------------------------------------------------------- | | `anonymized` | text | Der Eingabetext mit PII durch `⟦TYPE_N⟧`-Tokens ersetzt. | | `report` | json | `{ redactions: [{ type, token, original, offset }…], counts: { TYPE: n, … } }`. | ## Erkannte Kategorien | Typ | Muster | | --------------- | ------------------------------------------------------------------------------- | | `EMAIL` | RFC-5321-nahe `local@domain`, IDN-Domains zulässig. | | `PHONE` | International (`+49 …`) oder deutsch-national (`030 …`, `0151-…`). | | `IBAN` | Wortgrenzen, `[A-Z]{2}\d{2}[A-Z0-9]{11,30}`. Nur Struktur — Prüfsumme bewusst nicht. | | `BIC` | 8 oder 11 Großbuchstaben/Ziffern, wortbegrenzt. | | `IPV4` | Vier 0..255-Oktette, punktgetrennt. | | `GERMAN_TAX_ID` | 11 zusammenhängende Ziffern, wortbegrenzt. | | `CUSTOM` | Jede Zeile aus `custom_terms` als ganzes Wort, Groß/Klein-egal. | NER kommt erst in v0.2.0 — sobald wir ein gebenchmarktes ONNX-Modell für Namen + Organisationen ausgewählt haben. ## Berechtigungen Keine. Reines Rust, regex-basiert, in-WASM. Kein Dateisystem, kein Netz, kein LLM-Aufruf. ## Beispiel-Flow ```yaml name: redact-case-file inputs: document: bytes steps: - id: extract use: text.extract@^0 with: document: $inputs.document - id: redact use: text.anonymize@^0 with: text: $extract.extracted.pages[*].text custom_terms: | Mustermann Musterfrau outputs: redacted: $redact.anonymized audit_report: $redact.report ``` ## Build ```bash cargo build --release --target wasm32-wasip2 # Ausgabe: target/wasm32-wasip2/release/text_anonymize.wasm ```