Un introduzione
Generalmente non è necessario che i dati da noi utilizzati siano disponibili in formato CSV o JSON. I dati possono essere memorizzati sotto forma di tabella in un file PDF. Nel caso più semplice, possiamo copiare e incollare la tabella in un foglio di calcolo o in un editor di testo. Ma può anche darsi che nello stesso PDF possiamo avere più di una tabella con strutture simili. In questi casi dobbiamo copiare e incollare ciascuna di queste tabelle separatamente, il che rende il lavoro noioso.
Tuttavia, per evitare questo noioso lavoro, Python fornisce una libreria open source, nota anche come tavolo-py , che consente agli utenti di estrarre più di una tabella distintamente. Nel seguente tutorial impareremo a conoscere le tabula e le loro funzioni.
Cos'è Tabula?
Tabular è un wrapper base di tabula-java che consente agli utenti di estrarre la tabella e convertire il file PDF direttamente in Data frame o JSON utilizzando Linguaggio di programmazione Python . L'utente può anche estrarre tabelle da PDF e convertirle in file in formato TSV, CSV o JSON.
Tabula è uno strumento basato sull'applicazione Graphical User Interface (GUI); Tuttavia, tabella-java è uno strumento basato sull'interfaccia utente della riga di comando (CUI). tabula-java fornisce i collegamenti di Ruby , R e NodeJS ma non per Python. Pertanto, gli sviluppatori hanno introdotto il concetto di tavolo-py che fornisce l'associazione Python.
Adesso vediamo di capire chi usa Tabula e come possiamo installarlo.
Chi utilizza Tabula?
Tabula è un potente strumento utilizzato dalle testate giornalistiche di tutte le dimensioni per potenziare il giornalismo investigativo. Questi Organizzazioni giornalistiche sono The Times di Londra, ProPublica, Foreign Policy, The New York Times, La Nacion (Argentina) e St. Paul (MN) Pioneer Press.
Ci sono organizzazioni di base come SchoolCuts.org che dipendono anche da Tabula per convertire documenti goffi in risorse pubbliche a misura d'uomo.
Oltre a quanto sopra, ci sono ricercatori di altri background che utilizzano Tabula per trasformare i loro report PDF in fogli di calcolo Excel, CSV e file in formato JSON e lo utilizzano per scopi di analisi e applicazioni di database.
Implementazione di Tabula in Python
Dopo aver discusso un po' di Tabula, cerchiamo di capire la sua implementazione in Python.
Installazione della biblioteca
Java con altalena
Da tavolo-py è una libreria open source di Python, utilizzeremo il file pip installer per installare la libreria.
$ pip install tabula-py
Importazione della libreria
Una volta completata l'installazione possiamo verificarla semplicemente importando la libreria come mostrato di seguito:
import tabula
Nel caso in cui il programma restituisca un errore di importazione , si consiglia di reinstallare il pacchetto.
IL tavolo-py La libreria fornisce varie funzioni come la lettura di un file PDF, la lettura di una tabella su una pagina specifica di un file PDF, la lettura di più tabelle sulla stessa pagina di un file PDF o la conversione di file PDF direttamente in un file CSV.
svantaggi dell’online banking
Cominciamo con la lettura di un file PDF
Lettura di un file PDF
IL tavolo-py libreria consente ai suoi utenti di leggere un file PDF utilizzando la funzione nota come leggi_pdf() funzione.
Sintassi:
obj = tabula.read_pdf(filename, args[])
parametri:
nome del file: IL nome del file il parametro è il nome del file pdf; vorremmo leggere i dati da.
Convertiamo la seguente tabella dati PDF in Pandas Data Frame.
Nome file: marksheet_table.py
Pagina 1
Nome | Inglese | Fisica | Chimica | Biologia | Totale |
---|---|---|---|---|---|
UN | 86 | 54 | 65 | 83 | 288 |
B | 56 | Quattro cinque | 80 | 55 | 236 |
C | 3.4 | 66 | 73 | 90 | 263 |
D | 77 | 75 | 46 | 3.4 | 232 |
E | 74 | 82 | 55 | 77 | 288 |
F | 69 | 76 | 82 | 46 | 273 |
G | 53 | 33 | 29 | Quattro cinque | 160 |
H | 70 | 41 | 67 | 23 | 201 |
IO | 80 | 43 | 88 | 28 | 239 |
J | 90 | 37 | Quattro cinque | 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 |
O | 67 | 74 | 54 | 65 | 260 |
P | 75 | 96 | 53 | 67 | 291 |
Q | Quattro cinque | 87 | 80 | Quattro cinque | 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 | Quattro cinque | 65 | 248 |
E | 79 | 65 | 70 | 54 | 268 |
CON | 83 | 54 | 40 | 75 | 252 |
Ecco un esempio fornito di seguito, che dimostra come estrarre i dati dal pdf.
Esempio:
# 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])
Produzione:
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
Spiegazione:
rendere eseguibile uno script di shell
Nell'esempio sopra, abbiamo importato la libreria richiesta e definito una variabile che memorizza l'indirizzo del file di dati pdf. Abbiamo quindi utilizzato il leggi_pdf() funzione per leggere i dati dal pdf e stamparli per gli utenti. Di conseguenza, la tabella dati è stata letta correttamente.
Nota: abbiamo utilizzato il file pagine parametro nella funzione read_pdf() per leggere i dati dalle pagine specificate.
Consideriamo un altro esempio per stampare le tabelle da una pagina specifica, diciamo la pagina numero 2.
Esempio:
tipo in Java
# 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])
Produzione:
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
Spiegazione:
Nell'esempio sopra, abbiamo seguito la stessa procedura di prima. Tuttavia, abbiamo assegnato il pagine parametro su 2 e stampato la prima tabella della pagina specificata. Di conseguenza, la tabella dell'indice zero a pagina 2 è stata stampata correttamente.
Ora, cerchiamo di capire cosa succede quando è presente più di una tabella sulla stessa pagina di un file di dati PDF.
Gestione di più tabelle sulla stessa pagina di un file PDF
Possiamo gestire più di una tabella sulla stessa utilizzando un parametro aggiuntivo noto come tabelle_multiple. IL tabelle_multiple Il parametro accetta un valore booleano per il quale il leggi_pdf() la funzione legge più tabelle come tabelle indipendenti se vero o legge più tabelle come un'unica tabella se falso.
Consideriamo l'esempio seguente che mostra come leggere più tabelle come tabelle indipendenti.
Esempio:
# 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])
Produzione:
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
Spiegazione:
Nell'esempio seguente abbiamo nuovamente importato la libreria richiesta e definito la variabile che memorizza l'indirizzo del file PDF. Abbiamo quindi utilizzato il leggi_pdf() funzione e includeva il tabelle_multiple parametro impostandolo su VERO . Abbiamo poi stampato separatamente le molteplici tabelle presenti a pagina 2 del file PDF.
Consideriamo ora un esempio per capire come leggere più tabelle come se fossero un'unica tabella.
Esempio:
# 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])
Produzione:
converti la stringa int java
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
Spiegazione:
Nell'esempio seguente, ora abbiamo impostato il file tabelle_multiple parametro a Falso . Di conseguenza le tabelle presenti a pagina 2 vengono trattate come un'unica tabella.
Conversione di file PDF direttamente in un file CSV
Possiamo convertire un file PDF che contiene dati tabulari direttamente in un file CSV con l'aiuto del file Convertire in() metodo nel tabella biblioteca.
Sintassi:
tabula.convert_into('filename.pdf', 'newfilename.csv', args[])
Consideriamo il seguente esempio che illustra la conversione del file PDF in file CSV.
Esempio:
# 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.')
Produzione:
'pages' argument isn't specified.Will extract only from page 1 by default. The PDF file has been converted successfully.
Spiegazione:
Nell'esempio sopra abbiamo nuovamente importato la libreria richiesta e definito la variabile contenente l'indirizzo del file PDF. Abbiamo quindi utilizzato il Convertire in() metodo per convertire il file PDF nel file CSV e stampare un messaggio di successo.
Inoltre, possiamo anche osservare che il programma ha restituito una dichiarazione in cui si afferma che the 'pagine' l'argomento non è specificato. Pertanto, per impostazione predefinita, verrà estratta la tabella presente nella pagina 1.