Pyllica, extracteur Python de corpus de périodiques de Gallica
Pyllica est un outil écrit en Python permettant de récupérer des documents hébergés sur la bibliothèque numérique Gallica. Il permet notamment de constituer rapidement de grands corpus afin d'effectuer des analyses assistées par ordinateur (statistique textuelles, text mining, reconnaissance d'image).
Historique
Initialement écrit par Pierre-Carl Langlais il a été très largement mis à jour et complété par Julien Schuh. La dernière version tire notamment partie de nouvelles fonctionnalités introduites sur Gallica, telles que l'extraction des pdf ou l'extraction des images. Auparavant, Pyllica ne fonctionnait que sur des documents OCRisés). À l'occasion de cette mise à jour, le programme a été également réécrit en Python 3 (la version d'origine était en Python 2.7).
Installation et usage
Pyllica est un programme en Python 3, qui fait appel à l'extension beautiful soup. Pour l'utilisez vous devez avoir une version de Python à jour et télécharger Beautiful Soup.
Pyllica se compose de quatre outils:
- Pyllicalabs permet d’extraire les fichiers en texte brut de numéros de périodiques qui ont été océrisés, selon une fourchette définie par l'utilisateur;
- Pyllicalabspdf permet d’extraire les pdf de numéros de périodiques;
- Pyllicalabsjpg permet d’extraire les pages d’un document sous forme de fichier jpg, tif ou png, avec une qualité définie par l’utilisateur;
- Pyllicalabsjpgpress permet de faire la même opération pour des numéros de périodiques.
Détails des outils
Pyllicalabs
On modifie le contenu du fichier actionpyllicalabs:
textpress(url="https://gallica.bnf.fr/ark:/12148/cb32817642h/date", title="lemoderniste", year=1889, month=5, day=25, item=52, rate=7, lastpage=11)
La fonction comprend les commandes suivantes :
- url : on indique l’adresse sur Gallica de la page du périodique indiquant toutes les années disponibles.
- title : on choisit un titre qui sera indiqué dans le nom du fichier.
- year, month, day : la date du premier numéro qu’on souhaite télécharger.
- item : le nombre de fichiers qu’on veut récupérer.
- rate : le nombre de jours entre chaque numéro.
- lastpage : avec la nouvelle version de Gallica, la numérotation des pages n’est pas importante, on peut laisser cet élément tel quel.
La dernière version de Julien Schuh intègre des règles en cas d’exception: si l’outil ne trouve pas un des numéros (par exemple, si le périodique n’est pas disponible pour une des dates), un message avertit du problème mais le téléchargement des numéros suivants continue.
Note : ll faut remplacer dans le code les URL http://gallicalabs.bnf.fr par https://gallica.bnf.fr.
Pyllicalabspdf
Comme l’outil précédent, il permet de récupérer les fichiers pdf de périodiques; la méthode d’utilisation est la même.
Un exemple d'implémentation est disponible sous la forme d'un notebook Colab.
Pyllicalabsjpg
La nouvelle version de Gallica utilise la norme IIIF, permettant de récupérer les images en haute résolution. Pour l'utiliser avec un document unique, il suffit de récupérer l'identifiant du document dans l'adresse de gallicalabs (ce qui suit ark:), par exemple: /12148/btv1b86000454/
On insère ces chiffres (en conservant bien les slash) dans le fichier actionpyllicalabspg.py au niveau de la variable "identifier", on choisit un titre ("title") pour les fichiers de sortie et on sélectionne la première et la dernière page (attention, il faut choisir en fonction des numéros des vues et non de la pagination réelle du document). On place ce fichier et le fichier pyllicalabs3jpg.py dans le dossier de destination et on le lance avec Python.
On peut changer la résolution souhaitée en modifiant la fin de l'url dans le fichier pyllicalabsjpg.py (par exemple, full/5000/0/native.jpg au lieu de full/3000/0/native.png). On peut aussi récupérer les images au format png ou tif en remplaçant la mention « jpg » par « png » ou « tif » à la fin de l'adresse et du format de fichier créé:
for page in listpage: jpgfile = title + "_" + str(page) + ".png" url = 'https://gallica.bnf.fr/iiif/ark:' + identifier + '/f' + str(page) + '/full/3000/0/native.png' urllib.request.urlretrieve(url, jpgfile)
Pyllicalabsjpgpress
Pour récupérer les images d’une série de numéros de périodiques, on part de l’adresse du périodique avec les dates: https://gallica.bnf.fr/ark:/12148/cb34427442r/date et on supprime la fin de l'adresse "/date" pour l'intégrer dans le fichier actionpyllicalabsjpgpress.py dans la variable « url ».
Il faut ici tenir compte de la pagination; on peut gonfler le nombre de pages au cas ou certains documents comportent plus de pages, les erreurs s'afficheront dans le shell avant que le programme ne continue avec le numéro suivant du périodique. Par exemple, pour un journal de 8 pages, il vaut mieux indiquer 12 pages pour être certain que des numéros plus longs seront entièrement téléchargés.
Un exemple d'implémentation est disponible sous la forme d'un notebook Colab.
Accès
https://github.com/Dorialexander/Pyllica
Fiche Technique
formatPDF JPEG / JPG Texte
LicenceConditions d'utilisation des contenus de Gallica
TechnologiesPython
SujetsPresse