Accueil > Python > Récupérer les pages d’un livre numérisé en plusieurs images
Récupérer les pages d’un livre numérisé en plusieurs images
vendredi 9 mai 2014, par
Certains sites proposent des versions numérisées d’anciens livres. Lorsque ce livre m’est nécessaire pour mon travail, j’ai pris l’habitude de le récupérer en local, pour en avoir une copie. En effet, on n’est jamais certain de la pérennité d’une ressource internet. En outre je peux avoir besoin de revenir sur le livre dans un endroit où je n’ai qu’un accès difficile à internet.
Cependant ces sites ne permettent pas toujours de télécharger l’ensemble des pages du livre en un fichier, mais offrent simplement de visualiser chaque page une par une. Ce qui implique donc de les télécharger une par une, une opération fastidieuse et pénible. J’ai donc écrit un script permettant d’automatiser la chose.
Pré-requis
Vous devez disposer d’une version de python3 installée sur votre ordinateur. Certains systèmes d’exploitation sont livrés avec, mais la plupart du temps ou Python n’est pas installé par défaut, ou il est installé dans une version 2.x. Si vous ne savez pas si python 3 est installé, vous pouvez vous rendre sur la page de documentation de Python.
Trouver le modèle d’URL
Imaginons que l’on souhaite récupérer les images des folios 1r à 382v du manuscrit latin 1 de la Dombibliothek, à Cologne. Une fois la première image affichée dans le navigateur, il faut cliquer droit dessus et choisir "Copier l’adresse de l’image", "Copier l’Url de l’Image" ou une formule similaire (cela dépend de votre navigateur).

Vous venez d’ajouter l’adresse de l’image dans votre presse-papier. Il vous faut désormais la coller dans un éditeur de texte.
Dans le cas présent, l’URL est :
http://www.ceec.uni-koeln.de/projekte/CEEC/manuscripts/fit/kn28-0001/kn28-0001_001.jpg
Parfois affichée sous la forme plus obscure :
http://www.ceec.uni-koeln.de/projekte/CEEC/manuscripts/fit/kn28%2d0001/kn28%2d0001%5f001%2ejpg
On constate que le %2
équivaut à -
et que %5f
équivaut à _
.
Il faut procéder de la même manière pour la dernière image. Dans le cas présent, on obtient l’url :
http://www.ceec.uni-koeln.de/projekte/CEEC/manuscripts/fit/kn28-0001/kn28-0001_764.jpg
Parfois affichée sous la forme plus obscure :
http://www.ceec.uni-koeln.de/projekte/CEEC/manuscripts/fit/kn28%2d0001/kn28%2d0001%5f764%2ejpg
Déterminer les paramètres
Dans ce genre de publication en ligne, on constate que les URLs possèdent des éléments invariants et un élément variant, à savoir un nombre. Dans le cas présence, il s’agit du nombre qui suit kn28-0001_
:
– il est égal à 001
pour la première image.
– il est égal à 1764
pour la dernière image.
Notez ces deux numéros : le script va parcours l’ensemble des numéros compris entre eux, inclus.
Nous modifions l’URL, pour fabriquer une URL générique. Nous mettons à la place du numéro le code suivant {nombre}
. Ce qui donne dans le cas présent :
http://www.ceec.uni-koeln.de/projekte/CEEC/manuscripts/fit/kn28-0001/kn28-0001_{nombre}.jpg
Configuration du script
Ayant noté l’ensemble des paramètres, il faut désormais configurer le script, après l’avoir téléchargé [1] :
Après avoir dézippé, ouvrir le fichier config.py
. Il doit normalement s’ouvrir avec un éditeur python, installé en même temps que Python sur votre machine. Actuellement, il contient les lignes suivantes :
Nous n’allons modifier, pour le moment, que les lignes 3 à 7, ainsi que la ligne 11
Chaque paramètre peut être :
– Un chaîne de caractères, entre guillemets.
– Un nombre entier, sans guilllement
Il faut modifier :
– le paramètre base
, en mettant l’url générique que nous avons construit.
– le paramètre min
, qui doit contenir le nombre correspondant à notre première image.
– le paramètre max
correspondant à notre dernière image.
– le paramètre dossier
contenant le nom du dossier dans lequel nous enregistrons les fichiers.
– le paramètre extension
contenant l’extension des fichiers enregistrés.
– le paramètre complete
contenant le nombre total de caractère pour l’affichage des nombres dans l’url. Dans le cas présent, on voit que la première image a le nombre affiché sous la forme 001
: il y a donc trois nombres.
Notre fichier va donc contenir les lignes suivantes :
Exécution du script
Il nous reste à exécuter le script recuperation-images-livre.py
. Pour ce faire, deux solutions s’offrent à nous :
– en ligne de commande, avec le Terminal/l’invite de commande. Une fois dans le dossier du script, frapper :
python3 recuperation-images-livre.py
– avec le logiciel IDLE, livré avec les installations python, ouvrir le fichier recuperation-images-livre.py
, puis dans le menu "Run", choisir "Run module".

Dans les deux cas, on doit voir défiler à l’écran les URLs de chaque image téléchargée, précédés du nom du fichier enregistré sur votre ordinateur.

Il ne reste plus qu’à récupérer le dossier.
Paramètre supplémentaire
Il peut arriver que certains sites proposent des pages numérotés en nombres romains minuscules. Dans ce cas, il faut changer la l. 10 du script, en :
romain = True
Toutes propositions d’amélioration est la bienvenue. Merci dans ce cas d’ouvrir un ticket sur la page github.
[1] Le script est sous licence GPL3. Il est disponible sur Github.