Corriger les images numérisées avec ImageMagick
Il est facile de corriger des images, même par lots, avec cet outil open source.
Il y a des années, alors que je fouillais dans le contenu d'une étagère dans une librairie d'occasion, je suis tombé sur un livret intitulé "Résumé des commandes du système UNIX pour Berkeley 4.2 et 4.3 BSD", publié par Specialized Systems Consultants. Je l'ai acheté comme objet de curiosité car il avait près de 20 ans et était encore largement applicable à Linux et BSD modernes.
Cela m'a amusé hier et aujourd'hui. Un livret écrit en 1986 était encore largement d'actualité en 2016, tandis que les livres sur la même étagère traitant d'un système d'exploitation propriétaire ne valaient pas le papier sur lequel ils étaient imprimés. (Réfléchissez : selon vous, quelle technologie va survivre à une apocalypse zombie ?) J'ai le livret sur ma bibliothèque depuis plusieurs années maintenant, mais je me suis rendu compte qu'il valait probablement la peine. faisant un peu de préservation numérique de cet artefact, j'ai donc décidé de numériser le livret pour créer un ebook CBZ.
La numérisation était facile, bien que longue, avec Skanlite. Cependant, après avoir terminé, j'ai découvert que certaines pages n'étaient pas tout à fait de niveau.
(Seth Kenlon, CC BY-SA 4.0)
En impression, c'est ce qu'on appelle un problème de repérage, c'est-à-dire que la position de ce qui est imprimé n'est pas correctement orientée sur la page.
ImageMagick
ImageMagick est un éditeur graphique non interactif basé sur un terminal. Il peut sembler contre-intuitif d’essayer de modifier un graphique dans un environnement sans graphique comme un terminal texte uniquement, mais c’est en réalité très courant. Par exemple, lorsque vous téléchargez une image à utiliser comme photo de profil sur une application Web, il est probable qu'un script sur le serveur de l'application traite votre image à l'aide d'ImageMagick ou de ses bibliothèques. L'avantage d'un éditeur non interactif est que vous pouvez formuler ce qui doit être fait sur un exemple d'image, puis appliquer ces effets à des centaines d'autres images en appuyant simplement sur un bouton.
ImageMagick est généralement aussi performant que n'importe quel éditeur graphique, à condition que vous preniez le temps de découvrir ses nombreuses fonctions et comment les combiner pour obtenir les effets souhaités. Dans ce cas, je souhaite faire pivoter les pages de travers. Après avoir parcouru la documentation d'ImageMagick, j'ai découvert que le terme ImageMagick désignant la solution dont j'avais besoin s'appelait redressement. Aligner votre terminologie avec celle de quelqu'un d'autre est un défi dans tout ce que vous ne connaissez pas déjà, alors lorsque vous approchez ImageMagick (ou quoi que ce soit), gardez à l'esprit que le mot que vous avez décidé décrit un problème ou la solution peut ne pas être le même mot utilisé par quelqu'un d'autre.
Pour redresser une image avec un texte tordu à l'aide d'ImageMagick :
$ convert page_0052.webp -deskew 25% fix_0052.webp
L'option -deskew
représente le seuil de biais acceptable. Une inclinaison est déterminée en traçant les sommets et les vallées d'objets qui semblent être des lettres. En fonction du degré de courbure de votre analyse, vous aurez peut-être besoin d'un seuil supérieur ou inférieur à 25 %. Je suis allé jusqu'à 80 %, et jusqu'à présent, rien en dessous de 25 % n'a eu d'effet.
Voici le résultat :
(Seth Kenlon, CC BY-SA 4.0)
Fixé! L'application de cela aux 55 pages restantes du document a corrigé les pages asymétriques sans rien faire aux pages déjà droites. En d’autres termes, il était sûr d’exécuter cette commande sur des pages ne nécessitant aucun ajustement, grâce à mon paramètre de seuil.
Recadrer une image avec ImageMagick
Après avoir corrigé une inclinaison, et parce que j'ai numérisé plus de chaque page que nécessaire pour éviter de couper accidentellement des mots, j'ai décidé qu'il était logique de recadrer mes pages corrigées. J'étais heureux de garder un peu d'espace autour des marges, mais pas autant que j'en avais. J'utilise la fonction recadrage
d'ImageMagick assez souvent pour les images de ce même site Web, je connaissais donc cette option. Cependant, je devais déterminer comment recadrer chaque page.
Tout d'abord, j'avais besoin de la taille de l'image :
$ identify fixed_0052.webp
WEBP 1128x2593 1128x2593+0+0 8-bit sRGB 114732B 0.020u 0:00.021
Connaissant la taille, j'ai pu faire quelques estimations du nombre de pixels que je pourrais perdre. Après quelques essais, j'arrive à ceci :
convert fix_0052.webp -gravity Center -crop 950x2450+0+0 crop_0052.webp
Ce n'est pas une solution exacte, mais cela s'est avéré important lorsque je l'ai appliqué à d'autres images du livret. Les pages variaient en termes de contenu et d'emplacement du scanner ici et là, j'étais donc heureux de donner à chacun un peu de répit.
Voici l'image corrigée et recadrée :
(Seth Kenlon, CC BY-SA 4.0)
Édition d'images par lots avec open source
La beauté d'ImageMagick est qu'une fois que vous avez trouvé la formule pour réparer votre image, vous pouvez appliquer ce correctif à toutes les images nécessitant le même correctif. Je fais cela avec GNU Parallel, qui utilise tous mes cœurs de processeur pour terminer la correction d'image sur des centaines de pages. Cela ne prend pas longtemps et les résultats parlent d'eux-mêmes. Plus important encore, j'ai une archive numérique d'un artefact amusant de l'histoire d'UNIX.