Le RNCS en quasi-opendata…
TL;DR: les données repackagées sont disponibles sur :
http://data.cquest.org/inpi_rncs/
Le RNCS c’est le Registre National du Commerce et des Sociétés et, d’après le site de l’INPI:
Il centralise et diffuse l’ensemble des informations sur les sociétés immatriculées en France, afin de les porter à la connaissance du public (consultation, copie, certificat).
Les commerçants et les personnes morales (sociétés, GIE…) sont immatriculés au Registre du commerce et des sociétés tenu localement par les greffiers des tribunaux de commerce.
Le Registre national du commerce et des sociétés (RNCS) est tenu par l’INPI, qui centralise et archive électroniquement des formalités déposées au greffe par les entreprises, à savoir :
- toutes les inscriptions (immatriculations, modifications et radiations)
- les dépôts d’actes et les comptes annuels pour les personnes morales.
L’ouverture de ces données est prévue depuis la Loi Macron de 2015, mais une lutte juridique des greffes des tribunaux de commerce et de leur GIE infogreffe a freiné cette ouverture.
Il faut dire qu’on vient de loin… les plus anciens se souviennent peut-être du 3617 EURIDILE… sur Minitel, donc rémunérateur, surtout à 5,59F/min !
Une transmission de ces données est faite par les greffes auprès de l’INPI depuis 2017, mais jusqu’à il y a peu, la licence de réutilisation des données proposées par l’INPI était trop restrictive pour pouvoir vraiment parler d’opendata.
Une nouvelle licence a (enfin) été homologuée après sûrement de nombreux aller-retour entre l’INPI et la DINSIC. En effet, une licence de réutilisation de données publiques doit être choisie parmi une liste très courte (Licence Ouverte ou ODbL-Open Database License) sinon elle doit être homologuée quand c’est vraiment nécessaire.
Ici, la réutilisation de ces données a quelques contraintes liées au code du commerce qui n’autorise pas, par exemple, de rechercher des interdictions de diriger. Était-il vraiment besoin d’une licence spécifique ? J’en doute, car la Licence Ouverte prévoit de toute façon qu’on doit respecter le droit français, donc le code du commerce. La rappeler clairement aurait été peut-être suffisant et plus efficace car la licence INPI/RNCS est très vague sur les restrictions, elle se contente de pointer vers les articles du code du commerce qui ne sont pas explicites du tout. C’est un arrêté (bien difficile à trouver) qui précise les restrictions.
Nouvelle licence, nouvelle donne
Cette nouvelle licence, homologuée en avril, change enfin la donne.
Voici le passage important, les “droits et obligations du réutilisateur” :
ARTICLE 2: DROITS ET OBLIGATIONS DU RÉUTILISATEUR2.1 L’INPI concède au « Réutilisateur » un droit non exclusif et gratuit de libre « Réutilisation » des Informations objet de la présente licence, à des fins commerciales ou non, dans le monde entier et pour une durée illimitée, dans les conditions exprimées ci-dessous.
2.2 Le « Réutilisateur » est libre de réutiliser l‘ « Information », à savoir :
- de la reproduire, la copier, l‘adapter, la modifier, l‘extraire et la transformer, pour créer des « Informations dérivées », des produits ou des services,
- de la communiquer, la diffuser, la redistribuer, la publier et la transmettre,
- de l’exploiter à titre commercial ou non commercial, par exemple en la combinant avec d’autres informations, ou en l’incluant dans son propre produit ou application.
2.3 Le « Réutilisateur » s’engage à mentionner la paternité de l‘ « Information » : sa source et la date de dernière mise à jour de l’« Information » réutilisée. Cette mention de paternité ne confère aucun caractère officiel à la réutilisation de l‘ « Information » et ne doit pas suggérer une quelconque reconnaissance ou caution par l’INPI ou par toute autre entité publique, du « Réutilisateur » ou de sa réutilisation.
2.4 Le « Réutilisateur » s’engage à respecter les droits, notamment de propriété intellectuelle, des tiers. A ce titre, il est expressément rappelé que l’ « Information » contient des éléments susceptibles d’être protégés par des droits de propriété intellectuelle de tiers dont la mise à disposition par l’INPI n’emporte pas automatiquement le droit pour le « Réutilisateur » de les réutiliser à d’autres fins que celle de diffusion des informations contenues dans le registre national du commerce et des sociétés pour les besoins de laquelle ils ont été collectés. Le « Réutilisateur » fait son affaire personnelle, le cas échéant, de l’obtention des autorisations nécessaires auprès des titulaires desdits droits.
2.5 **Le « Réutilisateur » s’engage à se conformer aux dispositions réglementaires du code de commerce en matière d’inscription et de radiation d’office des mentions portées au registre du commerce et des sociétés prévues aux articles R. 123-122 et suivants du code de commerce, à respecter les restrictions relatives aux critères de recherche prévues en application de l’article R. 123-151 du code de commerce et à respecter les dispositions relatives à la communication des décisions de justice prévues à l’article R. 123-154 du code de commerce.**
2.1 à 2.4 correspondent en gros à la “Licence Ouverte”, et le 2.5 rappelle les dispositions du code du commerce à respecter.
Ok de ce côté… voyons où et comment accéder à ces données…
Accès contrôlé !
Ne cherchez pas sur data.gouv.fr, ces données ne sont pas référencées par l’INPI (au moment où j’écris ce billet).
Sur le portail opendata du Ministère de l’Économie (dont dépend l’INPI), vous ne trouverez que des extraits avec une totale incohérence dans leur contenu (les colonnes semblent mélangées). Je ne sais pas d’où sortent ces données.
Je vous aide… c’est sur https://www.inpi.fr/fr/licence-registre-national-du-commerce-et-des-societes-rncs que l’on commence à se rapprocher de la lumière !
Le graal mais avec login/pass à demander en remplissant un beau formulaire PDF… ce qui, rappelons-le, n’est pas une diffusion publique comme l’a confirmé la CADA dans un de ses avis.
J’ai donc demandé l’ouverture d’un compte et obtenu mes identifiants en 48h.
Une diffusion (par FTP) façon puzzle
L’accès se fait en FTP, mais attention, du FTP en SSL, au réglage toujours délicat… et il me faut quelques essais pour trouver la bonne syntaxe pour un wget afin de récupérer l’ensemble des données diffusées “façon puzzle”.
Les données sont en effet fournies en “flux”, c’est à dire au fur et à mesure des saisies, sans aucune consolidation. Chaque jour on a ainsi un ou plusieurs lots de fichiers séparés pour chaque greffe.
Un lot comprend 13 fichiers CSV, non compressés, ainsi que 13 fichiers .md5 pour vérifier leur intégrité.
Comme il y a plus d’une centaines de greffes, on a en moyenne 3500 fichiers à télécharger pour une journée !
C’est bien pour les mises à jour quotidiennes, mais pour la récupération initiale c’est pénible, vraiment très pénible.
Les données étant disponibles depuis mai 2017, cela fait 3500 x 25 mois x 30 jours… oui, plus de 3 millions de fichiers csv (pas besoin des md5 avec SSL), non compressés à télécharger.
Pour ne rien arranger à ce transfert initial, l’INPI limite le transfert à 1Go par jour. Il faudra donc faire cette récupération initiale en plus fois !
Il faut donc être très motivé pour réutiliser ces données, car rien que leur téléchargement prendra plusieurs jours, bien que le volume total n’est pas si important que ça comme on va le voir.
Re-packager ces données pour le téléchargement
Le minimum à faire est de rassembler le puzzle quotidien en un seul fichier compressé. On divise ainsi le nombre total de fichiers par 3500.
En utilisant le format de compression 7z sur un tel ensemble de fichiers, on bénéficie d’un excellent taux de compression car 7z va faire une compression d’un bloc. Ceci permet au dictionnaire de compression de se stabiliser vers un optimum augmentant le taux de compression, là où une remise à zéro du dictionnaire de compression pour chaque fichier ne permet pas d’atteindre la même efficacité, surtout lorsque les fichiers sont peu volumineux.
Sur l’année 2017, les 1.6Go de fichiers d’origine sont ainsi compressés en moins de 160Mo ,10 fois moins.
Cela fait même plus au niveau FTP qui n’a plus besoin de faire de très nombreuses requêtes pour obtenir la liste des fichiers, puis demander leur transfert un à un !
Données des comptes annuels : même combat
Ces données sont au format XML et regroupées dans un fichier zip quotidien.
A première vue, cela semble correct, sauf que chaque XML est préalablement zippé, puis les fichiers d’une même journée sont remis dans un autre zip. Un zip quotidien contient du coup plusieurs milliers de fichiers zip contenant chacun un fichier XML.
La encore, le taux de compression ne peut pas être très bon et cela complique aussi inutilement la réutilisation des données. Il faudra décompresser une première fois l’archive du jours, puis une seconde fois chacun des milliers de fichiers pour obtenir la données XML.
J’ai aussi repackagé en un fichier 7z quotidien l’ensemble des fichiers XML d’une journée. Le gain est cette fois d’un facteur 4, un fichier de 4Mo ne pèse plus que 1Mo.
La cerise (très indigeste) sur le gâteau
Le contenu des fichiers des comptes semble facile à exploiter, par contre celui des fichiers “IMR” des tribunaux de commerce est au format CSV, mais du CSV comme on en voit rarement !
Ce flux de créations, modifications, suppressions est en “différentiel”, c’est à dire qu’une ligne de CSV contiendra des colonnes vides si la donnée n’a pas changé depuis sa dernière version.
Mais qui a bien pu avoir une idée pareille ? Si vous avez le goudron, j’apporte les plumes !
Cette façon de faire oblige à un traitement complexe pour intégrer les données jour après jour (en partant de mai 2017, soit 25 mois), en espérant ne pas se désynchroniser !
Ces resynchronisations sont nécessaires car parfois, on a une mise à jour pour une entreprise jamais vue dans l’ensemble des fichiers antérieurs… du coup en plus du “flux”, on a un dossier “stock” qui de temps en temps refait une synchronisation sur certaines données.
L’exploitation de ces données pourtant relativement simples est donc complexifiée inutilement. Est-ce volontaire ? A ce niveau, je pense que oui.
Vous comprenez donc mieux pourquoi ce titre de “quasi-opendata”:
- une licence spécifique pas forcément utile,
- un accès conditionné à l’ouverture d’un compte,
- une diffusion avec un protocole (FTP sur SSL) très peu efficace,
- une diffusion “façon puzzle” en de multiple fichiers,
- un flux de fichiers CSV différentiels… à intégrer sans désynchronisation + des stocks CSV de temps à autre.
On aurait voulu que ces données ne soit pas réutilisées on ne s’y serait pas pris autrement !
Améliorer tout ça sur data.cquest.org ?
Vous trouverez les données repackagées sur mon serveur habituel “data.cquest.org”, ainsi que les scripts utilisés pour repackager ces données (que j’offre bien volontiers à l’INPI, ils sont sous licence WTFPL).
Ceci règle 3 points sur 5:
- accès libre, sans ouverture de compte (la licence ne l’interdit pas)
- un accès http / https
- une diffusion en fichiers quotidiens au bon taux de compression
Pour le dernier point, une piste se trouve dans le travail fait par entreprise.data.gouv.fr pour exploiter ces données afin de les rediffuser sur https://entreprise.data.gouv.fr/
L’accès par API est aussi possible et documenté sur https://entreprise.data.gouv.fr/api_doc_rncs a un rythme maximum de 2000 requêtes/10 minutes.
Discussion à poursuivre sur le forum teamopendata !