Sumário - Computer Vision Research Group
Transcrição
Sumário - Computer Vision Research Group
Universidade de São Paulo Instituto de Matemática e Estatística MAC5749 Análise e Reconhecimento de Formas Exercício-Programa 2: OCR - Validação Alexandre Noma, Arnaldo Lara, Fabrício Martins Lopes, e Jesús Mena-Chalco {noma,alara,fabriciolopes,jmena}@vision.ime.usp.br 10 de dezembro de 2006 Sumário 1 Introdução 2 2 Material e métodos 2 2.1 Conjunto de dados de imagens usado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.2 Pré-processamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.3 Segmentação dos caracteres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.4 Extração de características . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.5 Treinamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.6 Classicação usando o vizinho holográco mais próximo . . . . . . . . . . . . . . . . . . . . . . . 7 2.7 Processo de validação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.7.1 Validação cruzada generalizada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.7.2 Validação deixa-um-fora . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 3 Resultados 9 3.1 Reconhecimento de caracteres (EP1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 3.2 Validação do reconhecimento (EP2) 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Conclusões 11 1 1 Introdução O objetivo deste trabalho foi aplicar conhecimentos teóricos de Análise e Reconhecimento de Formas para desenvolver uma aplicação de reconhecimento óptico de caracteres (OCR, optical character recognition ). De maneira resumida, o objetivo de um sistema OCR é reconhecer os caracteres de uma imagem dada como entrada e extrair o texto para um arquivo texto editável. Neste trabalho, as imagens de entrada estão em tons de cinza, cujo conteúdo é um texto disposto horizontalmente e de cima para baixo. Dessa forma, não é feita a separação de região textual de regiões não textuais como fotos, guras geométricas e outras. Abordagens clássicas de OCR, como descrito em [2, 4], sugerem o uso de etapas como segmentação, extração de características e reconhecimento dos caracteres. Este trabalho segue essa padronização, apenas acrescentando (1) uma etapa de pré-processamento, a qual normalmente está implícita, e (2) uma etapa de validação, sendo então dividido em cinco partes: pré-processamento, segmentação dos caracteres, extração de características, e classicação1 . Como segunda parte do trabalho foi realizado um processo de validação da nossa implementação. O desenvolvimento deste trabalho foi realizado por um grupo de alunos (autores deste texto), de forma que cada um dos componentes foi encarregado do estudo e implementação de uma etapa e elaboração do relatório referente às atividades individualmente desenvolvidas. Também foi desenvolvida, mas de forma coletiva, a integração das partes (texto e implementação). A seguir é descrito os responsáveis por cada uma das etapas: • Pré-processamento, alocado para o aluno Arnaldo Lara • Extração de caracteres, alocado para o aluno Fabrício Martins Lopes; • Extração de características, alocado para o aluno Alexandre Noma; • Treinamento e classicação, alocado para o aluno Jesús Mena-Chalco. • Validação do classicador, realizado de forma coletiva. Foi utilizado para a implementação deste trabalho a linguagem de programação Java e o pacote Java Advanced Imaging (JAI) 1.1.2, operando sobre o sistema operacional Linux (Debian Sarge 3.1). Este texto está organizado da seguinte maneira. Na Seção 2 são apresentadas as imagens usadas neste trabalho e as técnicas aplicadas na solução de cada uma das etapas: (1) pré-processamento, (2) segmentação de caracteres, (3) extração de características, (4) os passos de classicação dos caracteres e posterior aplicação na fase de teste, e (5) reconhecimento ou classicação de caracteres. A seção 2 é nalizada com uma pequena descrição das técnicas de validação tratadas no trabalho. Os resultados experimentais obtidos são discutidos na Seção 3. Finalmente, na Seção 4, apresentamos as conclusões deste trabalho. 2 Material e métodos O reconhecimento de caracteres estudado e implementado está principalmente baseado no trabalho realizado por Torres-Méndez e colaboradores [8]. A segmentação sucessiva de caracteres é realizada usando operadores morfológicos, a extração de características usando o centróide do objeto segmentado, e o reconhecimento usando o vizinho holográco mais próximo. Na validação foram usadas as técnicas de validação cruzada e deixa-um-fora. Nesse trabalho é utilizada uma abordagem clássica para o OCR, o qual pode ser descrito como (Figura 1): a) Leitura da imagem de entrada e pré-processamento. b) Segmentar os caracteres da imagem. c) Extrair características que diferenciem o caractere (incluídos os valores de fase). d) Classicar o caractere de acordo com as características extraídas. É evidente as etapas apresentadas são interdependentes, sendo o resultado de uma etapa anterior afeta diretamente o resultado da etapa seguinte. 1 Um breve descrição histórica da evolução dos métodos de OCR é apresentado em [5]. 2 Figura 1: Diagrama de blocos do método usado para o treinamento e o reconhecimento de caracteres. Cada bloco com linhas sólidas representa uma operação, cada echa o uxo de dados entre os processos, e cada bloco com linhas pontilhadas uma operação repetitiva dos processos nele contidos. 2.1 Conjunto de dados de imagens usado Para a primeira parte do trabalho foi usada a imagem 343.png (828x1300 pixels) para o treinamento e 344.png (830 x 1300 pixels) para o teste do EP. Para o treinamento foram usados os caracteres segmentados da imagem 343.png e gerado assim um conjunto de treinamento de 2223 caracteres. No entanto, para a validação foi usada uma imagem composta pelas duas imagens anteriores (343_344opng de 828x2598 pixels. Tanto as amostras para teste quanto de treinamento foi realizada usando as linhas segmentadas dessa imagem composta. 2.2 Pré-processamento Nesta etapa a imagem de entrada é carregada e verica-se se já se encontra em níveis de cinza e caso não esteja ela é então convertida. A seguir é feita então uma normalização da iluminação da imagem de trabalho. Vericou-se que durante o processo de aquisição das imagens ocorreu uma diferença de iluminação em pontos diversos da imagem. Para esta normalização estamos utilizando o operador morfológico Abertura Top-Hat. Este operador extrai os picos da imagem e assim a diferença de iluminação que por ventura ocorra na imagem é eliminada. O operador Abertura Top-Hat é denido pela seguinte equação: f ˆ◦b = f − (f ◦ b) (1) ˆb onde f ◦ b é a abertura, uma erosão seguida por uma dilatação por um mesmo elemento estruturante b e f ◦ é o operador Abertura Top-Hat que é imagem original f subtraída pela abertura. O elemento estruturante utilizando é um disco, plano, de raio 3. O primeiro passo para obter a segmentação de cada caractere no texto é a binarização da imagem do texto. Para binarizar a imagem utilizamos o procedimento descrito em [8] que dene o limiar de binarização da seguinte maneira: limiar = m − k ∗ (max − min) 3 (2) onde m é a mediana dos valores do histograma da imagem, max é a maior intensidade dentre os pixels da imagem, min é a menor intensidade e k é um parâmetro ajustado empiricamente que controla a limiarização, estamos utilizando valores entre 0 e 1. Estando a imagem binarizada, o próximo passo é encontrar as regiões das linhas na imagem. Para isto usamos uma dilatação da imagem já binarizada. Um elemento estruturante do tipo linha com 20 pixels de comprimento e origem na extremidade esquerda foi utilizada nesta dilatação. Como resultado temos uma região borrada formando um único componente conexo para cada linha do texto. Assim a região das linhas de texto da imagem são identicadas, e conseqüentemente, suas caixas de contorno e seus limites horizontais e verticais. 2.3 Segmentação dos caracteres Essa etapa tem como entrada duas imagens, a primeira é a imagem original binarizada e a segunda é a imagem dilatada, contendo as regiões das linhas como descrito na seção anterior. A informação contida na imagem dilatada é usada para a identicação espacial das linhas, permitindo a segmentação dos caracteres da imagem binarizada em ordem seqüencial, considerando que o texto esteja na orientação retrato. A segmentação dos caracteres pode ser vista como uma tarefa que busca a decomposição de uma imagem em uma seqüência de sub-imagens contendo símbolos individuais. No trabalho de Casey e Lecolinet [2], são apresentados três estratégias "puras", no sentido de não híbridas, para a segmentação de caracteres. • A abordagem clássica, na qual segmentos são classicados com base nas características dos caracteres, ou seja, extração de caracteres da imagem em componentes representativos, independentes do seu conteúdo. • Segmentação baseada em reconhecimento, no qual é procurado por componentes na imagem que casam com classes no alfabeto. Baseando-se muitas vezes em análise sintática e/ou semântica das palavras reconhecidas. • Métodos Holísticos, no qual a busca pelo reconhecimento de palavras como um todo, evitando a necessidade de segmentação dos caracteres. Seguindo esta classicação, foi aplicado neste trabalho a estratégia clássica, sendo implementada a extração dos caracteres pela identicação de componentes conexos (CC). A abordagem utilizando componentes conexos [4], consiste na identicação de regiões do objeto que estejam conectadas por uma vizinhança, neste trabalho 4-vizinhança. Após a identicação do CC, o mesmo é extraído da imagem por meio do menor retângulo ereto que inclui inteiramente o CC, conhecido comumente como caixa de contorno ou "Bouding Box". Percorre-se então a região de cada linha para localizar os CC. O percurso é realizado de cima para baixo e da direita para a esquerda. Quando é encontrado um pixel pertencente ao objeto, ele é rotulado e vericada sua vizinhança. Os pixels vizinhos com a mesma intensidade são também rotulados como objetos, sendo esse processo repetido até que não existam mais pixels vizinhos classicados como objeto. Caso o CC gerado pelo agrupamento desses pixels seja maior que um limiar, nesse trabalho usado empiricamente 2x2, ele é extraído e enviado a próxima etapa. Caso contrário o CC é descartado, pois supostamente se trata de um ruído. No entanto, existem caracteres que possuem mais de um componente conexo, como por exemplo: i, ú, é, ã, etc. A identicação desses caracteres foi realizada levando-se em conta o ponto médio da largura do CC, e a busca vertical por pixels pertencentes ao objeto nesse ponto médio. Uma vez identicados, foram adicionados ao CC. Nessa etapa também foram identicadas as quebras de linhas e os espaços em branco. As trocas de linhas foram identicadas quando o limite horizontal da linha dilatada era atingido, enviando um caractere de quebra de linha diretamente ao arquivo de saída. Os espaços em branco foram identicados de acordo com o número de pixels percorridos no sentido horizontal sem que exista a identicação de um CC, nesse trabalho usado empiricamente valor 5, ou seja, se forem identicados 6 pixels na horizontal sem que exista nenhum CC, é enviado um caractere de espaço diretamente ao arquivo de saída. 4 Um outro problema encontrado é a concatenação de vários caracteres em um mesmo CC, como exibido na gura 2. Dependendo do limiar de binarização, este problema pode ocorrer com mais ou menos freqüência. O operador morfológico Abertura Top-Hat foi utilizado como tentativa de minimizar essa concatenação, como descrito na seção anterior. Figura 2: Componente conexo contendo dois caracteres. É importante destacar que essa abordagem não é adequada para a extração de caracteres manuscritos, logo esse tipo de reconhecimento não foi abordado nesse trabalho, sendo objetivo apenas o reconhecimento de caracteres impressos. 2.4 Extração de características A extração de características foi baseada no artigo [8]. Neste projeto, esta parte foi implementada em um único módulo (Caracteristicas.java). Este módulo recebe uma imagem binária 2 (o ideal é com um único caractere) obtida na fase de segmentação e devolve um 'vetor de características' (descrito mais adiante). Nesta fase, o objetivo é calcular três tipos de informações: (c1 ) momento central normalizado de inércia; (c2 ) codicação radial para o total de transições; (c3 ) codicação radial diferencial. O cálculo do momento de inércia (c1 ) foi baseado na seguinte fórmula: I= N X ((xi − Cx )2 + (yi − Cy )2 ) i=1 onde (Cx , Cy ) são as coordenadas (aproximadas) do centro do menor círculo que contém o caractere, N é o total de pixels pertencentes ao caractere e (xi , yi ), para i = 1 . . . N , são as coordenadas destes pixels. O valor de (c1 ) é o momento de inércia normalizado, obtido pela divisão de I por N 2 . As outras duas características foram calculadas a partir de círculos igualmente espaçados e centrados em (Cx , Cy ), conforme ilustrado na gura 3. Para cada um desses círculos, as características (c2 ) e (c3 ) foram Figura 3: Para cada uma das letras acima, foram desenhados seis círculos concêntricos e igualmente espaçados. obtidas da seguinte forma. Dado um dado círculo C , o número de transições (c2 ) é o total de transições, partindo de pixels de dentro para fora do caractere, detectadas ao percorrer C no sentido horário, por exemplo. Para as duas letras da gura 4, (c2 ) vale 2. Para o cálculo de (c3 ), sejam A1 e A2 o maior e o segundo maior 2 Assim, fará sentido quando referirmos aos pixels da letra ou caractere (ou pixels que estão na letra e não no background ). Por exemplo, na gura 4, nos dois círculos desenhados sobre as letras 'M' e 'N', os pixels em vermelho estão nas letras e os azuis não, resultando em alternâncias 'dentro e fora' da letra quando percorremos estes círculos no sentido horário, por exemplo. 5 arcos de C que não estão no caractere, respectivamente, conforme ilustrado na gura 4. O valor de (c3 ) é denido pela fórmula: d1 − d2 d onde d é o total de pixels de C , d1 é o total de A1 e d2 o total de A2 . Figura 4: Para 'M' e 'N' acima, (c2 ) vale 2: percorrendo-se cada um dos dois círculos, detectamos duas transições partindo de pixels de dentro para fora da letra. Para obter (c3 ), em cada círculo, os arcos A1 e A2 estão indicados em azul. Note que as três informações acima são baseadas no centróide do caractere com o objetivo de extrair características robustas à rotação. Além disso, estas informações são normalizadas pelo tamanho (seja pelo tamanho do caractere ou pelo tamanho do círculo), resultando assim em características robustas a mudanças de escala. Com estas informações, foi denido um vetor de características usado no processo de reconhecimento dos caracteres, descrito mais adiante. O vetor de características associado a uma amostra k pode ser denotado como: S k = (sk1 , sk2 , . . . , skM ) (3) em que ski são os escalares que inuenciarão na etapa do reconhecimento. Na nossa implementação, o momento de inércia foi armazenado na primeira posição desse vetor (escalar sk1 ), seguido pelos pares da codicação radial (total de transições e diferencial, respectivamente) para cada um dos M2−1 círculos. acho que aqui faltou indicar que usamos mais caracteristicas para assim evitar, de certo modo, a invariância à rotação... discutir um pouquinho dos problemas usando alguns tipos de letras. (e.g. u-n, b-p-q-d, V-A, etc.)... o que vocês acham?... acho que por isso os caras do artigo usaram letras em maiúsculo, pois as rotações entre elas não tem correlação. Esse é o ponto fraco da nossa implementação. Alguém poderia argumentar: "tudo bem, usam caracteristicas topológicas para ter invariância a rotação, mas depois colocando esas novas características esquecem da primeira parte..."... compramos um carro com ar condicionado, e somente usamos as janelas... :-( 2.5 Treinamento Nesta etapa usa-se o algoritmo do vizinho holográco mais próximo (HNN,holographic nearest neighbor ) apresentado em [8] devido à sua robustez matemática, rapidez computacional e fácil entendimento e implementação. A operação do algoritmo está baseado no principio de unfolding information de diferentes fases em um plano (simples). Representamos o campo de dados do elemento k por um conjunto de amostras S de estímulos-resposta por: S k = (sk1 , sk2 , . . . , skM , skM +1 ) (4) em que si , . . . , sM são os escalares que denem o campo estimulo. M é o número de variáveis de entrada (características), e sM +1 a resposta associada (classe). Cada variável de entrada é mapeada a variáveis polares usando a função de relação sigmoidal (Figura 5): k θik = 2π(1 + e(µ−si )/σ )−1 (5) em que µ e σ são respectivamente a média e o desvio padrão de cada uma das variáveis. Essa equação mapeia cada estímulo ski a valores de fase entre 0 e 2π 3 . 3 Essa é considerada uma boa forma de representação da informação tratada, limitando-a (0,2π ), no lugar de (−∞,+∞). É dito que tal mapeamento leva de um domínio dos estímulos a domínios de fase [7]. 6 Figura 5: Função sigmoidal de mapeamento de fase. Uma representação tabular dos estímulos, valores de fase e classe das amostras do conjunto de treinamento está mostrada na Tabela 1. Para cada amostra k são extraídas as M características Sik , com i = 1, . . . , M (Seção 2.2). As fases θik correspondentes às características são calculadas mediante a Equação 5. Tais valores são usados na etapa de reconhecimento do caractere. Amostra 1 2 .. . N-1 N S11 S12 Características 1 ... SM 2 ... SM S1N −1 S1N (µ1 , σ1 ) ... ... ... N −1 SM N SM (µM , σM ) θ11 θ12 Fases ... ... 1 θM 2 θM θ1N −1 θ1N ... ... N −1 θM N θM Classe 1 SM +1 2 SM +1 .. . N −1 SM +1 N SM +1 Tabela 1: Domínios dos estímulos, da fase e resposta. 2.6 Classicação usando o vizinho holográco mais próximo Quando um novo padrão é apresentado, é selecionado o melhor casamento, com os dados de treinamento, calculando a distancia mínima entre o novo padrão (θt ) e os valores obtidos na fase de treinamento (θexp ) para cada característica. Assim, o mínimo valor das N amostras de treinamento com o padrão de entrada será a qP M k k k 2 resposta: (θ i=1 i(exp) − θi(t) ) , isto é, a classe atribuída ao novo padrão será SM +1 . 2.7 Processo de validação Foram duas as técnicas usadas no processo de validação deste sistema reconhecedor de caracteres. A seguir os métodos de validação são descritos. 2.7.1 Validação cruzada generalizada A validação cruzada generalizada conhecida também como k-validação cruzada, é uma das técnicas mais aplicadas na vericação da estabilidade de modelos [6]. Seu funcionamento consiste em dividir o conjunto total de amostras em dois subconjuntos: treinamento e teste, mutuamente exclusivos como mostra a Figura 6. O número k representa a quantidade de execuções e conseqüentemente o número de divisões das amostras em treinamento e teste, que serão usadas durante a validação. Sendo o resultado de cada validação a média obtida durante as execuções. Uma vantagem desse método é que todas as amostras são usadas para treinamento e teste. 7 Figura 6: Exemplo de divisão das amostras usadas na validação cruzada generalizada. 2.7.2 Validação deixa-um-fora A validação deixa-um-fora é uma forma extrema de validação cruzada. Essa validação atribui somente uma amostra ao conjunto de teste e todas a restantes são atribuídas ao conjunto de treinamento [1]. Assim, sua aplicação neste trabalho faz uso de 48 linhas de amostra para o treinamento e apenas uma para teste. Essa validação também pode ser vista como uma validação k -validação cruzada, sendo k denido como o tamanho do conjunto de amostras. A representação gráca do funcionamento da validação deixa-um-fora pode ser observada na Figura 7. Dessa forma, essa validação fornece uma estimativa de erro para cada uma das amostras do conjunto. Uma observação importante nessa validação é que todas as amostras disponíveis devem passar pelo menos uma vez pelo conjunto de teste, isto é, as amostras são combinadas para que todas sejam aproveitadas pelo treinamento e teste pelo menos uma vez. Vale destacar que a maior desvantagem desse método é o tempo computacional usado para sua execução em relação à validação cruzada generalizada, e os resultados obtidos sobre a validação dos dados são superestimados, ou seja, fornece uma previsão pessimista sobre o conjunto de dados submetido à validação. Figura 7: Exemplo de divisão das amostras usadas na validação deixa-um-fora. 8 3 Resultados 3.1 Reconhecimento de caracteres (EP1) Neste trabalho, foi feita uma pesquisa por OCRs disponíveis na internet para possibilitar uma comparação de desempenho entre a nossa implementação OCR com os demais programas. Selecionamos quatro programas OCRs para esta comparação. • GNU Ocrad (http://www.gnu.org/software/ocrad/ocrad.html) • GOCR 0.41 (http://jocr.sourceforge.net/) • SimpleOCR 3.1 (http://www.simpleocr.com/) • Cuneiform OCR 6.0 (http://www.ocr.com/) A taxa de acerto foi contabilizada da seguinte maneira. Seja A o texto extraído por um dos OCRs e M o texto obtido pela digitação manual (M é o 'gabarito'). Primeiro calculou-se uma subseqüência máxima4 S entre A e M . A taxa de acerto é obtida pela divisão de |S| por |M |, onde |S| denota o tamanho da subseqüência máxima encontrada e |M | é o tamanho do texto no gabarito. A seguir, é exibida a tabela com o nome do programa OCR e as taxas de acerto para as imagens 343.png e 344.png dadas como entrada para este EP. Programa OCR GNU Ocrad GOCR 0.41 SimpleOCR 3.1 Cuneiform OCR 6.0 Nosso OCR Acerto 343 70.21% 69.82% 83.29% 90.86% 95.59% Acerto 344 66.80% 70.12% 81.02% 85.60% 84.93% Em nosso OCR usamos como treinamento a imagem 343.png e a taxa de acerto obtida para reconhecimento do texto da própria imagem 343.png foi de 95.59% e obtivemos a taxa de 84.93% para o reconhecimento do texto da imagem 344.png. O nosso OCR perde apenas para o Cuneiform aplicado na segunda imagem. Mas um detalhe importante deve ser mencionado: os quatro OCRs usados nesta comparação são 'genéricos', ou seja, eles rodam sem a necessidade do treinamento. 3.2 Validação do reconhecimento (EP2) Na média nal ponderada, é calculada uma média da taxa de acerto para cada linha ponderada pelo tamanho relativo de cada linha em relação ao texto todo. Na média nal acumulada: começa igual a primeira taxa de acerto e a partir daí é calculada a taxa média de acerto entre as linhas já processadas, sendo o resultado nal a média de acerto do classicador. • Validação cruzada generalizada: (Figura 10) Nessa validação foi denido k = 3, i.e. a validação é realizada utilizando 1/3 das linhas para teste e 2/3 para treinamento, sendo executada 3 vezes. A gura exibe os erros obtidos para o reconhecimento de cada uma das linhas. • Validação deixa-um-fora: (Figura 9) Na Tabela 2 mostramos as taxas de acerto médio ponderada e acumulada. 4 Um algoritmo da subseqüência máxima pode ser vista em [3]. 9 Figura 8: Taxa de acerto acumulado médio usando a validação cruzada. Figura 9: Taxa de acerto acumulado médio usando a validação deixa-um-fora. Figura 10: Taxa de acerto acumulado médio usando bootstrap. 10 Técnica de validação Cruzada Deixa-um-fora Bootstrap Taxa de acerto Média ponderada Média acumulada 0.65377 0.63179 0.65608 0.57892 ... ... Tabela 2: Taxas de acerto das validações executadas. 4 Conclusões O objetivo deste trabalho foi aplicar conceitos teóricos da disciplina Análise e Reconhecimento de Formas na implementação de um sistema OCR baseado na extração de características. Analisando o resultado da seção 3, obtido da comparação entre o nosso OCR com os demais, notamos que o nosso protótipo obteve um bom desempenho. Como trabalhos futuros, podemos automatizar a fase de treinamento e analisar a possibilidade de: • extrair novas características com o objetivo de melhorar as taxas de acertos; • incrementar o reconhecimento por meio de heurística: durante a extração do caractere da imagem, pode ser aplicada uma heurística para melhorar a eciência da extração. Uma heurística sugerida seria armazenar os últimos três caracteres reconhecidos, e para cada caractere, as duas outras possibilidades (caracteres classicados em 2 e 3 lugares para a imagem contida no CC) e usar essas informações por meio de análise semântica (bem simples) desses caracteres, com o objetivo de evitar ocorrências como "qn", "qa", "qd", "ttt", "dn", entre outros, e também a ocorrência de consoantes isoladas, como "h", "t", etc. Outro ponto importante a salientar é que o trabalho descrito em [8] apresenta bons resultados para o reconhecimento de caracteres com alta resolução, como podemos perceber no artigo. Porém, ao utilizar uma imagem de um livro, onde cada letra apresenta uma resolução baixa, a extração de caracteres se mostra deciente. As características extraídas são invariantes a rotação, translação e escala. Como resultado da baixa resolução das imagens utilizadas, ocorreram problemas como a confusão entre as letras u e n e as letras q e b. Para resolver estes problemas extraímos 2 características a mais: o número de pixels do CC que está acima e abaixo de uma linha média no CC. Com estas novas características no vetor o reconhecimento passou a ser mais preciso e a nossa taxa de acerto aumentou. Portanto acreditamos que a técnica descrita em [8] seja válida apenas para caracteres extraídos com uma boa resolução. Finalmente, foi identicado que a aquisição das imagens de entrada tiveram iluminação não homogênea, gerando faixas horizontais mais escuras e outras mais claras, as quais foram amenizadas na etapa de pré-processamento, mas como foi utilizada a limiarização (processamento global da imagem) essa falha na aquisição prejudicou/inuenciou negativamente o desempenho do aplicativo OCR. Lembrando com isso que o processo de aquisição/digitalização de imagens deve ser o melhor possível para que as etapas subseqüentes aconteçam o melhor possível. Referências [1] C. M. Bishop, Neural networks for pattern recognition, Oxford University Press, Inc., New York, NY, USA, 1995. 8 [2] R. G. Casey and E. Lecolinet, A survey of methods and strategies in character segmentation, IEEE Transactions on Pattern Analysis and Machine Inteligence 18 (1996), no. 7, 690706. 2, 4 [3] T. H. Cormen, C. E. Leiserson, and R. L. Rivest, Introduction to algorithms, The MIT Press, 1990. 9 11 [4] L. F. Costa and R. M. Cesar Jr., Shape analysis and classication: Theory and practice, CRC Press, Inc., Boca Raton, FL, USA, 2001. 2, 4 [5] H. Fujisawa, Y. Nakano, and K. Kurino, Segmentation methods for character recognition: From segmentation to document structure analysis, Proc. of the IEEE, vol. 80, July 1992. 2 [6] Ron Kohavi, A study of cross-validation and bootstrap for accuracy estimation and model selection, IJCAI, 1995, pp. 11371145. 7 [7] B. Soucek (ed.), Fuzzy, holographic, and parallel intelligence: The sixth-generation breakthrough, Sixth Generation Computer Technologies Series, John Wiley and Sons, New York, 1992. 6 [8] L. A. Torres-Mendez, J. C. Ruiz-Suárez, L. E. Sucar, and G. Gómez, Translation, rotation, and scaleinvariant object recognition, IEEE Transactions on Systems, Man, and Cybernetics, Part C 30 (2000), no. 1, 125130. 2, 3, 5, 6, 11 12