Gérer ses métadonnées

Note: Ceci est la remise en ligne d'un article datant de 2007. Il sera peut-être mis à jour ultérieurement.

Les métadonnées sont un des aspects vraiment très agréables de la photographie numérique mais il n'est pas inutile de savoir comment les exploiter pleinement et s'en méfier quand on publie des photographies.

Aujourd'hui, quand je retrouve une photo faite il y a une dizaine d'années, j'ai un mal fou à savoir de quand elle date. Je suis obligé de solliciter ma mémoire et jouer les associations du style : "c'était cette année-là car..., un dimanche de février et vu la lumière il devait être 16h". Ce n'est pas évident.

Dans dix ans, quand je voudrai connaître la date d'une photographie, j'irai simplement lire le champ EXIF "DateTimeOriginal" de celle-ci et j'aurai mon information.

EXIF, IPTC et XMP sont dans un bateau

Qui veut jouer avec les métadonnées sera un jour confronté à ces trois acronymes. EXIF est le premier que l'on rencontre. Il est utilisé par les appareils eux-mêmes au moment de l'enregistrement de la photographie. Dans les champs EXIF seront renseignées des informations telles que la date de prise de vue (mettez votre appareil à l'heure et n'oubliez pas le décalage horaire en voyage), la vitesse, l'ouverture, le déclenchement du flash, le modèle de l'appareil et son fabricant, etc. Bref, EXIF, ce sont les données techniques qu'on ne modifie généralement pas (sauf la date quand on a oublié de la changer en voyage). Nous verrons que l'on peut ajouter d'autres champs à EXIF si on le souhaite.

IPTC est un autre format de métadonnées, créé à l'origine pour embarquer les informations non techniques (disons contextuelles) de l'image pour la presse. On y retrouve logiquement des informations relatives à l'auteur, au copyright, à l'urgence ou encore à l'emplacement géographique de la photographie. Avec des logiciels de classement capables de lire et écrire ces données, il devient dès lors très simple de retrouver une photographie faite place de la Nation à Paris en mars 2007, pour peu que l'on ait bien renseigné ces informations.

Enfin, XMP est le format de métadonnées le plus récent. Il est basé sur XML et permet d'embarquer tout type de métadonnées (y compris EXIF et IPTC). XMP permet par exemple à une application de conserver un historique de modifications ou les paramétrages complets du développement d'une image RAW. En ajoutant des espaces de nom XML supplémentaires on peut également ajouter des informations comme DublinCore ou Creative Commons.

Gérer ses métadonnées

Au moment de choisir un logiciel pour organiser vos images, vérifiez que celui-ci lit et enregistre les métadonnées au sein même des photographies (et pas uniquement dans une base de données lui appartenant).

Si vous souhaitez vérifier que votre outil prend bien en charge XMP ou en choisir un nouveau, IPTC maintient une liste d'outils supportant IPTC et/ou XMP.

Parmi les outils les mieux conçus, j'ai une préférence très nette pour Adobe Bridge qui possède sans doute le meilleur gestionnaire de métadonnées, avec, entre autres, la possibilité de faire des assignations par lot (pour ajouter une localisation sur un groupe de photos par exemple).

ExifTool, le couteau suisse des métadonnées

ExifTool de Phil Harvey, contrairement à ce qu'indique son nom sait traiter quasiment tous les types de métadonnées d'une photographie. C'est un outil radicalement génial comme peut en produire le monde du libre. Alors oui, il est en ligne de commande, c'est d'ailleurs tout son intérêt, et on lui préférera Bridge ou un autre quand on veut visualiser ses images.

ExifTool permet de modifier, supprimer ou ajouter des métadonnées. La richesse de ses options est assez incroyable et offre une flexibilité qu'aucun autre outil ne possède. Qui plus est, il est capable de traiter de nombreux formats d'image (aussi, un des points forts de Bridge). À titre d'exemple, voici un peu le flux de production que j'ai fini par mettre en place.

  • Conversion des images RAW propriétaires (NEF Nikon ou RAW Panasonic) en DNG. Ça prend un peu moins de place et les informations XMP sont embarquées.
  • Ajout d'une licence aux fichiers DNG (Creative Commons ND-NC 3.0) avec ExifTool.
  • Classement, choix, traitement dans Lightroom (dont je reparlerai peut-être)

