Preciso criar um aplicativo Alcorão e quero ler os versículos quando um usuário o tocar. O problema que estou enfrentando é que alguns versículos podem se expandir para uma linha e meia (verso destacado em vermelho) ou apenas caber em um quarto de linha (verso destacado em verde). Portanto, adicionar cada versículo à visualização de texto ou outra visualização não funcionará.
Quero detectar versos como os vermelhos na segunda imagem. Eu tenho arquivos de áudio para os versos, então não há necessidade de conversão de texto em fala
image-processing
text-recognition
Aswin Anand
fonte
fonte
Respostas:
Isso pode ser resolvido de maneira bastante direta com a correspondência simples de modelos. Não sei exatamente como você o configurou; portanto, descreverei o algoritmo em geral e usarei ilustrações.
Observe que os números dos versículos têm uma borda distinta que pode ser facilmente usada para detectar o início e o fim de um versículo. Portanto, crie um modelo binarizado para esse padrão e armazene-o. Algo assim:
Como o número de linhas em uma tela é conhecido antecipadamente (você está formatando a página) e cada verso tem uma altura constante, é possível inferir facilmente (algoritmicamente) onde as coordenadas Y das linhas centrais dos versos devem estar na tela . Isso demonstra a ideia:
Quando o usuário tocar em um verso, obtenha as coordenadas XY e encaixe a coordenada Y no centro de versículos mais próximo.
Em seguida, iniciando com a coordenada X, execute uma correspondência simples de modelo (correlação cruzada) nessa linha. A primeira partida (pico na correlação cruzada) na direção para frente (para a esquerda) será o ponto final do verso. Se não houver correspondências na direção reversa (à direita), mova um verso para cima (o que você pode fazer, porque conhece a coordenada Y da linha central) e repita. A primeira partida do lado esquerdo será o ponto de partida do verso. Da mesma forma, se não houver correspondência na linha, desça uma linha e repita.
Aqui está uma pequena ilustração da ideia. A caixa amarela é onde o usuário toca o verso. Você faz a correlação cruzada com o seu modelo e os círculos azuis serão a correspondência.
Eu também uso a correspondência de modelos nesta resposta , se você estiver interessado em vê-lo em ação.
Depois de determinar o ponto de partida do verso, use um reconhecedor de texto em árabe para deduzir o número do verso dentro dessa borda e reproduzir o arquivo de áudio correspondente.
Solução mais simples:
Uma solução mais simples, se você não quiser passar por isso, é armazenar as coordenadas XY dos pontos iniciais do verso (simplifique e use os pontos centrais) e depois de obter as coordenadas da entrada do usuário, é possível até a linha central e depois caminhe para trás para ver onde o versículo começa. Isso pode ter a vantagem de ser mais rápido.
Não propus isso como a primeira solução, porque você parecia rejeitar uma idéia semelhante nos comentários. No final, isso depende de suas restrições - você prefere fazer um trabalho computacional (correspondência de modelo - que, a propósito, também exige que você armazene o modelo) ou usar memória (armazenar coordenadas).
Se eu fosse você, provavelmente aceitaria este, mas a solução de processamento de imagens pode ser divertida de experimentar.
fonte