Home › Fóruns › Fórum Reconhecimento de Textos com OCR e Python › Reconhecimento de textos em imagem
- Este tópico contém 3 respostas, 2 vozes e foi atualizado pela última vez 1 ano, 6 meses atrás por
Gabriel Alves.
- AutorPosts
- 20 de julho de 2023 às 10:38 #41339
Estou tentando fazer o reconhecimento de textos na imagem a seguir:
Neste exemplo existe apenas os números a serem reconhecidos, porém em alguns casos pode ser encontrado letras também.
Tentei usar com o EAST mas ele não foi muito assertivo no reconhecimento, fiz alguns processos de limpeza da imagem porem quando é dentro do circulo o número acaba sendo apagado.
Alguma sugestão do melhor processo para este tipo de reconhecimento?
25 de julho de 2023 às 18:12 #41379Olá Carlos!
Nesse caso tenho alguma sugestões. A primeira (e mais rápida) seria testar com o algoritmo EasyOCR, que é mostrado nas seções seguintes do curso. Pode ser que apenas usando ela já consiga resultados ideais ou próximos dos ideais, o que apenas demandaria mais alguns ajustes. Eu não sei qual é o tamanho original da imagem que você está enviando para fazer o OCR, mas se for essa que você mandou então eu recomendo fazer o redimensionamento dela, aumentando em 2x o seu tamanho, provavelmente obterá resultados melhores (você pode tentar o mesmo com o EAST também, só para ver quais serão os resultados).
Para detectar os números dentro do círculo, tem algumas abordagens que você poderia tentar. Primeiro seria detectar a localização dos círculos na imagem, isso pode ser feito usando o método HoughCircles, veja aqui https://www.geeksforgeeks.org/circle-detection-using-opencv-python/
Com isso, obtém-se as coordenadas da localização dos círculos na imagem, então você pode filtrar apenas essas regiões e descartar o resto. Ou melhor: processar cada região por vez (colocar o código do processamento + OCR dentro do laço de repetição, que percorre todos os círculos detectados). Assim, será processado cada um dos círculos por vez.
Após localizados, você pode aplicar dentro das regiões do círculos as técnicas de pré-processamento mostradas no curso. Eu indicaria primeiro realizar o redimensionamento (aumentar a imagem em pelo menos 2x) assim você terá uma probabilidade maior de reconhecimento correto.
4 de agosto de 2023 às 10:13 #41478Olá Gabriel!
O uso do EasyOCR surtiu grandes resultados, usando a detecção de círculos na imagem também ajudou bastante, ai para cada circulo encontrado eu rodo o reader do easyOCR, dessa forma o reconhecimento é bem certeiro porém o tempo de processamento é bem alto, por rodar o reader várias vezes. Fiz alguns processos de limpeza da imagem para retirar o máximo possível dos contornos, inclusive os círculos, mas tentando preservar os números, tive bons resultados mas não igual o anterior detectando os círculos porém consegui reduzir bem o tempo dessa forma. Vou conseguir trabalhar com ambos os processos, dependendo da necessidade da imagem.
Obrigado pela ajuda!
17 de agosto de 2023 às 11:20 #41618Opa! Disponha, Carlos! Que bom que funcionou bem para você =)
Realmente o tempo de processamento pode ser bem elevado nesses casos pois o OCR é executado dezenas de vezes na mesma imagem, por isso é bem interessante pensar nessas formas de otimização que você comentou. O que ajuda bastante é processar na GPU, caso já não esteja fazendo isso. Mas no geral, para aperfeiçoar a performance em si vai exigir muita tentativa e erro para tentar ajustar ao máximo, por exemplo se for manter a detecção de círculos em seu algoritmo é interessante testar com diferentes parâmetros para manter somente os círculos mais perfeitos ou não tão pequenos – dá para facilmente criar um filtro com base na área em pixels do círculo, assim ignorando os círculos muito pequenos ou muito grandes detectados na imagem e que portanto seriam falsos-positivos, já que todos os círculos de interesse (que possuem o número dentro) tem o mesmo tamanho.
Em último caso, se a sua aplicação não exigir que o resultado seja apresentado instantaneamente no mesmo segundo então seria interessante se concentrar mais agora em maneiras de garantir a precisão do que garantir a velocidade, portanto seguindo essa mesma lógica já pode ser o suficiente.
- AutorPosts
- Você deve fazer login para responder a este tópico.