O introducere
În general, nu este necesar ca datele pe care le folosim să fie disponibile în format CSV sau JSON. Datele pot fi stocate sub forma unui tabel într-un fișier PDF. Ca cel mai simplu caz, putem copia și lipi tabelul într-o foaie de calcul sau într-un editor de text. Dar se poate, de asemenea, să putem mai mult de un tabel în același PDF care are structuri similare. Pentru astfel de cazuri, trebuie să copiem și să lipim fiecare dintre aceste tabele separat, ceea ce face munca plictisitoare.
Cu toate acestea, pentru a reduce această muncă tristă, Python oferă o bibliotecă open-source, cunoscută și ca table-py , care permite utilizatorilor să extragă mai mult de un tabel distinct. În următorul tutorial, vom afla despre tabula și funcțiile lor.
Ce este Tabula?
Tabular este un pachet de bază de tabula-java care permite utilizatorilor să extragă tabelul și să convertească fișierul PDF direct în cadre de date sau JSON folosind Limbajul de programare Python . De asemenea, utilizatorul poate extrage tabele din PDF și le poate converti în fișiere în format TSV, CSV sau JSON.
Tabula este un instrument bazat pe aplicația Graphical User Interface (GUI); in orice caz, table-java este un instrument bazat pe Command-Line User Interface (CUI). tabula-java oferă legăturile lui Ruby, R și NodeJS, dar nu și pentru Python. Astfel, dezvoltatorii au introdus conceptul de table-py care asigură legarea Python.
Acum, să înțelegem cine folosește Tabula și cum îl putem instala.
Cine folosește Tabula?
Tabula este un instrument puternic care este folosit de organizațiile de știri de toate dimensiunile pentru a alimenta raportarea investigațiilor. Aceste Organizații de știri sunt The Times of London, ProPublica, Foreign Policy, The New York Times, La Nacion (Argentina) și St. Paul (MN) Pioneer Press.
șir subșir java
Există organizații de bază, cum ar fi SchoolCuts.org, care depind, de asemenea, de Tabula pentru a transforma documentele greoaie în resurse publice prietenoase cu oamenii.
În afară de cele de mai sus, există cercetători din alte medii care utilizează Tabula pentru a-și transforma rapoartele PDF în foi de calcul Excel, CSV și fișiere în format JSON și îl folosesc în scopul analizei și al aplicațiilor de baze de date.
Implementarea Tabula în Python
După ce am discutat puțin despre Tabula, să înțelegem implementarea sa în Python.
Instalarea bibliotecii
De cand table-py este o bibliotecă open-source de Python, vom folosi pip instalator pentru a instala biblioteca.
$ pip install tabula-py
Importul bibliotecii
Odată ce instalarea este finalizată, o putem verifica pur și simplu importând biblioteca, așa cum se arată mai jos:
import tabula
În cazul în care programul returnează un eroare de import , se recomandă reinstalarea pachetului.
The table-py biblioteca oferă diverse funcții, cum ar fi citirea unui fișier PDF, citirea unui tabel pe o anumită pagină a unui fișier PDF, citirea mai multor tabele pe aceeași pagină a unui fișier PDF sau Conversia fișierelor PDF direct într-un fișier CSV.
Să începem cu citirea unui fișier PDF
Citirea unui fișier PDF
The table-py biblioteca permite utilizatorilor săi să citească un fișier PDF folosind funcția cunoscută sub numele de read_pdf() funcţie.
cum se convertesc din int în șir în java
Sintaxă:
obj = tabula.read_pdf(filename, args[])
Parametri:
nume de fișier: The nume de fișier parametrul este numele fișierului pdf; am dori să citim datele de la.
Să convertim următorul tabel de date pdf în Pandas Data Frame.
Nume fișier: marksheet_table.py
Pagina 1
Nume | Engleză | Fizică | Chimie | Biologie | Total |
---|---|---|---|---|---|
A | 86 | 54 | 65 | 83 | 288 |
B | 56 | Patru cinci | 80 | 55 | 236 |
C | 3. 4 | 66 | 73 | 90 | 263 |
D | 77 | 75 | 46 | 3. 4 | 232 |
ȘI | 74 | 82 | 55 | 77 | 288 |
F | 69 | 76 | 82 | 46 | 273 |
G | 53 | 33 | 29 | Patru cinci | 160 |
H | 70 | 41 | 67 | 23 | 201 |
eu | 80 | 43 | 88 | 28 | 239 |
J | 90 | 37 | Patru cinci | 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 | Patru cinci | 87 | 80 | Patru cinci | 257 |
R | 44 | 66 | 49 | 78 | 237 |
S | 78 | 39 | 78 | 80 | 275 |
T | 56 | 54 | 76 | 86 | 273 |
ÎN | 43 | 90 | 64 | 77 | 274 |
ÎN | 95 | 88 | 66 | 55 | 304 |
ÎN | 64 | 67 | 86 | 80 | 297 |
X | 82 | 56 | Patru cinci | 65 | 248 |
ȘI | 79 | 65 | 70 | 54 | 268 |
CU | 83 | 54 | 40 | 75 | 252 |
Iată un exemplu de mai jos, care demonstrează cum să extragi datele din pdf.
Exemplu:
# 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])
Ieșire:
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
Explicaţie:
În exemplul de mai sus, am importat biblioteca necesară și am definit o variabilă care stochează adresa fișierului de date pdf. Am folosit apoi read_pdf() funcția de citire a datelor din pdf și tipărire pentru utilizatori. Ca urmare, tabelul de date a fost citit cu succes.
Notă: am folosit pagini parametrul în funcția read_pdf() pentru a citi datele din paginile specificate.
Să luăm în considerare un alt exemplu de tipărire a tabelelor dintr-o anumită pagină, să spunem pagina numărul 2.
Exemplu:
exemple nfa
# 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])
Ieșire:
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
Explicaţie:
În exemplul de mai sus, am urmat aceeași procedură ca și mai devreme. Cu toate acestea, am atribuit pagini parametrul la 2 și a tipărit primul tabel al paginii specificate. Ca rezultat, tabelul cu indexul zero de pe pagina 2 a fost tipărit cu succes.
Acum, să înțelegem ce se întâmplă atunci când există mai multe tabele pe aceeași pagină a unui fișier de date PDF.
Gestionarea mai multor tabele pe aceeași pagină a unui fișier PDF
Putem gestiona mai mult de un tabel pe același folosind un parametru suplimentar cunoscut ca multiple_tables. The multiple_tables parametrul ia o valoare booleană pentru care read_pdf() funcția citește mai multe tabele ca tabele independente dacă este adevărat sau citește mai multe tabele ca un singur tabel dacă este fals.
Să luăm în considerare următorul exemplu care demonstrează cum să citim mai multe tabele ca tabele independente.
Exemplu:
# 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])
Ieșire:
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
Explicaţie:
În exemplul următor, am importat din nou biblioteca necesară și am definit variabila care stochează adresa fișierului PDF. Am folosit apoi read_pdf() funcția și a inclus multiple_tables setarea parametrului la Adevărat . Apoi am tipărit separat tabelele multiple prezente pe pagina 2 a fișierului PDF.
Acum, să luăm în considerare un exemplu pentru a înțelege cum să citiți mai multe tabele ca un singur tabel.
Exemplu:
css primul copil
# 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])
Ieșire:
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
Explicaţie:
În exemplul următor, am setat acum multiple_tables parametru la Fals . Ca urmare, tabelele prezente la pagina 2 sunt tratate ca un singur tabel.
Conversia fișierului PDF direct într-un fișier CSV
Putem converti un fișier PDF care conține date tabelare direct într-un fișier CSV cu ajutorul programului a se converti în() metoda în tabula bibliotecă.
Sintaxă:
tabula.convert_into('filename.pdf', 'newfilename.csv', args[])
Să luăm în considerare următorul exemplu care ilustrează conversia fișierului PDF în fișier CSV.
Exemplu:
# 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.')
Ieșire:
'pages' argument isn't specified.Will extract only from page 1 by default. The PDF file has been converted successfully.
Explicaţie:
În exemplul de mai sus, am importat din nou biblioteca necesară și am definit variabila care conține adresa fișierului PDF. Am folosit apoi a se converti în() metoda de a converti fișierul PDF în fișierul CSV și a tipărit un mesaj de succes.
Mai mult, putem observa, de asemenea, că programul a returnat o declarație care spune că „pagini” argumentul nu este specificat. Astfel, tabelul prezent la pagina 1 va fi extras implicit.