quinta-feira, 5 de setembro de 2013

'Simplecv' Desinclinação da Imagem + Normalização + Reconhecimento Optical de Caracteres


OCR é uma tecnologia complexa que converte imagens de texto em formatos editáveis. OCR permite processar livros digitalizados, screenshots e fotos com texto e obter documentos editáveis ​​como TXT, DOC ou PDF. Esta tecnologia é amplamente utilizada em muitas áreas e os sistemas de OCR mais avançados pode lidar com quase todos os tipos de imagens, mesmo tão complexo como páginas de revistas digitalizadas com imagens e colunas ou fotos de um telefone celular.


Segue um exemplo Simples que será feito o reconhecimento de um Objeto na imagem para que seja aplicado a  Desinclinação da Imagem, e depois seja feita a otimização da mesma, por final aplicado o reconhecimento optical de caracteres!

Imagem que será Tratada:



Imagem após a desinclinação:




Imagem Binarizada :


Imagem Final Com o Reconhecimento Optical de Caracteres:


O Algoritmo :

#!/usr/bin/python
# -*- coding: utf-8 -*-

from SimpleCV import *
import time


img = Image("ret.png")

blobs = img.findBlobs()
print "Objetos Encontrados --> %i\n" % (len(blobs))
if blobs:
    blobs = blobs[-1]
    print "Angulo do Objeto --> %i\n" % (blobs.angle())
    print "Aplicando rotação para desinclinação da imagem!"
    img = img.smartRotate()    
    bin = img.binarize()
    text = bin.readText()[:-5]
    if text:
        string = "Texto reconhecido da Imagem:-->%s" % (text)
        img.drawText(string,35,15,color=Color.AZURE,fontsize=35)
      
img.show()   
time.sleep(5)





Os algorimos OCR são também muitos usados para reconhecimento de texto em placas de carros!


7 comentários:

  1. Rodrigo, e se fosse necessário dividir por exemplo, a área de captura da câmera e 4 partes fixas, ou em 4 quadrantes fixos, ela conseguiria lera a placa dos 4 carros ?

    ResponderExcluir
  2. sim conseguiria, pois Trataríamos, cada parte como uma imagem separada fazendo o tratamento correto, e geraria um conjunto de 4 strings, se quiser saber como se faz a divisão da tela em SimpleCV veja meu exemplo:

    http://help.simplecv.org/question/2169/can-get-sidebyside-images-to-work/#2188

    ResponderExcluir
  3. Legal vou testar, me adiciona no skype max.myller.cardoso ...

    ResponderExcluir
  4. Olá Rodrigo,

    Estou me aventurando com SimpleCV e tentei executar esse exemplo, mas dá erro no método smartRotate.
    Saberia dizer o porquê?
    Não consigo encontrar referência sobre esse método.
    Grato

    ResponderExcluir
    Respostas
    1. cole o erro aqui por gentilesa

      Excluir
    2. possívelmente seja por que você não instalou a biblioteca pra fazer OCR, python-tesseract

      Excluir
    3. Olá Rodrigo,
      O erro do Python indicava que o método smartRotate() não estava definido.
      Depois de pesquisar mais um pouco, acabei descobrindo que esse método não faz parte da classe Image do Superpack disponível no SimpleCV.org (v. 1.3). Eu apenas o encontrei no SimpleCV-master do GitHub do projeto. Depois de instalar essa outra versão, o método funcionou.
      Grato pela atenção.

      Excluir