Comment extraire des données de tables dans des PDF avec Tabula et OpenRefine

Il existe des tonnes de données, enfermées dans des tableaux intégrés dans des essais et des rapports PDF. Les PDF sont omniprésents, mais il est plus difficile d’utiliser les données stockées en eux qu’ils le seraient dans un tableur. Même si vous pouvez extraire les données, il peut être difficile d'obtenir des résultats cohérents. Un tableau peut comporter des lignes afin d'indiquer les limites des cellules, tandis que d'autres peuvent ne comporter que des espaces blancs permettant d'obtenir une vue sous forme de tableau. Ils peuvent également varier en termes de contenu couvrant des lignes et / ou des colonnes, et souvent, la seule constante est qu'ils contiennent tous des données que vous souhaitez extraire..

Bien que vous puissiez extraire manuellement les données d'une table dans un PDF, c'est loin d'être simple. Il n'y a aucune raison de prendre autant de temps lorsqu'il existe des outils pour simplifier notre travail. Dans ce tutoriel, je vais vous montrer comment extraire facilement une table du fichier PDF avec Tabula, puis nettoyer les données en désordre pour les transformer en un formulaire plus utilisable avec OpenRefine.

Pourquoi Tabula?

Tous ceux qui travaillent avec des données connaissent un problème commun: vous avez trouvé des données intéressantes pour votre projet journalistique ou des statistiques pour préparer une belle carte, mais les données sont confuses et piégées dans un fichier PDF, non lisibles automatiquement par votre programme. Vous devez donc écrire ou exécuter un long processus de copier-coller de lignes de données d'un fichier PDF dans Excel. Ce type de travail manuel crée des frictions et par conséquent vous perdez beaucoup de temps.

En tant que diplômé en recherche, j'ai eu du mal à copier et coller manuellement un tableau pour ma thèse. J'ai toujours rêvé d'une application capable d'extraire la table d'un fichier PDF en un seul clic, et c'est exactement ce que Tabula est. C'est une application gratuite à base de java qui s'exécute dans une interface Web sur votre ordinateur et qui permet d'extraire des données de presque toutes les tables d'un fichier PDF. En quelques secondes, il peut extraire les données qui vous prendraient des heures à ressaisir à la main.

Comment utiliser Tabula?

Tout d’abord, téléchargez le fichier zip correspondant à votre ordinateur à partir du site Web de Tabula et décompressez-le dans le dossier de votre choix. Assurez-vous que Java v6 ou 7 est également installé. sinon, vous pouvez le télécharger gratuitement à partir du site Web Oracle. Ce lien est vers la version sans pub / sans barre d'outils, vous n'aurez donc plus à vous soucier de l'installation.

Lorsque vous lancerez Tabula, vous verrez initialement une fenêtre de commande et, en quelques secondes, votre navigateur devrait s'ouvrir automatiquement à http://127.0.0.1:8080. Sinon, ouvrez votre navigateur Web et tapez cette URL dans le champ d'adresse. Soumettre votre fichier PDF et Tabula traitera votre fichier et vous montrera une belle liste de vignettes de page. Recherchez la table que vous souhaitez extraire ou, si vous avez un petit PDF, vous pouvez cocher l'option «Détecter automatiquement les tables»..

Écran d'accueil de Tabula affichant les vignettes de page et le tableau que vous souhaitez extraire

Cliquez et faites glisser pour sélectionner la zone de la table. Une fois que vous relâchez la souris, Tabula vous montrera le tableau extrait dans un format convivial. Si les données sont floues, essayez de supprimer les en-têtes ou les notes de bas de page, etc. Enfin, vous pouvez télécharger le tableau extrait en tant que valeurs séparées par des virgules (CSV) ou séparées par des tabulations (TSV), ou copier les données dans le Presse-papiers. Une fois que les données sont dans une feuille de calcul, vous devrez peut-être apporter quelques modifications, telles que la correction des en-têtes ou des notes de bas de page..

Tableau extrait de PDF avec Tabula

