From 070bdaf5a954b4e9e506af397861c1a76cb531c7 Mon Sep 17 00:00:00 2001 From: Nacim Date: Mon, 23 Jun 2025 13:27:46 +0200 Subject: [PATCH] Create app.py --- app.py | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 app.py diff --git a/app.py b/app.py new file mode 100644 index 0000000..1181e16 --- /dev/null +++ b/app.py @@ -0,0 +1,49 @@ +from flask import Flask, request, jsonify, make_response +from presidio_analyzer import AnalyzerEngine +import os +import logging + +# Configuration du logging pour un meilleur débogage +logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s') +logger = logging.getLogger(__name__) + +# Initialisation de l'application Flask +app = Flask(__name__) + +# Initialisation du moteur Presidio Analyzer +analyzer = None +try: + logger.info("Initializing AnalyzerEngine...") + # L'AnalyzerEngine va chercher la configuration via la variable d'environnement + analyzer = AnalyzerEngine() + logger.info("AnalyzerEngine initialized successfully.") + # Affiche les recognizers chargés pour confirmer que la config est bien lue + loaded_recognizers = [r.name for r in analyzer.registry.get_recognizers()] + logger.info(f"Loaded recognizers: {loaded_recognizers}") +except Exception as e: + logger.exception("FATAL: Error initializing AnalyzerEngine.") + +@app.route('/analyze', methods=['POST']) +def analyze_text(): + if not analyzer: + return jsonify({"error": "Analyzer engine not initialized"}), 500 + + try: + data = request.get_json(force=True) + text_to_analyze = data.get("text", "") + language = data.get("language", "en") + + if not text_to_analyze: + return jsonify({"error": "text field is missing or empty"}), 400 + + results = analyzer.analyze(text=text_to_analyze, language=language) + response_data = [res.to_dict() for res in results] + + return make_response(jsonify(response_data), 200) + except Exception as e: + logger.exception("Error during analysis.") + return jsonify({"error": str(e)}), 500 + +if __name__ == '__main__': + # Pour un test local sans gunicorn + app.run(host='0.0.0.0', port=5001)