# 🧪 Guide de test OCR Tesseract

## Prérequis

1. **Lancer Docker Desktop**
2. **Reconstruire l'image Docker** (pour installer Tesseract) :

```bash
docker-compose down
docker-compose build --no-cache php
docker-compose up -d
```

---

## ✅ Test 1 : Vérifier que Tesseract est installé

```bash
docker-compose exec php tesseract --version
```

**Résultat attendu** :
```
tesseract 5.x.x
 leptonica-1.x.x
  ...
```

---

## ✅ Test 2 : Vérifier les langues disponibles

```bash
docker-compose exec php tesseract --list-langs
```

**Résultat attendu** :
```
List of available languages (3):
eng
fra
osd
```

---

## ✅ Test 3 : Tester la commande Symfony

```bash
docker-compose exec php php bin/console app:test-ocr
```

**Résultat attendu** :
```
Vérification de Tesseract
=========================

 [OK] Tesseract est disponible : tesseract 5.x.x

Langues disponibles : eng, fra, osd

 ! [NOTE] Utilisez : php bin/console app:test-ocr /chemin/vers/image.jpg

 [OK]
```

---

## ✅ Test 4 : Tester l'extraction OCR sur une image

### Créer une image de test

**Option A : Capture d'écran avec texte**
1. Ouvrir un document Word/PDF avec du texte
2. Prendre une capture d'écran
3. Sauvegarder en `test-ocr.jpg`

**Option B : Image de test en ligne**
- Télécharger une image de facture/document
- Ou générer une image avec du texte

### Copier l'image dans le conteneur

```bash
docker cp test-ocr.jpg lintello_php:/tmp/test-ocr.jpg
```

### Lancer l'extraction OCR

```bash
docker-compose exec php php bin/console app:test-ocr /tmp/test-ocr.jpg
```

**Résultat attendu** :
```
Vérification de Tesseract
=========================

 [OK] Tesseract est disponible : tesseract 5.x.x

Langues disponibles : eng, fra, osd

Extraction OCR
==============

Image : /tmp/test-ocr.jpg

 [OK] Texte extrait avec succès !

Longueur : 234 caractères

Texte extrait
=============

Voici le texte extrait de l'image...
[Le texte de votre image s'affiche ici]
```

---

## ✅ Test 5 : Tester dans l'application

### 1. Lancer l'application

```bash
# Frontend
cd frontend
npm run dev

# Backend Docker déjà lancé
```

### 2. Se connecter à LintellO
- Ouvrir http://localhost:8080
- Se connecter avec un compte existant

### 3. Créer une conversation et uploader une image

1. Créer une nouvelle conversation
2. Cliquer sur le bouton 📎 (upload fichier)
3. Sélectionner une image contenant du texte (facture, document scanné, capture d'écran)
4. Uploader l'image

### 4. Vérifier dans les logs

```bash
docker-compose logs -f php | grep OCR
```

**Logs attendus** :
```
lintello_php | [info] OCR: Début extraction (file: facture.jpg, lang: fra+eng)
lintello_php | [info] OCR: Extraction réussie (file: facture.jpg, textLength: 1234)
```

### 5. Poser une question sur le texte de l'image

**Exemples de questions** :
- "Quel est le montant total de cette facture ?"
- "Résume-moi ce document"
- "Quelle est la date indiquée sur ce document ?"

**L'IA devrait répondre en utilisant** :
- Le texte OCR (précis)
- La vision Pixtral (contexte, mise en page)

---

## 🐛 Troubleshooting

### Erreur : "Tesseract n'est pas disponible"

**Solution** :
```bash
# Reconstruire l'image Docker
docker-compose build --no-cache php
docker-compose up -d

# Vérifier l'installation
docker-compose exec php tesseract --version
```

### Erreur : "No such file or directory"

**Vérifier que l'image existe** :
```bash
docker-compose exec php ls -la /tmp/test-ocr.jpg
```

**Copier à nouveau l'image** :
```bash
docker cp test-ocr.jpg lintello_php:/tmp/test-ocr.jpg
```

### Texte mal extrait ou vide

**Causes possibles** :
- Image de mauvaise qualité (floue, mal éclairée)
- Texte manuscrit (pas supporté)
- Mauvaise langue

**Tester avec une meilleure image** :
- Texte tapé (pas manuscrit)
- Bon contraste (texte noir sur fond blanc)
- Bonne résolution

---

## 📊 Vérifier en base de données

### Connexion à MySQL

```bash
docker-compose exec mysql mysql -u lintello -plintello_password lintello
```

### Vérifier les images avec OCR

```sql
-- Compter les images uploadées
SELECT COUNT(*) FROM file WHERE mime_type LIKE 'image/%';

-- Voir les images récentes
SELECT id, original_name, mime_type, created_at
FROM file
WHERE mime_type LIKE 'image/%'
ORDER BY created_at DESC
LIMIT 5;

-- Vérifier si OCR a fonctionné (attention : encrypted_text est chiffré)
-- On ne peut pas lire le contenu, mais on peut vérifier qu'il existe
SELECT id, original_name, LENGTH(encrypted_text) as text_length
FROM file
WHERE mime_type LIKE 'image/%'
AND encrypted_text IS NOT NULL
ORDER BY created_at DESC
LIMIT 5;
```

**Note** : Le contenu est chiffré, donc non lisible en clair en base de données. C'est normal et sécurisé.

---

## ✅ Checklist de test complète

- [ ] Docker Desktop lancé
- [ ] Image Docker reconstruite avec Tesseract
- [ ] `tesseract --version` fonctionne dans le conteneur
- [ ] `tesseract --list-langs` affiche fra et eng
- [ ] Commande `app:test-ocr` fonctionne sans image
- [ ] Commande `app:test-ocr` extrait du texte d'une image test
- [ ] Upload d'image dans l'application fonctionne
- [ ] Logs montrent "OCR: Extraction réussie"
- [ ] L'IA utilise le texte OCR pour répondre aux questions

---

## 🎉 Si tous les tests passent

L'OCR Tesseract est **opérationnel** !

Vous pouvez maintenant :
1. Pousser le code sur le serveur OVH
2. Installer Tesseract sur OVH : `sudo apt-get install tesseract-ocr tesseract-ocr-fra tesseract-ocr-eng`
3. Tester en production avec `php bin/console app:test-ocr`

---

## 📝 Notes

- **Performance** : OCR prend 1-3 secondes par image
- **Langues** : français + anglais par défaut (modifiable dans `OcrService.php`)
- **Fallback** : Si Tesseract n'est pas disponible, l'image est quand même stockée pour Pixtral Vision
- **Sécurité** : Texte OCR chiffré en base de données comme tout le reste

Bonne extraction ! 🚀