Lorsque vous devez arrêter Tabula dans Windows, passez à cette fenêtre de commande et appuyez sur Control-C. Attendez qu'il y ait un message indiquant que l'arrêt est terminé. Cette fenêtre peut se fermer automatiquement ou la fermer vous-même. Sous Mac, passez à l’application (cliquez avec le bouton droit de la souris sur l’icône du dock) et appuyez sur CMD-Q. Si vous utilisez Mac OS X 10.8 ou une version ultérieure, veillez à régler les paramètres du gatekeeper pour éviter les messages d'erreur lors de l'installation..

La tabula ne sera pas parfaite tout le temps et il reste quelques problèmes à résoudre. Pour le moment, il ne fonctionne que sur les PDF au format texte. Vous pouvez donc travailler manuellement si vous avez numérisé des fichiers PDF. Toutefois, si vous disposez d'une copie d'Acrobat, vous pourrez peut-être convertir des PDF au format PDF modifiables. travailler avec Tabula. De même, si vous avez des fichiers PDF avec des lignes sur plusieurs lignes, Tabula signalera les erreurs fréquentes dans les tableaux sans séparateurs graphiques, alors veillez à les surveiller..

Pourquoi OpenRefine?

Des fautes d'orthographe occasionnelles, de l'espace supplémentaire, de la ponctuation aléatoire, des majuscules, des enregistrements en double et bien plus sont au rendez-vous lorsque vous extrayez des données à partir de fichiers PDF. Peu importe la qualité de l'extrait au premier abord, vos données seront en désordre s'il y a tout erreurs, créant des problèmes de récupération de données, d'interopérabilité et d'indexation.

C'est là qu'OpenRefine (anciennement Google Amende) entre en jeu. C'est un autre outil gratuit qui vous aide à identifier facilement ces erreurs et inexactitudes de données. OpenRefine vous permet non seulement de diagnostiquer rapidement la précision de vos données, mais également de traiter certaines erreurs de manière automatisée. Il peut transformer des données en vrac dans de nombreuses cellules existantes, dans le but de les nettoyer, peut les étendre avec davantage de données provenant d'autres sources et les convertir dans d'autres formats afin que vous puissiez les utiliser dans les applications de votre choix..

Comment utiliser OpenRefine?

OpenRefine dispose à nouveau d’une interface Web, s’exécute sur votre ordinateur et requiert Java. La seule différence est que cette fois, il va s'ouvrir dans votre navigateur à http://127.0.0.1:3333.

Lorsque vous ouvrez OpenRefine, vous pouvez remarquer trois options sur le côté gauche: Créer un projet dans lequel vous pouvez importer des données depuis un ordinateur, une adresse Web, un presse-papiers ou une feuille de calcul Google; Projet ouvert qui vous aide à revenir à un projet existant créé lors d'une session précédente; et Projet d'importation ce qui nous permet d'importer directement une archive de projet OpenRefine existante. OpenRefine comprend une variété de formats de fichiers de données, notamment TSV, CSV, documents Excel et même XML et JSON, un favori des développeurs d'applications Web et.

Écran d'accueil d'OpenRefine

Recherchez votre fichier CSV exporté et cliquez sur Suivant. Sur l'écran suivant, vous obtenez une vue d'ensemble de votre jeu de données tel qu'il apparaîtra dans OpenRefine. Par défaut, la première ligne sera correctement analysée comme nom d'une colonne. Une autre option est la case à cocher «Les guillemets sont utilisés pour entourer les cellules contenant des séparateurs de colonnes». Si vous le laissez sélectionné, assurez-vous que toutes les valeurs de cellule sont bien placées entre guillemets dans le fichier d'origine. Sinon, décochez cette case pour vous assurer que les guillemets ne sont pas mal interprétés par OpenRefine..

Les autres options peuvent être utiles dans certains cas; essayez de les sélectionner et de les désélectionner pour voir comment ils affectent vos données. Notez que l'aperçu est mis à jour pour refléter ces modifications. Veillez également à sélectionner le bon codage pour éviter toute confusion de caractères spéciaux. Quand tout semble bien, donnez un nom à votre projet et cliquez sur Créer un projet.