C'est la seconde étape qui nous intéresse. Comment ajoute-t-on automatiquement une licence à une photographie ? (Et comment la change-t-on aussi par la même occasion). Commencez par choisir une licence. Admettons que ce soit Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported.

Voici alors comment insérer cette information, ainsi que votre nom à votre image :

exiftool -overwrite_original \
-xmp:Creator='votre nom' \
-xmp:WebStatement='http://creativecommons.org/licenses/by-nc-nd/3.0/' \
-xmp:Rights='Copyright votre nom. This work is licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 License.' \
-iptc:By-line='votre nom' \
-iptc:CopyrightNotice='Copyright votre nom. This work is licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 License.' \
-exif:Artist='votre nom' \
-exif:Copyright='Copyright votre nom. This work is licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 License.' \
votre_fichier.jpg

C'est certes un peu long mais rudement efficace. Ajoutez l'option -r et remplacez votre_fichier.jpg par un répertoire et il traitera l'ensemble des images du répertoire de façon récursive.

Publier sur le web, le revers de la médaille

Les métadonnées sont géniales. On peut imaginer que très prochainement les boîtiers pourront enregistrer les coordonnées GPS du lieu de prise de vue (des boîtiers pro le permettent déjà) et que la question "mais où diable ai-je pris cette photo ?" ne sera plus qu'un mauvais souvenir. Les applications seront bien sûr très intéressantes, proposant un lien vers Google Maps ou autres pour repérer sur une carte où se trouve la photo ou afficher les emplacements pour tout un répertoire. À vrai dire, j'en rêve :)

Ceci dit, au moment de publier sur le web, c'est typiquement le genre d'information que vous ne souhaitez pas divulguer. Imaginez que vous rendiez visite à un ami qui possède de très beaux meubles de collection. Vous prenez quelques photos de la soirée, vous publiez cela sur Flickr ou sur votre blog en mettant un lien vers le blog de votre ami. Votre appareil ayant enregistré les informations GPS, vous donnez toutes les informations utiles à un éventuel cambrioleur et, pour peu que votre ami signale un départ en vacances, l'information "où" et "quand la maison est vide" est disponible publiquement.

D'une manière plus générale, vous n'avez sans doute pas envie de publier la version du logiciel que vous utilisez ou certains paramètres qui lui sont propres.

ExifTool peut servir à éviter ce genre de désagrément. Avec l'aide de ImageMagick il devient possible de faire ceci :

  • copier l'image d'origine
  • changer la taille de l'image pour un format plus adapté au web et la convertir en BMP
  • convertir le BMP ainsi obtenu en JPEG
  • copier les métadonnées souhaitées depuis l'original vers le fichier JPEG final

ImageMagick conserve les métadonnées d'une photographie si on transforme de JPEG vers JPEG. La solution pour les faire disparaître est donc de passer par un format intermédiaire ne les supportant pas, c'est le cas de BMP.

Voici un script shell permettant de faire tout ceci dans un répertoire passé en argument.

#!/bin/sh

exiftool="/usr/bin/exiftool"
convert="/usr/bin/convert"

if [ ! -x $exiftool ]; then
echo "$exiftool not found"
exit 0
fi

if [ ! -x $convert ]; then
echo "$convert not found"
exit 0
fi

if [ "$1" = "" ]; then
echo "No directory given"
exit 0
fi

if [ ! -d $1 ]; then
echo "$1 is not a directory"
exit 0
fi

dir=$1

