- 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>
93 lines
2.6 KiB
Bash
93 lines
2.6 KiB
Bash
#!/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
|