Metadata-Version: 2.5
Name: saklam
Version: 0.1.0
Summary: Saklam PII — Erkennen und Maskieren personenbezogener Daten, lokal (dieselbe Engine wie Saklam-App und Saklam-Bridge)
Project-URL: Homepage, https://saklam.com
Project-URL: Documentation, https://saklam.com/en/docs
Author-email: Stefan Böck <stefan@saklam.com>
License: Proprietary; see LICENSE
License-File: LICENSE
Keywords: anonymisierung,dsgvo,gdpr,masking,ner,pii,privacy
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: Other/Proprietary License
Classifier: Natural Language :: German
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Security
Classifier: Topic :: Text Processing :: Linguistic
Requires-Python: >=3.10
Requires-Dist: cryptography>=41.0
Requires-Dist: numpy>=1.24
Requires-Dist: onnxruntime>=1.17
Requires-Dist: pydantic>=2.0
Requires-Dist: pyyaml>=6.0
Requires-Dist: saklam-model-de-small>=0.1
Requires-Dist: tokenizers>=0.15
Provides-Extra: dev
Requires-Dist: build>=1.0; extra == 'dev'
Requires-Dist: pytest>=7.0; extra == 'dev'
Provides-Extra: gliner
Requires-Dist: gliner==0.2.27; extra == 'gliner'
Requires-Dist: torch>=2.0; extra == 'gliner'
Description-Content-Type: text/markdown

# saklam

Erkennt und maskiert personenbezogene Daten in deutschem Text (plus EN, FR, ES,
IT, NL, PL) — **lokal, im eigenen Prozess**. Dieselbe Engine, die die
Saklam-App und die Saklam-Bridge (Docker) fahren, mit demselben
Platzhalter-Format und demselben Lizenzschlüssel.

## Installation

```bash
pip install saklam
```

Das mitgelieferte NER-Modell (`saklam-model-de-small`) kommt mit — danach läuft
alles ohne weiteren Download. Python 3.10–3.12.

**Kein torch, kein CUDA.** Das Modell rechnet direkt in ONNX Runtime; die
Installation ist rund **300 MB** (frische Umgebung, inklusive Modell: macOS
295 MB, linux/amd64 321 MB, linux/arm64 310 MB). Pflicht-Abhängigkeiten:
`onnxruntime`, `tokenizers`, `numpy`, `pydantic`, `pyyaml`, `cryptography`.

Verifiziert auf macOS-arm64, linux/amd64 und linux/arm64 (Docker
`python:3.11-slim`, beide Architekturen). Steht kein Modell zur Verfügung,
arbeitet `saklam` ausdrücklich im Regex-Modus (`engine_id == "regex"`, Grund in
`license_status().note`) — still gekürzt wird nie.

## In drei Zeilen

```python
from saklam import Saklam

pii = Saklam(license_key="sk-lic-…")                     # oder SAKLAM_LICENSE_KEY
r = pii.mask("Philip Müller aus Zürich, philip@example.org")
r.masked        # '[PER_1864ad4c] aus [LOC_2350dca1], [EMA_c85d5952]'
pii.unmask(r.masked, r.mapping)   # Original zurück
```

Dazu: `pii.detect(text)` für die Spans, `pii.license_status()` für den Zustand
und die Kommandozeile `saklam mask | detect | license | models`.

## Zero-Knowledge

Text und Erkennungsergebnisse verlassen den Host **nie**. Über das Netz geht
ausschliesslich der Lizenzschlüssel gegen den Token-Endpunkt; die Prüfung des
kurzlebigen, Ed25519-signierten Tokens läuft danach bei jedem Aufruf **offline**
gegen den im Paket eingebetteten Public Key. Kein Phone-Home pro Aufruf, keine
Telemetrie, keine Logs mit Rohtext.

## Lizenz

Proprietär. Nutzung nur mit gültigem Saklam-Lizenzschlüssel:
**99 EUR/Monat, ein Key für alle Formfaktoren** — pip-Paket, Docker-Bridge und
App. Ohne gültiges Token lehnen `detect()` und `mask()` ab.

Schlüssel und Details: <https://saklam.com> · Doku:
<https://saklam.com/en/docs> · Handbuch (Modell-Leiter, Regex-Modus,
Grenzen, Air-Gap): `docs/HANDBUCH.md` im sdist.

---

*English:* Local PII detection and masking for German-language text, same
engine as the Saklam app and the Saklam Bridge. Text never leaves the host —
only the license key is exchanged for a short-lived token, verified offline on
every call. Commercial license, 99 EUR/month, one key for every form factor.
Docs: <https://saklam.com/en/docs>.
