Código utilizado para:
- Processar dados relativos à cota para o exercício da atividade parlamentar
- Extrair dados relativos às notas fiscais relacionadas a cada despesa:
- Chave das NFs
- Dados gerais da nota (quando o documento fornecido pelo site da câmara perimitir)
- Fazer o download das notas fiscais relacionadas a cada despesa, quando necessário
- Fazer o download de cupons fiscais referênciados nas notas fiscais
- Extrair dados das notas e cupons baixados
- Processar dados extraídos, com o objetivo de identificar possíveis irregularidades
- Gerar relatórios com os dados extraídos
O código só foi testado para uso, para rodar em outros sistemas operacionais, serão necessárias adaptações ao código
Inicialmente deve-se copiar o arquivo ".env.sample" para ".env"
Nesse arquivo devem ser preenchidas as variáveis de ambiente.
Para utilizar o recochecimento de texto dos PDFs, deve-se obter uma chave para o Vision Api, do goolge. O serviço é gratuito para até 1000 requisições mensais, acima dessa quantidade há um custo de 1,5 dólares para cada mil requisições. Esse custo pode ser abadito dos 300 dólares de crédito que a Google fornece para o primeiro ano de uitilização dos serviços.
Caso não seja configurada uma chave para o api, as chaves de algumas NFs deverão ser inseridas manualmente.
Para utilizar os serviços de resolução de captcha, deverá ser obtida uma chave para o API do site ANTI-CAPTCHA. O uso do serviço fica entre 1 e 2 dólares para cada 1000 captchas resolvidos.
Caso não seja configurada nenhuma chave para a resolução dos captchas, esses deverão ser resolvidos manualmente pelo usuário.
Na raíz do projeto, deve-se criar o container do banco de dados
docker-compose up --no-start
Após a criação basta inicializá-lo
docker-compose start
npm install -g markdown-folder-to-html
Inserindo dados das cotas parlamentares (obtidos do site da câmara) no bando de dados
./nfDownloader import-expenses \<ARQUIVO JSON\>
./nfDownloader import-secretaries ./inputs/dbJson/Secretarios.json
./nfDownloader donwload-doc-files \<JSON COM IDS DOS DOCUMENTOS\>
O repositório possui um json de exemplo para o download de alguns documentos.
./nfDownloader donwload-doc-files ./inputs/example_docIds.json
./nfDownloader find-keys \<JSON COM IDS DOS DOCUMENTOS\>
Pode-se utilizar o json de exemplo:
./nfDownloader find-keys ./inputs/example_pdfDocIds.json
O códgio tenta localizar o texto com a chave no PDF, caso isso não seja possível (porque o PDF é formado por imagens, por exemplo) o PDF será aberto. O usuário deverá, então, tirar um print screen da área em que o texto da chave se encontra, e apertar as teclas CTRL+SHIFT+ALT, para que o programa possa continuar rodando. O código usuará uma API da Google para extrair o texto da imagem e repetirá o processo para as próximas notas fiscais.
A extração da chave das NFs através de imagens pode conter erros. Para verificar e corrigir esses erros, é possível gerar um arquivo HTML, onde o usuário poderá conferir os dados extraídos. Para facilitar esse processo, o texto da chave fica vermelho quando o número de digitos ou o digito verificar não estiverem corretos. Ao final do processo o usuário pode baixar um arquivo json com os novos dados, para serem atualizados no banco de dados.
./nfDownloader gen-key-html \<JSON COM IDS DOS DOCUMENTOS\>
Pode-se utilizar o json de exemplo:
./nfDownloader gen-key-html ./inputs/example_pdfDocIds.json
Após preencher os campos do HTML, deve-se baixar o arquivo json contendo os dados clicando em "submit", no fim do arquivo. Esse arquivo deverá ser usado como entrada na próxima etapa.
./nfDownloader process-key-data \<JSON COM IDS DOS DOCUMENTOS\>
Pode-se utilizar o json de exemplo:
./nfDownloader process-key-data ./inputs/example_pdfDocIds_keys.json
./nfDownloader process-docs \<JSON COM IDS DOS DOCUMENTOS\>
Pode-se utilizar o json de exemplo:
./nfDownloader process-docs ./inputs/example_docIds.json
Deve-se processar os documentos para que a chave das nfs a serem baixadas seja extraída.
./nfDownloader donwload-nf-list \<JSON COM CHAVE DAS NFs\> -r -p\<Número de navegadores em paralelo\>
A opção "-r" indica que arquivos existentes serão sobrescritos, e a opção "-p 10" indica que serão executadas 10 instâncias em paralelo para baixar os arquivos. Quando não há uma chave para o API do anticaptcha disponível, o usuário poderá resolver os captchas manualmente. Após resolver cada captcha, basta pressionar CTRL+ALT+SHIFT para que o programa continue a rodar. A resolução manual pode ser utilizada com várias instancias em paralelo, as páginas com captchas para resolver serão trazidas para frente, uma por vez.
./nfDownloader donwload-doc-list \<JSON COM IDS DOS DOCUMENTOS\>
Pode-se utilizar o json de exemplo:
./nfDownloader donwload-doc-list ./inputs/example_docIds.json -r -p 10
A opção "-r" indica que arquivos existentes serão sobrescritos, e a opção "-p 10" indica que serão executadas 10 instâncias em paralelo para baixar os arquivos.
./nfDownloader process-nfs \<JSON COM IDS DOS DOCUMENTOS\>
Pode-se utilizar o json de exemplo:
./nfDownloader process-nfs ./inputs/example_docIds.json
Baixa cupons fiscais referenciados em NFs, baseado em arquivo json com lista de documentos relacionados
./nfDownloader donwload-doc-children \<JSON COM IDS DOS DOCUMENTOS\>
Pode-se utilizar o json de exemplo:
./nfDownloader donwload-doc-children ./inputs/example_docIds.json -p 10
Processa cupons fiscais referenciados em NFs, baseado em arquivo json com lista de documentos relacionados
./nfDownloader process-nfs-children \<JSON COM IDS DOS DOCUMENTOS\>
Pode-se utilizar o json de exemplo:
./nfDownloader process-nfs-children ./inputs/example_docIds.json
./nfDownloader generate-report \<JSON COM IDS DOS DOCUMENTOS\>
Pode-se utilizar o json de exemplo:
./nfDownloader generate-report ./inputs/example_docIds.json