Offline document anonymizer for legal teams
Project description
anonymizer
Offline document anonymizer for legal teams. Replaces personally identifiable information (PII) in documents with structured tokens before sending them to external AI services.
Status: MVP-0 release candidate.
What it does
Drag a file (docx / xlsx / pdf, including scanned PDFs when local OCR is available) into the local web UI and get an anonymized document where:
- Names, companies, financial details, addresses, emails, phones are replaced with structured tokens like
[Person_1],[Company_1],[ADDRESS_1], ... - Document metadata is cleared
- No network calls during processing — runs entirely on your machine
Then send the result to your AI tool of choice.
MVP-0 scope
- Formats:
docx,xlsx,pdfwith text layer, scanned PDF, and hybrid PDF - Languages: Russian, English (NER); language-agnostic detectors for emails, phones, IBAN, cards, IP/MAC/URL, dates, geocoordinates
- Platforms: Windows + macOS
- UI: local web app at
127.0.0.1in your browser - Install: single curl one-liner →
uv tool install docs-anonymizer
Scanned and hybrid PDFs use local Tesseract OCR with English and Russian language packs. Password-protected files, additional languages, and editable recognized-DOCX export remain planned for later iterations.
Installation
# macOS / Linux
curl -fsSL https://anonymizer.site/install.sh | sh
# Windows (PowerShell)
iwr -useb https://anonymizer.site/install.ps1 | iex
Then run anonymize — your browser will open at http://127.0.0.1:<port>.
OCR setup for scanned PDFs
Scanned and hybrid PDFs require system Tesseract with English and Russian language packs. The anonymizer installer offers to install Tesseract interactively and shows an approximate download/install size before asking. If you skip it, DOCX, XLSX, and PDFs with a text layer still work.
# macOS
brew install tesseract tesseract-lang
# Ubuntu / Debian
sudo apt install tesseract-ocr tesseract-ocr-eng tesseract-ocr-rus
# Windows (PowerShell)
winget install UB-Mannheim.TesseractOCR
On macOS, Homebrew's tesseract-lang package is large because it bundles all
extra languages; expect up to roughly 720 MB on disk. Ubuntu/Debian and Windows
downloads are usually smaller, and the package manager may show the exact
download size.
After installing Tesseract, run:
anonymize doctor --no-network
If OCR is unavailable, scanned PDF processing is rejected with installation guidance instead of silently skipping scanned pages.
Stack
Python 3.11+, FastAPI + htmx, spaCy + Natasha, PyMuPDF, python-docx, openpyxl, lxml. Full details in the technical spec.
Architecture
Three-layer design — core (headless Python library), cli, webapp (FastAPI on loopback) — plus testkit for synthetic test corpus generation and feedback loop tooling. Detectors are pluggable; language packs are drop-in. Manual masking + audit logging without PII leakage.
Licenses
The project is released under AGPL-3.0 because it depends on PyMuPDF (AGPL). All other dependencies are permissive open-source (MIT / Apache 2.0 / BSD / MPL). The source distribution published with each release contains the project source needed to satisfy AGPL source-availability obligations.
A page in the application UI will list all bundled libraries and models with their individual licenses.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file docs_anonymizer-0.3.0.tar.gz.
File metadata
- Download URL: docs_anonymizer-0.3.0.tar.gz
- Upload date:
- Size: 868.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a00d3ee0af9adb2bfc89fb6436f3078f93327ccecd9f04dc2ee5d8400348dfe8
|
|
| MD5 |
1d8702d3acb024a8153c91a365dc7703
|
|
| BLAKE2b-256 |
42c46ea006e543af7d96ed34b4ad4318f87ac27ead09b0f86576f38bd8f643a2
|
File details
Details for the file docs_anonymizer-0.3.0-py3-none-any.whl.
File metadata
- Download URL: docs_anonymizer-0.3.0-py3-none-any.whl
- Upload date:
- Size: 327.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b14e283e0bc17c3641986bba81fe50a2e50fbc26bfe8d2c8738f34ec5175b160
|
|
| MD5 |
bf80d16ac21258ca9a16618a7b27e002
|
|
| BLAKE2b-256 |
50f307cd7e53edac0ce70576590b52095f8333553d8475c4d87e067e11c8da7c
|