Uma introdução
Geralmente, não é necessário que os dados que utilizamos estejam disponíveis em formato CSV ou JSON. Os dados podem ser armazenados na forma de uma tabela em um arquivo PDF. No caso mais simples, podemos copiar e colar a tabela em uma planilha ou editor de texto. Mas também pode ser que possamos ter mais de uma tabela no mesmo PDF que tenha estruturas semelhantes. Para tais casos, temos que copiar e colar cada uma dessas tabelas separadamente, o que torna o trabalho tedioso.
No entanto, para eliminar esse trabalho enfadonho, Python fornece uma biblioteca de código aberto, também conhecida como mesa-py , que permite aos usuários extrair mais de uma tabela distintamente. No tutorial a seguir, aprenderemos sobre tabula e suas funções.
O que é Tabula?
Tabular é um wrapper básico de tabula-java que permite aos usuários extrair a tabela e converter o arquivo PDF diretamente em Data frames ou JSON usando Linguagem de programação Python . O usuário também pode extrair tabelas de PDF e convertê-las em arquivos nos formatos TSV, CSV ou JSON.
Tabula é uma ferramenta baseada em um aplicativo de interface gráfica de usuário (GUI); no entanto, tabela-java é uma ferramenta baseada na interface de usuário de linha de comando (CUI). tabula-java fornece as ligações de Ruby, R e NodeJS, mas não para Python. Assim, os desenvolvedores introduziram o conceito de mesa-py que fornece ligação Python.
Agora vamos entender quem usa o Tabula e como podemos instalá-lo.
Quem utiliza Tabula?
Tabula é uma ferramenta poderosa que está sendo usada por organizações de notícias de todos os tamanhos para potencializar reportagens investigativas. Esses Organizações de notícias são The Times of London, ProPublica, Foreign Policy, The New York Times, La Nacion (Argentina) e St.
Existem organizações de base, como a SchoolCuts.org, que também dependem do Tabula para converter documentos desajeitados em recursos públicos amigáveis.
java substitui tudo
Além do acima exposto, existem pesquisadores de outras áreas que utilizam Tabula para transformar seus relatórios PDF em planilhas Excel, CSVs e arquivos nos formatos JSON e o utilizam para fins de análise e aplicações de banco de dados.
Implementação de Tabula em Python
Depois de discutir um pouco sobre Tabula, vamos entender sua implementação em Python.
Instalação da biblioteca
Desde mesa-py é uma biblioteca de código aberto de Python, usaremos o pip instalador para instalar a biblioteca.
$ pip install tabula-py
Importação da biblioteca
Assim que a instalação for concluída, podemos verificá-la simplesmente importando a biblioteca conforme mostrado abaixo:
import tabula
Caso o programa retorne um erro de importação , é recomendado reinstalar o pacote.
O mesa-py A biblioteca oferece várias funções, como leitura de um arquivo PDF, leitura de uma tabela em uma página específica de um arquivo PDF, leitura de várias tabelas na mesma página de um arquivo PDF ou conversão de arquivos PDF diretamente em um arquivo CSV.
Vamos começar lendo um arquivo PDF
Lendo um arquivo PDF
O mesa-py biblioteca permite que seus usuários leiam um arquivo PDF usando a função conhecida como ler_pdf() função.
Sintaxe:
obj = tabula.read_pdf(filename, args[])
Parâmetros:
nome do arquivo: O nome do arquivo parâmetro é o nome do arquivo pdf; gostaríamos de ler os dados.
Vamos converter a seguinte tabela de dados PDF em Data Frame do pandas.
Nome do arquivo: marksheet_table.py
Página 1
Nome | Inglês | Física | Química | Biologia | Total |
---|---|---|---|---|---|
A | 86 | 54 | 65 | 83 | 288 |
B | 56 | Quatro cinco | 80 | 55 | 236 |
C | 3. 4 | 66 | 73 | 90 | 263 |
D | 77 | 75 | 46 | 3. 4 | 232 |
E | 74 | 82 | 55 | 77 | 288 |
F | 69 | 76 | 82 | 46 | 273 |
G | 53 | 33 | 29 | Quatro cinco | 160 |
H | 70 | 41 | 67 | 23 | 201 |
EU | 80 | 43 | 88 | 28 | 239 |
J. | 90 | 37 | Quatro cinco | 71 | 243 |
K | 98 | 55 | 88 | 81 | 322 |
eu | 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 |
P | Quatro cinco | 87 | 80 | Quatro cinco | 257 |
R | 44 | 66 | 49 | 78 | 237 |
S | 78 | 39 | 78 | 80 | 275 |
T | 56 | 54 | 76 | 86 | 273 |
EM | 43 | 90 | 64 | 77 | 274 |
EM | 95 | 88 | 66 | 55 | 304 |
EM | 64 | 67 | 86 | 80 | 297 |
X | 82 | 56 | Quatro cinco | 65 | 248 |
E | 79 | 65 | 70 | 54 | 268 |
COM | 83 | 54 | 40 | 75 | 252 |
Aqui está um exemplo abaixo, que demonstra como extrair os dados do pdf.
Exemplo:
# 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])
Saída:
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ção:
No exemplo acima, importamos a biblioteca necessária e definimos uma variável que armazena o endereço do arquivo de dados PDF. Usamos então o ler_pdf() função para ler os dados do pdf e imprimi-los para os usuários. Como resultado, a tabela de dados foi lida com sucesso.
Observação: usamos o Páginas parâmetro na função read_pdf() para ler os dados da(s) página(s) especificada(s).
Vamos considerar outro exemplo para imprimir as tabelas de uma página específica, digamos a página número 2.
Exemplo:
# 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])
Saída:
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ção:
No exemplo acima, seguimos o mesmo procedimento que fizemos anteriormente. No entanto, atribuímos o Páginas parâmetro para 2 e imprimiu a primeira tabela da página especificada. Como resultado, a tabela de índice zero na página 2 foi impressa com sucesso.
Agora vamos entender o que acontece quando há mais de uma tabela na mesma página de um arquivo de dados PDF.
java obtém a hora atual
Manipulação de múltiplas tabelas na mesma página de um arquivo PDF
Podemos lidar com mais de uma tabela na mesma usando um parâmetro adicional conhecido como tabelas_múltiplas. O tabelas_múltiplas parâmetro assume um valor booleano para o qual o ler_pdf() A função lê várias tabelas como tabelas independentes se for verdadeira ou lê várias tabelas como uma única tabela se for falsa.
Consideremos o exemplo a seguir que demonstra como ler várias tabelas como tabelas independentes.
Exemplo:
classe de objeto em java
# 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])
Saída:
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ção:
No exemplo a seguir, importamos novamente a biblioteca necessária e definimos a variável que armazena o endereço do arquivo PDF. Usamos então o ler_pdf() função e incluiu o tabelas_múltiplas parâmetro configurando-o para Verdadeiro . Em seguida, imprimimos as múltiplas tabelas presentes na página 2 do arquivo PDF separadamente.
Agora, vamos considerar um exemplo para entender como ler várias tabelas como uma única tabela.
Exemplo:
# 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])
Saída:
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ção:
No exemplo a seguir, definimos agora o tabelas_múltiplas parâmetro para Falso . Como resultado, as tabelas presentes na página 2 são tratadas como uma única tabela.
Convertendo arquivo PDF diretamente em um arquivo CSV
Podemos converter um arquivo PDF que contém dados tabulares diretamente em um arquivo CSV com a ajuda do converter em() método no tabula biblioteca.
Sintaxe:
tabula.convert_into('filename.pdf', 'newfilename.csv', args[])
Consideremos o exemplo a seguir que ilustra a conversão do arquivo PDF em arquivo CSV.
Exemplo:
# 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.')
Saída:
'pages' argument isn't specified.Will extract only from page 1 by default. The PDF file has been converted successfully.
Explicação:
No exemplo acima, importamos novamente a biblioteca necessária e definimos a variável que contém o endereço do arquivo PDF. Usamos então o converter em() método para converter o arquivo PDF em arquivo CSV e imprimiu uma mensagem de sucesso.
Além disso, também podemos observar que o programa retornou uma declaração dizendo que o 'Páginas' argumento não é especificado. Assim, a tabela presente na página 1 será extraída por padrão.