Jeu de données chargé dans OpenRefine

Pour illustrer les différentes techniques de manipulation des données, vous pouvez utiliser votre propre jeu de données ou télécharger un jeu de données de démonstration à partir du référentiel Github pour vous essayer. Une fois votre jeu de données chargé dans OpenRefine, vous devez apprendre à explorer les données en balayant les différentes zones. De haut en bas, vous pouvez observer quatre zones.

Dans la première zone, vous pouvez voir le nombre total de lignes pour un fichier particulier. Dans la deuxième zone, vous pouvez essayer d’alterner entre les lignes et les enregistrements en cliquant sur l’un ou l’autre des mots. Cette zone vous permettra également d’indiquer si vous souhaitez afficher 5, 10 ou 50 lignes / enregistrements sur une page, et vous fournit également le moyen de naviguer de page en page. Dans la troisième zone, vous trouverez ici la première ligne analysée comme en-tête de colonne lors de la création du projet. Dans mon jeu de données, les colonnes se lisent Université, dotation, numFaculty etc. La colonne la plus à gauche est toujours appelée Tout et est divisé en trois sous-colonnes contenant des étoiles, des drapeaux et des identifiants. Chaque colonne a un menu accessible en cliquant sur le petit bouton triangle déroulant. Enfin, la quatrième zone affiche la zone principale réelle affichant les valeurs réelles des cellules. Si vous passez la souris sur une cellule, vous pouvez modifier ce type de données.

Différentes zones de OpenRefine

Les colonnes constituent une partie essentielle d'OpenRefine et, par défaut, toutes les colonnes sont développées, ce qui peut s'avérer fastidieux s'il existe plusieurs colonnes dans le projet. Si vous souhaitez masquer temporairement une ou plusieurs colonnes pour faciliter le travail sur les autres, cliquez sur le petit bouton. triangle déroulant dans n'importe quelle colonne pour afficher le menu et sélectionner Vue. Vous pouvez voir quatre options ici: Réduire cette colonne, Réduire toutes les autres colonnes, Réduire les colonnes à gauche et Réduire les colonnes à droite.

Jouez avec les différentes options de colonne jusqu'à ce que vous soyez satisfait du résultat. Pour développer à nouveau une colonne, il suffit de cliquer dessus. Dans certains cas, il peut être utile de modifier l'ordre des colonnes, par exemple, pour regrouper les colonnes à comparer. Pour ce faire, entrez dans le menu de n’importe quelle colonne et cliquez sur Modifier la colonne. Là encore, quatre options sont disponibles: Déplacer la colonne vers le début, Déplacer la colonne vers la fin, Déplacer la colonne vers la gauche et Déplacer la colonne vers la droite. Si vous souhaitez réorganiser complètement les colonnes, utilisez la colonne intitulée Tout

le Vue Cette option vous offre un moyen rapide d’agrandir ou de réduire toutes les colonnes, tout en Modifier la colonne vous offre un moyen rapide de réorganiser les colonnes en les faisant glisser ou en les supprimant en les déposant à droite, comme illustré dans la capture d'écran suivante.

Réarrangement des colonnes dans OpenRefine

Lorsque votre projet est volumineux, la première chose à savoir est de savoir comment trier les données comme une aide visuelle, car le tri peut faciliter l'exploration et la manipulation de votre jeu de données. Afin de trier vos données par leur Université noms, choisissez Trier dans le menu de la colonne pour accéder à l'écran suivant. En regardant la capture d'écran, vous pouvez trier les valeurs des cellules en fonction de leur type: texte, nombres, dates et booléens et pour chaque type, elles peuvent être triées dans un ordre différent..

Par exemple, le texte peut être trié alphabétiquement (a à z) ou inversé (z à a), booléens faux, vrais ou inversement, etc. De plus, nous pouvons spécifier où les erreurs et les blancs seront stockés par rapport aux valeurs valides en les faisant glisser dans l'ordre souhaité. Par exemple, les erreurs pourraient être d'abord triées pour les repérer plus facilement, suivies des valeurs valides au milieu et des valeurs vides à la fin..

