Initial commit — Pseudonymisation de PDF v5

- GUI v5 : vue unique épurée (tkinter), 2 étapes visuelles
- Core ONNX : anonymisation regex + NER optionnel
- Extraction globale des noms depuis champs structurés
  (Patient, Rédigé par, MME/Madame, DR)
- Génération simultanée PDF Image + PDF Anonymisé (structure préservée)
- Build Windows via Nuitka (script batch + GitHub Actions CI)
- install.sh pour setup/run Linux

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-16 15:03:37 +01:00
commit 8339069c83
18 changed files with 5127 additions and 0 deletions

92
install.sh Normal file
View File

@@ -0,0 +1,92 @@
#!/usr/bin/env bash
set -euo pipefail
# ===========================
# install.sh — GUI ONNX only
# Ubuntu 24.04, Python 3.12
# ===========================
APP_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
VENV_DIR="${APP_DIR}/.venv"
PYTHON_BIN="${PYTHON_BIN:-python3}"
GUI_MODELS="Pseudonymisation_Gui_V5.py" # nom du fichier GUI (vue unique v5)
usage() {
cat <<'USAGE'
Usage:
./install.sh --setup # crée .venv + installe requirements (ONNX/Optimum/Transformers inclus)
./install.sh --run # lance la GUI ONNX
./install.sh --clean # supprime le venv .venv
USAGE
}
log() { echo -e "[install] $*"; }
die() { echo -e "[install:ERROR] $*" >&2; exit 1; }
exists() { command -v "$1" >/dev/null 2>&1; }
ensure_python() {
exists "${PYTHON_BIN}" || die "Python introuvable. Installez python3 (sudo apt-get install -y python3 python3-venv)."
log "Python: $(${PYTHON_BIN} -V)"
}
ensure_venv() {
if [[ ! -d "${VENV_DIR}" ]]; then
log "Création du virtualenv (.venv)…"
"${PYTHON_BIN}" -m venv "${VENV_DIR}" || die "Échec création venv."
fi
# shellcheck disable=SC1091
source "${VENV_DIR}/bin/activate"
python -m pip install --upgrade pip setuptools wheel >/dev/null
}
install_requirements() {
# shellcheck disable=SC1091
source "${VENV_DIR}/bin/activate"
[[ -f "${APP_DIR}/requirements.txt" ]] || die "requirements.txt introuvable à la racine du projet."
log "Installation des dépendances (requirements.txt)…"
pip install -r "${APP_DIR}/requirements.txt"
# docTR pour OCR de PDF scannés (optionnel, nécessite torch)
log "Installation de docTR pour l'OCR (optionnel)…"
pip install "python-doctr[torch]" || log "⚠ docTR non installé (optionnel OCR désactivé pour les PDF scannés)"
}
run_gui_models() {
# shellcheck disable=SC1091
source "${VENV_DIR}/bin/activate"
export PYTHONUTF8=1
[[ -f "${APP_DIR}/${GUI_MODELS}" ]] || die "Fichier ${GUI_MODELS} introuvable à la racine du projet."
# Vérif onnxruntime
python - <<'PY' || (echo "[install] ONNX Runtime manquant (vérifiez requirements)."; exit 1)
import onnxruntime as ort
print("onnxruntime OK:", ort.__version__)
PY
log "Lancement: ${GUI_MODELS}"
exec python "${APP_DIR}/${GUI_MODELS}"
}
clean_venv() {
[[ -d "${VENV_DIR}" ]] && rm -rf "${VENV_DIR}"
log "Venv supprimé."
}
MODE="${1:-}"
[[ -z "${MODE}" ]] && { usage; exit 0; }
ensure_python
case "${MODE}" in
--setup)
ensure_venv
install_requirements
log "✅ Installation terminée. Lancez: ./install.sh --run"
;;
--run)
ensure_venv
run_gui_models
;;
--clean)
clean_venv
;;
*)
usage; exit 1 ;;
esac