Skip to content

Releases: gacabartosz/presidio-local-anonymizer

v0.2.1 - Cross-Platform Support

Choose a tag to compare

@gacabartosz gacabartosz released this 07 Nov 10:52

🎉 Cross-Platform Release

Nowe funkcje:

Wsparcie dla macOS i Linux

  • Skrypt instalacyjny dla systemów Unix (install.sh)
  • Automatyczna instalacja Homebrew na macOS
  • Integracja z Finder przez Automator Quick Actions
  • Konfiguracja PATH w shell RC files (.zshrc, .bashrc)

Instrukcja dla laika (README_LAIK.md)

  • Instalacja jedną komendą dla Windows i macOS
  • Proste wyjaśnienia z emoji
  • FAQ i troubleshooting
  • Trzy metody użycia (GUI, menu kontekstowe, CLI)

Instalacja:

Windows:

iwr https://raw.githubusercontent.com/gacabartosz/presidio-local-anonymizer/main/scripts/install.ps1 | iex

macOS:

curl -fsSL https://raw.githubusercontent.com/gacabartosz/presidio-local-anonymizer/main/scripts/install.sh | bash

Linux:

curl -fsSL https://raw.githubusercontent.com/gacabartosz/presidio-local-anonymizer/main/scripts/install.sh | bash

Platforma:

  • ✅ Windows 10/11
  • ✅ macOS 10.15+ (Catalina lub nowszy)
  • ✅ Linux (Ubuntu 20.04+, Debian 10+, Fedora 30+)

Wszystkie funkcje:

  • 📄 DOCX, ODT, PDF (text layer)
  • 🖼️ OCR dla skanów (PDF, PNG, JPG, TIFF)
  • 🎨 GUI (tkinter)
  • 🖱️ Menu kontekstowe (prawy przycisk)
  • ⌨️ CLI

🤖 Generated with Claude Code

v0.2.0 - PDF + OCR + GUI 🎨📄

Choose a tag to compare

@gacabartosz gacabartosz released this 07 Nov 10:09

Presidio Local Anonymizer v0.2.0

🎉 Major Release - New Features!

📄 PDF Support

  • Text Layer PDFs - extract and anonymize embedded text
  • Scanned PDFs (OCR) - automatic detection and OCR processing
  • Auto-detection - system automatically chooses the right processor

🔍 OCR for Images

  • Tesseract OCR integration for scanned documents
  • Image formats - PNG, JPG, JPEG, TIFF
  • Smart redaction - black boxes over detected PII on images
  • Polish language support - pol.traineddata included

🎨 GUI (Graphical User Interface)

  • Simple tkinter interface - no more command line!
  • Batch processing - select multiple files or entire folders
  • Progress bar - real-time progress tracking
  • Live logs - see what's happening
  • Drag & Drop ready - install tkinterdnd2 for full functionality

📦 Installation

One-liner PowerShell:

powershell -NoProfile -ExecutionPolicy Bypass -Command "& {Invoke-WebRequest -Uri 'https://raw.githubusercontent.com/gacabartosz/presidio-local-anonymizer/main/scripts/install.ps1' -OutFile '$env:TEMP\presidio_install.ps1'; & '$env:TEMP\presidio_install.ps1'; Remove-Item '$env:TEMP\presidio_install.ps1' -Force}"

What's installed:

  • Python 3.11
  • Git
  • Tesseract OCR (new! for scans)
  • All Python dependencies
  • SpaCy Polish model
  • Tesseract Polish model (new!)

Installation time: ~10-15 minutes

🚀 Usage

GUI (new!)

anonymize-gui.cmd

Command Line

# DOCX/ODT (as before)
anonymize.cmd document.docx

# PDF (new\!)
anonymize.cmd report.pdf

# Images (new\!)
anonymize.cmd scan.png

# Batch process folder
anonymize.cmd C:\Documents\

Context Menu

Right-click on any supported file → Anonimizuj (Presidio)

📊 Supported Formats

Format Extension OCR Required Status
Word .docx No
OpenDocument .odt No
PDF (text) .pdf No ✅ NEW
PDF (scan) .pdf Yes ✅ NEW
PNG .png Yes ✅ NEW
JPEG .jpg, .jpeg Yes ✅ NEW
TIFF .tiff, .tif Yes ✅ NEW