Tri des données dans OpenRefine

L’un des outils d’OpenRefine que vous utiliserez le plus souvent est facettage. Généralement, vous créez une facette sur une colonne particulière. La facette récapitule les cellules de cette colonne pour vous donner une vue d'ensemble de vos données dans la barre latérale et vous permet simultanément de filtrer les données sur un sous-ensemble de lignes que vous souhaitez modifier en bloc. Il existe différentes manières de facettiser des données et, en fonction des valeurs de l'ensemble de données et de vos besoins, ils sont: facettes de texte pour les cordes, facettes numériques pour les chiffres et les dates et facettes personnalisées pour définir vos propres facettes textuelles et numériques.

La facette texte est un outil très utile, similaire au filtre dans une feuille de calcul. La facette Texte regroupe les valeurs de texte uniques en groupes. Cela peut nous aider à fusionner des informations et nous permet de voir les valeurs, qui pourraient être épelées de différentes manières. Maintenant, nous allons créer une facette de texte sur le pays colonne en cliquant sur le menu déroulant de cette colonne et sélectionnez Facette → Texte Facette.

Le résultat de cette facette apparaît dans l'onglet Facette / Filtre à gauche de l'écran. Dans la capture d'écran suivante, nous pouvons voir la colonne pays regroupés en fonction des noms, mais j’ai trouvé des entrées étranges telles que «États-Unis», «États-Unis» et «États-Unis», ainsi que l’étrange «États-Unis)». Ne sont-ils pas tous pareils?

Facette de texte dans OpenRefine

Vous pouvez modifier manuellement ces divergences, mais ce n'est pas obligatoire. L'option Grappe vous aidera à trouver facilement ce type de données sales et à les corriger. Clique le pays colonne déroulante et accédez à Modifier les cellules → Cluster et modifier, OpenRefine vous présentera ensuite une boîte de dialogue dans laquelle vous pourrez choisir différentes méthodes de clustering, chacune pouvant utiliser différentes fonctions de frappe..

Dans Valeurs dans le cluster, vous pouvez voir les différentes orthographes et combien de lignes contiennent une orthographe particulière. le Fusionner? colonne contient une case à cocher et si vous cochez cette case, toutes les valeurs de ce cluster seront remplacées par la valeur du champ. Nouvelle valeur de cellule colonne. Ici, je peux saisir manuellement la nouvelle valeur de la cellule en tant que "États-Unis d'Amérique", puis vous pouvez cliquer sur Fusionner sélectionné et fermer bouton pour fusionner tous les clusters sélectionnés.

Vous trouverez peut-être davantage de divergences dans l'ensemble de données. si oui, choisissez différent Méthode dans le menu déroulant et choisissez différent Fonctions de frappe. Jouez avec différentes options jusqu'à ce que vous corrigiez toutes les incohérences. Si vous souhaitez approfondir le fonctionnement de la mise en cluster OpenRefine, vérifiez bien cet article dans son Github..

Clustering dans OpenRefine

Lorsqu'une facette de texte regroupe des valeurs de texte uniques en groupes, une facette numérique regroupe des nombres dans des intervalles de plage numériques. Nous devons nettoyer les données pour le nombre d’étudiants dans le numStudents colonne. Toutes les valeurs ne sont pas numériques et nombre d'entre elles peuvent contenir des bits de texte en plus du nombre réel d'étudiants. Pour déterminer quelles entrées doivent être corrigées, je vais utiliser une facette numérique.

dans le numStudents menu de colonne, accédez à Facette → facette numérique et regardez ce qui apparaît dans le Facette / Filtre onglet à gauche. Cela nous montre un histogramme des valeurs et, liste également le nombre d’entrées par type (numérique, non numérique, blanc, erreur), surveillez le non numérique lignes et décochez les autres types. Nous pouvons déjà voir certains problèmes, car certaines cellules ont «du texte en plus des chiffres» et diverses autres divergences. Donc, la colonne numérique en bref n'est pas purement numérique et contient des données sales.

