Chemin principal : 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, mise à jour samedi 10 mai 2014, par Maïeul
Suivre la vie du site RSS 2.0 Forum

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).

PNG - 188.9 ko
Retrouver l’URL d’une image

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] :

Zip -
Script de récupération d’image
Dernière version stable

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 :

  1. #les paramètres
  2. ## les + importants
  3. base="http://babel.hathitrust.org/cgi/imgsrv/image?id=mdp.39015012425404;seq={nombre}"
  4. extension = ".jpg"
  5. min = 1
  6. max = 2
  7. dossier="Schlumberger1884"
  8.  
  9. ## les secondaires
  10. romain = False
  11. complete = 0

Télécharger

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 :

  1. #les paramètres
  2. ## les + importants
  3. base="http://www.ceec.uni-koeln.de/projekte/CEEC/manuscripts/fit/kn28-0001/kn28-0001_{nombre}.jpg"
  4. extension = ".jpg"
  5. min = 1
  6. max = 764
  7. dossier="Cologne"
  8.  
  9. ## les secondaires
  10. romain = False
  11. complete = 3

Télécharger

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 ».
    PNG - 50.6 ko
    Exécuter un script Python avec IDLE

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.

PNG - 96.5 ko
Détail de la récupération des images

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 :

  1. romain = True

P.-S.

Toutes propositions d’amélioration est la bienvenue. Merci dans ce cas d’ouvrir un ticket sur la page github.

Notes

[1Le script est sous licence GPL3. Il est disponible sur Github.

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici
  • Ce formulaire accepte les raccourcis SPIP [->url] {{gras}} {italique} <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

À propos

Titulaire d’un master en sciences religieuses de l’Université de Strasbourg, je suis depuis août 2012 assistant-diplômé en histoire du christianisme antique et littérature apocryphe chrétienne à l’Université de Lausanne, où je prépare une thèse sous la direction de Frédéric Amsler.

Dans le cadre de la rédaction de mon mémoire de master, j’ai été emmené à utiliser LaTeX, et j’ai donc décider de partager mes techniques. En effet, au cours de mes premiers apprentissages, j’ai découvert que les ressources indiquant les outils pour l’utilisation de LaTeX en sciences humaines étaient rares.

Par ailleurs, je suis membre actif de la communauté SPIP, au sein de laquelle j’administre le site Spip-Contrib. Je propose sur ce site quelques notes sur SPIP, en général à destination de webmestre.

Il m’arrive également de faire un petit peu de Python, de temps en temps.

Enfin, je tiens un blog de réflexions politiques et religieuses.

Maïeul