Ceci est une ancienne révision du document !
retour vers l'accueil du manuel
pdftotext pour extraire le texte de documents pdf.
OpenCV bibliothèque de traitement d'image opensource avec des liens avec des langages comme Python.
Leptonica : bibliothèque de traitement et d'analyse d'image et outil en ligne de commande. Est utilisée par Tesseract OCR pour binariser les images.
unpaper: bibliothèque de postprocessing visant à éliminer tous les problèmes relatifs au support papier des documents scannés.
ImageMagick : bibliothèque de traitement d'image générale.
Gimp un éditeur d'image puissant qui peut être utilisé pour améliorer manuellement la qualité des images.
pdfsandwich fait le preprocessing et intègre tesseract. Il transforme des pdf images et leur applique un processus de ROC pour générer des fichiers pdf “sandwich”, i.e. desfichiers pdf auxquels le texte est ajouté “derrière” les images de manière invisible. Il s'agit d'un outil en ligne de commande élaboré pour traiter des livres ou des journaux qui ont été scannés. Il peut reconnaître le *layout* même avec plusieurs colonnes. Il s'agit d'un *wrapper script* qui appelle d'autres outils (*unpaper*, *convert*, *gs*, *hocr2pdf* et *tesseract*). Il fonctionne sur les systèmes Unix en particulier Linux et MacOs X.
Meilleure sera la qualité de l'image source, meilleure sera le résultat de la reconnaissance de caractères (ROC). Pour que le moteur de reconnaissance de caractères distingue au mieux les caractères du fond de l'image il faut donc que :
D'abord éviter que l'original soit déchiré, froissé, imprimé avec une encre à faible contraste…
L'image doit être au moins de 300 dpi (dots per inch). En dessous de 200 dpi la photo ne sera pas interprétable. Au dessus de 600 dpi le fichier de la photo sera excessivement et inutilement lourde.
Cette étape vise à améliorer l'image qui fera l'objet d'une ROC.
Il faut accroître le contraste et la densité avant l'ocrisation soit à partir du logiciel de numérisation soit à l'aide d'un logiciel de traitement d'image (image preprocessing software).
Il faut aussi “binariser” (binarize) l'image, i.e. convertir une image couleur (RGB) en une image noire et blanche. Il existe plusieurs algorithmes permettant d'effectuer cette transformation d'un simple thresholding à des analyses zonales plus sophistiquées. La plupart des moteurs d'OCR effectuent cette conversion comme une des premières étapes du processus de reconnaissance de caractères. Un autre avantage de la binarisation est la réduction de la taille des fichiers images.
Enlever le bruit et les artefacts de numérisation qui peuvent provenir d'une numérisation ou d'une image de mauvaise qulaité. Ils peuvent se situer soit dans l'arrière plan, soit en premier plan (cf par exemple les bordures ou la partie centrale, entre deux pages, noires).
Redresser les images en effectuant une rotation à droite ou à gauche. Il faut que les lignes du texte soient horizontales.
Analyse des zones intéressantes (Layout ou Zone Analysis) Afin que les mots soient détectés correctement il est important, en premier lieu, de repérer les zones ou le layout (c'est-à-dire les zone d'intérêt). Cette étape détecte es paragraphes, les tableaux, les colonnes, les images… La plupart des solutions de ROC disposent d'un module de *layout analysis*. Il est possible d'appliquer ees techniques de ROC zonale afin de définir précisément les parties de l'image comportant le texte à extraire.
Remarques finales. Il n'existe pas de règle générale pour optimiser une ROC. Avant tout il faut étudier attentivement les documents à traiter afin d'en repérer les défauts récurrents.
Il est possible de télécharger des documents numérisés disponibles sur Gallica à partir de la fonction de téléchargement.
Par exemple :
La fonction de téléchargement est accessible à partir de la barre d'outils située sur la gauche de la fenêtre de consultation des documents. Cependant, s'il est possible de récupérer le document entier au format .pdf ou .txt seule la page courante est récupérable au format .jpeg. Ceci est problématique si on désire refaire une reconnaissance de caractères (OCR) lorsque le texte brut disponible n'est pas de très bonne qualité.
De même, lorsqu'on veut récupérer le fichier d'une carte numérique le fichier JPEG disponible a une définition limitée.
A côté de l'utilisation de la fonction de téléchargement, il est possible d'utiliser l'API Document de Gallica pour récupérer un certain nombre de données ou d'information concernant un document. Pour ce faire il faut dipsoser de l'identifiant ark du document.
Il est ainsi possible de récupérer le texte brut de l'ouvrage évoqué précédemment en utilisant l'url suivant :
https://gallica.bnf.fr/ark:/12148/bpt6k97813640.texteBrut
La qualité du texte est inégale selon les document.
Il est aussi possible de récupérer la table des matières - celle que l'on peut afficher à partir des outils situés à droite de la fenêtre de consultation des documents - ce qui peut être intéressant si on veut avoir la correspondance entre le numéro de la vue et celui de la page de l'ouvrage.
https://gallica.bnf.fr/services/Toc?ark=ark:/12148/bpt6k97813640
Pour faire le lien entre le texte de l'entrée de la table des matières, contenu dans la balise _seg_, et la page du document numérique, il faut exploiter les attributs de la balise _xref_ et notamment l'attribut _from_.
Une première méthode consiste à utiliser l'url, par exemple celle le *Plan de Lyon, de ses environs et des forts* dressé par L. Dignoscyo en 1835 a l'url suivant :
https://gallica.bnf.fr/ark:/12148/btv1b53035185s
Pour obtenir une image haute définition il faut modifier l'url de la façon suivante :
Ce qui donne : https://gallica.bnf.fr/iiif/ark:/12148/btv1b53035185s/f1/full/full/0/native.jpg
Cette image pourra être ensuite géoréférencée.
Plus simplement, il existe une extension de Chrome (ou Chromium) ou Firefox nommée [IIF-Download](http://www.geobib.fr/tool/iiif/) qui permet en un clic de récupérer l'image HD d'un document.
Pour récupérer un lot d'images (par exemple celles d'un livre) il existe un ensemble de scripts Python nommé Pyllica - information [ici](https://github.com/Dorialexander/Pyllica) et [là](https://prelia.hypotheses.org/441) - utilisant [Beautifullsoup](https://www.crummy.com/software/BeautifulSoup/) une bibliothèque Python qui permet de récupérer des données à partir de fichiers HTML ou XML
Par exemple pour récupérer les images de [Pariset E., La Chambre de commerce de Lyon : étude faite sur les registres de ses délibérations. II. Dix-neuvième siècle, Lyon, 1889](https://gallica.bnf.fr/ark:/12148/bpt6k97813640) évoqué plus haut nous utiliserons les scripts _pyllicalabsjpg.py_ et _actionpyllicalabsjpg.py_ que nous modifierons comme ci-dessous :
Il faut copier le premier script python dans le dossier dans lequel on veut télécharger les images. Il faut ensuite définir ce dossier comme sont répertoire de travail courant. Ici la définition d'image demandée est 3000. On peut la modifier. Par exemple pour avoir une résolutiond e 5000 il suffit de remplacer 3000 par 5000 dans l'expression full/3000/0/native.png. Pour obtenir la qualité maximale disponible, il faut remplacer 3000 par _full_ (full/full/0/native.png.). Attention : on a bien deux fois “full”. On peut aussi télécharger les images dans un autre format (png ou tif) en remplaçant “jpg” par “png” ou “tif” à la fin de l’adresse et du format de fichier créé comme ceci :
for page in listpage: jpgfile = title + "_" + str(page) + ".png" url = 'http://gallicalabs.bnf.fr/iiif/ark:' + identifier + '/f' + str(page) + '/ful/3000/0/native.png' urllib.request.urlretrieve(url, jpgfile)
Ensuite il faut utiliser le script suivant où :
La durée du téléchargement peu pendre du temps, en fonction de la taille de l'ouvrage et de la qualité de la connexion.
Disposer des images de scan du document peut être utile afin de pouvoir retravailler ces images en vue d'obtenir une ROC de meilleure qualité.
Pour ce faire il est possible d'utiliser
A COMPLETER