Представяне
По принцип не е необходимо използваните от нас данни да са налични във формат CSV или JSON. Данните могат да се съхраняват под формата на таблица в PDF файл. Като най-прост случай можем да копираме и поставим таблицата в електронна таблица или текстов редактор. Но също така може да се окаже, че можем да имаме повече от една таблица в един и същи PDF файл, която има подобни структури. За такива случаи трябва да копираме и поставяме всяка от тези таблици поотделно, което прави работата досадна.
Въпреки това, за да намали тази досадна работа, Python предоставя библиотека с отворен код, известна още като маса-py , което позволява на потребителите да извличат повече от една таблица по различен начин. В следващия урок ще научим за таблата и техните функции.
Какво е Табула?
Tabular е основна обвивка на tabula-java, която позволява на потребителите да извличат таблицата и преобразува PDF файла директно в рамки с данни или JSON, използвайки Език за програмиране Python . Потребителят може също така да извлича таблици от PDF и да ги конвертира във формат TSV, CSV или JSON файлове.
Tabula е инструмент, базиран на приложение за графичен потребителски интерфейс (GUI); въпреки това, таблица-java е инструмент, базиран на потребителски интерфейс на командния ред (CUI). tabula-java осигурява свързванията на Ruby, R и NodeJS, но не и за Python. По този начин разработчиците въведоха концепцията за маса-py който осигурява обвързване на Python.
Сега нека разберем кой използва Tabula и как можем да я инсталираме.
Кой използва Tabula?
Tabula е мощен инструмент, който се използва от новинарски организации с всякакъв размер, за да засили разследващите репортажи. Тези Новинарски организации са The Times of London, ProPublica, Foreign Policy, The New York Times, La Nacion (Аржентина) и St. Paul (MN) Pioneer Press.
Има масови организации като SchoolCuts.org, които също зависят от Tabula, за да преобразуват тромавите документи в удобни за хората обществени ресурси.
Освен горепосоченото, има изследователи от други среди, които използват Tabula за превръщане на своите PDF отчети в електронни таблици на Excel, CSV и файлове във формат JSON и го използват за целите на анализиране и приложения за бази данни.
Внедряване на Tabula в Python
След като обсъдихме малко Tabula, нека разберем нейната реализация в Python.
Инсталиране на библиотеката
генератор на случайни стойности в java
От маса-py е библиотека с отворен код на Python, ние ще използваме пип инсталатор, за да инсталирате библиотеката.
$ pip install tabula-py
Импортиране на библиотеката
След като инсталацията приключи, можем да я проверим, като просто импортираме библиотеката, както е показано по-долу:
import tabula
В случай, че програмата върне an грешка при импортиране , препоръчително е да преинсталирате пакета.
The маса-py библиотеката предоставя различни функции като четене на PDF файл, четене на таблица на конкретна страница от PDF файл, четене на множество таблици на една и съща страница от PDF файл или директно конвертиране на PDF файлове в CSV файл.
mysql уникален ключ
Нека започнем с четене на PDF файл
Четене на PDF файл
The маса-py библиотека позволява на своите потребители да четат PDF файл с помощта на функцията, известна като read_pdf() функция.
Синтаксис:
obj = tabula.read_pdf(filename, args[])
Параметри:
име на файл: The име на файл параметър е името на pdf файла; бихме искали да прочетем данните от.
Нека преобразуваме следната pdf таблица с данни в рамка с данни на pandas.
Име на файла: marksheet_table.py
Страница 1
Име | Английски | Физика | Химия | Биология | Обща сума |
---|---|---|---|---|---|
А | 86 | 54 | 65 | 83 | 288 |
Б | 56 | Четири пет | 80 | 55 | 236 |
° С | 3. 4 | 66 | 73 | 90 | 263 |
д | 77 | 75 | 46 | 3. 4 | 232 |
И | 74 | 82 | 55 | 77 | 288 |
Е | 69 | 76 | 82 | 46 | 273 |
Ж | 53 | 33 | 29 | Четири пет | 160 |
з | 70 | 41 | 67 | 23 | 201 |
аз | 80 | 43 | 88 | 28 | 239 |
Дж | 90 | 37 | Четири пет | 71 | 243 |
К | 98 | 55 | 88 | 81 | 322 |
Л | 90 | 54 | 67 | 37 | 248 |
М | 87 | 76 | 88 | 54 | 305 |
н | 86 | 69 | 82 | 66 | 303 |
О | 67 | 74 | 54 | 65 | 260 |
П | 75 | 96 | 53 | 67 | 291 |
Q | Четири пет | 87 | 80 | Четири пет | 257 |
Р | 44 | 66 | 49 | 78 | 237 |
С | 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 |
х | 82 | 56 | Четири пет | 65 | 248 |
И | 79 | 65 | 70 | 54 | 268 |
СЪС | 83 | 54 | 40 | 75 | 252 |
Ето един пример, даден по-долу, който демонстрира как да извлечете данните от pdf.
Пример:
# 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])
Изход:
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
Обяснение:
обективна java
В горния пример ние импортирахме необходимата библиотека и дефинирахме променлива, която съхранява адреса на pdf файла с данни. След това използвахме read_pdf() функция за четене на данните от pdf и отпечатването им за потребителите. В резултат на това таблицата с данни е прочетена успешно.
Забележка: Ние сме използвали страници параметър във функцията read_pdf() за четене на данните от посочените страници.
Нека разгледаме друг пример за отпечатване на таблиците от конкретна страница, да речем страница номер 2.
Пример:
java system.out.println
# 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])
Изход:
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
Обяснение:
В горния пример следвахме същата процедура, както по-рано. Ние обаче сме възложили на страници параметър на 2 и отпечата първата таблица на посочената страница. В резултат на това таблицата с нулев индекс на страница 2 е отпечатана успешно.
Сега нека разберем какво се случва, когато има повече от една таблица на една и съща страница на PDF файл с данни.
Работа с множество таблици на една и съща страница на PDF файл
Можем да обработваме повече от една таблица в една и съща, като използваме допълнителен параметър, известен като множество_таблици. The множество_таблици параметърът приема булева стойност, за която read_pdf() функцията чете множество таблици като независими таблици, ако е истина или чете множество таблици като една таблица, ако е невярно.
Нека разгледаме следния пример, демонстриращ как да четем множество таблици като независими таблици.
Пример:
# 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])
Изход:
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
Обяснение:
В следващия пример ние отново импортирахме необходимата библиотека и дефинирахме променливата, която съхранява адреса на PDF файла. След това използвахме read_pdf() функция и включваше множество_таблици параметър, който го настройва на Вярно . След това отпечатахме отделно множеството таблици, присъстващи на страница 2 на PDF файла.
Сега нека разгледаме пример, за да разберем как да четем множество таблици като една таблица.
Пример:
# 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])
Изход:
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
Обяснение:
В следващия пример вече сме задали множество_таблици параметър към Невярно . В резултат на това таблиците, представени на страница 2, се третират като една таблица.
Конвертиране на PDF файл директно в CSV файл
Можем да конвертираме PDF файл, който съдържа таблични данни директно в CSV файл с помощта на конвертирате в() метод в табла библиотека.
Синтаксис:
tabula.convert_into('filename.pdf', 'newfilename.csv', args[])
Нека разгледаме следния пример, илюстриращ преобразуването на PDF файл в CSV файл.
Пример:
# 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.')
Изход:
'pages' argument isn't specified.Will extract only from page 1 by default. The PDF file has been converted successfully.
Обяснение:
В горния пример ние отново импортирахме необходимата библиотека и дефинирахме променливата, съдържаща адреса на PDF файла. След това използвахме конвертирате в() метод за конвертиране на PDF файла в CSV файл и отпечатване на съобщение за успех.
Освен това можем да забележим, че програмата върна изявление, в което се казва, че 'страници' аргументът не е посочен. По този начин таблицата, присъстваща на страница 1, ще бъде извлечена по подразбиране.