Dúvida: Como usar o OCR de maneira eficiente?
Recentemente, estive trabalhando em um projeto no qual eu precisaria ler a foto de uma nota fiscal, usando a API (veja o que é uma API) do Google Cloud Vision para extrair o texto de uma nota e apartir dele, inferir o que seria descrição, preço, nome, enfim categorizar o texto.
O Meu grande problema 🤔
Nesse ponto eu me deparei com um grade dilema: como eu poderia encontrar um sentido em um monte de texto totalmente desestruturado? Percebi que isso era muito mais difícil do que eu pensei no início, e comecei a buscar soluções.
Surgem as ideias 💡
Brincando de batalha naval 💣
Comecei a escrever códigos que me vinham à mente, pensei em usar a posição relativa entre os blocos de texto (usando cordenadas como no jogo batalha naval) e seus possíveis títulos. Meu colega de trabalho até usou uma lib para desenhar os blocos identificados pela API do Cloud Vision, mas mesmo assim, não conseguimos transformar isso em algo semânticamente útil para o código. Além disso essa abordagem pareceu perigosa, pois existem inúmeros tipos de nota e a própria API nem sempre separa os blocos de texto em coisas que fazem sentido.
Apelando para o machine learning 🤖
Depois de quebrar a cabeça imaginei que usar inteligência artificial para inferir os labels de cada parte do texto pudesse ajudar, mas como também sou novo nesse assunto, continuei bem perdido. Caso possa me ajudar nessa parte de IA, eu detalhei melhor nesse outro post onde eu falo das minhas dúvidas em relação à tokenização de strings. Mas se você acha que eu devo tentar outra abordagem, por favor, me conte aqui nos comentários.
Outros posts que eu escrevi com muito carinho 😄
Se você curte NeoVim e aplicações de terminal, por favor não deixe de visitar o post onde eu conto Por que você deveria usar NeoVim para programar e A melhor "IDE" que você verá hoje.