for src in $dir/*.jpg; do
echo "Processing $src..."
copy=`echo $src.tmp`
/bin/cp $src $copy
$convert -resize 600x600 -size 600x600 $src $src.bmp
$convert -quality 85 $src.bmp $src

$exiftool -q -overwrite_original \
-TagsFromFile $copy \
-exif:all \
-xmp:Description \
-xmp:Title \
-xmp:Subject \
-xmp:Location \
-xmp:City \
-xmp:State \
-xmp:Country \
-xmp:CountryCode \
-xmp:Rights \
-xmp:Creator \
'-xmp-exif:all > exif:all' \
'-xmp:Description > exif:ImageDescription' \
'-xmp:Title > iptc:Headline' \
'-xmp:Subject > iptc:Keywords' \
'-xmp:Location > iptc:Sub-location' \
'-xmp:City > iptc:City' \
'-xmp:State > iptc:Province-State' \
'-xmp:Country > iptc:Country-PrimaryLocationName' \
'-xmp:CountryCode > iptc:Country-PrimaryLocationCode' \
'-xmp:Rights > iptc:CopyrightNotice' \
'-xmp:Rights > exif:Copyright' \
'-xmp:Creator > iptc:By-line' \
'-xmp:Creator > exif:Artist' \
'-exif:DateTimeOriginal > exif:CreateDate' \
'-xmp:Lens > exif:Lens' \
-xmp:WebStatement \
-ICC_Profile \
'-exif:DateTimeOriginal>FileModifyDate' \
$src

/bin/rm $copy $src.bmp
done

Ce script va copier toutes les données EXIF (-exif:all) puis un certain nombre de données XMP qui seront ensuite copiées vers les équivalents EXIF et IPTC. On fait ceci car certaines applications en ligne ne lisent pas le XMP (c'était le cas de Flickr il y a un an, je ne sais pas aujourd'hui). Enfin, le paramètre '-exif:DateTimeOriginal>FileModifyDate' permet de mettre la date de prise de vue comme date de fichier.

Notez que ce script devrait normalement fonctionner avec Mac OS en adaptant les chemins de exiftool et convert si nécessaire.

Ressources

Comments

Franck 10 years, 6 months ago

Yapuka comme dirait l'autre \o/

Au passage, une petite extension qui a tout son sens pour espionner les données EXIF avec Firefox : EXIF Viewer (https://addons.mozilla.org/fr/firef...).

Franck 10 years, 6 months ago

Yapuka comme dirait l'autre o/

Au passage, une petite extension qui a tout son sens pour espionner les données EXIF avec Firefox : EXIF Viewer (https://addons.mozilla.org/fr/firef...).

oSoMoN 10 years, 6 months ago

Très intéressant!
Le classement des photos numériques à base de métadonnées est un vrai casse-tête, surtout quand lesdites photos ont été trafiquées par des logiciels non respectueux de ces métadonnées, ou quand les photos proviennent d'un n00b qui n'a jamais réglé la date et l'heure sur son appareil photo.

EXIF est, je trouve, un bel exemple de tout ce qu'un consortium d'industriels ayant des intérêts commerciaux peut produire de mauvais en terme de spécification : types de données bancals, date et heure sans fuseau horaire, une horreur en terme d'implémentation...

A noter l'excellente exiv2 (http://exiv2.org), bibliothèque C++ qui lit ET écrit les métadonnées EXIF, IPTC et miniatures. Je suis en train d'en réaliser un binding python, malheureusement pas encore utilisable...

oSoMoN 10 years, 6 months ago

Très intéressant!
Le classement des photos numériques à base de métadonnées est un vrai casse-tête, surtout quand lesdites photos ont été trafiquées par des logiciels non respectueux de ces métadonnées, ou quand les photos proviennent d'un n00b qui n'a jamais réglé la date et l'heure sur son appareil photo.

EXIF est, je trouve, un bel exemple de tout ce qu'un consortium d'industriels ayant des intérêts commerciaux peut produire de mauvais en terme de spécification : types de données bancals, date et heure sans fuseau horaire, une horreur en terme d'implémentation...

A noter l'excellente exiv2 (http://exiv2.org), bibliothèque C++ qui lit ET écrit les métadonnées EXIF, IPTC et miniatures. Je suis en train d'en réaliser un binding python, malheureusement pas encore utilisable...

TaC 10 years, 6 months ago

Et pour classer, trier, rechercher il y a une appli kde qui est actuellement l'une des meilleures : http://www.digikam.org/

Fr4nKc 10 years, 6 months ago

Ouais bon tu veux dire que je suis out avec mon Acdsee, que je trouvais bien pour les gérer, les métadonnées...
En même temps, c'est assez fastidieux d'être précis (ville_rue_date par exemple) et je ne sais pas si le temps passé à l'être vaut le temps à chercher des photos dans des dossiers/sous-dossiers cohérents (année/endroit-évènement/mois par ex.)
Et puis elle travaille comment notre mémoire hein ? ;)

(bon j'essaierais à l'occaz' Xmp, merci du tuyau...)

Fr4nKc 10 years, 6 months ago

Ouais bon tu veux dire que je suis out avec mon Acdsee, que je trouvais bien pour les gérer, les métadonnées...
En même temps, c'est assez fastidieux d'être précis (ville_rue_date par exemple) et je ne sais pas si le temps passé à l'être vaut le temps à chercher des photos dans des dossiers/sous-dossiers cohérents (année/endroit-évènement/mois par ex.)
Et puis elle travaille comment notre mémoire hein ? ;)

(bon j'essaierais à l'occaz' Xmp, merci du tuyau...)

Tartopom 10 years, 6 months ago

En complément à cette bible du rangement des photos numériques : http://julien.noel.free.fr/photo_nu...

J'ai codé un ptit script qui permet de renommer ses photos à partir des données exif (date et heure en laissant un espace pour un commentaire) :

Ca marche que avec gnome pour l'instant, car c'est du nautilus-action.

Pour ceux que ça intéresse : http://www.grumz.net/?q=node/274

Yannick 10 years, 6 months ago

« Les applications seront bien sûr très intéressantes, proposant un lien vers Google Maps ou autres pour repérer sur une carte où se trouve la photo ou afficher les emplacements pour tout un répertoire. À vrai dire, j'en rêve :) »

Alors ouvre les yeux ! ;-) Les dernières version de digiKam permettent, pour les images avec les champs GPS EXIF renseignés, d'ouvrir la localisation dans Google Maps, MapQuest, MSN Map et Multimap.

PS: C'est pour la localisation d'une image, si ce dont tu rêves c'est d'afficher la localisation de toutes les photos d'un répertoire (à la Flikr) tu peux dormir encore un peu...

Olivier 10 years, 6 months ago

digiKam est en QT... (on ne se refait pas ;)

n1c0 10 years, 6 months ago

Métadonnées en ligne de commandes

Pour ceux qui n'aime pas trop taper de la ligne de commande, il existe deux bons logiciels gratuits, Pixvue et Exifer. Malheureusement leur développement est arrêté mais il existe des versions téléchargeables qui peuvent rendre de grands services....

er:k 10 years, 5 months ago

Billet très intéressant, et script super utile ! Il m'a permis (obligé ?) à fouiller du côté de exiftool et à comprendre pas mal de choses qui rendent cet outil si puissant.
Par contre, j'ai un problème, je n'arrive pas à enlever (ou ne pas copier) les données du type SerialNumber de mon Canon EOS 400D. J'ai regardé sur les photos que tu as posté ici et j'ai remarqué que tout ce qui apparait sous Makernotes dans Digikam [1] est retiré de tes photos. Du coup, je me demande comment tu as fait ? Tu utilises le script indiqué ou quelque chose de plus puissant ou plus spécifique ?

[1] eh oui j'utilise également Digikam qui pour l'instant est le plus puissant pour gérer sa collection, f-spot n'étant pas encore assez abouti, et picasa hum trop propriétaire et trop google :) Et même si je tourne sous Gnome, les dépendances kde de Digikam sont petites.

er:k 10 years, 5 months ago

Billet très intéressant, et script super utile ! Il m'a permis (obligé ?) à fouiller du côté de exiftool et à comprendre pas mal de choses qui rendent cet outil si puissant.
Par contre, j'ai un problème, je n'arrive pas à enlever (ou ne pas copier) les données du type SerialNumber de mon Canon EOS 400D. J'ai regardé sur les photos que tu as posté ici et j'ai remarqué que tout ce qui apparait sous Makernotes dans Digikam [1] est retiré de tes photos. Du coup, je me demande comment tu as fait ? Tu utilises le script indiqué ou quelque chose de plus puissant ou plus spécifique ?

[1] eh oui j'utilise également Digikam qui pour l'instant est le plus puissant pour gérer sa collection, f-spot n'étant pas encore assez abouti, et picasa hum trop propriétaire et trop google :) Et même si je tourne sous Gnome, les dépendances kde de Digikam sont petites.

Olivier 10 years, 5 months ago

er:k, il arrive que certaines info exif/iptc/xmp ne veuillent pas partir. Le script fait justement la transition vers du bmp (on s'en fout, c'est du 8 bits) puis retour en jpg dans la foulée. Ce processus fait disparaître toutes les traces des metadonnées puisque BMP ne les prend pas en charge. Ensuite on copie les métadonnées souhaitées de l'original vers une conversion jpg du bmp.

Je suis par contre en train de me dire que ça doit expliquer les conversions bizarres que j'ai eu dernièrement en terme d'espace colorimétrique...

Sinon, oui j'utilise le script que j'ai mis sur ce billet.

er:k 10 years, 5 months ago

Ok, d'accord.
Si tu utilises le même script, c'est étrange dans ce cas que je ne retrouve pas dans tes images les mêmes infos que dans les miennes, mais ça dépend peut-être du type d'APN : moi dans les makernotes, à part le serialnumber par ex que je veux enlever, je retrouve toutes les infos essentielles de la photo (ouverture, ISO AF, etc). (en fait, en regardant de plus près, elles sont dispo dans exif, et dans makernotes...)

Dans ce cas, il faut que j'arrive à trouver les métadonnées que je ne _veux pas_ copier pour les enlever du script. C'est probablement le -exif:all qui copie les makernotes... ça voudrait donc dire qu'il faut que je spécifie _exactement_ toutes les données exif que je veux... hum, ça va probablement être dur de tout mettre explicitement sans prendre le risque de rien oublier d'important (données relatives à l'image en elle-même : l'auteur de exiftool explique ici http://www.sno.phy.queensu.ca/~phil... que certaines données qui pourraient ne pas sembler importantes le sont en fait !).
Une idée pourrait être de scripter le listing des tags disponibles dans l'image puis d'enlever ce qui m'embête et ainsi de générer la liste des tags à copier de façon "dynamique". (idée à creuser)

Plus haut dans ton billet, tu parles de la conversion de RAW en DNG, tu le fais également avec exiftool ? le DNG est-il vraiment libre ? (je n'ai pas réussi à me faire une opinion sur ce problème) et si oui :) le DNG te semble-t-il la solution face aux formats RAW tous propriétaires et plus ou moins obscurs ?

merci pour ta réponse en tout cas.

er:k 10 years, 5 months ago

Ok, d'accord.
Si tu utilises le même script, c'est étrange dans ce cas que je ne retrouve pas dans tes images les mêmes infos que dans les miennes, mais ça dépend peut-être du type d'APN : moi dans les makernotes, à part le serialnumber par ex que je veux enlever, je retrouve toutes les infos essentielles de la photo (ouverture, ISO AF, etc). (en fait, en regardant de plus près, elles sont dispo dans exif, et dans makernotes...)

Dans ce cas, il faut que j'arrive à trouver les métadonnées que je ne _veux pas_ copier pour les enlever du script. C'est probablement le -exif:all qui copie les makernotes... ça voudrait donc dire qu'il faut que je spécifie _exactement_ toutes les données exif que je veux... hum, ça va probablement être dur de tout mettre explicitement sans prendre le risque de rien oublier d'important (données relatives à l'image en elle-même : l'auteur de exiftool explique ici http://www.sno.phy.queensu.ca/~phil... que certaines données qui pourraient ne pas sembler importantes le sont en fait !).
Une idée pourrait être de scripter le listing des tags disponibles dans l'image puis d'enlever ce qui m'embête et ainsi de générer la liste des tags à copier de façon "dynamique". (idée à creuser)

Plus haut dans ton billet, tu parles de la conversion de RAW en DNG, tu le fais également avec exiftool ? le DNG est-il vraiment libre ? (je n'ai pas réussi à me faire une opinion sur ce problème) et si oui :) le DNG te semble-t-il la solution face aux formats RAW tous propriétaires et plus ou moins obscurs ?

merci pour ta réponse en tout cas.

Olivier 10 years, 5 months ago

Pour le RAW et la conversion en DNG. Je ne sais pas si DNG est un format libre, il me semble qu'il est ouvert au même titre que l'est PDF et d'autres formats Adobe. Faudrait que je me renseigne.

Pour la conversion j'utilise DNG Converter d'Adobe qui est gratuit. Pour le reste je bosse avec Lightroom depuis que j'ai décidé qu'un macbook ça n'était pas si mal ;)

vdemeester 10 years, 5 months ago

Il est à noter que Adobe Lightroom permet de faire la conversion RAW > DNG !!

MDY 10 years ago

Je lisais ce billet hier, puis aujourd'hui je suis tombé sur ça :

Mac OS X 10.5 « Leopard » :

« GPS Metadata Support
Get real information from your photos. If your image has embedded GPS metadata, Preview will show you exactly where that perfect photo was taken. Open the Image inspector and select GPS. Preview pinpoints the location where you took the photo on a world map. From there you can even open the GPS location in Google Maps. »

: )

MDY 10 years ago

Je lisais ce billet hier, puis aujourd'hui je suis tombé sur ça :

Mac OS X 10.5 « Leopard » :

« GPS Metadata Support
Get real information from your photos. If your image has embedded GPS metadata, Preview will show you exactly where that perfect photo was taken. Open the Image inspector and select GPS. Preview pinpoints the location where you took the photo on a world map. From there you can even open the GPS location in Google Maps. »

: )

julien 9 years ago

Note : avec Imagemagick, on peut utiliser soit le paramètre "+profile *" ou (plus simple à s'en rappeler) "-strip" pour supprimer tous les profiles (EXIF, ICC, IPTC, ...) contenus dans l'image. Cela permet alors de se passer de l'étape de conversion vers le BMP. Tous les détails : http://www.imagemagick.org/script/c...

Fabrice 9 years ago

Très intéressant, mais j'ai voulut regarder si F-Spot pouvais lire et/ou écrire les données EXIF, IPTC et XMP. Malheureusement, iptc.org à changé et je me suis retrouver avec une page 404, en cherchant un peu, j'ai retrouver la bonne adresse : http://www.iptc.org/cms/site/photom...
Sinon, c'est domage, F-Spot ne sais pas écrire ces données, mais il les lis.

Fabrice 9 years ago

Très intéressant, mais j'ai voulut regarder si F-Spot pouvais lire et/ou écrire les données EXIF, IPTC et XMP. Malheureusement, iptc.org à changé et je me suis retrouver avec une page 404, en cherchant un peu, j'ai retrouver la bonne adresse : http://www.iptc.org/cms/site/photom...
Sinon, c'est domage, F-Spot ne sais pas écrire ces données, mais il les lis.

nfriedli 7 years, 6 months ago

Pour éradiquer purement et simplement les métadonnées (avant une éventuelle réintégration par le script ci-dessus), rien de vaut jhead. C'est tout de même plus logique et rapide que je passer par une image BMP.

http://www.sentex.net/~mwandel/jhead/

Un jhead -autorot suivi de -purejpg est redoutable pour la taille des vignettes :-)

Yann 7 years, 6 months ago

Bonjour olivier, billet interessant, je te conseille egalement la lecture du papier du metadataworkinggroup pour aller plus loin: http://www.metadataworkinggroup.com/

En plus de exiftool il y a le tres sympa exiv2 http://www.exiv2.org/ qui gere aussi XMP, IPTC et EXIF.

De ce que j ai compris, il est recommande de laisser tomber IPTC et d utiliser uniquement XMP - avec eventuellement EXIF si les champs existent deja, ou si il y a la necessite d utiliser des logiciels qui ne supportent pas XMP.

Je suis en train de travailler sur un frontend pygtk a exiv2 afin de faire du mass tagging de photos (pour la boite pour laquelle je travaille, donc oriente vers de l archivage de photos de sites archeologiques, avec un namespace XMP perso, mais ca devrait pas etre bien difficile d en faire un outil bien generaliste) - je posterai un lien quand j aurais une beta qui fait un peu plus que ce qu elle fait pour le moment.

Salutations