Coletando os dados da CPI - Parte I
Aquelas anotações de aprendizado que se a ferramenta criada não ajudar a colocar fogo no país, pelo menos espero te ajudar a aprender algo ou q eu aprenda algo.
Basicamente a CPI da Covid, tem uma porrada de documentos para serem analisados, os dados não são estruturados e muitas são aquelas imagens scanneadas em PDFs. Por ser uma barreira, veio a ideia de colocar um script para rodar um OCR em cima desses PDFs.
Eu vou focar no que tenho mais experiencia, para quem quiser ver os documentos, só seguir o link. https://legis.senado.leg.br/comissoes/docsRecCPI?codcol=2441
Pesquisando e trabalhando com um OCR
Como um OCR não é algo que trabalho no dia a dia, resolvi fazer a pesquisa por CLI e OCRs, com isso caí no Tesseract, que já tinha ouvido falar antes por algum colega de análise de dados e também cai nesse pacote que encapsula a ferramenta mantida pelo Google.
Primeira coisa a se fazer é garantir que o tenha o pacote tesseract-ocr
. Como estou usando MacOS, precisei do Brew para a instalar. Para linux, basta usar o apt-get
e não sei como vc vai fazer usando windows, tenta algo com o chocolatey
.
Após essa instalação vamos ao npm install
padrão e o projeto em si.
Antes de fazer a conversão em si, notei que vou precisar converter os pdfs para pngs, para isso vou usar o imagemagick.
Outro detalhe é que nem todo os dados, precisam passar por um OCR, para poderem ser buscados. Algo para ler PDFs, de forma simples será o caminho.
Como o primeiro arquivo da lista é um PDF que contem imagem, precisei criar um script para converter ele para um png, para isso precisei instalar o imagemagick e criar um script para usar o convert. Você pode conferir no link abaixo:
Esse arquivo gera as imagens necessárias, agora podemos seguir para OCR de fato.
E isso basta usar o arquivo OCR.js com as instruções basicas para extrair os textos das imagens geradas.
Agora, deixo aqui os próximos passos, que serão a parte 2:
- Ler os dados de PDFs com texto, para isso criar um script usando o pacote
pdfreader
- Criar uma forma de api rest ou graphql para pesquisar por todos esses dados e deixar eles estruturados para pesquisa de dados, o problema será onde hospedar tudo isso.
- Criar uma forma de coletar os dados direto do site do governo