Giriş
Genellikle kullandığımız verilerin CSV veya JSON formatında bulunmasına gerek yoktur. Veriler bir PDF dosyasındaki tablo biçiminde saklanabilir. En basit örnek olarak, tabloyu kopyalayıp bir e-tabloya veya metin düzenleyiciye yapıştırabiliriz. Ancak aynı PDF'de benzer yapılara sahip birden fazla tablo da oluşturabiliriz. Bu gibi durumlarda bu tabloların her birini ayrı ayrı kopyalayıp yapıştırmak zorunda kalıyoruz, bu da işi sıkıcı hale getiriyor.
Ancak bu sıkıcı işi ortadan kaldırmak için Python, açık kaynak kodlu bir kütüphane sağlar. masa-py Bu, kullanıcıların birden fazla tabloyu ayrı ayrı ayıklamasına olanak tanır. Aşağıdaki derste tabula ve işlevlerini öğreneceğiz.
Tabula nedir?
Tabular, kullanıcıların tabloyu çıkarmasına olanak tanıyan ve PDF dosyasını doğrudan Veri çerçevelerine veya JSON'a dönüştüren temel bir tabula-java sarmalayıcısıdır. Python Programlama dili . Kullanıcı ayrıca PDF'den tabloları çıkarabilir ve bunları TSV, CSV veya JSON formatındaki dosyalara dönüştürebilir.
Tabula, Grafik Kullanıcı Arayüzü (GUI) Uygulamasını temel alan bir araçtır; Yine de, tablo-java Komut Satırı Kullanıcı Arayüzünü (CUI) temel alan bir araçtır. tabula-java Ruby, R ve NodeJS bağlamalarını sağlar ancak Python için sağlamaz. Böylece geliştiriciler konseptini tanıttı. masa-py Python bağlamayı sağlayan.
Şimdi Tabula’yı kimlerin kullandığını ve nasıl kurabileceğimizi anlayalım.
işletim sistemi
Tabula'yı kimler kullanıyor?
Tabula, araştırmacı haberciliği güçlendirmek için her büyüklükteki Haber kuruluşları tarafından kullanılan güçlü bir araçtır. Bunlar Haber kuruluşları The Times of London, ProPublica, Dış Politika, The New York Times, La Nacion (Arjantin) ve St. Paul (MN) Pioneer Press'tir.
Ayrıca, hantal belgeleri insan dostu kamu kaynaklarına dönüştürmek için Tabula'ya bağlı olan SchoolCuts.org gibi Taban Kuruluşları da vardır.
Yukarıdakilerin dışında, PDF raporlarını Excel Elektronik Tablolarına, CSV'lere ve JSON formatındaki dosyalara dönüştürmek için Tabula'yı kullanan ve bunu Analiz ve Veritabanı Uygulamaları amacıyla kullanan diğer altyapılardan araştırmacılar da vardır.
Python'da Tabula'nın Uygulanması
Biraz Tabula'yı tartıştıktan sonra, onun Python'daki uygulamasını anlayalım.
Kütüphanenin kurulumu
O zamandan beri masa-py Python'un açık kaynaklı bir kütüphanesi olduğundan kullanacağız. pip Kitaplığı yüklemek için yükleyiciyi kullanın.
$ pip install tabula-py
Kütüphanenin içe aktarılması
Kurulum tamamlandıktan sonra, aşağıda gösterildiği gibi kütüphaneyi basitçe içe aktararak bunu doğrulayabiliriz:
import tabula
Programın bir döndürmesi durumunda içe aktarma hatası paketi yeniden yüklemeniz önerilir.
masa-py kitaplık, bir PDF dosyasını okumak, bir PDF dosyasının belirli bir sayfasındaki bir tabloyu okumak, bir PDF dosyasının aynı sayfasında birden fazla tabloyu okumak veya PDF dosyalarını doğrudan bir CSV dosyasına dönüştürmek gibi çeşitli işlevler sağlar.
dize boş
Bir PDF dosyasını okuyarak başlayalım
PDF dosyasını okuma
masa-py kitaplık, kullanıcılarının PDF dosyasını şu şekilde bilinen işlevi kullanarak okumasına olanak tanır: read_pdf() işlev.
Sözdizimi:
obj = tabula.read_pdf(filename, args[])
Parametreler:
dosya adı: dosya adı parametre pdf dosyasının adıdır; verilerini okumak istiyoruz.
Aşağıdaki pdf veri tablosunu pandas Veri Çerçevesine dönüştürelim.
Dosya Adı: marksheet_table.py
androidin paskalya yumurtası nedir
Sayfa 1
İsim | İngilizce | Fizik | Kimya | Biyoloji | Toplam |
---|---|---|---|---|---|
A | 86 | 54 | 65 | 83 | 288 |
B | 56 | Dört beş | 80 | 55 | 236 |
C | 3. 4 | 66 | 73 | 90 | 263 |
D | 77 | 75 | 46 | 3. 4 | 232 |
VE | 74 | 82 | 55 | 77 | 288 |
F | 69 | 76 | 82 | 46 | 273 |
G | 53 | 33 | 29 | Dört beş | 160 |
H | 70 | 41 | 67 | 23 | 201 |
BEN | 80 | 43 | 88 | 28 | 239 |
J | 90 | 37 | Dört beş | 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 | Dört beş | 87 | 80 | Dört beş | 257 |
R | 44 | 66 | 49 | 78 | 237 |
S | 78 | 39 | 78 | 80 | 275 |
T | 56 | 54 | 76 | 86 | 273 |
İÇİNDE | 43 | 90 | 64 | 77 | 274 |
İÇİNDE | 95 | 88 | 66 | 55 | 304 |
İÇİNDE | 64 | 67 | 86 | 80 | 297 |
X | 82 | 56 | Dört beş | 65 | 248 |
VE | 79 | 65 | 70 | 54 | 268 |
İLE | 83 | 54 | 40 | 75 | 252 |
Aşağıda, verilerin pdf'ten nasıl çıkarılacağını gösteren bir örnek verilmiştir.
Örnek:
# 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])
Çıktı:
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
Açıklama:
Yukarıdaki örnekte gerekli kütüphaneyi içe aktardık ve pdf veri dosyasının adresini saklayan bir değişken tanımladık. Daha sonra şunu kullandık: read_pdf() Verileri pdf'ten okuma ve kullanıcılar için yazdırma işlevi. Sonuç olarak veri tablosu başarıyla okundu.
Not: Biz kullandık sayfalar Belirtilen sayfalardan veri okumak için read_pdf() işlevindeki parametre.
Tabloları belirli bir sayfadan, örneğin 2 numaralı sayfadan yazdırmak için başka bir örnek düşünelim.
Örnek:
# 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])
Çıktı:
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
Açıklama:
Yukarıdaki örnekte daha önce uyguladığımız prosedürün aynısını izledik. Ancak biz görevlendirdik sayfalar parametresini 2'ye ayarlayın ve belirtilen sayfanın ilk tablosunu yazdırın. Sonuç olarak, sayfa 2'deki sıfır indeks tablosu başarıyla yazdırıldı.
Şimdi bir PDF veri dosyasının aynı sayfasında birden fazla tablo olduğunda ne olacağını anlayalım.
Bir PDF dosyasının aynı sayfasında birden fazla tabloyu işleme
olarak bilinen ek bir parametreyi kullanarak aynı tablo üzerinde birden fazla tabloyu işleyebiliriz. çoklu_tablolar. çoklu_tablolar parametresi bir Boolean değeri alır; read_pdf() işlev, doğruysa birden çok tabloyu bağımsız tablolar olarak okur veya yanlışsa birden çok tabloyu tek bir tablo olarak okur.
karakter java'ya dize
Birden çok tablonun bağımsız tablolar olarak nasıl okunacağını gösteren aşağıdaki örneği ele alalım.
Örnek:
# 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])
Çıktı:
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
Açıklama:
Aşağıdaki örnekte gerekli kütüphaneyi tekrar içe aktardık ve PDF dosyasının adresini saklayan değişkeni tanımladık. Daha sonra şunu kullandık: read_pdf() işlevi ve şunları içeriyordu: çoklu_tablolar parametre ayarı Doğru . Daha sonra PDF dosyasının 2. sayfasında bulunan birden fazla tabloyu ayrı ayrı yazdırdık.
Şimdi birden fazla tablonun tek tablo olarak nasıl okunacağını anlamak için bir örnek ele alalım.
Örnek:
# 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])
Çıktı:
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
Açıklama:
Aşağıdaki örnekte artık ayarladık. çoklu_tablolar parametre YANLIŞ . Sonuç olarak 2. sayfada yer alan tablolar tek bir tablo gibi ele alınır.
PDF dosyasını doğrudan CSV dosyasına dönüştürme
Tablosal veriler içeren bir PDF dosyasını, yardımıyla doğrudan bir CSV dosyasına dönüştürebiliriz. dönüştürmek() yöntemdeki tablo kütüphane.
Sözdizimi:
tabula.convert_into('filename.pdf', 'newfilename.csv', args[])
PDF dosyasının CSV dosyasına dönüştürülmesini gösteren aşağıdaki örneği ele alalım.
powershell büyüktür veya eşittir
Örnek:
# 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.')
Çıktı:
'pages' argument isn't specified.Will extract only from page 1 by default. The PDF file has been converted successfully.
Açıklama:
Yukarıdaki örnekte gerekli kütüphaneyi tekrar içe aktardık ve PDF dosyasının adresini içeren değişkeni tanımladık. Daha sonra şunu kullandık: dönüştürmek() PDF dosyasını CSV dosyasına dönüştürme yöntemini kullanarak bir başarı mesajı yazdırdım.
Ayrıca programın şunu söyleyen bir beyanda bulunduğunu da gözlemleyebiliriz: 'sayfalar' argüman belirtilmedi. Böylece sayfa 1'de bulunan tablo varsayılan olarak çıkarılacaktır.