Una introducció
En general, no és necessari que les dades que utilitzem estiguin disponibles en format CSV o JSON. Les dades es poden emmagatzemar en forma de taula en un fitxer PDF. Com a cas més senzill, podem copiar i enganxar la taula en un full de càlcul o en un editor de text. Però també pot ser que puguem més d'una taula en un mateix PDF que tingui estructures semblants. En aquests casos, hem de copiar i enganxar cadascuna d'aquestes taules per separat, la qual cosa fa que la feina sigui tediosa.
No obstant això, per tal de reduir aquest treball trist, Python ofereix una biblioteca de codi obert, també coneguda com taula-py , que permet als usuaris extreure més d'una taula de manera diferent. En el següent tutorial, coneixerem les taules i les seves funcions.
mapes java
Què és Tabula?
Tabular és un embolcall bàsic de tabula-java que permet als usuaris extreure la taula i converteix el fitxer PDF directament en marcs de dades o JSON mitjançant Llenguatge de programació Python . L'usuari també pot extreure taules de PDF i convertir-les en fitxers en format TSV, CSV o JSON.
Tabula és una eina basada en l'aplicació d'interfície gràfica d'usuari (GUI); malgrat això, taula-java és una eina basada en la interfície d'usuari de la línia d'ordres (CUI). tabula-java proporciona els enllaços de Ruby , R i NodeJS però no per a Python. Així, els desenvolupadors van introduir el concepte de taula-py que proporciona l'enllaç Python.
Ara, entenem qui utilitza Tabula i com el podem instal·lar.
Qui utilitza Tabula?
Tabula és una eina potent que estan utilitzant organitzacions de notícies de totes les mides per impulsar els informes d'investigació. Aquests Organitzacions de notícies són The Times of London, ProPublica, Foreign Policy, The New York Times, La Nacion (Argentina) i St. Paul (MN) Pioneer Press.
Hi ha organitzacions de base com SchoolCuts.org que també depenen de Tabula per convertir documents maldestres en recursos públics amigables amb les persones.
A part de l'anterior, hi ha investigadors d'altres procedències que utilitzen Tabula per convertir els seus informes PDF en fitxers en format de fulls de càlcul d'Excel, CSV i JSON i l'utilitzen per a l'anàlisi i aplicacions de bases de dades.
Implementació de Tabula en Python
Un cop hem parlat una mica de Tabula, entenem la seva implementació a Python.
Instal·lació de la biblioteca
Des de taula-py és una biblioteca de codi obert de Python, farem servir el pip instal·lador per instal·lar la biblioteca.
$ pip install tabula-py
Importació de la biblioteca
Un cop finalitzada la instal·lació, podem verificar-ho simplement important la biblioteca tal com es mostra a continuació:
import tabula
En cas que el programa torni un error d'importació , es recomana reinstal·lar el paquet.
El taula-py La biblioteca ofereix diverses funcions, com ara llegir un fitxer PDF, llegir una taula en una pàgina específica d'un fitxer PDF, llegir diverses taules a la mateixa pàgina d'un fitxer PDF o convertir fitxers PDF directament en un fitxer CSV.
Comencem per llegir un fitxer PDF
Lectura d'un fitxer PDF
El taula-py La biblioteca permet als seus usuaris llegir un fitxer PDF mitjançant la funció coneguda com a read_pdf() funció.
Sintaxi:
obj = tabula.read_pdf(filename, args[])
Paràmetres:
nom de l'arxiu: El nom de l'arxiu paràmetre és el nom del fitxer pdf; ens agradaria llegir les dades de.
Convertim la següent taula de dades pdf a Pandas Data Frame.
Nom del fitxer: marksheet_table.py
Pàgina 1
Nom | Anglès | Física | Química | Biologia | Total |
---|---|---|---|---|---|
A | 86 | 54 | 65 | 83 | 288 |
B | 56 | 45 | 80 | 55 | 236 |
C | 34 | 66 | 73 | 90 | 263 |
D | 77 | 75 | 46 | 34 | 232 |
I | 74 | 82 | 55 | 77 | 288 |
F | 69 | 76 | 82 | 46 | 273 |
G | 53 | 33 | 29 | 45 | 160 |
H | 70 | 41 | 67 | 23 | 201 |
jo | 80 | 43 | 88 | 28 | 239 |
J | 90 | 37 | 45 | 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 | 45 | 87 | 80 | 45 | 257 |
R | 44 | 66 | 49 | 78 | 237 |
S | 78 | 39 | 78 | 80 | 275 |
T | 56 | 54 | 76 | 86 | 273 |
EN | 43 | 90 | 64 | 77 | 274 |
EN | 95 | 88 | 66 | 55 | 304 |
EN | 64 | 67 | 86 | 80 | 297 |
X | 82 | 56 | 45 | 65 | 248 |
I | 79 | 65 | 70 | 54 | 268 |
AMB | 83 | 54 | 40 | 75 | 252 |
A continuació es mostra un exemple que mostra com extreure les dades del 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])
Sortida:
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
Explicació:
A l'exemple anterior, hem importat la biblioteca necessària i hem definit una variable que emmagatzema l'adreça del fitxer de dades pdf. Després hem utilitzat el read_pdf() funció per llegir les dades del pdf i imprimir-les per als usuaris. Com a resultat, la taula de dades s'ha llegit correctament.
Nota: hem utilitzat el pàgines paràmetre a la funció read_pdf() per llegir les dades de les pàgines especificades.
Considerem un altre exemple per imprimir les taules d'una pàgina específica, per exemple, la pàgina número 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])
Sortida:
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
Explicació:
En l'exemple anterior, hem seguit el mateix procediment que hem fet anteriorment. Tanmateix, hem assignat el pàgines paràmetre a 2 i va imprimir la primera taula de la pàgina especificada. Com a resultat, la taula d'índex zero de la pàgina 2 s'ha imprès correctament.
Ara, entenem què passa quan hi ha més d'una taula a la mateixa pàgina d'un fitxer de dades PDF.
ordre d'autocad de línia
Gestionar diverses taules a la mateixa pàgina d'un fitxer PDF
Podem gestionar més d'una taula a la mateixa utilitzant un paràmetre addicional conegut com a múltiples_taules. El múltiples_taules El paràmetre pren un valor booleà per al qual el read_pdf() La funció llegeix diverses taules com a taules independents si és cert o llegeix diverses taules com a taula única si és fals.
Considerem l'exemple següent que mostra com llegir diverses taules com a taules independents.
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])
Sortida:
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
Explicació:
En l'exemple següent, hem tornat a importar la biblioteca necessària i hem definit la variable que emmagatzema l'adreça del fitxer PDF. Després hem utilitzat el read_pdf() funció i inclòs el múltiples_taules paràmetre que l'estableix És cert . A continuació, hem imprès les múltiples taules presents a la pàgina 2 del fitxer PDF per separat.
verificació nul de java
Ara, considerem un exemple per entendre com llegir diverses taules com una sola taula.
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])
Sortida:
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
Explicació:
En l'exemple següent, ara hem configurat el múltiples_taules paràmetre a Fals . Com a resultat, les taules de la pàgina 2 es tracten com una única taula.
Convertir un fitxer PDF directament a un fitxer CSV
Podem convertir un fitxer PDF que contingui dades tabulars directament en un fitxer CSV amb l'ajuda de convertir_en() mètode en el tabula biblioteca.
Sintaxi:
tabula.convert_into('filename.pdf', 'newfilename.csv', args[])
Considerem l'exemple següent que il·lustra la conversió del fitxer PDF a fitxer 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.')
Sortida:
'pages' argument isn't specified.Will extract only from page 1 by default. The PDF file has been converted successfully.
Explicació:
A l'exemple anterior, hem tornat a importar la biblioteca necessària i hem definit la variable que conté l'adreça del fitxer PDF. Després hem utilitzat el convertir_en() mètode per convertir el fitxer PDF al fitxer CSV i imprimir un missatge d'èxit.
A més, també podem observar que el programa va retornar una declaració que deia que el 'pàgines' no s'especifica l'argument. Així, la taula present a la pàgina 1 s'extreurà per defecte.