Ajuda com extração de tabela em pdf - presos pela Seape/DF

Boa tarde! Perguntando por aqui caso alguém tenha testado a extração das tabelas de presos que a Seape/DF tem divulgado desde a semana passada. (Fonte: https://seape.df.gov.br/prisoes-dos-atentados-bsb/)

Hoje eles mudaram o sistema de divulgação: continuam sendo tabelas bonitinhas em PDF, que o Tabula extrai sem problemas, mas agora dividida em três arquivos diferentes:

mulheres ainda detidas: https://seape.df.gov.br/wp-content/uploads/2023/01/pfdf-20.01.pdf
homens ainda detidos: https://seape.df.gov.br/wp-content/uploads/2023/01/cdp2-20.01-2.pdf
pessoas soltas com tornozeleira eletrônica: https://seape.df.gov.br/wp-content/uploads/2023/01/cime-20.01.pdf

Como a atualização, principalmente da terceira tabela, deve ainda sair várias vezes, decidi finalmente ajustar um código pra não ter que usar o site do Tabula.

Até consegui pegar direitinho as tabelas que ficam a partir da página 2 com o tabulizer. Eu uso o “extract_tables”, escolho as páginas de uma vez, depois uso “reduce(list, rbind)” e daí “as.data.frame()” e é uma maravilha.

Mas a página 1 tem uma primeira “linha da tabela” que é na verdade o título do documento, e ainda tem uma imagem inserida. Pelo visto eles fazem no Excel e exportam pra PDF.

Isso é o que tá atrapalhando tudo: essa primeira página não consegui exportar de uma forma minimamente adequada até agora. Testei as opções nos posts que o @Athospd e o @jtrecenti já fizeram sobre o tema, mas falhei rs.

Já tentei com o tabulizer, mas a lista nunca tem 3 elementos, é 1x1, ele não enxerga tabela.

Já tentei com o pdftools e também não deu certo. Não aparece nenhuma tabela.

Já tentei com o tesseract, salvei uma imagem, daí usei a função ocr. O resultado é um textão do documento todo na mesma célula, separado por um monte de caracteres malucos, não consegui achar um padrão neles pra tentar usar regex e transformar em algo que possa depois virar um dataframe.

Por isso estou sondando vários grupos da galera do R pra ver se tem mais alguém mergulhado nessa tarefa e trocar figurinhas. Ou quem sabe convencer alguém a entrar nessa AVENTURA…

Carol, vou tentar ajudar! Assim que tiver algo esboçado respondo aqui novamente.

Carol, fiz uma função baseada nesses arquivos.
Seria bom ir aprimorando com mais arquivos nos próximos dias.
O caminho dos arquivos tem algum padrão?

Exemplo dos dados raspados:

Código:

Te amo, Bea! Que coisa mais linda!

O Fernando Barbalho também bolou uma soluçãozinha com regex, dei uma ajustada e funcionou pra primeira página. Vou deixar abaixo! Mas já tô abrindo a sua aqui sim pra ver e aplicar!

E enquanto isso eu fui lá na secretaria pedir pra eles voltarem com o padrão anterior, que funcionava. Eles disseram que vão testar, mas explicaram que antes o PDF era meio emergencial e agora conseguiram automatizar essa lista no sistema deles. Então acho que vai ter padrão com o nome dos arquivos sim, finalmente.

Olha só a solução com regex do Barba:

cime_1<- tabulizer::extract_text("https://seape.df.gov.br/wp-content/uploads/2023/01/cime-20.01.pdf", pages = 1)

str_length("Secretaria de Estado de Administração Penitenciária do Distrito Federal\r\nCentro de Monitoração Eletrônica - CIME\r\n")

cime_1<-
  str_sub(cime_1,115,str_length(cime_1))

cime_1<-
  str_replace_all(cime_1,"\\s(?=[:digit:])|(?<=[:digit:])\\s", ";")

cime_1<-
  str_replace_all(cime_1,"Nome Data de Nascimento UF", "nome;data_nascimento;uf")

write(cime_1, "cime_pag_1.csv")

cime_pag_1 <- read.csv2("cime_pag_1.csv")