Um projeto extra-oficial (parte 3)

Detectando a localização de um campo

No primeiro artigo da série, expliquei o que são os formulários Declaração de Nascido Vivo e Declaração de Óbito. Falei também sobre a ideia maluca de construir uma ferramenta de ICR (intelligent character recognition) “em casa”.

Na segunda parte falei sobre como detectar o número impresso do formulário usando um OCR padrão, um passo necessário para conseguir vincular uma imagem do formulário com os dados que foram digitados no banco de dados de Estatísticas Vitais.

A próxima tarefa é localizar o campo “data de nascimento”, pegar cada dígito e utilizar para treinar um algorítmo de machine learning.

Felizmente, o formulário possui uma série de retângulos pretos na lateral que demarcam os grupos de campos:

Localizar este retângulo é relativamente simples. Primeiro fazemos algumas transformações morfológicas para eliminar ruídos e isolar áreas mais “massudas” da imagem:

Uma vez localizado esse retângulo, constatei que é possível obter a localização provável do campo de data com uma fórmula simples:

Mas como obter a localização exata dos dígitos? Uma das formas de localizar linhas verticais e horizontais é fazer transformações morfológicas usando kernels que sejam linhas horizontais e verticais:

A partir destas linhas é possível determinar a localização dos dígitos.

Agora o trabalho é separar cada dígito em uma imagem diferente:

Próximo passo? Refinar um pouco o pré-processamento e depois “ensinar” um algorítmo de ML a reconhecer os dígitos preenchidos manualmente através de exemplos de dígitos dos formulários. Mas isso fica para a parte 4!

Like what you read? Give Paulo Scardine a round of applause.

From a quick cheer to a standing ovation, clap to show how much you enjoyed this story.