Reconhecimento de texto em imagens com muitos contornos

Home Fóruns Fórum Reconhecimento de Textos com OCR e Python Reconhecimento de texto em imagens com muitos contornos

Visualizando 2 posts - 1 até 2 (de 2 do total)
  • Autor
    Posts
  • #30895
    Danillo
    Participante

      Olá, tudo bem?

      Estou acompanhando as aulas e em paralelo estou desenvolvendo um projeto de reconhecimento de texto em imagens de componentes industriais que tem muitos contornos. Ex.:

      Exemplo 01

       

      Eu consegui um bom avanço no reconhecimento utilizando algumas técnicas de remoção dos contornos no pré-processamento e, em seguida, realizando o reconhecimento direto com o Tesseract e filtro pela confiança da detecção. Porém, em alguns casos os contornos nos textos são removidos, o que diminui a assertividade ou o não reconhecimento em alguns casos:

      Exemplo 2

      O professor teria alguma sugestão de como melhorar esse processo? Estou na metade do curso e vi apenas algumas técnicas. Tentei aplicar a rede neural EAST no processo (sem remover os contornos) mas não consegui nenhuma melhora ainda.

      Esse é o passo-a-passo executado atualmente:

      1. Conversão para escala de cinza
      2. Threshold Normal (127, 255, Binário Inv)
      3. Remoção de contornos (cv2.findContours – triângulos, retângulos e perímetros conforme a área)
      4. Remoção de linhas horizontais (cv2.morphologyEx)
      5. Remoção de linhas verticais (cv2.morphologyEx)
      6. Reconhecimento de texto (Tesseract)
      7. Filtro de confiança do reconhecimento

      Desde já agradeço,

      Abraços,

      #30928
      Gabriel Alves
      Moderador

        Olá Danillo!

        Talvez a essa altura você já esteja em outra parte do curso e tenha verificado as outras técnicas que tem disponível, caso não tenha então eu recomendaria antes isso.

        Mas caso já tenha visto ou se quiser tentar melhorar o resultado antes disso então eu sugiro que use o resize() para aumentar o tamanho da imagem para pelo menos 150% ou 200% do tamanho da imagem original, basta alterar os parâmetros fx e fy para indicar o fator de escala desejado (nesse exemplo seria 1.5 ou 2.0, respectivamente). Isso é comentado nas aulas sobre pré-processamento, sugiro consultar a aula específica sobre Redimensionamento caso tenha dúvidas sobre como implementar. Você pode realizar esse redimensionamento logo antes de fazer o threshold.

        Sobre a tentativa com o EAST: como é necessário redimensionar a imagem para um tamanho padrão (ex: 320×320) pode acontecer de na hora do redimensionamento apagar alguns textos, ou deixando ele indetectável pois a imagem ficou muito menor do que era antes e assim vários detalhes são perdidos, portanto o EAST não vai ter como detectar certos textos. Aliás, esse é o comportamento esperado já que sua imagem é proporcionalmente bem grande em comparação com o texto, então veja que os números aparecem bem pequenos nela. Para tentar resolver isso você pode aumentar o tamanho da imagem fornecida à rede, que por padrão deixamos 320 x 320, mas você pode ir testando com tamanhos maiores tipo pelo menos o dobro ou o triplo desse tamanho padrão (lembrando que esse tamanho da imagem deve ser multiplo de 32), sugiro você ir testando esses tamanhos.

        • Esta resposta foi modificada 2 anos, 6 meses atrás por Gabriel Alves.
      Visualizando 2 posts - 1 até 2 (de 2 do total)
      • Você deve fazer login para responder a este tópico.