LocalOCR est une application Windows légère et open-source développée en Python permettant d'extraire le texte de fichiers PDF (même sous format image) en s'appuyant sur des modèles de langage multimodaux (Vision LLM) exécutés localement via LMStudio.
- Confidentialité totale : Tout le traitement (découpage du PDF et reconnaissance OCR) s'effectue localement. Aucun document ni donnée n'est envoyé dans le cloud.
- Interface Moderne : Interface graphique sobre et fluide en mode sombre grâce à
CustomTkinter. - Intégration LMStudio : Connexion directe à l'API locale de LMStudio (
http://localhost:1234/v1). - Détection des Modèles : Bouton dédié pour vérifier la connexion à LMStudio et sélectionner dynamiquement le modèle "Vision" parmi ceux qui sont chargés.
- Exportation : Possibilité d'exporter le texte extrait au format
.txtou.md. - Multithreading : Le lourd traitement d'inférence s'effectue en arrière-plan afin que l'interface applicative ne fige jamais et que la barre de progression soit actualisée en temps réel.
- Python 3.10+ (installé sur votre système).
- LMStudio (installé et fonctionnel). Vous devez avoir téléchargé et chargé au moins un modèle LLM de type "Vision" (ex : Qwen-VL-Chat, Llava, Phi-3-Vision).
- Activer le serveur local de LMStudio (généralement sur le port
1234).
-
Clonez ce dépôt ou téléchargez le dossier du projet :
git clone <url-du-repo> cd LocalOCR
-
Créez un environnement virtuel et activez-le (recommandé) :
python -m venv venv .\venv\Scripts\activate -
Installez les dépendances requises :
pip install -r requirements.txt
- Assurez-vous que LMStudio est ouvert, qu'un modèle "Vision" est chargé, et que le serveur local est démarré (
Start Server). - Lancez l'application LocalOCR :
python main.py
- L'interface s'ouvre :
- Cliquez sur "Vérifier LMStudio" pour vous assurer que l'application détecte bien le serveur local et vos modèles.
- Sélectionnez le modèle désiré dans la liste déroulante (si vous en avez plusieurs de chargés).
- Cliquez sur "Sélectionner un PDF" pour importer le document à traiter.
- Cliquez sur "Lancer l'OCR".
Le projet est modulaire et divisé en composants ayant chacun des responsabilités précises :
AGENTS.md/SKILL.md: Documentation technique du projet et définition des rôles.src/ui.py: L'interface graphique (CustomTkinter).src/orchestrator.py: Le gestionnaire de la logique applicative (Workflow Manager) travaillant en multithreading.src/pdf_processor.py: La logique d'ingestion et de rasterisation (conversion en images de 300 DPI) des pages PDF viaPyMuPDF.src/ocr_agent.py: L'encodeur Base64 et connecteur API vers le serveur OpenAI compatible de LMStudio.main.py: Le point d'entrée lançant l'application complète.