Esse projeto nasceu de uma iniciativa de combate a SPAM. Spammers no telegram usam novas táticas todos os dias e corrida de gato-e-rato nos faz usar tecnologia para sanar e bloquear as iniciativas desses spammers.
Eu particularmente sou extremamente ativo no telegram, e lidero alguns vários grupos. Nesses grupos temos problemas com SPAM. São em geral bots que querem falar dos mesmos assuntos: Bitcoin, Ethereum, Elon Musk… enfim SPAM. Poderia ser dinheiro grátis, mas em um grupo de tecnologia, é bobagem por estar fora do contexto do grupo.
Nessa corrida contra a nova tática, descobrimos palavras-chave a serem bloqueadas. URL’s, e muito mais. Agora eles estão usando novas táticas e nós precisamos reagir. Agora a moda é enviar imagens e links do Youtube. E é sobre imagens que vamos falar hoje.
Tesseract
Tesseract é um software de reconhecimento ótico de caracteres de código aberto (Licença Apache 2.0)[1], originalmente desenvolvido pela Hewlett-Packard e foi por um tempo mantido pelo Google; atualmente o projeto está hospedado no GitHub (fonte Wikipedia).
API .NET Core
Tesseract é utilizado via linha de comando. Você envia 2 parâmetros: O path de uma imagem e um path de output e ele faz a mágica dele.
Nós precisávamos transformar em uma Web API. Isso é útil para poder reaproveitar essa API em outros contextos.
Docker
A mágica dos containers faz com que só precisemos de 1 linha de código para instalar o binário em nossa imagem. Uma vez feito isso, estamos prontos para realizar sua chamada via linha de comando (dinamicamente pela aplicação web).
Antes
... EXPOSE 80 FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build WORKDIR /src ...
Depois
... EXPOSE 80 RUN apt update && apt install tesseract-ocr libtesseract-dev -y FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build WORKDIR /src ...
https://github.com/luizcarlosfaria/OcrApi/blob/master/TesseractApi/Dockerfile#L6
O primeiro passo foi avaliar a forma de uso. Depois entender como instalar. E fiz isso em um container, live. Ao lado do que estava fazendo, fui criando o DockerFile do projeto. Uma vez ok, comecei a colocar uma API por cima e assim começamos a testar integrado ao telegram.
Embora não tenha tido muito sucesso na tarefa de lidar com o evento de envio de foto com nodered,. Subi um outro projeto de bot que estou criando e demos vida com ele. Ficou muito legal.
Confira o projeto no github https://github.com/luizcarlosfaria/OcrApi
Conclusão
Não precisa ser extremamente complexo.
Não precisa ser extremamente sofisticado.
As vezes o simples e óbvio é o caminho mais eficiente e eficaz.
Docker ajuda pois estamos falando de binários específicos, que podemos empacotar junto com nossas aplicações. A próxima demanda é obter os metadados do youtube.
Lives
Todo esse rolê foi narrado em 2 lives no mesmo dia. Eu precisei interromper a live por conta da aula da turma do Docker Definitivo.
0 comentários