Bevezetés
Általában nem szükséges, hogy az általunk használt adatok CSV vagy JSON formátumban legyenek elérhetők. Az adatok táblázat formájában, PDF fájlban tárolhatók. A legegyszerűbb esetben a táblázatot kimásolhatjuk és beilleszthetjük egy táblázatba vagy egy szövegszerkesztőbe. De az is előfordulhat, hogy ugyanabban a PDF-ben több, hasonló szerkezetű táblázatot is tudunk. Ilyen esetekben minden egyes táblázatot külön kell másolnunk és beillesztenünk, ami fárasztóvá teszi a munkát.
Ennek az unalmas munkának a megszüntetésére azonban a Python egy nyílt forráskódú könyvtárat biztosít, más néven asztal-py , amely lehetővé teszi a felhasználók számára, hogy egynél több táblázatot különállóan bontsanak ki. A következő oktatóanyagban megismerjük a táblázatokat és azok funkcióit.
Mi az a Tabula?
A Tabular a tabula-java alapvető burkolója, amely lehetővé teszi a felhasználók számára, hogy kivonják a táblázatot, és közvetlenül konvertálják a PDF-fájlt adatkeretekbe vagy JSON-ba. Python programozási nyelv . A felhasználó táblázatokat is kivonhat PDF-ből, és konvertálhatja azokat TSV, CSV vagy JSON formátumú fájlokká.
A Tabula egy grafikus felhasználói felület (GUI) alkalmazáson alapuló eszköz; azonban, táblázat-java egy parancssori felhasználói felületen (CUI) alapuló eszköz. A tabula-java biztosítja a Ruby , R és NodeJS kötéseit, de nem a Pythonhoz. Így a fejlesztők bevezették a fogalmát asztal-py amely Python-kötést biztosít.
Most pedig lássuk, ki használja a Tabulát, és hogyan telepíthetjük.
Ki használja a Tabulát?
A Tabula egy hatékony eszköz, amelyet bármilyen méretű hírszervezet használ a nyomozati jelentések erősítésére. Ezek Hírszervezetek a The Times of London, a ProPublica, a Foreign Policy, a The New York Times, a La Nacion (Argentína) és a St. Paul (MN) Pioneer Press.
Vannak olyan alapszervezetek, mint például a SchoolCuts.org, amelyek szintén a Tabulától függenek, hogy a nehézkes dokumentumokat emberbarát közforrásokká alakítsák.
A fentieken kívül vannak más háttérrel rendelkező kutatók is, akik a Tabulát használják arra, hogy PDF-jelentéseiket Excel-táblázatokká, CSV-fájlokká és JSON-formátumú fájlokká alakítsák, és elemzési és adatbázis-alkalmazások céljára használják.
A Tabula megvalósítása Pythonban
Miután egy kicsit megbeszéltük a Tabulát, értsük meg annak Pythonban való megvalósítását.
A könyvtár telepítése
Mivel asztal-py a Python nyílt forráskódú könyvtára, akkor a csipog telepítőt a könyvtár telepítéséhez.
$ pip install tabula-py
A könyvtár importálása
Miután a telepítés befejeződött, ellenőrizhetjük a könyvtár egyszerű importálásával az alábbiak szerint:
import tabula
Abban az esetben, ha a program egy importálási hiba , ajánlott a csomag újratelepítése.
A asztal-py A könyvtár különféle funkciókat kínál, mint például egy PDF-fájl olvasása, egy táblázat beolvasása egy PDF-fájl adott oldalán, több táblázat olvasása egy PDF-fájl ugyanazon oldalán, vagy PDF-fájlok közvetlen konvertálása CSV-fájllá.
Kezdjük egy PDF-fájl olvasásával
PDF fájl olvasása
A asztal-py könyvtár lehetővé teszi a felhasználók számára, hogy PDF-fájlokat olvassanak el a read_pdf() funkció.
Szintaxis:
obj = tabula.read_pdf(filename, args[])
Paraméterek:
fájl név: A fájl név paraméter a pdf fájl neve; az adatokat szeretnénk kiolvasni.
Alakítsuk át a következő pdf adattáblát panda adatkeretté.
Fájlnév: marksheet_table.py
1 oldal
Név | angol | Fizika | Kémia | Biológia | Teljes |
---|---|---|---|---|---|
A | 86 | 54 | 65 | 83 | 288 |
B | 56 | Négy öt | 80 | 55 | 236 |
C | 3. 4 | 66 | 73 | 90 | 263 |
D | 77 | 75 | 46 | 3. 4 | 232 |
ÉS | 74 | 82 | 55 | 77 | 288 |
F | 69 | 76 | 82 | 46 | 273 |
G | 53 | 33 | 29 | Négy öt | 160 |
H | 70 | 41 | 67 | 23 | 201 |
én | 80 | 43 | 88 | 28 | 239 |
J | 90 | 37 | Négy öt | 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 |
K | Négy öt | 87 | 80 | Négy öt | 257 |
R | 44 | 66 | 49 | 78 | 237 |
S | 78 | 39 | 78 | 80 | 275 |
T | 56 | 54 | 76 | 86 | 273 |
BAN BEN | 43 | 90 | 64 | 77 | 274 |
BAN BEN | 95 | 88 | 66 | 55 | 304 |
BAN BEN | 64 | 67 | 86 | 80 | 297 |
x | 82 | 56 | Négy öt | 65 | 248 |
ÉS | 79 | 65 | 70 | 54 | 268 |
VAL VEL | 83 | 54 | 40 | 75 | 252 |
Az alábbiakban egy példa látható, amely bemutatja, hogyan lehet kivonni az adatokat a pdf-ből.
Példa:
# 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])
Kimenet:
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
Magyarázat:
A fenti példában importáltuk a szükséges könyvtárat, és definiáltunk egy változót, amely a pdf adatfájl címét tárolja. Ezután használtuk a read_pdf() funkció segítségével beolvassa az adatokat a pdf-ből és kinyomtatja a felhasználók számára. Ennek eredményeként az adattábla beolvasása sikeresen megtörtént.
Megjegyzés: Használtuk a oldalakat paramétert a read_pdf() függvényben az adatok beolvasásához a megadott oldal(ok)ról.
Tekintsünk egy másik példát a táblázatok egy adott oldalról történő kinyomtatására, mondjuk a 2. oldalról.
mi a modulo a c++-ban
Példa:
# 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])
Kimenet:
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
Magyarázat:
A fenti példában ugyanazt az eljárást követtük, mint korábban. Mi azonban hozzárendeltük a oldalakat paramétert 2-re, és kinyomtatta a megadott oldal első táblázatát. Ennek eredményeként a 2. oldalon található nulla index táblázata sikeresen kinyomtatott.
Most pedig nézzük meg, mi történik, ha egy PDF-adatfájl ugyanazon az oldalán egynél több táblázat található.
Több táblázat kezelése egy PDF-fájl ugyanazon az oldalán
Egynél több táblát kezelhetünk ugyanazon egy további paraméterrel, amely az ún multiple_tables. A multiple_tables paraméter egy logikai értéket vesz fel, amelyre a read_pdf() függvény több táblát független táblaként olvas be, ha igaz, vagy több táblát egyetlen táblaként olvas be, ha hamis.
Tekintsük a következő példát, amely bemutatja, hogyan kell több táblát független táblázatként olvasni.
Példa:
# 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])
Kimenet:
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
Magyarázat:
A következő példában ismét importáltuk a szükséges könyvtárat, és meghatároztuk a PDF fájl címét tároló változót. Ezután használtuk a read_pdf() funkciót és tartalmazta a multiple_tables paraméter beállításával Igaz . Ezt követően a PDF-fájl 2. oldalán található több táblázatot külön-külön kinyomtattuk.
Most nézzünk meg egy példát, hogy megértsük, hogyan kell több táblázatot egyetlen táblázatként olvasni.
Példa:
# 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])
Kimenet:
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
Magyarázat:
A következő példában most beállítottuk a multiple_tables paraméterhez Hamis . Ennek eredményeként a 2. oldalon található táblázatok egyetlen táblázatként kezelendők.
PDF-fájl konvertálása közvetlenül CSV-fájllá
A táblázatos adatokat tartalmazó PDF fájlt közvetlenül CSV fájllá alakíthatjuk a segítségével convert_into() módszer a tabula könyvtár.
Szintaxis:
tabula.convert_into('filename.pdf', 'newfilename.csv', args[])
Tekintsük a következő példát a PDF-fájl CSV-fájllá konvertálására.
Példa:
# 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.')
Kimenet:
'pages' argument isn't specified.Will extract only from page 1 by default. The PDF file has been converted successfully.
Magyarázat:
A fenti példában ismét importáltuk a szükséges könyvtárat, és definiáltuk a PDF fájl címét tartalmazó változót. Ezután használtuk a convert_into() módszerrel konvertálta a PDF-fájlt CSV-fájllá, és sikeres üzenetet nyomtatott ki.
Sőt, azt is megfigyelhetjük, hogy a program visszaadott egy nyilatkozatot, miszerint a 'oldalak' argumentum nincs megadva. Így az 1. oldalon található táblázat alapértelmezés szerint ki lesz bontva.