A tecnologia OCR e a misteriosa língua birmanesa

A República da União de Mianmar (anteriormente – Birmânia) – um país do Sudeste Asiático que de 1962 a 2010 esteve sob a ditadura militar, e nos últimos 5 anos começou a se abrir para o mundo intensificando sua cooperação comercial e cultural.

Mianmar

Um dos nossos parceiros na região apresentou um projeto de reconhecimento de caracteres (OCR) do idioma birmanês. O objetivo principal do cliente era monitorar a mídia birmanesa (começando de reconhecimento de texto e depois fazendo a tradução automática para o inglês).

O birmanês tem muitos dialetos e conta com um conjunto de letras usadas na imprensa e mensagens oficiais, o que corresponde aproximadamente a 30% de todos os caracteres usados na região. Este conjunto é formado de 33 consoantes e 12 caracteres adicionais. Tivemos de fazer o reconhecimento através de fotos tais como, por exemplo aquele em baixo:

o birmanês

Infelizmente no nosso meio linguístico não se encontrou uma pessoa que conhecesse esse idioma (que não é surpreendente) e os nossos especialistas, responsáveis pelo projeto, tiveram de começar aprender o idioma a partir do zero.

A escrita birmanesa caracteriza-se pelo seu alfabeto silábico onde cada consoante é pronunciada “por padrão” juntamente com o som da vogal [a]. Já as outras vogais são identificadas com ajuda de letras individuais ou caracteres auxiliares sobre, sob, antes, depois ou mesmo em torno da consoante. No processo descobrimos um fato interessante: as letras birmanesas são tão redondas porque antigamente elas eram escritas em folhas de palmeira, e o estilo de linhas retas poderia danificar estas folhas.

Seguimos. A língua birmanesa possui ainda um diacrítico duplo, ou seja, caracteres adicionais podem aparecer simultaneamente tanto sob, como também sobre o principal. E isso, como veremos a seguir, é de grande importância no processo de reconhecimento.

Aos que desejam se aprofundar nos meandros da língua birmanesa recomendamos artigos bastante detalhados na Wikipédia, e agora vamos apresentar como essas características especiais criaram dificuldades adicionais na “inclusão” da língua birmanesa em nossa tecnologia de OCR.

Vamos recordar rapidinho como acontece o reconhecimento. Recebemos a imagem com texto, fazemos correções de distorções, transformação em Preto/Branco e, em seguida, determinamos os blocos (cabeçalhos, texto, notas de rodapé, figuras, tabelas, etc.) da página. Depois trabalhamos com esses blocos de texto fazendo a divisão de texto por linhas, e as palavras por letras. Na etapa seguinte fazemos o reconhecimento dessas letras. Finalmente ao montar o resultado tudo acontece vise versa: juntamos as letras em palavras, palavras em líneas e as linhas em texto.

Acontece que não existiu nada de especial no processamento de imagens e divisão em blocos, vamos falar logo a partir da separação em linhas.

Devido à natureza da linguagem inicialmente foi muito complicado dividir as linhas mais curtas. Em nossos algoritmos existem características adicionais de linhas. Uma delas é a linha de base na qual estão os principais símbolos. Esta linha tem que ser definida a fim de construir uma conjetura correta para melhor reconhecimento.

Para destacar a linha de base usamos estatísticas: analisamos o histograma (projeção de pontos pretos na vertical) à procura de picos. Nos histogramas dos idiomas europeus são vistos 3 picos bem definidos que formam a linha principal (linha de base e altura das letras minúsculas):

burmese-language-4

O idioma birmanês tem um grande número de símbolos que vão além dos limites da parte principal da linha, contribuem para obter picos adicionais significativos no histograma. Por isso os algoritmos configurados para reconhecimento de idiomas europeus não identificaram os principais parâmetros da sequência de caracteres. Em baixo você pode ver que o início da linha não foi reconhecido corretamente.

burmese-language-5

Então para identificar corretamente as linhas em birmanês foi necessário reconfigurar o algoritmo.

Depois de definir as linhas começamos a procurar os intervalos entre as palavras e sinais. Na construção do histograma, apenas horizontal, procuramos por intervalos e determinamos quais são os espaços e a distância entre os caracteres. A definição dos espaços no idioma birmanês transcorreu sem problemas.

Depois iniciamos o trabalho com os fragmentos de texto “palavras” (embora esta seja uma expressão não muito aplicável ao birmanês, pois nele os espaços separam partes da frase), começando a reconhecer cada fragmento separadamente. Esses fragmentos precisavam ser divididos em símbolos. Procuramos novamente os picos e interstícios (intervalos que podem ser possivelmente pontos de divisão) no histograma. Alguns pontos de divisão foram mais ou menos visíveis e para testar os outros usamos heurísticas especiais. Nas línguas europeias o histograma é assim:

burmese-language-6

No birmanês é assim (um pouco diferente, verdade?):

burmese-language-7

Depois de determinar os pontos de divisão de cada símbolo começamos o reconhecimento por símbolo.

Não vamos atormentar vocês com outros detalhes (mais tinha muitos por causa da especificidade da língua), digamos apenas que nós conseguimos isso!

Nós fizemos todo o trabalho em 4 meses! Conseguimos chegar até 97% de precisão no reconhecimento da escrita (contra os 94% que havíamos prometido ao cliente).

Desejamos ကောင်းသောကံ a todos!

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

*