O que é OCR?
O reconhecimento óptico de caracteres (OCR) refere-se ao processo de identificação automática a partir de caracteres ou símbolos de uma imagem pertencentes a um alfabeto especificado. Neste post vamos nos concentrar em explicar como usar OCR no Android.
Após reconhecer o texto da imagem, ele pode ser usado para:
-
- Guardar para armazenamento.
- Processá-lo ou editá-lo.
- Translate-o para outro idioma.
Popularidade dos smartphones combinada com câmeras cada vez melhores levou a um aumento no uso deste tipo de técnicas de reconhecimento e uma nova categoria de aplicativos móveis que fazem uso deles.
No dispositivo ou na nuvem?
Antes de usar uma biblioteca de OCR, é necessário decidir onde o processo de OCR deve ocorrer, no smartphone ou na nuvem.
Dependente dos requerimentos do aplicativo, cada abordagem tem suas vantagens e desvantagens.
Se o aplicativo requer, por exemplo, realizar o reconhecimento de caracteres sem conexão à Internet, o mecanismo de OCR será lançado no próprio dispositivo. Desta forma, o envio de imagens para um servidor poderia ser evitado porque as câmeras montadas nos dispositivos atuais podem tirar fotos grandes.
Por outro lado, as bibliotecas de OCR tendem a ocupar muito espaço, sendo necessário baixar cada uma das linguagens para reconhecer, como explicaremos abaixo.
Que bibliotecas podem ser usadas?
No link a seguir à Wikipedia há uma tabela comparativa com todas as bibliotecas de OCR, plataformas suportadas, linguagens de programação usadas no seu desenvolvimento e outras informações relevantes.
Link: http://en.wikipedia.org/wiki/ List_of_optical_character_recognition_software
Neste post vamos usar a biblioteca Tesseract, que se destaca acima das demais. Ela é Open Source, tem SDK, foi criada pela HP e é atualmente desenvolvida pelo Google.
OCR no Android usando a biblioteca Tesseract
Althoug Tesseract pode ser executado em um servidor Linux como um serviço em nuvem, neste post vamos implementar a biblioteca Tesseract em um aplicativo Android, lançando o mecanismo de OCR no próprio dispositivo.
O projeto Tesseract original para Android é chamado Tesseract Android Tools e contém ferramentas para compilação das bibliotecas Tesseract e Leptonica para uso na plataforma Android, e uma API Java para acesso a essas bibliotecas nativamente compiladas.
Link: https://github.com/rebbix/tesseract-android-tools/tree/master/tesseract-android-tools
Para nosso exemplo, vamos usar um garfo do Tesseract Android Tools, que adiciona mais funcionalidades.
Link: https://github.com/rmtheis/tess-two
Exemplo de OCR no Android
Precisamos de alguns passos simples para realizar OCR no Android:
Considerações
- A qualidade de reconhecimento pode variar dependendo das condições de iluminação da imagem, resolução da câmera, fonte de texto, tamanho do texto e outros …
- Para alcançar a maior qualidade possível, é muito importante centrar o texto na imagem e a imagem está devidamente focada.
Pré-visualização usando OCR em um aplicativo tradutor
O vídeo a seguir mostra parte do aplicativo que estou desenvolvendo para meu projeto final de graduação (TFG), onde uso as técnicas de OCR descritas.