🔧 Technical Details

New Dependencies

  • PyPDF2==3.0.1 - PDF text extraction
  • reportlab==4.0.7 - PDF generation
  • pytesseract==0.3.10 - OCR wrapper
  • pdf2image==1.16.3 - PDF to image conversion
  • Pillow==10.1.0 - Image manipulation
  • img2pdf==0.5.1 - Image to PDF conversion
  • tkinterdnd2==0.3.0 - GUI drag & drop

Architecture

PDF file
  ↓
Check if has text layer
  ↓
YES → pdf_processor.py (fast)
NO  → ocr_processor.py (Tesseract)
  ↓
Presidio Analyzer → Detect PII
  ↓
Anonymize:
  - Text PDFs: replace text
  - Scanned: black boxes on image

⚠️ Known Limitations

PDF Formatting:

  • Text PDFs: Complex layouts simplified
  • Scanned PDFs: Output is image-based

OCR Accuracy:

  • Depends on scan quality
  • Works best with 300 DPI or higher
  • Polish language model included

GUI:

  • Requires tkinter (included with Python)
  • Drag & Drop requires tkinterdnd2 (optional)

🐛 Bug Fixes

  • Improved error handling for missing libraries
  • Better logging for debugging
  • Graceful degradation if OCR unavailable

📝 Changelog

Added

  • PDF text layer support (pdf_processor.py)
  • OCR for scanned PDFs and images (ocr_processor.py)
  • Tesseract OCR auto-installation in install.ps1
  • Simple GUI with batch processing (app/gui.py)
  • Support for PNG, JPG, TIFF formats
  • Auto-detection: text vs scanned PDFs

Changed

  • Updated main.py to route files to appropriate processors
  • Extended requirements.txt with OCR libraries
  • Updated README with new features
  • Installation time increased to 10-15 min (Tesseract download)

Roadmap Progress

  • PDF support
  • OCR support
  • Image anonymization
  • Basic GUI
  • DOCX formatting preservation (v0.3.0)
  • Parallel processing (v0.3.0)

🙏 Credits

  • Microsoft Presidio - PII detection engine
  • Tesseract OCR - OCR engine
  • SpaCy - NLP for Polish language
  • UB-Mannheim - Tesseract Windows builds

📚 Documentation


Full Changelog: v0.1.0...v0.2.0

🤖 Generated with Claude Code

MVP Release v0.1.0

Choose a tag to compare

@gacabartosz gacabartosz released this 07 Nov 09:40

Presidio Local Anonymizer v0.1.0 (MVP)

Główne funkcje

Offline - wszystkie operacje wykonywane lokalnie
Obsługa polskich danych - PESEL, NIP, imiona, nazwiska
Formaty - DOCX i ODT
Integracja z Windows - menu kontekstowe
Przetwarzanie wsadowe - pliki i foldery
Raporty JSON - szczegółowe statystyki

Wykrywane dane osobowe

  • PERSON (imiona i nazwiska)
  • EMAIL_ADDRESS
  • PHONE_NUMBER
  • PL_PESEL
  • PL_NIP
  • LOCATION
  • DATE_TIME
  • URL
  • IP_ADDRESS

Instalacja

One-liner PowerShell:

powershell -NoProfile -ExecutionPolicy Bypass -Command "& {Invoke-WebRequest -Uri 'https://raw.githubusercontent.com/gacabartosz/presidio-local-anonymizer/main/scripts/install.ps1' -OutFile '$env:TEMP\presidio_install.ps1'; & '$env:TEMP\presidio_install.ps1'; Remove-Item '$env:TEMP\presidio_install.ps1' -Force}"

Znane ograniczenia MVP

⚠️ Formatowanie dokumentów:

  • DOCX: Style inline mogą się uprościć
  • ODT: Struktura jest linearyzowana

⚠️ Wydajność:

  • Przetwarzanie sekwencyjne (nie równoległe)

⚠️ Wykrywanie:

  • Możliwe false positives/negatives

Co dalej?

Zobacz roadmap w README.md