Version 5 — Octobre 2013 — severo
Pour réfléchir autour de l’idée d’une API et d’un système client/serveur pour la conversion de fichiers (documents, images, son, vidéos).
Fichier en entrée | Action | Résultat |
---|---|---|
Documents doc | ou odt, rtf... | |
doc | convertir en odt | odt |
doc | convertir en PDF | |
doc | générer un vignette (image de la première page) | png |
doc | générer une image par page | plusieurs png |
doc | extraire le texte brut | texte |
doc | convertir en HTML (avec option pour intégrer les images en base64) | html |
Documents PDF | ou tiff multipage, ps, epub ? | |
générer un vignette (image de la première page) | png | |
générer une image par page | plusieurs png | |
extraire le texte brut (avec option OCR si aucun texte n’est inclus directement) | texte | |
convertir en HTML (avec option pour intégrer les images en base64) | html | |
convertir en doc (éventuellement) | doc | |
Images | ||
png | convertir en un autre format | jpg |
png | extraire le texte brut par OCR | texte |
Sons | ||
mp3 | convertir en un autre format | ogg |
mp3 | extraire le texte correspondant (reconnaissance vocale, on peut rêver) | texte |
Vidéos | ||
avi | convertir en un autre format | ogv |
avi | extraire le texte correspondant (reconnaissance vocale, on peut rêver) | texte |
Client
Pour chacune de ces actions, le client donne accès au fichier (par URL ou par transfert) au serveur. Le serveur effectue l’action. Finalement il met à disposition du client une URL pour récupérer le résultat, durant le temps nécessaire à son téléchargement. Après quelques heures (paramètre à définir), le résultat est effacé et l’URL retourne un code d’erreur.
En retour de sa demande de conversion, le client reçoit une URL contenant par exemple une clé unique. Durant le temps de la conversion, l’URL retourne un statut HTTP qui indique que la conversion n’est pas fini. Lorsque le résultat est prêt, l’URL retourne le résultat. Le client doit donc accéder régulièrement à l’URL pour savoir si la conversion est terminée ou non.
L’URL peut donner accès au fichier à télécharger directement, ou fichier de données (par exemple JSON) qui indique l’URL où télécharger le ou les fichiers, ou éventuellement qui contient lui même le résultat.
Dans le cas où le serveur est aussi installé dans le même site, le client peut court-circuiter l’API et accéder directement aux commandes système.
Le serveur authentifie le client, et donne lui accès à tout ou partie des actions. On peut éventuellement imaginer que le serveur publie la liste des actions dont il est capable (méta-données décrivant le contenu du service et les paramètres acceptés).
Il faut se poser la question de savoir si un seul plugin peut fournir l’API pour toutes les actions de conversion, ou s’il faut une API différente pour chaque type de fichier, en raison des paramètres différents (résolution pour les images, échantillonage ? pour le son, ...).
Serveur
Le serveur doit savoir :
Client
Le client doit savoir :
Les paramètres envoyés au serveur peuvent être (voir plugin oficina) :
Est-ce qu’utiliser une boucle DATA a un sens pour récupérer les données sur le serveur ? Avec un critère clé ou url_specifique ?
Ce
Plugins
Les plugins existants peuvent être reliés : doc2img, spipmotion, facd, ocr, oficina, mediaspip_core, fulltext