License clarified via upstream pyproject: JuraNonymizer library and JuraNER model are MIT (Harshil Jagadishbhai Darji, HTW Berlin — JUDGE-KI project at the KI-Werkstatt). Adds a human-review disclaimer for automatic anonymization to MODULE.md/MODULE.de.md and corrects the NOTICE attribution.
4.8 KiB
text.anonymize.legal-de
NER-basierte Anonymisierung deutscher juristischer Texte (JuraNER).
Brückenmodul: das Transformers-Modell läuft im judge-ner
Host-Service (fai_judge/host_services/judge-ner/); dieses
WASM-Modul reicht das Dokument per Loopback-HTTP weiter und bildet
die Antwort auf den Capability-Contract ab.
Capability
text.anonymize.legal-de@0.1.0
Eingaben
| Name | Typ | Beschreibung |
|---|---|---|
request |
json | {"mode":"text"|"docx","options":{...}} — siehe unten. |
document |
bytes | UTF-8-Klartext (mode=text) oder eine DOCX-Datei (mode=docx). |
endpoint |
text | Optionale judge-ner-Basis-URL. Default http://127.0.0.1:8756. |
request.options (alle optional)
| Schlüssel | Default | Bedeutung |
|---|---|---|
importance_levels |
["High"] |
Zu anonymisierende Entitätsklassen (High/Mid/Low). |
confidence_threshold |
0.8 |
Minimale NER-Konfidenz (0.0–1.0). |
manual_phrases |
[] |
Zusätzlich zu schwärzende Phrasen (Label RED). |
maintain_consistency |
true |
Gleiche Oberflächenform erhält überall dasselbe ⟦TYPE#⟧-Token. |
remove_rubrum |
false |
Rubrum-Block erkennen und durch Platzhalter ersetzen. |
Ausgaben
| Name | Typ | Beschreibung |
|---|---|---|
result |
json | {"replacements": [...], "text": "..."} — text (der anonymisierte Text) nur bei mode=text. statistics und rubrum werden vom Service durchgereicht, wenn vorhanden. |
document |
bytes | Das anonymisierte Dokument: UTF-8-Text (text/plain) bei mode=text, das umgeschriebene DOCX bei mode=docx. |
Jeder replacements-Eintrag:
{text, label, label_description, start, end, score, line_number, anonymized}; im DOCX-Modus zusätzlich run_id_start,
char_in_start, run_id_end, char_in_end zur Adressierung der
exakten w:t-Knoten des Originaldokuments. Einträge mit
"anonymized": null wurden erkannt, aber nicht ersetzt
(Importance-Level nicht ausgewählt).
Berechtigungen & benötigte Services
permissions:
- "net: localhost"
- "net: 127.0.0.1"
requires_services:
- judge-ner
Der Hub führt Steps mit diesem Modul nur aus, wenn der Operator einen
judge-ner-Service-Endpunkt in ~/.chain/config.yaml (services:)
deklariert hat. Beachte: Der erste judge-ner-Start lädt das
JuraNER-Modell von HuggingFace — bis dahin antwortet der Service mit
503 und dieses Modul schlägt mit einer klaren „NER model not
available"-Meldung fehl.
Einrichtung des judge-ner-Host-Services
Das NER-Modell (JuraNER von Harshil Darji, MIT — transformers + torch) kann nicht in der WASM-Sandbox laufen; es läuft als Host-Service.
# 1. Service starten (Docker; ~1 GB Modell-Download beim ersten Start,
# persistiert im Named Volume — spätere Starts sind offline-fähig)
docker run -d --name judge-ner \
-p 8756:8756 \
-v judge-ner-models:/models \
judge-ner
# 2. Beim Hub registrieren (~/.chain/config.yaml)
# services:
# judge-ner:
# endpoint: http://127.0.0.1:8756
# health_check:
# url: http://127.0.0.1:8756/health
# 3. Prüfen
curl -s localhost:8756/health # {"status":"ok","model_loaded":true}
chain service status judge-ner
Quellcode und Image-Build: fai_judge/host_services/judge-ner/
(docker build -t judge-ner .).
Fehler
- Fehlerhafte
request, Nicht-UTF-8-Textdokument oder 4xx vom Service →invalid input: ... - Service nicht erreichbar, 5xx, fehlerhafte Service-Antwort →
internal error: judge-ner at <url> ...
Lizenz, Maintainer & Haftungshinweis
Lizenz. Dieses Modul steht unter Apache-2.0. Die zugrunde liegende NER-Methode und das Modell sind die JuraNonymizer-Bibliothek und das JuraNER-Modell, beide MIT-lizenziert:
- Modell: https://huggingface.co/harshildarji/JuraNER (MIT)
- Projekt: JUDGE-KI an der KI-Werkstatt der HTW Berlin — https://kiwerkstatt.f2.htw-berlin.de/projekte/judge-ki
Maintainer.
- Harshil Jagadishbhai Darji (HTW Berlin) — NER-Modell und Anonymisierungs-Methode (JuraNonymizer / JuraNER)
- Dr. Stefan Alexander Flemming (Flemming.AI) — dieses Brückenmodul und der judge-ner-Host-Service
Haftungshinweis. Automatische Anonymisierung ist ein statistisches Verfahren und bietet keine Garantie auf Vollständigkeit: Entitäten können übersehen, nur teilweise erkannt oder falsch klassifiziert werden. Bevor ein anonymisiertes Dokument veröffentlicht oder weitergegeben wird, muss es von einem Menschen geprüft werden. Die datenschutzrechtliche Verantwortung (DSGVO) verbleibt beim Betreiber; Autoren und Maintainer übernehmen keine Haftung für unvollständige Anonymisierung.
Build
cargo test
cargo build --release --target wasm32-wasip2