Extrair textos de partes/posições definidas do documento

Home Fóruns Fórum Reconhecimento de Textos com OCR e Python Extrair textos de partes/posições definidas do documento

Visualizando 6 posts - 1 até 6 (de 6 do total)
  • Autor
    Posts
  • #37869

    Qual melhor caminho para extrair dados de uma nota fiscal, ou CNH, ou RG usando python, opencv e OCR? Gostaria de aprender como extrair informações de uma determinada posição do documento. No caso de um documento de nota fiscal por exemplo, o script inferir aonde vai estar o cnpj, a descrição dos serviços, o valor, etc… algo que me possibilitasse retornar uma estrutura de chave-valor das informações que escolher extrair. Poderia me passar um direcionamento de como fazer e as ferramentas que devo usar?

    #37916
    Gabriel Alves
    Moderador

      Olá!

      Caso queira fazer a leitura de CNH ou RG, o curso dará uma boa intuição inicial para isso. Em um dos projetos é mostrado como fazer o scan de documentos, o que funciona para o caso desse tipo de documento também. Como adicional, você precisará incorporar outras técnicas de pré-processamento de imagem para que possa extrair o textos nas regiões específicas nesse documento. Dê uma olhada nesse artigo que mostra exatamente como você poderia fazer isso (e tem o código inclusive) -> https://medium.com/stackchain/drivers-license-ocr-cnh-with-python-opencv-and-tesseract-21b0388ae101

      #37918

      Obrigado pelo direcionamento Gabriel, com certeza me ajudará nestes passos iniciais. Cnh e RG, como tem o layout definido/padronizado, capturar as informações nestes documentos parece ser realmente mais simples! Agora, Nota fiscal de Serviço, como tem vários layouts, quais técnicas me orientaria a utilizar/estudar? Teria que treinar algum modelo com os vários layouts de notas, para que a IA consiga inferir na informação correta para cada campo [Razao social, cnpj, valor, etc…], mesmo que estes apareçam em posições diferentes nos documentos?

      #37980
      Gabriel Alves
      Moderador

        Opa, para esse caso se há muitas possibilidades de layout diferentes eu acho que vai ser mais difícil encontrar alguma solução “pré-pronta” que abranja todas essas variações, mas se tiver sorte talvez encontre algo procurando em repositórios abertos como no github. O jeito seria construir o seu script próprio, preparado para extrair as informações dos documentos com layouts da forma que você precisa.

        Encontrei essa abordagem também, talvez possa ser útil.

        Uma alternativa à utilização de técnicas de pré-processamento seria usar algum detector de objetos (como o YOLO). Se treinar bem você consegue obter muita precisão, porém se o layout onde se encontra essa informação varia muito então recomendo tentar uma sugestão que deixo abaixo.

        (aqui há um outro exemplo de como poderia treinar um modelo em deep learning para localizar/classificar partes de um documento.)

        Ainda sobre o uso de técnicas de processamento, ao final da seção “Projeto 1” pode te dar uma intuição maior. Pegue por exemplo aquela imagem que usamos do rótulo com informações nutricionais do produto. Ali foi feita a busca a partir de um termo, onde retornou a posição dele na imagem. Digamos que você não sabe qual será o texto, nesse caso, você precisa saber qual é o padrão de onde ele vai aparecer, ou até mesmo a localização exata dele com base nos outros elementos da imagem. Para isso você pode utilizar as técnicas de processamento de imagem que mostramos nos 3 projetos finais. Por exemplo, se você sabe que a marca sempre aparece na primeira linha da tabela então primeiro você detecta os contornos na imagem (ou melhor, os retângulos) e extrai a área apenas daquele que se encontra mais ao topo (o que significa que constitui a primeira linha da tabela).

        Caso a posição realmente não seja tão óbvia você pode treinar um detector de objetos próprio para detectar a região onde se encontra essas informações (caso não consiga bons resultados com as técnicas de pré-processamento), conforme comentei mais acima.

        Ou seja, se você sabe exatamente qual texto está presente neste documento e você deseja saber se ele está ali (ou se tem alguma palavra que sempre acompanha essa informação marca, por exemplo, “Marca:” [x]) então poderia usar como base a técnica do Projeto 1, pois você consegue localizar a partir do filtro.

        Mas se esse local puder variar muito ao longo do documento (porém mantém uma mesma estrutura visual, ou muito parecida) então talvez o melhor seja treinar um detector de objetos próprio (como o YOLO por exemplo) para localizar essas regiões.

        #37982

        Obrigado pelos direcionamentos Gabriel! Me ajudou bastante.

        #37994
        Gabriel Alves
        Moderador

          Disponha! =)

        Visualizando 6 posts - 1 até 6 (de 6 do total)
        • Você deve fazer login para responder a este tópico.