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.

1 Curtida

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

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!

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