text-anonymize-legal-de/MODULE.de.md
flemming-it c8953011de
Some checks failed
CI / Linux x86_64 (Forgejo) (push) Failing after 1m18s
Add license, maintainers and disclaimer section
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.
2026-07-10 12:53:35 +02:00

130 lines
4.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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.01.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
```yaml
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.
```bash
# 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
```bash
cargo test
cargo build --release --target wasm32-wasip2
```