Ce projet est une application web simple qui permet de gérer des documents PDF en les indexant dans ElasticSearch et en fournissant une interface de recherche pour explorer ces documents. L'application permet de télécharger des fichiers PDF, de les traiter pour extraire le texte, de les stocker dans ElasticSearch, et de rechercher des documents via une interface web. Il est également possible de marquer un document comme "signé".
Avant de commencer, assurez-vous d'avoir les éléments suivants installés sur votre système :
- Python 3.8+
- Docker (pour lancer ElasticSearch via Docker)
- pipenv ou virtualenv pour créer un environnement virtuel (facultatif mais recommandé)
-
Clonez ce dépôt :
git clone https://github.com/bruna-Moreira06/poc_search_engine.git cd poc_search_engine
-
Créez un environnement virtuel et activez-le :
Avec virtualenv :
python3 -m venv .venv source .venv/bin/activate
Avec pipenv :
pipenv shell
-
Installez les dépendances requises :
pip install -r requirements.txt
-
Démarrez ElasticSearch via Docker :
Créez un fichier docker-compose.yml avec le contenu suivant :
version: '3' services: elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:7.17.0 container_name: elasticsearch environment: - discovery.type=single-node - xpack.security.enabled=false ports: - "9200:9200" - "9300:9300"
Puis, lancez ElasticSearch :
docker compose up -d
-
Initialisez la base de données SQLite :
Un script SQL est fourni pour créer la structure de la base de données. Exécutez les commandes suivantes pour initialiser la base de données :
python initialize_db.py
Ce script exécutera le fichier setup_db.sql et créera les tables nécessaires dans la base de données SQLite.
- Lancez l'application Flask :
python app.py
- Accédez à l'application dans votre navigateur à l'adresse suivante : http://localhost:5000
Cliquez sur "Upload PDF" dans la page d'accueil. Sélectionnez un fichier PDF depuis votre ordinateur. Cliquez sur "Upload". Le fichier sera indexé dans ElasticSearch.
Cliquez sur "Search Documents" dans la page d'accueil. Entrez un mot-clé dans la barre de recherche. Cliquez sur "Search" pour voir les résultats correspondants.
Après avoir effectué une recherche, cliquez sur "Mark as Signed" pour un document non signé. Le statut du document sera mis à jour dans ElasticSearch.
Accédez à http://localhost:5000/add_user pour ajouter un nouvel utilisateur. Remplissez le formulaire avec les informations de l'utilisateur et cliquez sur "Add User".
- Flask : Utilisé pour créer l'application web.
- PyMuPDF : Utilisé pour extraire du texte des fichiers PDF.
- ElasticSearch : Utilisé pour indexer et rechercher des documents.
- SQLite : Utilisé pour gérer les utilisateurs, les rôles, les permissions et l'étiquetage des documents.
- Docker : Utilisé pour lancer ElasticSearch en tant que conteneur.
Les contributions sont les bienvenues ! Veuillez soumettre une pull request ou ouvrir une issue pour discuter de changements majeurs.
Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.