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:
92
install.sh
Normal file
92
install.sh
Normal 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
|
||||
Reference in New Issue
Block a user