Eine Einleitung
Im Allgemeinen ist es nicht erforderlich, dass die von uns verwendeten Daten im CSV- oder JSON-Format vorliegen. Die Daten können tabellarisch in einer PDF-Datei gespeichert werden. Im einfachsten Fall können wir die Tabelle kopieren und in eine Tabellenkalkulation oder einen Texteditor einfügen. Es kann aber auch sein, dass wir mehr als eine Tabelle in derselben PDF-Datei mit ähnlichen Strukturen erstellen können. In solchen Fällen müssen wir jede dieser Tabellen einzeln kopieren und einfügen, was die Arbeit mühsam macht.
Um Ihnen diese mühsame Arbeit zu ersparen, bietet Python eine Open-Source-Bibliothek, auch bekannt als Tisch-py , das es Benutzern ermöglicht, mehr als eine Tabelle eindeutig zu extrahieren. Im folgenden Tutorial lernen wir Tabula und ihre Funktionen kennen.
Was ist Tabula?
Tabular ist ein grundlegender Wrapper von Tabula-Java, der Benutzern das Extrahieren der Tabelle ermöglicht und die PDF-Datei direkt in Datenrahmen oder JSON umwandelt Python-Programmiersprache . Der Benutzer kann auch Tabellen aus PDF extrahieren und sie in Dateien im TSV-, CSV- oder JSON-Format konvertieren.
Tabula ist ein Tool, das auf einer grafischen Benutzeroberfläche (GUI) basiert. Jedoch, Tabelle-Java ist ein Tool, das auf der Befehlszeilen-Benutzeroberfläche (CUI) basiert. tabula-java stellt die Bindungen von Ruby, R und NodeJS bereit, jedoch nicht für Python. Daher führten die Entwickler das Konzept ein Tisch-py das eine Python-Bindung bereitstellt.
Lassen Sie uns nun verstehen, wer Tabula verwendet und wie wir es installieren können.
Wer nutzt Tabula?
Tabula ist ein leistungsstarkes Tool, das von Nachrichtenorganisationen jeder Größe verwendet wird, um die investigative Berichterstattung voranzutreiben. Diese Nachrichtenorganisationen sind The Times of London, ProPublica, Foreign Policy, The New York Times, La Nacion (Argentinien) und St. Paul (MN) Pioneer Press.
Es gibt Basisorganisationen wie SchoolCuts.org, die ebenfalls auf Tabula angewiesen sind, um umfangreiche Dokumente in benutzerfreundliche öffentliche Ressourcen umzuwandeln.
Abgesehen von den oben genannten gibt es Forscher mit anderem Hintergrund, die Tabula verwenden, um ihre PDF-Berichte in Excel-Tabellen, CSVs und Dateien im JSON-Format umzuwandeln und es für Analyse- und Datenbankanwendungen zu verwenden.
Implementierung von Tabula in Python
Nachdem wir Tabula ein wenig besprochen haben, wollen wir seine Implementierung in Python verstehen.
Installation der Bibliothek
Seit Tisch-py ist eine Open-Source-Bibliothek von Python, die wir verwenden werden Pip Installationsprogramm, um die Bibliothek zu installieren.
$ pip install tabula-py
Importieren der Bibliothek
Sobald die Installation abgeschlossen ist, können wir sie überprüfen, indem wir einfach die Bibliothek wie unten gezeigt importieren:
import tabula
Falls das Programm eine zurückgibt Importfehler , wird empfohlen, das Paket neu zu installieren.
Der Tisch-py Die Bibliothek bietet verschiedene Funktionen wie das Lesen einer PDF-Datei, das Lesen einer Tabelle auf einer bestimmten Seite einer PDF-Datei, das Lesen mehrerer Tabellen auf derselben Seite einer PDF-Datei oder das direkte Konvertieren von PDF-Dateien in eine CSV-Datei.
Beginnen wir mit dem Lesen einer PDF-Datei
Lesen einer PDF-Datei
Der Tisch-py Die Bibliothek ermöglicht ihren Benutzern das Lesen einer PDF-Datei mit der Funktion „ read_pdf() Funktion.
Syntax:
obj = tabula.read_pdf(filename, args[])
Parameter:
Dateiname: Der Dateiname Parameter ist der Name der PDF-Datei; Wir möchten die Daten auslesen.
Lassen Sie uns die folgende PDF-Datentabelle in den Pandas-Datenrahmen konvertieren.
Dateiname: marksheet_table.py
Seite 1
Name | Englisch | Physik | Chemie | Biologie | Gesamt |
---|---|---|---|---|---|
A | 86 | 54 | 65 | 83 | 288 |
B | 56 | Vier fünf | 80 | 55 | 236 |
C | 3. 4 | 66 | 73 | 90 | 263 |
D | 77 | 75 | 46 | 3. 4 | 232 |
UND | 74 | 82 | 55 | 77 | 288 |
F | 69 | 76 | 82 | 46 | 273 |
G | 53 | 33 | 29 | Vier fünf | 160 |
H | 70 | 41 | 67 | 23 | 201 |
ICH | 80 | 43 | 88 | 28 | 239 |
J | 90 | 37 | Vier fünf | 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 | Vier fünf | 87 | 80 | Vier fünf | 257 |
R | 44 | 66 | 49 | 78 | 237 |
S | 78 | 39 | 78 | 80 | 275 |
T | 56 | 54 | 76 | 86 | 273 |
IN | 43 | 90 | 64 | 77 | 274 |
IN | 95 | 88 | 66 | 55 | 304 |
IN | 64 | 67 | 86 | 80 | 297 |
X | 82 | 56 | Vier fünf | 65 | 248 |
UND | 79 | 65 | 70 | 54 | 268 |
MIT | 83 | 54 | 40 | 75 | 252 |
Nachfolgend finden Sie ein Beispiel, das zeigt, wie die Daten aus dem PDF extrahiert werden.
Beispiel:
# 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])
Ausgabe:
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
Erläuterung:
Im obigen Beispiel haben wir die erforderliche Bibliothek importiert und eine Variable definiert, die die Adresse der PDF-Datendatei speichert. Das haben wir dann genutzt read_pdf() Funktion, um die Daten aus dem PDF zu lesen und für die Benutzer auszudrucken. Infolgedessen wurde die Datentabelle erfolgreich gelesen.
Hinweis: Wir haben das verwendet Seiten Parameter in der Funktion read_pdf(), um die Daten von der/den angegebenen Seite(n) zu lesen.
Betrachten wir ein weiteres Beispiel zum Drucken der Tabellen ab einer bestimmten Seite, beispielsweise Seite Nummer 2.
Beispiel:
# 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])
Ausgabe:
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
Erläuterung:
Im obigen Beispiel sind wir genauso vorgegangen wie zuvor. Allerdings haben wir das zugewiesen Seiten Parameter auf 2 gesetzt und die erste Tabelle der angegebenen Seite gedruckt. Als Ergebnis wurde die Tabelle mit Index Null auf Seite 2 erfolgreich gedruckt.
Lassen Sie uns nun verstehen, was passiert, wenn sich mehr als eine Tabelle auf derselben Seite einer PDF-Datendatei befindet.
Umgang mit mehreren Tabellen auf derselben Seite einer PDF-Datei
Wir können mehr als eine Tabelle in derselben Tabelle verarbeiten, indem wir einen zusätzlichen Parameter namens verwenden multiple_tables. Der multiple_tables Der Parameter nimmt einen booleschen Wert an, für den der read_pdf() Die Funktion liest mehrere Tabellen als unabhängige Tabellen, wenn sie wahr ist, oder liest mehrere Tabellen als eine einzelne Tabelle, wenn sie falsch ist.
Betrachten wir das folgende Beispiel, das zeigt, wie mehrere Tabellen als unabhängige Tabellen gelesen werden.
Beispiel:
# 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])
Ausgabe:
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
Erläuterung:
Im folgenden Beispiel haben wir erneut die benötigte Bibliothek importiert und die Variable definiert, die die Adresse der PDF-Datei speichert. Das haben wir dann genutzt read_pdf() Funktion und enthalten die multiple_tables Parameter, auf den es eingestellt ist WAHR . Anschließend haben wir die mehreren Tabellen auf Seite 2 der PDF-Datei separat ausgedruckt.
Betrachten wir nun ein Beispiel, um zu verstehen, wie mehrere Tabellen als eine einzige Tabelle gelesen werden.
Beispiel:
# 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])
Ausgabe:
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
Erläuterung:
Vernetzung und Typen
Im folgenden Beispiel haben wir nun die eingestellt multiple_tables Parameter zu FALSCH . Daher werden die auf Seite 2 vorhandenen Tabellen als eine einzige Tabelle behandelt.
PDF-Datei direkt in eine CSV-Datei konvertieren
Mithilfe von können wir eine PDF-Datei, die tabellarische Daten enthält, direkt in eine CSV-Datei konvertieren konvertieren in() Methode in der Tabula Bibliothek.
Syntax:
tabula.convert_into('filename.pdf', 'newfilename.csv', args[])
Betrachten wir das folgende Beispiel, das die Konvertierung der PDF-Datei in eine CSV-Datei veranschaulicht.
Beispiel:
# 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.')
Ausgabe:
'pages' argument isn't specified.Will extract only from page 1 by default. The PDF file has been converted successfully.
Erläuterung:
Im obigen Beispiel haben wir erneut die benötigte Bibliothek importiert und die Variable definiert, die die Adresse der PDF-Datei enthält. Das haben wir dann genutzt konvertieren in() Methode zum Konvertieren der PDF-Datei in die CSV-Datei und Drucken einer Erfolgsmeldung.
Darüber hinaus können wir auch beobachten, dass das Programm eine Anweisung zurückgegeben hat, die besagt, dass die 'Seiten' Argument ist nicht angegeben. Daher wird standardmäßig die auf Seite 1 vorhandene Tabelle extrahiert.