Skip to content

Commit 13a732f

Browse files
committed
Correction de la documentation
1 parent 1022503 commit 13a732f

File tree

3 files changed

+177
-1
lines changed

3 files changed

+177
-1
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ Le premier conteneur se sert de la technologie de reconnaissance de caractères
1212

1313
## Documentation
1414

15-
Pour plus d'informations sur le fonctionnement, regarder la [documentation](documentation.pdf)
15+
Pour plus d'informations sur le fonctionnement, regarder la [documentation](documentation.md)
1616

1717
## Équipe
1818
- Enzo MAROS (Chef de Projet)

documentation.md

Lines changed: 176 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,176 @@
1+
# Documentation
2+
3+
## Présentation
4+
5+
Ce projet propose un système d'automatisation qui permet d'extraire un ensemble de contacts depuis une image. L'utilisateur n'a pas à se soucier des programmes utilisés, une chaîne d'automatisation est créée et nécessite simplement le dépôt de l'image source et d'un fichier de configuration.
6+
7+
### Etapes
8+
- **Extraction du texte brut**, qui récupère simplement l'ensemble des caractères et des mots reconnus sur l'image;
9+
- **Extraction des informations**, qui récupère les informations demandées par l'utilisateur;
10+
- **Conversion** des données au format souhaité, indiqué par l'utilisateur.
11+
12+
### Sources
13+
14+
Les codes sources sont fournis dans l'archive `.tgz`, dans laquelle cette documentation se situait. Vous y trouverez les fichiers suivants :
15+
- `start`, qui permet de démarrer la chaîne de conteneurs
16+
- `stop`, qui permet de l'arrêter
17+
- `envoyer`, qui envoie un fichier image et un fichier de configuration au début de la chaîne
18+
- `recevoir`, qui récupère le rendu à la fin de la chaîne
19+
20+
Après extraction, **la première chose à faire est d'ajouter les droits d'exécution** à tous les scripts :
21+
```bash
22+
chmod +x start stop envoyer recevoir
23+
```
24+
25+
Ces 4 scripts sont ceux avec lesquels un technicien ou un utilisateur doit interragir. Ils contiennent les commandes essentielles et complètes pour la gestion de la chaîne. D'autres fichiers sources, internes au fonctionnement, se situent dans le dossier `src/` :
26+
- `tesseract.sh`, script de la première étape, qui extrait le texte brut de l'image
27+
- `extraction.php`, script de la deuxième partie, qui extrait les informations demandées
28+
- `conversion.sh`, script de la troisième partie, qui convertit au format souhaité
29+
- `modele.php`, modèle utilisé par la troisième partie pour générer un HTML
30+
31+
32+
## Fichier de configuration
33+
34+
Le fichier texte de configuration doit absolument se nommer `config.txt`. L'utilisateur y rentre d'abord la liste des champs, puis le format souhaité.
35+
36+
### Champs
37+
Les champs permettent de préciser quels types d'information récupérer :
38+
39+
- `nom`
40+
- `prenom`
41+
- `email`
42+
- `telephone`
43+
- `adresse`
44+
45+
L'ordre entré par les utilisateurs reste le même sur le résultat, ainsi si `prenom` est entré avant `nom`, le résultat aura lui aussi d'abord le prénom puis le nom.
46+
47+
### Les informations complémentaires
48+
49+
Pour les champs **nom**, **prenom** et **adresse**, il est nécessaire de renseigner des informations complémentaires. Par exemple, pour une capture d'écran de la forme :
50+
```
51+
{
52+
"last_name" : "Deschamps"
53+
"first_name" : "Didier"
54+
"address" : "Paris",
55+
"phone" : "07.08.09.10.11"
56+
}
57+
```
58+
59+
Un fichier de configuration ressemblera à ceci :
60+
61+
```
62+
nom : "last_name"
63+
prenom : "first_name"
64+
telephone
65+
adresse : "address"
66+
```
67+
68+
Ces informations complémentaires permettent au programme de détecter les données souhaitées quand ces dernières n'ont pas de motif récurrent (comme c'est le cas d'un email ou d'un numéro de téléphone).
69+
70+
### Cas du tableau
71+
72+
Si l'image fournie en entrée est sous forme de tableau alors l'utilisateur doit le spécifier au début du fichier, avec le nombre **total** de colonnes (y compris celles non-extraites). Dans ce cas particulier, **chaque champ** doit être accompagné du titre de sa colonne en informations complémentaires. Un fichier de configuration type ressemblerait à :
73+
74+
```
75+
tableau
76+
colonnes : 3
77+
78+
nom : "Name"
79+
telephone : "Phone"
80+
```
81+
82+
### Format de sortie
83+
84+
Le format de sortie est nécessaire au bon fonctionnement de la chaine. Le système propose les formats **PDF**, **HTML** et **CSV**. Le format de sortie doit être précisé comme suit :
85+
```
86+
format : "PDF"
87+
```
88+
89+
### Règles sur le fichier de configuration
90+
91+
Pour éviter d'obtenir des erreurs en sortie, vous pouvez suivre les règles suivantes :
92+
1. Mettre les informations entre guillemets
93+
2. Ne pas rajouter d'accents sur les noms des champs (le moteur OCR ne les reconnait pas toujours)
94+
3. Bien préciser le nom de chaque colonne pour le format tableau
95+
96+
## Fonctionnement interne
97+
Les 3 conteneurs suivants ont été créés à l'avance et sont utilisés. Certains apportent un programme en particulier (ex: Tesseract OCR), et tous sont fournis avec PHP 7.4 :
98+
99+
| Conteneur | Étape |
100+
| - | - |
101+
| `tesseract` | Extraction du texte brut |
102+
| `php-cli74` | Extraction des informations souhaitées |
103+
| `weasyprint` | Conversion |
104+
105+
Le démarrage de la chaîne fonctionne comme suit :
106+
1. Un volume nommé `sae103` est créé. Il contiendra les fichiers traités par les conteneurs
107+
2. Un conteneur temporaire, nommé `sae103-tmp`, est démarré et lié au volume. Il sert de port d'entrée vers le volume le temps de transférer les sources
108+
3. Les fichiers du dossier `src/` sont tranférés dans le volume par le conteneur temporaire
109+
4. Les dossiers de résultats `etape1/`, `etape2/` et `etape3/` sont créés dans le volume
110+
5. Le conteneur temporaire est fermé et supprimé
111+
6. Les 3 conteneurs finaux sont lancés en mode détaché et liés au volume. On lance dans chaque conteneur le programme associé.
112+
113+
Chaque programme du dossier `src/` attend qu'un fichier de configuration arrive dans le dossier qu'il regarde (selon l'étape).
114+
115+
## Exemple d'utilisation complète
116+
117+
Les commandes, dans l'ordre, à lancer pour l'utilisation de la chaîne sont les suivantes. Les fichiers doivent être au préalables marqués comme exécutables.
118+
119+
Démarrage de la chaîne :
120+
```
121+
./start
122+
```
123+
124+
Envoi d'une image, puis du fichier de configuration. **Le fichier de configuration doit être mis en dernier**, car il est l'élément déclancheur de la chaîne :
125+
```
126+
./envoyer dossier/image.png
127+
./envoyer dossier/config.txt
128+
```
129+
130+
Enfin, la récupération des éléments produits par la chaîne, dans le dossier `out_dir` :
131+
```
132+
./recuperer
133+
```
134+
135+
Répétez autant de fois que nécessaire l'envoi et la récupération des fichiers produits. Pour finalement arrêter la chaîne, exécutez :
136+
```
137+
./stop
138+
```
139+
140+
## Cas de test
141+
142+
La documentation est fournie avec 2 cas de tests pour comprendre l'utilisation et le fonctionnement de la chaîne.
143+
144+
### Cas n°1
145+
146+
Le premier test s'effectue avec un tableau, se trouvant de le dossier `test/tableau/`. Il possède un fichier `config.txt`, ainsi qu'une image `tableau.png`
147+
148+
Lorsque l'utilisateur souhaite lancer le test, il lui suffit d'entrer les commandes suivantes (une fois la chaîne lancée) :
149+
150+
```
151+
./envoyer test/tableau/tableau.png
152+
./envoyer test/tableau/config.txt
153+
```
154+
155+
Puis pour récupérer les fichiers produits :
156+
157+
```
158+
./recuperer
159+
```
160+
161+
### Cas n°2
162+
163+
Le second cas s'effectue avec une capture d'un fichier JSON. Il se trouve dans le dossier `test/json/`. De même que pour le premier test, il possède une image `sample.png` et un fichier `config.txt`.
164+
165+
Pour lancer le test, il faut lancer les commandes suivantes (une fois la chaîne lancée) :
166+
167+
```
168+
./envoyer test/json/sample.png
169+
./envoyer test/json/config.txt
170+
```
171+
172+
Puis pour récupérer les fichiers produits :
173+
174+
```
175+
./recuperer
176+
```

documentation.pdf

1.89 KB
Binary file not shown.

0 commit comments

Comments
 (0)