Quarentena Maker – Dia 5: Como extrair código do boleto

A encomenda que fiz está um pouco atrasada, mas os boletos são fiéis ao prazo. Não que eu esteja ansioso para pagá-los, já que para tal feito, dinheiro é um pré-requisito. Bem, quem paga conta pela Internet sabe o sofrimento que é digitar o número do boleto, e essa é uma tarefa que não me empolga. Para facilitar, vejamos como extrair código do boleto para facilitar as coisas.

Como extrair código do boleto em lote?

Processamento em lote é uma especialidade do shell script. Dá pra fazer loucuras no shell do Linux sem precisar fazer um programa elaborado, inclusive conexão com a Internet, como mostrei nesse artigo de sockets em shell script. Com a ação conjunta, podemos extrair os números e mandar para um servidor externo, ou disponibilizar o dado via socket, para ser consultado externamente. Enfim, o céu é o limite. Aproveito o parágrafo para pedir que se inscreva no canal DobitAoByteBrasil no Youtube, se ainda não for inscrito.

Esse processo pode ser feito em um desktop ou em um Raspberry. Não posso afirmar que funcione em placas MIPS devido à limitação de tamanho, considerando que será necessário instalar um programa um pouco “obeso”. Comecemos por ele.

sudo apt-get install abiword

Tendo instalado o programa que fará a conversão, hora de partir para o script shell. Basicamente são dois loops, um deles faz a conversão e o outro faz a extração da informação. Se não sabe nada de shell script, no meu curso gratuito de Raspberry Pi (que outrora estava na Udemy) poderá ser de grande auxílio.

Salve o conteúdo abaixo em um arquivo com extensão “.sh”:

#!/bin/bash

ls *.pdf|while read line; do
    abiword --to=txt "$line"
done

ls *txt| while read line; do
    egrep -v '[[:alpha:]]|/|,|^$' "$line"|egrep '\.' >code-"$line"
    rm -f "$line"
done

Dê permissão de execução para o script. No exemplo, chamei de “numero_de_boleto”:

chmo 700 numero_de_boleto.sh

Agora é só criar um diretório contendo os boletos, colocar o script lá dentro e executá-lo:

./numero_de_boleto.sh

O resultado é um arquivo com o mesmo nome do boleto, com extensão “.txt” e com prefixo “code-“.

Eu dei uma borrada nos números pra não correr risco de alguém pagar meu boleto. O resultado é simples e direto:

extrair código do boleto

Extrair pdf em sistema sem servidor gráfico

Apesar de ter sido feito tudo por linha de comando, o Abiword é um programa gráfico e possui dependências do X. Se estiver utilizando um container docker ou um sistema Linux sem servidor gráfico, pode usar outra coisa; o pdftotext. É isso que o Abiword usa por trás. Nesse caso, uma única linha do script precisa ser modificada, além da instalação do programa:

sudo apt-get install poppler-utils

E o script:

#!/bin/bash

ls *.pdf|while read line; do
    pdftotext "$line" $(echo "$line"|sed -re 's/\.pdf//').txt
done

ls *txt| while read line; do
    egrep -v '[[:alpha:]]|/|,|^$' "$line"|egrep '\.' >code-"$line"
    rm -f "$line"
done

Agora só falta o dinheiro pra pagar, o resto está pronto!

Quarentena Maker – Dia 5:  Extraí o código de barras do boleto. Agora preciso extrair dinheiro do caixa eletrônico, mas receio que esse script shell não será o suficiente. Vou pensar em algo para “automatizar” o pagamento.

 

Revisão: Ricardo Amaral de Andrade

Djames Suhanko

Djames Suhanko é Perito Forense Digital. Já atuou com deployer em sistemas de missão critica em diversos países pelo mundão. Programador Shell, Python, C, C++ e Qt, tendo contato com embarcados ( ora profissionalmente, ora por lazer ) desde 2009.