Conversão de PDF para CSV com Python

Olá,
Estou tentando converter as tabelas da Segurança Pública do Espírito Santo, disponibilizadas em PDF. Usei o Python e o método Tabula. Porém os arquivos em CSV ficaram mal formatados, conforme os prints abaixo. Gostaria de saber se há alguma forma de evitar estes erros. A tabela em questão tem um campo abaixo da última linha onde está calculado o total. Talvez seja esse o motivo do erro. Segue também o print com as linhas de código em Python.


1 Curtida

Oi @Masacra, qual é o link do PDF original e quais são os problemas de formatação que você gostaria de resolver? Estas informações vão nos ajudar a te ajudar :slight_smile:

Postar também o link do notebook ou do CSV pode ser útil também.

2 Curtidas

Adriano, a tabela foi libertada do PDF mas veio desconfigurada. A coluna sexo se misturou com a de incidente. Descendo umas linhas, as informações de sexo ficam na coluna da idade. Coloquei os links da tabela em CSV e do PDF original para vocês poderem ver. Fiquei em dúvida sobre o link do Notebook por isso não mandei. De toda forma, as linhas de código estão no print.

CSV: Vítimas_CLI_Dezembro_2020 - Google Sheets

O arquivo original em PDF: https://sesp.es.gov.br/Media/Sesp/Mapa%20de%20homicídios/Vítimas_CLI_Dezembro_2020.pdf

Obrigado pela atenção!

Esse tipo de problema é muito comum. Você pode experimentar com outros processadores de PDF, até encontrar um que consiga interpretar a estrutura da tabela corretamente.

Este artigo sugere três bibliotecas diferentes para Python, sendo o Tabula apenas uma delas.

A biblioteca rows do @turicas também tem uma funcionalidade específica para extrair tabelas de PDFs:

http://turicas.info/rows/plugins/#pdf

1 Curtida

Oi!

O melhor site com OCR que eu conheço é este: https://www.pdftoexcel.com/
Se forem muitos PDFs, você pode empilhá-los. Também há sites para isso.

Uma opção é fazer isso manualmente e depois trabalhar os arquivos no Python.
Mas, como o Herrmann citou, também há bibliotecas com OCR para trabalhar tudo no Python.

Abs!

1 Curtida

Obrigado! Vou verificar aqui. Testando novamente, acabei conseguindo libertar com menos erros. Vou testar as outras bibliotecas. Valeu!