Nous pouvons faire deux choses ici: utilisez la facette texte pour lister tout le texte en plus des chiffres dans la barre latérale gauche, puis passez votre souris sur les données en désordre et vous verrez une option appelée modifier, une boîte de dialogue s'ouvrira puis supprimera le texte avec Backspace et cliquez sur Appliquer. Dans mon ensemble de données, j'ai supprimé le texte «Great Valley» de 560 lignes en un seul clic..

Facette numérique dans OpenRefine

Les facettes sont certes des outils puissants, mais vous pouvez parfois constater des incohérences dans la colonne de cellules et le seul moyen de modifier des cellules dans une colonne consiste à appeler le Transformation commune commande sur cette colonne; dans le menu déroulant de la colonne, choisissez Editer les cellules → Transformation commune commander. Vous verrez qu'il existe toute une gamme de fonctions utiles pour nettoyer vos données et vous assurer de leur cohérence. Voici pourquoi: Parfois, lors de la saisie de données, les utilisateurs placent un espace avant ou après un nom. Vous ne pourrez pas le voir, mais lorsqu'il s'agira de combiner deux ensembles de données, le logiciel de calcul le interprétera comme deux ensembles de données. Par exemple, "Rahul" est différent de "Rahul".

Accédez à la colonne dans laquelle vous souhaitez supprimer les espaces, puis accédez à Editer les cellules → Transformation commune → Ajuster les espaces de début et de fin. Un autre problème courant avec les données est le formatage incohérent: parfois, une personne laissera les majuscules verrouillées ou oubliera de mettre un nom en majuscule. Ces trois options: titrer, mettre en majuscule, convertir en minuscule toutes les cellules de cette colonne pour qu'elles soient systématiquement mises en forme, d'une manière ou d'une autre.

Transformation commune dans OpenRefine

Une fonctionnalité très utile d’OpenRefine est sa gestion de l’historique de toutes les modifications ayant affecté les données depuis la création du projet. En pratique, cela signifie que vous ne devriez jamais avoir peur d'essayer des choses avec l'ensemble de données. Sentez-vous toujours libre de manipuler vos données et d'appliquer un nombre quelconque de facettes ou de transformations, car vous pouvez toujours les annuler si vous réalisez que c'est une erreur.

 Pour accéder à l'historique du projet, cliquez sur le bouton Défaire refaire onglet en haut à gauche de l'écran, juste à côté de la Filtre / Facette, comme indiqué dans la capture d'écran. Pour remonter le temps, cliquez sur la dernière étape que vous souhaitez conserver et le repos sera grisé. Pour annuler toutes les modifications et récupérer les données telles qu'elles étaient avant toute transformation, cliquez sur 0. Créer un projet. Pour refaire, cliquez sur l'étape à laquelle vous voulez restaurer l'historique.

Historique du projet dans OpenRefine

Une fois votre projet terminé, vous pouvez exporter les données d’un projet OpenRefine existant. le Exportation menu en haut à droite de l'écran vous permet de faire exactement cela. Les formats pris en charge sont: TSV, CSV, format Excel, feuille de calcul ODF, JSON et tableau HTML. La dernière option est pratique si vous souhaitez publier vos données nettoyées en ligne..

Conclusion

Avec ce tutoriel, vous apprendrez comment utiliser Tabula et OpenRefine. À un moment donné, vous serez peut-être submergé par la complexité derrière OpenRefine, mais ne vous inquiétez pas. Prenez votre temps et rappelez-vous que travailler avec des données ne se résume pas à du code ou à des clics, vous devez suivre votre intuition pour obtenir des données en parfait état. Vous pouvez toujours tout annuler en cas d'erreur.

Si vous rencontrez des difficultés pour vous lancer dans Tabula ou OpenRefine, ou si vous souhaitez partager des méthodes uniques, assurez-vous de nous le faire savoir dans les commentaires ci-dessous..