Une introduction
Généralement, il n'est pas nécessaire que les données que nous utilisons soient disponibles au format CSV ou JSON. Les données peuvent être stockées sous forme de tableau dans un fichier PDF. Dans le cas le plus simple, nous pouvons copier et coller le tableau dans une feuille de calcul ou un éditeur de texte. Mais il se peut aussi que nous puissions avoir plusieurs tableaux dans le même PDF ayant des structures similaires. Pour de tels cas, nous devons copier et coller chacun de ces tableaux séparément, ce qui rend le travail fastidieux.
Cependant, pour éviter ce travail fastidieux, Python fournit une bibliothèque open source, également connue sous le nom de table-py , qui permet aux utilisateurs d'extraire plusieurs tables distinctement. Dans le didacticiel suivant, nous découvrirons les tabula et leurs fonctions.
Qu’est-ce que Tabula ?
Tabular est un wrapper de base de tabula-java qui permet aux utilisateurs d'extraire le tableau et de convertir le fichier PDF directement en trames de données ou JSON en utilisant Langage de programmation Python . L'utilisateur peut également extraire des tableaux du PDF et les convertir en fichiers au format TSV, CSV ou JSON.
Tabula est un outil basé sur une application d'interface utilisateur graphique (GUI) ; cependant, table-java est un outil basé sur l'interface utilisateur de ligne de commande (CUI). tabula-java fournit les liaisons de Ruby , R et NodeJS mais pas pour Python. Ainsi, les développeurs ont introduit le concept de table-py qui fournit une liaison Python.
Voyons maintenant qui utilise Tabula et comment nous pouvons l'installer.
Qui utilise Tabula ?
Tabula est un outil puissant utilisé par les agences de presse de toutes tailles afin d'alimenter les reportages d'investigation. Ces Organismes de presse sont le Times de Londres, ProPublica, Foreign Policy, le New York Times, La Nacion (Argentine) et St. Paul (MN) Pioneer Press.
Il existe des organisations de base telles que SchoolCuts.org qui dépendent également de Tabula pour convertir des documents maladroits en ressources publiques conviviales.
Outre ce qui précède, des chercheurs d'autres horizons utilisent Tabula pour transformer leurs rapports PDF en feuilles de calcul Excel, CSV et fichiers au format JSON et l'utilisent à des fins d'analyse et d'applications de base de données.
Implémentation de Tabula en Python
Une fois que nous avons discuté un peu de Tabula, comprenons son implémentation en Python.
Java vide
Installation de la bibliothèque
Depuis table-py est une bibliothèque open source de Python, nous utiliserons le pépin programme d'installation afin d'installer la bibliothèque.
$ pip install tabula-py
Importation de la bibliothèque
Une fois l'installation terminée, nous pouvons la vérifier en important simplement la bibliothèque comme indiqué ci-dessous :
import tabula
Dans le cas où le programme renvoie un erreur d'importation , il est recommandé de réinstaller le package.
Le table-py La bibliothèque fournit diverses fonctions telles que la lecture d'un fichier PDF, la lecture d'un tableau sur une page spécifique d'un fichier PDF, la lecture de plusieurs tableaux sur la même page d'un fichier PDF ou la conversion de fichiers PDF directement en fichier CSV.
Commençons par lire un fichier PDF
Lire un fichier PDF
Le table-py La bibliothèque permet à ses utilisateurs de lire un fichier PDF à l'aide de la fonction connue sous le nom de lire_pdf() fonction.
char tostring java
Syntaxe:
obj = tabula.read_pdf(filename, args[])
Paramètres:
nom de fichier: Le nom de fichier le paramètre est le nom du fichier pdf ; nous aimerions lire les données.
Convertissons le tableau de données pdf suivant en pandas Data Frame.
Nom du fichier : marksheet_table.py
Page 1
Nom | Anglais | La physique | Chimie | La biologie | Total |
---|---|---|---|---|---|
UN | 86 | 54 | 65 | 83 | 288 |
B | 56 | Quatre cinq | 80 | 55 | 236 |
C | 3.4 | 66 | 73 | 90 | 263 |
D | 77 | 75 | 46 | 3.4 | 232 |
ET | 74 | 82 | 55 | 77 | 288 |
F | 69 | 76 | 82 | 46 | 273 |
g | 53 | 33 | 29 | Quatre cinq | 160 |
H | 70 | 41 | 67 | 23 | 201 |
je | 80 | 43 | 88 | 28 | 239 |
J. | 90 | 37 | Quatre cinq | 71 | 243 |
K | 98 | 55 | 88 | 81 | 322 |
L | 90 | 54 | 67 | 37 | 248 |
M | 87 | 76 | 88 | 54 | 305 |
N | 86 | 69 | 82 | 66 | 303 |
Ô | 67 | 74 | 54 | 65 | 260 |
P. | 75 | 96 | 53 | 67 | 291 |
Q | Quatre cinq | 87 | 80 | Quatre cinq | 257 |
R. | 44 | 66 | 49 | 78 | 237 |
S | 78 | 39 | 78 | 80 | 275 |
T | 56 | 54 | 76 | 86 | 273 |
DANS | 43 | 90 | 64 | 77 | 274 |
DANS | 95 | 88 | 66 | 55 | 304 |
DANS | 64 | 67 | 86 | 80 | 297 |
X | 82 | 56 | Quatre cinq | 65 | 248 |
ET | 79 | 65 | 70 | 54 | 268 |
AVEC | 83 | 54 | 40 | 75 | 252 |
Voici un exemple ci-dessous, qui montre comment extraire les données du pdf.
Exemple:
# importing the library import tabula # address of the file myfile = 'marksheet_table.pdf' # using the read_pdf() function mytable = tabula.read_pdf(myfile, pages = 1) # printing the table print(mytable[0])
Sortir:
Name English Physics Chemistry Biology Total 0 A 86 54 65 83 288 1 B 56 45 80 55 236 2 C 34 66 73 90 263 3 D 77 75 46 34 232 4 E 74 82 55 77 288 5 F 69 76 82 46 273 6 G 53 33 29 45 160 7 H 70 41 67 23 201 8 I 80 43 88 28 239 9 J 90 37 45 71 243 10 K 98 55 88 81 322 11 L 90 54 67 37 248 12 M 87 76 88 54 305 13 N 86 69 82 66 303 14 O 67 74 54 65 260 15 P 75 96 53 67 291 16 Q 45 87 80 45 257 17 R 44 66 49 78 237 18 S 78 39 78 80 275 19 T 56 54 77 86 273 20 U 43 90 64 77 274 21 V 95 88 66 55 304 22 W 64 67 86 80 297 23 X 82 56 45 65 248 24 Y 79 65 70 54 268 25 Z 83 54 40 75 252
Explication:
java ajouter à un tableau
Dans l'exemple ci-dessus, nous avons importé la bibliothèque requise et défini une variable qui stocke l'adresse du fichier de données PDF. Nous avons ensuite utilisé le lire_pdf() fonction pour lire les données du pdf et les imprimer pour les utilisateurs. En conséquence, la table de données a été lue avec succès.
Remarque : Nous avons utilisé le pages paramètre dans la fonction read_pdf() pour lire les données de la ou des pages spécifiées.
Considérons un autre exemple pour imprimer les tableaux à partir d'une page spécifique, disons la page numéro 2.
Exemple:
# importing the library import tabula # address of the file myfile = 'marksheet_table.pdf' # using the read_pdf() function mytable = tabula.read_pdf(myfile, pages = 2) # printing the table print(mytable[0])
Sortir:
Name Final Scores 0 A 288 1 B 236 2 C 263 3 D 232 4 E 288 5 F 273 6 G 160 7 H 201 8 I 239 9 J 243 3 D 232 4 E 288 5 F 273 6 G 160 7 H 201 8 I 239 9 J 243 10 K 322 11 L 248 12 M 305 13 N 303 14 O 260 15 P 291 16 Q 257 17 R 237 18 S 275 19 T 273 20 U 274 21 V 304 22 W 297 23 X 248 24 Y 268 25 Z 252
Explication:
Dans l’exemple ci-dessus, nous avons suivi la même procédure que précédemment. Cependant, nous avons attribué le pages paramètre à 2 et imprimé le premier tableau de la page spécifiée. En conséquence, le tableau de l'index zéro de la page 2 a été imprimé avec succès.
Voyons maintenant ce qui se passe lorsqu'il y a plus d'un tableau sur la même page d'un fichier de données PDF.
Gestion de plusieurs tableaux sur la même page d'un fichier PDF
Nous pouvons gérer plusieurs tables sur la même en utilisant un paramètre supplémentaire appelé plusieurs_tables. Le plusieurs_tables Le paramètre prend une valeur booléenne pour laquelle le lire_pdf() la fonction lit plusieurs tables comme des tables indépendantes si elle est vraie ou lit plusieurs tables comme une seule table si elle est fausse.
Considérons l'exemple suivant montrant comment lire plusieurs tables en tant que tables indépendantes.
Exemple:
# importing the library import tabula # address of the file myfile = 'marksheet_table.pdf' # using the read_pdf() function mytable = tabula.read_pdf(myfile, pages = 2, multiple_tables = True) # printing the table print(mytable[0]) print(mytable[1])
Sortir:
Name Final Scores 0 A 288 1 B 236 2 C 263 3 D 232 4 E 288 5 F 273 6 G 160 7 H 201 8 I 239 9 J 243 10 K 322 11 L 248 12 M 305 13 N 303 14 O 260 15 P 291 16 Q 257 17 R 237 18 S 275 19 T 273 20 U 274 21 V 304 22 W 297 23 X 248 24 Y 268 25 Z 252 Name Position 0 K I 1 M II 2 V III 3 N IV 4 W V
Explication:
Dans l'exemple suivant, nous avons à nouveau importé la bibliothèque requise et défini la variable qui stocke l'adresse du fichier PDF. Nous avons ensuite utilisé le lire_pdf() fonction et inclus le plusieurs_tables paramètre le réglant sur Vrai . Nous avons ensuite imprimé séparément les multiples tableaux présents à la page 2 du fichier PDF.
Considérons maintenant un exemple pour comprendre comment lire plusieurs tables comme une seule table.
Exemple:
# importing the library import tabula # address of the file myfile = 'marksheet_table.pdf' # using the read_pdf() function mytable = tabula.read_pdf(myfile, pages = 2, multiple_tables = False) # printing the table print(mytable[0])
Sortir:
Name Final Scores 0 A 288 1 B 236 2 C 263 3 D 232 4 E 288 5 F 273 6 G 160 7 H 201 8 I 239 9 J 243 10 K 322 11 L 248 12 M 305 13 N 303 14 O 260 15 P 291 9 J 243 10 K 322 11 L 248 12 M 305 13 N 303 14 O 260 15 P 291 16 Q 257 17 R 237 18 S 275 19 T 273 20 U 274 21 V 304 22 W 297 23 X 248 24 Y 268 25 Z 252 26 Name Position 27 K I 28 M II 29 V III 30 N IV 31 W V
Explication:
Dans l'exemple suivant, nous avons maintenant défini le plusieurs_tables paramètre à FAUX . De ce fait, les tableaux présents en page 2 sont traités comme un seul tableau.
pyspark sql
Conversion d'un fichier PDF directement en fichier CSV
Nous pouvons convertir un fichier PDF contenant des données tabulaires directement en fichier CSV à l'aide du convertir en() méthode dans le tableau bibliothèque.
Syntaxe:
tabula.convert_into('filename.pdf', 'newfilename.csv', args[])
Considérons l'exemple suivant illustrant la conversion du fichier PDF en fichier CSV.
Exemple:
# importing the library import tabula # address of the file myfile = 'marksheettable.pdf' # using the read_pdf() function tabula.convert_into(myfile, 'marksheet.csv') print('The PDF file has been converted successfully.')
Sortir:
'pages' argument isn't specified.Will extract only from page 1 by default. The PDF file has been converted successfully.
Explication:
Dans l'exemple ci-dessus, nous avons à nouveau importé la bibliothèque requise et défini la variable contenant l'adresse du fichier PDF. Nous avons ensuite utilisé le convertir en() méthode pour convertir le fichier PDF en fichier CSV et imprimer un message de réussite.
De plus, nous pouvons également observer que le programme a renvoyé une déclaration indiquant que le 'pages' l’argument n’est pas spécifié. Ainsi, le tableau présent en page 1 sera extrait par défaut.