Sistema automático de reconhecimento do montante de um...

85
Faculdade de Engenharia da Universidade do Porto Mestrado Integrado em Engenharia Informática e Computação Sistema automático de reconhecimento do montante de um cheque realizado no Instituto de Engenharia de Sistemas e Computadores do Porto Dissertação do MIEIC 2007/2008 Filipe Emanuel Amaro Coelho Orientador na FEUP: Prof. Jaime dos Santos Cardoso Responsável de Acompanhamento no INESC Porto: Luís Filipe P. A. Teixeira Março de 2008

Transcript of Sistema automático de reconhecimento do montante de um...

Page 1: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Faculdade de Engenharia da Universidade do Porto

Mestrado Integrado em Engenharia Informática e Computação

Sistema automático de reconhecimento do montante de um cheque

realizado no

Instituto de Engenharia de Sistemas e Computadores do Porto

Dissertação do MIEIC 2007/2008

Filipe Emanuel Amaro Coelho

Orientador na FEUP: Prof. Jaime dos Santos Cardoso

Responsável de Acompanhamento no INESC Porto: Luís Filipe P. A. Teixeira

Março de 2008

Page 2: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

ii

Para a minha família

Page 3: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

iii

Resumo

A presente dissertação, com o título “Sistema automático de reconhecimento do montante

de um cheque”, foi realizada no Instituto de Engenharia e Sistemas e Computadores do Porto

(INESC Porto), de Outubro de 2007 a Março de 2008.

Apesar do aparecimento de métodos electrónicos mais seguros, os cheques bancários

continuam a ser utilizados frequentemente como forma de pagamento, e a sua verificação e

validação envolvem actualmente o reconhecimento manual de cheques manuscritos com

grande variedade e complexidade de caligrafias. Existe assim a necessidade de garantir um

serviço mais rápido, eficaz, e automático, capaz de responder ao elevado número de cheques

bancários utilizados.

Pretende-se com este trabalho elaborar a especificação de um sistema que, após

submissão de imagens digitalizadas de cheques manuscritos, possa reconhecer os montantes

especificados nos mesmos. Para atingir os objectivos propostos, foi necessário determinar

uma arquitectura adequada, bem como investigar e comparar algoritmos de processamento de

texto manuscrito.

Foi efectuada uma análise do problema proposto, das soluções existentes e das

plataformas que melhor se adequam ao desenvolvimento do sistema pretendido, tendo sido

escolhida a plataforma .NET 2.0 e tecnologias Microsoft associadas, bem como as bibliotecas

AForge.NET 1.51 (Processamento Digital de Imagem) e Weka 3.4 (Machine Learning).

Foi criada uma base de dados de cheques portugueses manuscritos, de forma a permitir

testar os métodos e algoritmos implementados no protótipo desenvolvido, o qual serviu de

base para validar as conclusões e resultados obtidos.

Os cheques digitalizados podem ser afectados por ruído visual e/ou um grau de rotação

significativo (resultantes do processo de digitalização), implicando assim uma fase de

preprocessamento. Esta fase recorre a algoritmos de Processamento Digital de Imagem para a

obtenção dos resultados pretendidos.

Para o reconhecimento do montante manuscrito (Optical Character Recognition – OCR e

Intelligent Character Recognition - ICR) é necessária ainda a segmentação do cheque para

extracção dos campos pretendidos (valor de cortesia e valor legal). São utilizados algoritmos

de Machine Learning para reconhecimento e classificação dos valores escritos no cheque.

Com base na bibliografia e artigos relacionados com a área, foram analisados os paradigmas

das Redes Neuronais e Máquinas de Vectores de Suporte para o reconhecimento do valor de

cortesia, e Modelos Escondidos de Markov para o reconhecimento do valor legal.

Page 4: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

iv

Agradecimentos

Primeiramente, gostaria de agradecer ao Dr. Jaime dos Santos Cardoso, orientador da FEUP, e

ao Eng. Luís Filipe Pinto de Almeida Teixeira, responsável pelo acompanhamento, por todo o

apoio dado ao longo da dissertação.

Gostaria também de agradecer ao INESC Porto, em particular aos elementos da Unidade de

Telecomunicações e Multimédia (UTM), os quais providenciaram todo o apoio necessário ao

desenvolvimento do sistema, criação da base de dados de cheques portugueses manuscritos e

elaboração da presente dissertação.

Finalmente, agradeço à minha família e amigos o apoio e paciência que demonstraram

durante a realização desta dissertação.

Page 5: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

v

Índice de Conteúdos

1 Introdução ......................................................................................................................................... 1

1.1 Enquadramento da dissertação ......................................................................................................... 1

1.1.1 Reconhecimento de texto manuscrito ..............................................................................2

1.2 Objectivos ......................................................................................................................................... 2

1.3 Resultados e contribuições relevantes .............................................................................................. 3

1.4 Organização e temas abordados....................................................................................................... 4

2 Estado da arte ................................................................................................................................... 6

2.1 Revisão científica .............................................................................................................................. 6

2.2 Revisão tecnológica .......................................................................................................................... 8

3 Sistema de processamento automático de cheques digitalizados .................................................. 10

3.1 Requisitos e Arquitectura ................................................................................................................ 10

3.2 Protótipo ......................................................................................................................................... 11

3.2.1 Base de dados .............................................................................................................. 12

3.2.2 Aplicação web ............................................................................................................... 13

3.2.3 Motor de processamento ............................................................................................... 15

4 Detecção e extracção dos campos de um cheque .......................................................................... 17

4.1 Conversão para escala de cinzentos ............................................................................................... 17

4.2 Correcção do ângulo de rotação ..................................................................................................... 17

4.2.1 Atenuação/remoção de ruído ........................................................................................ 17

4.2.2 Contrast Stretching ....................................................................................................... 19

4.2.3 Transformada de Fourier ............................................................................................... 21

4.2.4 Detecção do ângulo de rotação ..................................................................................... 23

4.2.5 Aplicação da rotação inversa ........................................................................................ 26

4.3 Extracção do cheque ...................................................................................................................... 27

4.3.1 Reaplicação de filtros .................................................................................................... 27

4.3.2 Detecção dos limites do cheque .................................................................................... 28

4.3.3 Recorte da imagem ....................................................................................................... 34

4.4 Extracção dos campos pretendidos ................................................................................................. 35

4.4.1 Determinação das medidas ........................................................................................... 35

4.4.2 Recorte do cheque ........................................................................................................ 35

5 Extracção dos algarismos e reconhecimento do valor de cortesia .................................................. 37

5.1 Extracção dos algarismos ............................................................................................................... 37

5.2 Preparação para o estudo comparativo de algoritmos de reconhecimento ....................................... 40

5.2.1 N-Fold cross validation .................................................................................................. 41

5.3 Redes Neuronais ............................................................................................................................ 41

5.3.1 Perceptrão Multicamada ............................................................................................... 42

5.3.2 Rede de Funções de Base Radial ................................................................................. 43

5.3.3 Parâmetros de Teste ..................................................................................................... 44

5.4 Máquinas de Vectores de Suporte .................................................................................................. 45

Page 6: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

vi

5.4.1 Kernels ......................................................................................................................... 46

5.4.2 Parâmetros de Teste ..................................................................................................... 47

5.5 Comparação de resultados ............................................................................................................. 47

6 Reconhecimento do valor legal ....................................................................................................... 49

6.1 Modelos Escondidos de Markov ...................................................................................................... 49

6.2 Preprocessamento do valor legal .................................................................................................... 51

7 Conclusões ..................................................................................................................................... 54

7.1 Conclusões sobre a dissertação...................................................................................................... 54

7.2 Perspectivas futuras ....................................................................................................................... 54

Referências .......................................................................................................................................... 56

Bibliografia............................................................................................................................................ 58

Lista de Acrónimos ............................................................................................................................... 59

ANEXO A: Exemplos de cheques manuscritos .................................................................................... 60

ANEXO B: Algarismos usados para treino ........................................................................................... 63

ANEXO C: Resultados Weka – Reconhecimento do valor de cortesia ................................................ 64

Page 7: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

vii

Índice de Figuras

Figura 1 – Cheque normalizado [1]

.......................................................................................................... 7

Figura 2 – Diagrama de arquitectura .................................................................................................... 11

Figura 3 – Tabelas Checks e Digits ...................................................................................................... 12

Figura 4 – Lista de cheques ................................................................................................................. 13

Figura 5 – Submissão de cheques ....................................................................................................... 14

Figura 6 – Lista de algarismos para treino ........................................................................................... 14

Figura 7 – Submissão de algarismos para treino ................................................................................. 15

Figura 8 – Módulo de processamento .................................................................................................. 15

Figura 9 – Exemplo do algoritmo do filtro de mediana[6]

....................................................................... 18

Figura 10 – Secção da imagem original de um cheque (cheque 08, afectado de uma rotação

de 25º) ............................................................................................................................................. 18

Figura 11 – Secção após aplicação do filtro de mediana ..................................................................... 19

Figura 12 – Secção após aplicação do filtro de média ......................................................................... 19

Figura 13 – Histograma da imagem ..................................................................................................... 20

Figura 14 – Histograma após contrast stretching ................................................................................. 21

Figura 15 – Resultado da binarização da imagem ............................................................................... 21

a) após melhoramentos b) a partir da imagem original Figura 16 – Imagem resultante da

Transformada de Fourier ................................................................................................................. 23

Figura 17 – Imagem da TF após thresholding ...................................................................................... 23

Figura 18 – Imagem do cheque após correcção da rotação ................................................................ 27

Figura 19 – Projecção horizontal (limites superior/inferior) .................................................................. 28

Figura 20 – Projecção vertical (limites esquerdo/direito) ...................................................................... 29

Figura 21 – Intersecção de histogramas (limites superior/inferior) ....................................................... 30

Figura 22 – Intersecção de histogramas (limites esquerdo/direito) ...................................................... 30

Figura 23 – Chi-quadrado (limites superior/inferior) ............................................................................. 31

Figura 24 – Chi-quadrado (limites esquerdo/direito) ............................................................................ 31

Figura 25 – Imagem contendo apenas o cheque ................................................................................. 34

Figura 26 – Campo do valor de cortesia .............................................................................................. 36

Figura 27 – Campo do valor legal ........................................................................................................ 36

Page 8: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

viii

Figura 28 – Preprocessamento do valor de cortesia ............................................................................ 37

Figura 29 – Valor de cortesia após blob filtering .................................................................................. 38

Figura 30 – Descontinuidade frequentemente existente no algarismo “5” ........................................... 38

Figura 31 – Algarismos segmentados .................................................................................................. 38

Figura 32 – Algarismos grayscale (imagens ampliadas a 400%) ......................................................... 39

Figura 33 – Algarismos binarizados 8x16 (imagens ampliadas a 400%) ............................................. 39

Figura 34 – Contornos dos algarismos (tamanho real) ........................................................................ 40

Figura 35 – Formas distintas do algarismo “0” ..................................................................................... 40

Figura 36 – Rede Neuronal .................................................................................................................. 41

Figura 37 – Perceptrão Multicamada [9]

................................................................................................ 42

Figura 38 – Função sigmóide [9]

........................................................................................................... 42

Figura 39 – Rede de Funções de Base Radial [10] .............................................................................. 43

Figura 40 – Exemplo do algoritmo k-means clustering [11]

.................................................................... 44

Figura 41 – Máquinas de Vectores de Suporte [12]

............................................................................... 45

Figura 42 – Vectores de suporte e margens [12]

................................................................................... 45

Figura 43 – Kernel polinomial [12]

.......................................................................................................... 46

Figura 44 – kernel RBF [12]

................................................................................................................... 46

Figura 45 – Relação entre estados observáveis e escondidos [13]

....................................................... 49

Figura 46 – Exemplos de matriz de transição (A) e matriz de confusão (B) [17]

.................................... 50

Figura 47 – Valor legal extraído ........................................................................................................... 51

Figura 48 – Valor legal após atenuação de ruído e binarização .......................................................... 51

Figura 49 – slant correction: a) original e b) inclinação corrigida.......................................................... 51

Figura 50 – ascendentes e descendentes detectados numa linha de texto [17]

.................................... 52

Figura 51 – Sequências de ascendentes (A) e descendentes (D) [17]

.................................................. 52

Figura 52 – Janela de contagem [4]

...................................................................................................... 53

Figura 53 – Cheque 01 ......................................................................................................................... 60

Figura 54 – Cheque 04 ......................................................................................................................... 60

Figura 55 – Cheque 07 ......................................................................................................................... 60

Figura 56 – Cheque 10 ......................................................................................................................... 61

Figura 57 – Cheque 13 ......................................................................................................................... 61

Figura 58 – Cheque 16 ......................................................................................................................... 61

Figura 59 – Cheque 19 ......................................................................................................................... 62

Figura 60 – Cheque 22 ......................................................................................................................... 62

Figura 61 – Cheque 25 ......................................................................................................................... 62

Page 9: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

ix

Índice de Tabelas

Tabela 1 - Comparação de algoritmos de detecção do ângulo da recta .............................................. 26

Tabela 2 – Limites detectados.............................................................................................................. 32

Tabela 3 – Erros obtidos ...................................................................................................................... 33

Tabela 4 - Comparação de algoritmos de detecção dos limites do cheque ......................................... 34

Tabela 5 – Dimensões e localização do valor de cortesia em função da largura do cheque ............... 35

Tabela 6 – Comparação de algoritmos e formatos............................................................................... 47

Tabela 7 – Resultados ordenados por taxa de reconhecimento .......................................................... 47

Page 10: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

1

1 Introdução

Este capítulo contém uma descrição da tese de dissertação, nomeadamente o seu

enquadramento, motivação, objectivos e contribuições relevantes. É ainda apresentada uma

descrição dos tópicos abordados ao longo da mesma.

1.1 Enquadramento da dissertação

Até ao aparecimento de meios electrónicos para débito directo, os cheques bancários

foram utilizados como a forma de pagamento que melhor conciliava segurança e facilidade de

utilização. A sua aceitação e uso generalizado deve-se à existência de diplomas internacionais

que definem o seu preenchimento e utilização, conforme mencionado em [1].

O rápido processamento de pagamentos e transacções através de métodos electrónicos,

mais seguros, tem originado a necessidade de reduzir a utilização de cheques bancários ao

longo dos últimos anos. No entanto, apesar desta redução progressiva (espera-se atingir uma

redução de 50% em 2009), os cheques vão continuar a ser utilizados, pelo que existe a

necessidade de optimizar os respectivos mecanismos de processamento.

O desconhecimento de regras de segurança no preenchimento de cheques tem levado a

que seja cada vez mais importante a criação de sistemas de validação eficazes, capazes de não

só detectar as quantias especificadas nos cheques mas também efectuar a verificação de

assinaturas, evitando tentativas de fraude.

O Acordo de Basileia II [2] veio reforçar nas instituições financeiras a necessidade de

criar/melhorar os seus processos de detecção e impedimento de fraudes, e introduzir

mecanismos que permitam processar pagamentos de uma forma mais rápida e eficaz,

incluindo o processamento de cheques bancários. Desta forma pretende-se garantir a

fiabilidade das instituições financeiras e uma melhor qualidade de serviço prestada aos seus

clientes.

Actualmente, o reconhecimento e validação de cheques bancários envolve ainda a

utilização significativa de recursos humanos, dada a complexidade no reconhecimento dos

vários campos a considerar. A multiplicidade de caligrafias, o acto de preenchimento do

cheque (pressão da caneta na escrita, falhas no desenho dos caracteres, …), embora fáceis de

detectar pelo cérebro humano, dificultam consideravelmente o reconhecimento e validação

por sistemas electrónicos. Dada a importância de validar e reconhecer correctamente os

valores contidos em cheques, a investigação de algoritmos avançados de processamento

digital de imagem e Machine Learning, adequados ao problema apresentado, adquire uma

relevância considerável.

Ao contrário de cheques emitidos em outros países, os cheques portugueses encontram-se

“normalizados” desde a entrada em vigor da moeda europeia, o Euro. Isto significa que

independentemente da instituição bancária que emite o cheque, este deve obedecer, entre

outras, a regras de layout preestabelecidas, o que permite determinar à partida a localização e

dimensões dos campos existentes no próprio cheque.

Page 11: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

2

Os cheques possuem dois campos para especificação do montante: o valor de cortesia

(algarismos) e o valor legal (por extenso). Os sistemas existentes utilizam primariamente o

valor de cortesia como forma de identificar o montante, dada a relativa facilidade na sua

interpretação/identificação, quando comparado com o valor legal.

Apesar da existência de sistemas de processamento automático de cheques, estes são

proprietários e adaptados a outros idiomas que não o português, factor crucial na análise do

valor legal de um cheque. Torna-se assim relevante o estudo e desenvolvimento de um

sistema capaz de analisar e reconhecer os montantes manuscritos de cheques em língua

portuguesa, previamente digitalizados. O seu desenvolvimento envolve não só a

implementação do sistema (arquitectura, módulos, plataformas) mas também uma análise

cuidada de técnicas de reconhecimento de padrões, na área de Machine Learning.

1.1.1 Reconhecimento de texto manuscrito

O reconhecimento automático de texto manuscrito representa actualmente um campo de

investigação muito importante, dada a sua aplicação a diversas áreas. A preservação de obras

literárias manuscritas, o reconhecimento de formulários previamente preenchidos e a

interpretação de texto escrito no ecrã de um PDA são alguns dos exemplos onde é aplicado o

reconhecimento automático de texto manuscrito. Este processo é normalmente designado por

OCR (Optical Character Recognition) ou ICR (Intelligent Character Recognition).

OCR envolve a análise de texto impresso (“à máquina”) ou texto manuscrito discreto,

cujos caracteres sejam explicitamente separados à partida. Como exemplo temos os

algarismos do valor de cortesia em cheques portugueses, ou o preenchimento de formulários

com “caixas” dedicadas a cada carácter.

ICR envolve a análise de texto manuscrito cursivo, utilizando técnicas e procedimentos

bastante distintos dos usados em OCR, devido à complexidade subjacente na sua

interpretação. Existem métodos holísticos [1], os quais procuram identificar palavras no seu

todo (ideais quando o vocabulário é limitado); e métodos analíticos [1], os quais envolvem a

segmentação das palavras em letras (adequados a domínios com vocabulários muito

extensos/ilimitados).

O processo de reconhecimento pode ainda ser dividido em duas áreas: online, quando o

reconhecimento é feito em tempo real (escrita num PDA, por exemplo); ou offline, quando o

reconhecimento é feito a posteriori, com base em imagens digitalizadas.

1.2 Objectivos

Com base no enquadramento apresentado, a dissertação tem assim os seguintes

objectivos:

Desenhar e especificar uma framework para o reconhecimento automático de

montantes em cheques bancários portugueses;

Page 12: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

3

Investigar o desenvolvimento de algoritmos OCR/ICR para o reconhecimento

automático do montante de um cheque.

Para atingir os objectivos propostos, procedeu-se à implementação de um protótipo, o

qual permitiu não só concretizar e validar a arquitectura proposta, mas também verificar os

resultados da aplicação dos diversos algoritmos e técnicas abordados no preprocessamento do

cheque e reconhecimento do montante especificado no mesmo.

1.3 Resultados e contribuições relevantes

A arquitectura projectada para o sistema obedece aos requisitos especificados, permitindo

a submissão de imagens de cheques manuscritos, o seu preprocessamento e reconhecimento.

A divisão sequencial do processo em módulos e submódulos permite não só simplificar a

utilização da framework e respectivas técnicas e algoritmos, mas também facilita a evolução

das capacidades do sistema, conforme se pode concluir pelo protótipo desenvolvido.

A investigação efectuada ao nível da correcção do ângulo de rotação do cheque permitiu

concluir que a detecção do ângulo baseada na análise da Transformada de Fourier através do

método PCA (Principal Components Analysis) produz bons resultados e permite corrigir o

ângulo detectado, alinhando o cheque.

No estudo comparativo de técnicas de detecção da bounding box do cheque, verificou-se

que a projecção horizontal e vertical da imagem apresenta melhores resultados que a detecção

de limites baseada na intersecção de histogramas ou Chi-quadrado.

Aliada ao facto de que o layout dos cheques portugueses obedece a regras pré-

estabelecidas, verifica-se assim que a obtenção dos campos, após correcção do ângulo de

rotação e extracção do cheque a partir da imagem segundo os processos implementados, se

torna relativamente fácil e intuitiva.

Após um estudo comparativo de algoritmos de Machine Learning, foi possível concluir

que as Máquinas de Vectores de Suporte com núcleo Radial Basis Function permitem o

melhor reconhecimento dos dígitos que compõem o valor de cortesia, sobretudo quando este

reconhecimento é feito com base na análise do contorno do dígito, ao contrário das

abordagens mais tradicionais que consideram uma análise directa da imagem do mesmo. A

implementação do reconhecimento do valor de cortesia no protótipo pode também ser

adaptada ao reconhecimento da data de emissão do cheque, dada a similaridade do

processamento de ambos os campos.

A investigação realizada ao nível do reconhecimento do valor legal, com base em

bibliografia específica e artigos científicos da área, bem como na análise da documentação

relativa aos sistemas comerciais existentes, permite concluir que os Modelos Escondidos de

Markov representam até ao momento a melhor forma de efectuar o reconhecimento das

palavras existentes no valor legal.

Finalmente, foi elaborado o artigo científico “Automatic system for the recognition of

amounts in handwritten checks”, Filipe E. A. Coelho, Luís F. Teixeira, Jaime S. Cardoso, o

Page 13: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

4

qual foi submetido para publicação na International Conference on Signal Processing and

Multimedia Applications – SIGMAP 2008.

Esta dissertação apresenta assim as seguintes contribuições:

Desenvolvimento de uma framework para a análise automática dos cheques;

Criação de uma base de dados de cheques portugueses;

Estudo de técnicas de preprocessamento de imagem na correcção de ângulos de

rotação, detecção e extracção de segmentos de imagem, adaptados aos cheques

portugueses;

Análise comparativa experimental de algoritmos de “Machine Learning”/OCR no

reconhecimento do valor de cortesia dos cheques;

Estudo sobre o reconhecimento do valor legal com base em Modelos Escondidos

de Markov/ICR.

1.4 Organização e temas abordados

Os capítulos seguintes descrevem cronologicamente o processo de desenvolvimento do

sistema:

Estado da arte, onde é apresentada uma revisão tecnológica e científica dos

procedimentos utilizados e plataformas adoptadas em sistemas de reconhecimento

de montantes de cheques;

Sistema de processamento automático de cheques digitalizados, demonstrando a

especificação da arquitectura e funcionalidades adequadas aos requisitos

especificados, bem como a implementação de um protótipo para auxiliar a

investigação associada ao preprocessamento e reconhecimento;

Detecção e extracção dos campos de um cheque, onde são apresentadas técnicas

de processamento digital de imagem que optimizam as imagens de cheques

manuscritos, corrigindo/atenuando ruído existente e ângulo de rotação, extraindo

posteriormente os campos contendo o valor de cortesia e valor legal;

Reconhecimento do valor de cortesia, onde são analisados algoritmos de Machine

Learning como as Redes Neuronais e Máquinas de Vectores de Suporte, bem

como uma comparação entre os mesmos, para determinar o que melhor se aplica

ao reconhecimento dos algarismos que compõem o valor de cortesia;

Reconhecimento do valor legal, onde é apresentado um estudo sobre como os

Modelos Escondidos de Markov são utilizados no reconhecimento das palavras

contidas no valor legal;

Page 14: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

5

Conclusões, onde é feita uma análise crítica dos resultados obtidos e das

contribuições resultantes da investigação efectuada ao longo da dissertação. É

também apresentada uma discussão sobre possível trabalho futuro.

Page 15: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

6

2 Estado da arte

Antes de iniciar a especificação da arquitectura e funcionalidades do sistema, foi

necessário proceder a uma análise cuidada do problema apresentado, considerando os

sistemas/plataformas existentes, bem como os algoritmos e técnicas utilizadas pelos mesmos.

2.1 Revisão científica

Os sistemas de reconhecimento automático de montantes de cheques baseiam-se em

técnicas de OCR e ICR para reconhecer os valores especificados nos cheques. O

reconhecimento é feito em modo offline, com base em imagens digitalizadas, normalmente

armazenadas em formato B&W (Black and White). Um overview detalhado sobre técnicas de

OCR é apresentado em [3]. Os algoritmos de reconhecimento OCR mais utilizados no

reconhecimento de cheques são as Redes Neuronais e as Máquinas de Vectores de Suporte.

Enquanto que a abordagem OCR é aplicada ao nível do reconhecimento de campos como

o valor de cortesia e data (os quais são formados por algarismos), a utilização de algoritmos

ICR está mais vocacionada para o reconhecimento de texto cursivo, sem segmentação

explícita, como é o caso do valor legal, onde os Modelos Escondidos de Markov têm obtido

os melhores resultados.

O reconhecimento do valor legal é feito de duas formas distintas: através do

reconhecimento directo de palavras (possível graças ao pequeno universo de possíveis

palavras a usar nesse campo) ou através da segmentação das palavras em letras, segmentos,

ou mesmo conjuntos de letras, e respectivo reconhecimento. Esta última abordagem,

denominada por métodos analíticos, implica um processamento mais complexo, embora esteja

melhor adaptada a reconhecer universos de palavras muito extensos ou infinitos. Assim

sendo, a abordagem inicial de reconhecimento directo de palavras, caracterizada por métodos

holísticos, será menos complexa e mais intuitiva no reconhecimento do valor legal.

Os algoritmos mencionados, apesar de possuírem metodologias de reconhecimento

bastante distintas, procuram analisar as características dos padrões apresentados,

estabelecendo relações de similaridade entre elementos pertencentes à mesma classe e

relações de distinção entre elementos de classes diferentes. No capítulo 5 é apresentada a

investigação realizada ao nível do reconhecimento do valor de cortesia através de Redes

Neuronais e Máquinas de Vectores de Suporte, e no capítulo 6 é apresentado um estudo

realizado sobre a forma como os Modelos Escondidos de Markov podem ser utilizados para o

reconhecimento do valor legal.

Para efectuar correctamente o reconhecimento, é necessário preparar a imagem

digitalizada do cheque para conseguir extrair o cheque e campos pretendidos. Os cheques

portugueses encontram-se normalizados, o que permite, se o cheque for correctamente

extraído da imagem digitalizada, encontrar facilmente os campos do valor de cortesia e valor

legal através da sua posição e dimensões fixas, em função das dimensões do próprio cheque,

conforme se pode observar na Figura 1.

Page 16: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

7

Figura 1 – Cheque normalizado [1]

Os sistemas projectados para o reconhecimento e validação de cheques em outros países,

onde o layout do cheque varia consoante a entidade financeira associada, não podem usufruir

deste tipo de extracção e análise directa dos campos pretendidos, o que se traduz numa mais-

valia para os sistemas de reconhecimento com base em cheques normalizados.

A correcção do ângulo de rotação recorrendo à Transformada de Fourier e análise PCA, a

extracção do cheque com base na análise das projecções horizontal e vertical do cheque e a

segmentação do cheque são temas apresentados e discutidos em pormenor no capítulo 4 da

dissertação.

Os sistemas de reconhecimento e validação de cheques bancários representam uma área

muito específica da aplicação de algoritmos de processamento digital de imagem e Machine

Learning e dada a sua complexidade e importância, são sistemas comerciais proprietários, de

código fechado (closed source).

Em [4], é apresentado um esquema de validação de cheques bancários com base no

reconhecimento do valor de cortesia e valor legal. Ambos os valores são combinados para a

determinação do montante especificado no cheque e consequente aceitação ou rejeição.

O sistema apresentado em [5] permite o reconhecimento e validação de cheques

bancários emitidos em França, Reino Unido e Estados Unidos da América. O sistema

distingue cheques manuscritos de cheques impressos e possui um reconhecimento adaptado

ao tipo de escrita dos países abordados, de forma a aumentar a taxa de sucesso no

reconhecimento dos valores especificados. Este sistema utiliza também reconhecimento

híbrido, isto é, as imagens são reconhecidas por módulos de OCR/ICR com algoritmos

Page 17: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

8

diferentes, e no final é calculado o resultado final com base nos resultados estatísticos obtidos

por cada módulo.

2.2 Revisão tecnológica

Embora as tecnologias utilizadas para a implementação deste tipo de sistemas não sejam

mencionadas nos artigos associados, a sua arquitectura modular é importante para a

especificação do sistema de reconhecimento de cheques portugueses, permitindo dividir o

problema do reconhecimento e validação do cheque em sub-problemas menos complexos e

sequenciais, como o seu preprocessamento, reconhecimento dos valores e validação.

O sistema incide sobretudo em duas áreas tecnológicas: processamento digital de imagem

e Machine Learning.

A nível de Processamento Digital de Imagem, a plataforma AForge.NET1 v1.51,

implementada na linguagem C#, destacou-se devido ao vasto número de técnicas/filtros

disponíveis (incluindo o cálculo da Transformada de Fourier). Na área de Machine Learning,

a plataforma possui ainda uma implementação funcional de redes neuronais MLP (MultiLayer

Perceptron) com back-propagation learning.

Para a realização de um estudo comparativo entre algoritmos de Machine Learning, foi

escolhida a plataforma Weka2 v3.4, implementada em Java, por possuir implementações de

vários algoritmos, entre os quais Redes Neuronais e Máquinas de Vectores de Suporte, bem

como suporte para técnicas de estimação de desempenho, por exemplo recorrendo a N-fold

cross validation.

Os conceitos anteriores são discutidos nas respectivas secções, onde são explicados em

pormenor, bem como a sua relevância para o sistema desenvolvido.

1 http://code.google.com/p/aforge/

2 http://www.cs.waikato.ac.nz/ml/weka/

Page 18: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

9

Dado não existirem restrições a nível de linguagens/plataformas, foram considerados C# /

Microsoft.NET 2.0 e Java / J2SE 1.5. A escolha final recaiu sobre C# / Microsoft .NET 2.0

por várias razões:

Inexistência de restrições ao nível do sistema operativo;

A plataforma AForge.NET encontra-se implementada em C#;

A plataforma Weka é facilmente convertida para uma assembly .NET, graças à

máquina virtual IKVM3, permitindo a sua utilização directa no sistema;

Maior familiaridade com a plataforma, incluindo a sua IDE, Microsoft Visual

Studio 2005;

A existência de versões Express4 (grátis) das ferramentas Microsoft permite o

desenvolvimento do sistema, sem custos adicionais. Os limites impostos nestas

ferramentas não limitaram o propósito da elaboração da dissertação.

De notar que foi utilizada a versão Professional do Microsoft Visual Studio 2005 e não a

versão Express, dado que o INESC Porto possui licenças para a versão comercial. Esta versão

integra numa única IDE o desenvolvimento de aplicações desktop e web, ao contrário das

versões Express separadas (Visual C# Express 2005 e Visual Web Developer Express 2005).

Para o armazenamento de informação, dada a escolha da plataforma .NET, foi utilizado o

sistema de gestão de base de dados (SGBD) Microsoft SQL Server Express 2005, e a

aplicação Microsoft SQL Management Studio Express para manipulação do mesmo.

O desenvolvimento da aplicação web foi feito em ASP.NET, e o acesso a bases de dados

foi implementado com base na tecnologia ADO.NET. Ambas as tecnologias são pilares da

plataforma .NET e resultam numa maior facilidade de desenvolvimento de projectos de

software quando utilizadas as tecnologias/ferramentas associadas.

3 http://www.ikvm.net/

4 http://www.microsoft.com/express/

Page 19: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

10

3 Sistema de processamento automático de cheques digitalizados

Neste capítulo será abordada a especificação da arquitectura e funcionalidades

pretendidas para o sistema de reconhecimento automático dos montantes em cheques

portugueses. São também apresentadas as tecnologias escolhidas e as componentes do

protótipo implementado ao longo da dissertação.

3.1 Requisitos e Arquitectura

Pretende-se um sistema automático de reconhecimento de montantes de cheques

portugueses. Não é necessário que o reconhecimento seja feito em tempo real (isto é,

devolvendo imediatamente os resultados após a submissão da imagem do cheque), mas sim

que o sistema armazene as imagens digitalizadas e as processe, por ordem de chegada,

colocando os resultados na base de dados para posterior visualização.

Foi definido inicialmente que os cheques a processar pelo sistema já se encontram

digitalizados. A imagem digitalizada apenas inclui um cheque, podendo este estar afectado de

um ângulo de rotação significativo, nunca superior a ]-45º,+45º[. Na imagem pode existir

ruído visual, resultante do processo de digitalização, o qual deverá ser atenuado/removido.

Com base nos pressupostos acima referidos, o sistema deve incluir um módulo de

preprocessamento, responsável por atenuar o ruído visual, corrigir o ângulo de rotação, extrair

o cheque da imagem e finalmente extrair os campos pretendidos do cheque.

Após a extracção dos campos, estes devem então ser processados por um módulo de

reconhecimento, o qual está encarregue de interpretar o montante especificado, com base na

imagem do campo. Este módulo deve primeiramente ser “treinado”, analisando características

dos algarismos/palavras (consoante esteja a analisar o valor de cortesia ou legal), de forma a

encontrar as que melhor identificam cada um(a). Por exemplo, determinar as características

que permitem distinguir um “0” (zero) de um “9” (nove), ou a palavra “euros” de “cêntimos”.

Para cumprir os requisitos apresentados, o sistema deverá então ser constituído pelos

seguintes componentes:

Aplicação Web, para submissão das imagens de cheques digitalizados;

Base de Dados, a qual inclui não só os cheques submetidos para processamento, mas

também os dados necessários para o treino do módulo de reconhecimento;

Motor do Sistema, o qual funciona em ciclo, e consulta constantemente a base de

dados em busca de novos cheques digitalizados para processar, ou para obter

Page 20: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

11

informação para treino do módulo de reconhecimento (no arranque do sistema).

Este módulo inclui dois “submódulos”:

o Módulo de Preprocessamento

Responsável pela atenuação de ruído, correcção do ângulo de rotação,

extracção dos cheques e campos pretendidos;

o Módulo de Reconhecimento

Responsável pela correcta interpretação dos montantes especificados no

valor de cortesia (numérico) e valor legal (extenso)

Figura 2 – Diagrama de arquitectura

3.2 Protótipo

Após a escolha das tecnologias e ferramentas associadas, teve início o desenvolvimento

do protótipo. A sua implementação segundo um modelo iterativo/evolutivo revelou-se a

forma mais eficaz de elaborar a dissertação. A separação do protótipo em módulos

sequenciais, os quais representam os passos necessários ao processamento dos cheques

digitalizados, permitiu dividir o problema inicial em sub-problemas menos complexos

(correcção do ângulo de rotação, extracção dos campos, treino do módulo de reconhecimento,

entre outros).

Page 21: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

12

3.2.1 Base de dados

A base de dados é responsável pelo armazenamento de cheques digitalizados e pelos

dados necessários ao treino do módulo de reconhecimento. Inicialmente, apenas foi necessário

cumprir o primeiro objectivo, sendo o segundo introduzido após a implementação do módulo

de pré-processamento.

Na Figura 3 é possível observar as duas tabelas existentes na base de dados.

Figura 3 – Tabelas Checks e Digits

A tabela Checks contém informação relativa aos cheques submetidos:

O nome do ficheiro (chk_name);

A imagem que contem o cheque (chk_image);

A data de upload (uploaded);

Se o cheque já foi processado ou não (state);

A data de início de processamento (processed);

O valor de cortesia, após processamento (chk_courtesy);

O valor legal, após processamento (chk_legal).

A tabela Digits armazena os exemplos de algarismos necessários ao treino do módulo de

reconhecimento:

O algarismo contido na imagem (dgt_number);

O nome do ficheiro (dgt_name);

Page 22: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

13

A imagem que contém o algarismo (dgt_image).

Foram também implementadas Stored Procedures para facilitar/automatizar vários

procedimentos executados pelo protótipo, nomeadamente nos acessos ADO.NET feitos pela

aplicação web e motor do sistema.

Foi construída uma base de dados de cheques manuscritos preenchidos para treino e

desenvolvimento do protótipo, com caligrafias diferentes (Anexo A). O objectivo principal foi

a utilização destas imagens na implementação dos vários módulos, efectuando testes e

verificando os resultados obtidos.

3.2.2 Aplicação web

A aplicação web tem por objectivos permitir a submissão de imagens de cheques

digitalizados e visualizar os resultados gerados pelo sistema, nomeadamente o montante

especificado no cheque. A aplicação permite ainda a submissão de imagens de algarismos,

para o treino do módulo de reconhecimento. A aplicação web apenas se destina a visualizar o

correcto funcionamento do protótipo, pelo que o seu aspecto e funcionalidades associadas não

são um requisito da dissertação. Este deverá ser um dos passos futuros no desenvolvimento do

sistema.

A lista de cheques permite visualizar os cheques existentes no sistema, se estes já foram

processados e quais os valores de cortesia e legal detectados, conforme se pode observar na

Figura 4.

Figura 4 – Lista de cheques

Para a submissão de cheques, (Figura 5) foi criado um pequeno formulário que permite

efectuar o upload das imagens digitalizadas. Apesar de a figura evidenciar funcionalidades

ainda não implementadas no protótipo, é possível observar que futuramente se pretende que o

Page 23: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

14

treino do sistema seja automatizado, através da submissão específica de cheques para treino,

com os respectivos valores de cortesia e legal, fornecidos juntamente com a imagem.

Figura 5 – Submissão de cheques

As funcionalidades de listagem de exemplos de algarismos (Figura 6) e submissão dos

mesmos (Figura 7), auxiliaram o desenvolvimento do protótipo, permitindo a inserção manual

da informação necessária ao treino do módulo de reconhecimento. Foram submetidos vários

tipos de algarismos segmentados pelo módulo de preprocessamento, nomeadamente as

imagens grayscale, binarizadas (pure black & white) e finalmente contornos dos algarismos.

Cada tipo de algarismo foi inserido na sua cópia da tabela Digits, sendo estas tabelas

renomeadas consoante o processo de reconhecimento era testado perante tipos de algarismos

diferentes.

Figura 6 – Lista de algarismos para treino

Page 24: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

15

Figura 7 – Submissão de algarismos para treino

3.2.3 Motor de processamento

O motor de processamento, central à elaboração da dissertação e apresentado na Figura 8,

é executado em ciclo, pesquisando a base de dados por cheques digitalizados para processar,

sendo também responsável pelo treino do módulo de reconhecimento, no arranque do sistema.

A utilização da plataforma .NET e ferramentas associadas (SQL Server Express) facilitou

o acesso à base de dados através de ADO.NET.

O motor é composto por dois submódulos, nomeadamente o módulo de

preprocessamento (Capítulo 4) e o módulo de reconhecimento (Capítulo 5).

Figura 8 – Módulo de processamento

O processo de digitalização dos cheques pode introduzir ruído visual na imagem

fornecida ao sistema, bem como um grau de rotação significativo, o que justifica a

necessidade de uma fase de preprocessamento. Nesta fase, o ruído é atenuado e a rotação do

cheque é corrigida, preparando-o para a extracção dos campos pretendidos (valor de cortesia e

valor legal).

O módulo de reconhecimento engloba os algoritmos de Machine Learning utilizados para

o reconhecimento do valor de cortesia, nomeadamente Máquinas de Vectores de Suporte, e

Page 25: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

16

está preparado para incluir Modelos Escondidos de Markov para reconhecimento do valor

legal.

A execução de um ciclo é iniciada pela obtenção a partir da base de dados de um cheque

digitalizado para processar. A imagem é fornecida ao módulo de preprocessamento, o qual

“devolve” as imagens do valor de cortesia e valor legal. Em seguida, ambas são fornecidas ao

módulo de reconhecimento, que as analisa e devolve o montante especificado no cheque. Esse

montante é então guardado no registo referente ao cheque, ficando visível através da

aplicação web.

Nos capítulos seguintes, será abordada a execução deste ciclo, desde a fase de

preprocessamento até ao reconhecimento do valor de cortesia, sendo apresentado também um

estudo sobre o reconhecimento do valor legal.

Page 26: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

17

4 Detecção e extracção dos campos de um cheque

A imagem do cheque digitalizado armazenado na base de dados é fornecida ao módulo de

preprocessamento para extracção dos campos que contêm o montante especificado, ou seja, o

valor de cortesia e o valor legal. Neste capítulo serão abordadas em pormenor as várias fases

deste pré-processamento.

4.1 Conversão para escala de cinzentos

Inicialmente, a imagem é convertida para uma escala de cinzentos (grayscale) se ainda

não estiver neste formato. Este passo é necessário para a aplicação posterior de filtros de

binarização (thresholding). A fórmula utilizada é

através da qual se obtém a luminância do pixel. Os coeficientes estão relacionados com a

diferente sensibilidade do olho humano às cores primárias (é possível constatar que o olho

humano é muito mais sensível à cor verde, por exemplo).

4.2 Correcção do ângulo de rotação

Conforme referido no Capítulo 2, o cheque digitalizado pode estar afectado de um ângulo

de rotação significativo, que deve ser corrigido para permitir a correcta extracção dos campos

pretendidos. A correcção passa pela detecção do ângulo através da análise da Transformada

de Fourier, e pela aplicação de uma operação de rotação (com interpolação bilinear) com

ângulo inverso.

4.2.1 Atenuação/remoção de ruído

O processo de digitalização do cheque pode introduzir ruído visual na imagem resultante,

o qual influencia negativamente a qualidade da mesma e afecta o processo de detecção do

ângulo de rotação, nomeadamente o resultado da aplicação da Transformada de Fourier.

Assim sendo, à imagem inicial é aplicado um filtro de mediana (median). Este filtro tem como

objectivo percorrer a imagem com uma janela de 3x3 pixéis, e colocar em cada pixel a

mediana dos valores contidos na janela, conforme se pode observar na Figura 9.

Page 27: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

18

Figura 9 – Exemplo do algoritmo do filtro de mediana[6]

Este filtro é mais apropriado do que o filtro de média (mean), dado que ao contrário deste

último, o filtro de mediana não retira definição aos cantos existentes na imagem.

O resultado da aplicação dos filtros de mediana e média pode ser vistos em pormenor nas

figuras 10, 11 e 12.

Figura 10 – Secção da imagem original de um cheque

(cheque 08, afectado de uma rotação de 25º)

Page 28: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

19

Figura 11 – Secção após aplicação do filtro de mediana

Figura 12 – Secção após aplicação do filtro de média

4.2.2 Contrast Stretching

Para normalizar o contraste da imagem, é efectuada uma operação de contrast stretching.

A análise dos histogramas de imagens muito escuras ou muito claras revela que as

intensidades dos pixéis se encontram agrupadas nos níveis mais baixos ou elevados,

respectivamente. A operação de contrast stretching expande, de forma linear, as intensidades

dos pixéis pelo domínio completo do histograma [0,255].

Page 29: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

20

Esta operação obedece à seguinte equação:

Para evitar que valores extremos influenciem o resultado da operação, os valores max e

min não correspondem directamente aos valores máximo e mínimo detectados no histograma,

mas sim ao 5º e 95º percentis do mesmo. Os percentis são obtidos sabendo que 5% dos pixéis

na imagem têm valor inferior ao 5º percentil e 5% dos pixéis na imagem têm valor superior ao

95º percentil.

As figuras 13 e 14 demonstram o resultado da operação de constrast stretching. O

histograma foi obtido através da aplicação IPLab5 (Image Processing Lab), a qual está

incluída na plataforma AForge.NET. De notar que são apresentados os logaritmos dos valores

de intensidade, para uma melhor percepção da aplicação do filtro.

Figura 13 – Histograma da imagem

5 http://imageprocessinglab.com/

Page 30: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

21

Figura 14 – Histograma após contrast stretching

Como se pode constatar, a imagem original tem os seus valores de intensidade

concentrados na gama [77,245], enquanto que após contrast stretching, toda a gama de

intensidades [0,255] é usada, resultando num contraste acentuado.

4.2.3 Transformada de Fourier

Nesta fase, o contraste da imagem encontra-se normalizado e o ruído removido ou

atenuado. É assim possível aplicar um filtro de binarização (thresholding) fixa com valor 192

(valor obtido empiricamente). Isto significa que a todos os pixéis da imagem com intensidade

inferior a esse nível é atribuída a cor preta (valor 0), enquanto que os pixéis com intensidade

igual ou superior a esse valor assumem a cor branca (valor 255). Esta operação consolida a

área do cheque na imagem (Figura 15), o que permite obter um resultado mais nítido na

aplicação da Transformada de Fourier.

Figura 15 – Resultado da binarização da imagem

Page 31: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

22

A Transformada de Fourier Discreta 2D, doravante referida como TF, transforma uma

função no domínio dos tempos na sua representação no domínio das frequências. A

transformada procura representar a imagem como uma soma de senos e co-senos.

A definição da transformada é dada por:

enquanto que a transformada inversa é dada por:

onde

A TF é afectada pelo mesmo ângulo de rotação da imagem original, normalmente

identificado por uma recta diagonal ou vertical que se destaca das restantes.

O algoritmo Fast Fourier Transform disponível na biblioteca AForge.NET requer que as

dimensões da imagem de entrada sejam potências de 2, tendo a imagem resultante essas

mesmas dimensões. Para preservar o ângulo de rotação, é gerada uma imagem quadrada,

obedecendo à restrição imposta, e a imagem do cheque é copiada para essa nova imagem.

Para acelerar o processo de cálculo e impedir que este necessite de demasiados recursos,

a imagem de entrada final é redimensionada para 1024x1024. Verificou-se que uma imagem

com estas dimensões preserva o detalhe necessário, reduzindo os recursos necessários e o

tempo de processamento no cálculo da TF.

Page 32: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

23

A Figura 16 demonstra o resultado da aplicação da TF ao cheque:

a) após melhoramentos b) a partir da imagem original

Figura 16 – Imagem resultante da Transformada de Fourier

4.2.4 Detecção do ângulo de rotação

Após a aplicação da TF à imagem, verifica-se a existência de uma recta diagonal (ou

vertical) mais intensa, a qual evidencia o ângulo de rotação do cheque. A existência desta

recta mais intensa deve-se ao facto de o padrão mais significativo no cheque ser o conjunto de

linhas horizontais, as quais produzem esta recta no domínio das frequências. Detectando o

ângulo da recta com a vertical, é possível corrigir a imagem com uma rotação inversa.

Inicialmente a imagem resultante da TF é binarizada, com nível de threshold 255, para

que esta contenha tanto quanto possível apenas a recta desejada.

Figura 17 – Imagem da TF após thresholding

Page 33: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

24

Em seguida, o ângulo da recta é encontrado através da Análise dos Componentes

Principais, ou PCA (Principal Components Analysis). Foi realizada uma comparação prévia

com outros métodos para determinar o que melhor se adapta ao problema apresentado. Os

métodos, bem como os resultados dessa comparação, são apresentados de seguida.

Inicialmente os pontos são centrados na origem, por translação (a cada coordenada é subtraído

o valor da média dessa mesma coordenada), simplificando a equação da recta:

Método dos pontos-extremo

Este é o método mais simples e menos robusto para a determinação do ângulo da recta.

Consiste em efectuar varrimentos (scan) da imagem na vertical, em ambas as direcções.

Encontrados os 1ºs pontos brancos (superior e inferior), eles caracterizam a recta e o ângulo

da mesma pode ser calculado:

Embora o cálculo seja imediato, como a recta (espaço contínuo) se encontra representada

num espaço discreto (matriz de pixéis), a determinação do ângulo baseada apenas em dois

pontos torna-se imprecisa e susceptível a erros significativos.

Regressão Linear

A determinação da equação da recta por regressão linear utiliza todos os pontos

detectados, efectuando uma análise global e não local, como o método anterior. A regressão

linear procura encontrar a recta que melhor se aproxima dos pontos detectados, segundo a

equação:

Foi desenvolvido um algoritmo iterativo de cálculo do ângulo por regressão, de forma a

atenuar a influência de pontos extremos. Em cada iteração, o declive é calculado e

consequentemente a equação da recta. Em seguida, 10% dos pontos mais afastados dessa recta

são descartados, e o declive é novamente calculado. Desta forma, os pontos extremos vão

sendo sucessivamente eliminados, até que o algoritmo atinja um número específico de

iterações, ou que o número de pontos seja reduzido a uma percentagem da quantidade inicial.

Page 34: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

25

Análise de Componentes Principais6 (PCA)

O método de determinação do declive da recta com base em PCA consiste na análise da

matriz de co-variância entre coordenadas x e y, e cálculo dos seus valores e vectores próprios.

O declive da recta é dado pelo ângulo do vector próprio associado ao maior valor próprio

da matriz de co-variância.

A matriz de co-variância tem a seguinte forma:

sendo

Dado que se trata de uma matriz quadrada de duas dimensões, os valores próprios e

são determinados pela equação:

Para obter os vectores próprios associados, é atribuído um valor fixo a uma das

coordenadas, sendo a outra calculada por:

Finalmente, os vectores são normalizados.

6 A informação contida nesta secção foi baseada em [7] e [8]

Page 35: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

26

Comparação

Para comparar os diferentes métodos, foram introduzidos no sistema algumas imagens de

cheques digitalizados, com ângulos diversos. Os ângulos reais foram manualmente

determinados recorrendo a um editor de imagens.

Os resultados obtidos são apresentados na Tabela 1:

Cheques utilizados

01 02 03 04 05 06

Ângulo real (⁰) 1,00 -0,62 -25,03 37,13 -0,22 -17,65

pontos-extremo

detectado 1,00508601 -0,68477751 -25,0718974 37,1466867 -0,44414443 -17,4592026

diferença 0,00508601 0,06477751 0,04189741 0,0166867 0,22414443 0,19079736

percentagem 0,51% 10,45% 0,17% 0,04% 101,88% 1,08%

regressão iterativa

detectado 0,99382742 -0,6328683 -25,0075225 37,1526747 -0,43758511 -17,7825076

diferença 0,00617258 0,0128683 0,02247746 0,02267467 0,21758511 0,13250765

percentagem 0,62% 2,08% 0,09% 0,06% 98,90% 0,75%

PCA

detectado 0,9992452 -0,63208462 -25,0259299 37,1456262 -0,25744617 -17,7605477

diferença 0,0007548 0,01208462 0,00407013 0,01562621 0,03744617 0,11054773

Percentagem 0,08% 1,95% 0,02% 0,04% 17,02% 0,63%

Tabela 1 - Comparação de algoritmos de detecção do ângulo da recta

Para cada cheque foi determinada a diferença absoluta e em percentagem entre o valor

real e o valor obtido por cada um dos três algoritmos. Os valores assinalados pela cor verde

representam o algoritmo que melhor se destacou na detecção do ângulo de rotação de cada

cheque, enquanto que os valores marcados a vermelho identificam o algoritmo que obteve o

pior resultado.

Como se pode observar, o método PCA obteve os melhores resultados, e o método dos

pontos-extremo originou os piores resultados, na sua maioria. Dado que o método PCA utiliza

a informação relativa a todos os pontos, e não exige iterações ou especificação de parâmetros

adicionais, foi escolhido como o método para detecção do ângulo de rotação.

4.2.5 Aplicação da rotação inversa

O ângulo detectado pelos métodos anteriores representa o ângulo entre a recta e o eixo

horizontal. O ângulo pretendido (recta com o eixo vertical) é obtido através de:

, se

, se

Page 36: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

27

Após a detecção do ângulo de rotação, a sua correcção é feita aplicando à imagem

original uma rotação com resampling (re-amostragem) bilinear, com ângulo inverso. Após

esta operação, obtém-se uma imagem onde o cheque se encontra alinhado, conforme se pode

observar na Figura 18, permitindo assim a sua localização e extracção da imagem.

Figura 18 – Imagem do cheque após correcção da rotação

4.3 Extracção do cheque

Com base na nova imagem, onde o cheque se encontra alinhado pelos eixos

horizontal/vertical, é agora possível extraí-lo com relativa facilidade.

4.3.1 Reaplicação de filtros

Como a correcção de rotação é aplicada na imagem original, torna-se necessário reaplicar

alguns filtros para facilitar a detecção dos limites do cheque, nomeadamente:

Filtro de mediana (secção 4.2.1)

Contrast Stretching (secção 4.2.2)

Os procedimentos e parâmetros são os mesmos que foram apresentados anteriormente.

Page 37: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

28

4.3.2 Detecção dos limites do cheque

Foram considerados e testados três métodos para a obtenção dos limites do cheque,

nomeadamente a projecção horizontal/vertical da imagem, intersecção de histogramas e o

método Chi-quadrado.

Projecção horizontal/vertical

As projecções horizontais e verticais da imagem são obtidas através do varrimento da

imagem na vertical/horizontal, obtendo para cada linha/coluna a contagem de pixéis pretos.

Dado que o cheque se encontra alinhado pelos eixos, espera-se que as linhas e colunas que

incluam o cheque obtenham uma contagem de pontos pretos muito superior às restantes.

Inicialmente, é aplicado um filtro de binarização de threshold 192, e após a obtenção das

projecções, estas são analisadas em ambos os sentidos para encontrar os limites

esquerdo/direito e superior/inferior. É utilizado como threshold de transição cheque / não-

cheque o valor igual a 10% do valor máximo detectado. Este valor permite que a detecção dos

limites não seja afectada por ruído aleatório ainda presente na imagem, tendo ainda em

consideração a possibilidade de o cheque ocupar apenas uma pequena parte da imagem.

Nas figuras 19 e 20 estão representadas as projecções horizontal e vertical do cheque após

correcção do ângulo de rotação (Secção 4.2.5):

Figura 19 – Projecção horizontal (limites superior/inferior)

Page 38: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

29

Figura 20 – Projecção vertical (limites esquerdo/direito)

Os pontos assinalados a vermelho correspondem aos limites detectados com “threshold”

de 10%. É possível constatar que a zona da imagem que contém o cheque se encontra entre os

limites apresentados.

Intersecção de histogramas

A detecção de limites por intersecção de histogramas baseia-se no varrimento da imagem,

segmentando-a em duas imagens e determinando o factor de similaridade entre elas, isto é, o

grau de semelhança. Para cada imagem é calculado o histograma, e determinada a intersecção

entre os mesmos. Espera-se que quando a segmentação coincidir com um dos limites, o grau

de semelhança entre as duas imagens seja mínimo, permitindo a sua localização.

Para o cálculo da intersecção de histogramas, estes são primeiramente normalizados, e

em seguida é obtido um novo histograma, através da equação:

Este histograma é percorrido em ambos os sentidos, de forma a encontrar os dois

primeiros mínimos locais. Estes mínimos representam os limites superior/inferior (Figura 21)

ou esquerdo/direito (Figura 22), consoante o varrimento efectuado.

Page 39: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

30

Figura 21 – Intersecção de histogramas (limites superior/inferior)

Figura 22 – Intersecção de histogramas (limites esquerdo/direito)

Os pontos assinalados a vermelho representam os limites reais do cheque, para efeitos de

comparação.

Chi-Quadrado

O método Chi-quadrado é semelhante ao método anterior, mas ao contrário deste,

procura encontrar o factor de dissimilaridade entre as imagens. O histograma de comparação é

calculado da seguinte forma:

Page 40: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

31

Novamente, o histograma é percorrido em ambos os sentidos, mas desta vez pretende-se

encontrar os dois primeiros “declives”, os quais representam os limites a localizar (Figuras 23

e 24).

Figura 23 – Chi-quadrado (limites superior/inferior)

Figura 24 – Chi-quadrado (limites esquerdo/direito)

Os pontos vermelhos indicam os limites reais do cheque. De notar que no exemplo

apresentado, a área delimitada pelos “declives” é ligeiramente superior à zona da imagem

onde o cheque se encontra.

Page 41: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

32

Comparação

Para comparar os métodos apresentados foram efectuados testes, cujos resultados podem

ser observados nas tabelas 2 e 3. Para testar a influência dos níveis de grayscale no cálculo da

intersecção e Chi-quadrado, foram também gerados histogramas com 8 níveis de cinzento

(agrupando os 256 bins do histograma original em grupos de 32 bins).

minX minY maxX maxY Largura Altura

1

original 24 29 1813 1032 1789 1003

projecção 24 29 1813 1032 1789 1003

intersecção (256) 15 24 1842 1047 1827 1023

intersecção (8) 21 28 1815 1033 1794 1005

Chi-quadrado (256) 20 25 1842 1033 1822 1008

Chi-quadrado (8) 22 28 1814 1032 1792 1004

2

original 21 20 1811 1025 1790 1005

projecção 22 20 1811 1025 1789 1005

intersecção (256) 7 9 1815 1028 1808 1019

intersecção (8) 19 18 1812 1026 1793 1008

Chi-quadrado (256) 16 14 1813 1026 1797 1012

Chi-quadrado (8) 19 18 1812 1026 1793 1008

3

original 0 0 1810 1010 1810 1010

projecção 0 3 1809 981 1809 978

intersecção (256) 0 0 1808 1005 1808 1005

intersecção (8) 0 0 1808 982 1808 982

Chi-quadrado (256) 0 0 1808 1005 1808 1005

Chi-quadrado (8) 0 0 1808 984 1808 984

4

original 1034 2278 2825 3280 1791 1002

projecção 1034 2278 2825 3281 1791 1003

intersecção (256) 1011 2262 2854 3299 1843 1037

intersecção (8) 1032 2277 2829 3282 1797 1005

Chi-quadrado (256) 1031 2278 2854 3299 1823 1021

Chi-quadrado (8) 1032 2278 2829 3282 1797 1004

5

original 558 1415 2350 2421 1792 1006

projecção 558 1415 2350 2422 1792 1007

intersecção (256) 555 1414 2371 2426 1816 1012

intersecção (8) 557 1415 2351 2422 1794 1007

Chi-quadrado (256) 555 1414 2371 2425 1816 1011

Chi-quadrado (8) 555 1414 2371 2425 1816 1011

6

original 254 361 2065 1371 1811 1010

projecção 255 361 2064 1370 1809 1009

intersecção (256) 254 360 2064 1370 1810 1010

intersecção (8) 254 360 2064 1370 1810 1010

Chi-quadrado (256) 254 360 2064 1370 1810 1010

Chi-quadrado (8) 254 360 2064 1370 1810 1010

Tabela 2 – Limites detectados

Page 42: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

33

minX minY maxX maxY soma

1

original

projecção 0 0 0 0 0

intersecção (256) 9 5 29 15 58

intersecção (8) 3 1 2 1 7

Chi-quadrado (256) 4 4 29 1 38

Chi-quadrado (8) 2 1 1 0 4

2

original

projecção 1 0 0 0 1

intersecção (256) 14 11 4 3 32

intersecção (8) 2 2 1 1 6

Chi-quadrado (256) 5 6 2 1 14

Chi-quadrado (8) 2 2 1 1 6

3

original

projecção 0 3 1 29 33

intersecção (256) 0 0 2 5 7

intersecção (8) 0 0 2 28 30

Chi-quadrado (256) 0 0 2 5 7

Chi-quadrado (8) 0 0 2 26 28

4

original

projecção 0 0 0 1 1

intersecção (256) 23 16 29 19 87

intersecção (8) 2 1 4 2 9

Chi-quadrado (256) 3 0 29 19 51

Chi-quadrado (8) 2 0 4 2 8

5

original

projecção 0 0 0 1 1

intersecção (256) 3 1 21 5 30

intersecção (8) 1 0 1 1 3

Chi-quadrado (256) 3 1 21 4 29

Chi-quadrado (8) 3 1 21 4 29

6

original

projecção 1 0 1 1 3

intersecção (256) 0 1 1 1 3

intersecção (8) 0 1 1 1 3

Chi-quadrado (256) 0 1 1 1 3

Chi-quadrado (8) 0 1 1 1 3

Tabela 3 – Erros obtidos

Page 43: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

34

A Tabela 4 apresenta a comparação entre os algoritmos abordados. Para cada algoritmo

foram calculadas as somas das diferenças entre os valores obtidos e os valores reais (Tabela

3), permitindo ordenar os algoritmos relativamente à sua maior ou menor aproximação aos

limites reais do cheque.

projecção 39 1º

intersecção (8) 58 2º

Chi-quadrado (8) 78 3º

Chi-quadrado (256) 142 4º

intersecção (256) 217 5º

Tabela 4 - Comparação de algoritmos de detecção dos limites do cheque

Verificou-se que a detecção de limites baseada na projecção horizontal/vertical da

imagem produziu os melhores resultados, e que a redução dos níveis de cinzento melhorou

consideravelmente os resultados dos dois outros métodos. Contudo, os melhoramentos não

foram suficientes para ultrapassar os resultados obtidos por projecção, tendo o método de

projecção horizontal/vertical sido adoptado pelo sistema para a detecção dos limites do

cheque.

4.3.3 Recorte da imagem

Após a determinação dos limites do cheque, é aplicada uma operação de recorte

(cropping) à imagem, para que esta contenha apenas o cheque (Figura 25).

Figura 25 – Imagem contendo apenas o cheque

Page 44: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

35

4.4 Extracção dos campos pretendidos

Após a extracção do cheque, o passo seguinte é a extracção dos campos pretendidos.

Dado que o cheque se encontra alinhado, e que o seu layout está normalizado, é possível

calcular a posição e dimensões dos campos com base nas dimensões do próprio cheque.

Obtendo essas coordenadas, a extracção dos campos fica reduzida à aplicação de operações de

recorte na imagem do cheque.

4.4.1 Determinação das medidas

Para determinar com alguma precisão as coordenadas necessárias à extracção dos

campos, foi adoptada a largura do cheque como base para os cálculos. Verificou-se, após

extracção dos cheques de várias imagens, que a zona clara existente na parte inferior do

cheque era por vezes eliminada devido a binarizações. Dado que essa zona não contém

informação relevante, e dado que a largura do cheque não é influenciada, optou-se por utilizar

essa medida para obter valores mais fidedignos.

O processo de determinação das medidas exactas embutidas no sistema passou

inicialmente por uma extracção manual das coordenadas, a partir de imagens de cheques

segmentadas. Em seguida efectuou-se uma média dos valores obtidos, e finalmente os valores

foram afectados de uma margem “de segurança”, de forma a englobar o campo pretendido

mas sem ser afectada pelas zonas periféricas (outros campos, background, entre outros).

A Tabela 5 apresenta os valores finais, em função da largura do cheque.

Valor de cortesia (%) Valor legal (%)

Topo 12.50 33.75

Esquerda 61.50 11.50

Largura 38.25 87.75

Altura 05.25 08.50

Tabela 5 – Dimensões e localização do valor de cortesia em função da largura do cheque

4.4.2 Recorte do cheque

Com base nas medidas previamente determinadas, é possível extrair os dois campos

pretendidos (valor de cortesia e valor legal). A sua posição e dimensões são calculadas a partir

da largura da imagem (que coincide com a largura do cheque), e são aplicadas duas operações

de recorte (cropping) à imagem. Os resultados obtidos são demonstrados nas figuras 26 e 27.

Page 45: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

36

Figura 26 – Campo do valor de cortesia

Figura 27 – Campo do valor legal

Com a extracção destes campos, o objectivo principal do módulo de preprocessamento é

assim cumprido. A utilização do resultado por parte do módulo de reconhecimento será

abordada no capítulo seguinte, onde será utilizado para extrair os algarismos do valor de

cortesia. Como evolução do sistema, espera-se que seja utilizado futuramente para extracção

das palavras do valor legal, para interpretação do mesmo e comparação com o valor de

cortesia.

Page 46: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

37

5 Extracção dos algarismos e reconhecimento do valor de cortesia

Após o processo de extracção da imagem que contém o campo do valor de cortesia,

descrito no capítulo anterior, é agora necessário proceder à sua análise e reconhecimento.

Nesse sentido, os algarismos presentes na imagem devem ser extraídos por segmentação

da mesma, removendo elementos de layout como vírgulas e pontos, e elementos de segurança,

como o “risco” que normalmente é colocado nas “caixas” não preenchidas, durante o seu

preenchimento.

Obtendo os algarismos, é necessário utilizar algoritmos de Machine Learning para

ensinar o sistema a identificar correctamente os algarismos que lhe são apresentados,

interpretando assim o valor de cortesia.

Embora a biblioteca AForge.NET contenha uma implementação de Redes Neuronais, foi

utilizado o software Weka, o qual permite o teste e comparação de diferentes algoritmos de

uma forma intuitiva. Após a análise comparativa dos algoritmos, procedeu-se à integração no

sistema da biblioteca Java do Weka. Esta integração foi apoiada no software IKVM.

Nas secções seguintes serão abordados os conceitos introduzidos e será apresentada a

forma como o módulo de reconhecimento foi implementado.

5.1 Extracção dos algarismos

Para efectuar a extracção dos algarismos, o sistema aplica os filtros de mediana, contrast

stretching e de binarização à imagem do campo. O resultado pode ser observado na Figura 28.

Figura 28 – Preprocessamento do valor de cortesia

Em seguida, a imagem é submetida a um processo de blob filtering, o qual remove certos

objectos existentes na imagem com dimensões específicas, como vírgulas, pontos, algum

ruído mais significativo ou ainda o “risco” que normalmente é colocado por motivos de

segurança nas “caixas” não preenchidas. O resultado pode ser observado na figura 29.

Page 47: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

38

Figura 29 – Valor de cortesia após blob filtering

Finalmente, é necessário encontrar os limites de cada algarismo para proceder à sua

extracção. Esta detecção é feita inicialmente a nível horizontal, com base na projecção vertical

da imagem. Os limites são obtidos detectando as transições na contagem de pixéis brancos.

Os limites são registados e a imagem é segmentada.

Em seguida, para cada secção resultante, é efectuada uma detecção de limites verticais,

com base na projecção horizontal. Novamente, os limites são obtidos detectando as transições

na contagem de pixéis brancos, mas desta vez apenas os limites superior e inferior são

considerados. Este pormenor está relacionado com o facto de alguns algarismos poderem ser

escritos com descontinuidades verticais/diagonais ou estas surgirem da binarização da

imagem, como se pode observar no algarismo “5” presente na Figura 30.

Figura 30 – Descontinuidade frequentemente existente no algarismo “5”

Os limites verticais detectados são registados e as imagens são finalmente segmentadas,

conforme apresentado na Figura 31.

Figura 31 – Algarismos segmentados

Page 48: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

39

O registo dos limites permite efectuar também um recorte directo na imagem original,

obtendo os algarismos em grayscale.

Para treino dos algoritmos de reconhecimento, é necessário que as dimensões dos

algarismos sejam normalizadas. O processo envolve redimensionamento das imagens para um

tamanho previamente estabelecido.

Para efeitos de comparação, os algarismos foram recolhidos e processados nos seguintes

formatos:

Dimensões normalizadas para 8x16 pixéis:

o Algarismos originais em grayscale, extraídos directamente da imagem do

campo após obtenção das coordenadas de segmentação;

o Algarismos binarizados, após preprocessamento do campo

Dimensões normalizadas para 32x64 pixéis:

o Contornos dos algarismos binarizados; é aplicado um filtro de cantos

(edges) aos algarismos binarizados.

Pretende-se assim comparar o reconhecimento directo a partir das imagens originais e

binarizadas, com o reconhecimento baseado em características (features) dos algarismos.

As figuras 32, 33 e 34 mostram os vários formatos utilizados para os algarismos

extraídos:

Figura 32 – Algarismos grayscale (imagens ampliadas a 400%)

Figura 33 – Algarismos binarizados 8x16 (imagens ampliadas a 400%)

Page 49: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

40

Figura 34 – Contornos dos algarismos (tamanho real)

Verificou-se ainda que o algarismo “0” assume duas formas distintas (Figura 35). É

necessário considerar ambas as formas como algarismos diferentes para permitir uma melhor

taxa de sucesso no reconhecimento.

Figura 35 – Formas distintas do algarismo “0”

Os cheques manuscritos preenchidos no início do desenvolvimento foram processados

pelo sistema no sentido de obter os seus algarismos (161 no total) nas três formas

apresentadas, para treino do sistema. Estes algarismos foram posteriormente inseridos na base

de dados, e o resultado pode ser analisado em pormenor no Anexo B.

5.2 Preparação para o estudo comparativo de algoritmos de reconhecimento

Com o processo de extracção de algarismos finalizado, foi feita uma análise de

algoritmos de Machine Learning para determinar o que melhor se adapta ao reconhecimento

dos algarismos apresentados, através do software Weka.

Com base na bibliografia adoptada e artigos científicos relacionados com o

processamento de cheques manuscritos, constatou-se que os algoritmos que têm obtido

melhores resultados na interpretação do valor de cortesia são as Redes Neuronais e as

Máquinas de Vectores de Suporte, apresentados nas secções seguintes.

Para iniciar os testes em Weka, foi necessário converter as imagens de algarismos

armazenadas na base de dados em ficheiros de texto, segundo o formato indicado pela

documentação do software. Para as imagens 8x16, as suas matrizes de pixeis foram

convertidas em vectores unidimensionais de 128 valores. Para as imagens 32x64, foram

determinadas as distâncias de cada lado da imagem ao contorno, e os quatro vectores

resultantes foram concatenados, resultando num vector de 192 valores (32+32+64+64).

Page 50: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

41

5.2.1 N-Fold cross validation

Para testar a validade e robustez de cada algoritmo, bem como os parâmetros escolhidos,

o software Weka permite utilizar o método de N-fold cross validation. Este método consiste

na divisão do conjunto inicial de treino em N conjuntos formados por escolha aleatória de

elementos). Em N iterações um conjunto (sempre diferente) é utilizado para validação e os

restantes N-1 conjuntos para treino do algoritmo. No final, os N resultados obtidos são

combinados para produzir o resultado final. Para os testes efectuados foi escolhido N=10 por

ser um valor habitualmente utilizado em cross-validation.

Nas secções seguintes será apresentada uma breve explicação dos algoritmos analisados,

bem como os resultados obtidos utilizando as três formas de algarismos escolhidas, com cross

validation.

5.3 Redes Neuronais

As redes neuronais artificiais (artificial neural networks - ANN) tentam representar uma

forma simplificada do funcionamento do cérebro humano. Formadas por nós (neurónios) e

ligações entre estes, as redes são treinadas para, dada uma determinada entrada, produzir o

resultado respectivo. A rede é formada por uma camada de entrada (input layer), uma camada

de saída (output layer) e por uma ou mais camadas escondidas (hidden layers), conforme é

exemplificado na Figura 36.

Figura 36 – Rede Neuronal

Page 51: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

42

5.3.1 Perceptrão Multicamada

O Perceptrão Multicamada (Multilayer Perceptron – MLP, exemplo na Figura 37) é um

tipo de rede neuronal onde cada neurónio da(s) camada(s) escondida(s) efectua uma soma

pesada das entradas e lhes aplica uma função de activação derivável. A necessidade de a

função de activação ser derivável está relacionada com os métodos utilizados por alguns

algoritmos de aprendizagem utilizados no treino.

Figura 37 – Perceptrão Multicamada [9]

Habitualmente é utilizada a função sigmóide nos neurónios da camada escondida (Figura

38).

Figura 38 – Função sigmóide [9]

Relativamente à estrutura da rede, dado que o número de entradas e saídas é definido à

partida pelo problema apresentado, apenas é necessário escolher o número de camadas

escondidas e o número de neurónios em cada uma.

Para o treino da rede, é utilizado o algoritmo de back-propagation, um algoritmo de

aprendizagem supervisionada que consiste em fornecer à rede exemplos de entradas e as

respectivas saídas esperadas. Em cada iteração, as ligações entre os neurónios são

gradualmente optimizadas de forma a minimizar o erro entre a saída produzida pela rede e a

pretendida. A entrada é fornecida à rede, e o sinal é propagado até à saída, produzindo um

resultado. O erro entre esse resultado e a saída esperada é calculado, e o sinal é

retropropagado até à entrada, estimando os erros individuais de cada neurónio. Dessa forma, é

Page 52: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

43

possível alterar o peso das ligações entre os mesmos de forma a obter um resultado mais

próximo do esperado.

Os parâmetros utilizados durante o algoritmo de back-propagation são o ritmo de

aprendizagem (learning rate) e o momentum.

O ritmo de aprendizagem está relacionado com a magnitude da alteração dos pesos dos

neurónios. Quanto maior o ritmo de aprendizagem, maiores são as alterações efectuadas nos

pesos dos neurónios e mais rapidamente o algoritmo tende para um mínimo, terminando o

processo de aprendizagem. No entanto, esse mínimo pode ser local e não o mínimo global

esperado, o que se traduz no fenómeno de over-fitting, isto é, a rede fica especificamente

adaptada aos exemplos de treino e não é capaz de generalizar. Por seu lado, um ritmo de

aprendizagem muito reduzido obriga a que o processo de treino da rede se prolongue por

demasiado tempo.

Para auxiliar o treino da rede com ritmos de aprendizagem mais elevados, foi

especificado um parâmetro, o momentum, o qual se traduz no peso do valor anterior aquando

da actualização dos pesos das ligações entre os neurónios. Desta forma, conforme o

momentum seja reduzido ou elevado, a alteração dos pesos será leve ou fortemente atenuado.

A introdução deste parâmetro evita também a existência de oscilações que podem ocorrer com

ritmos de treino mais elevados, permitindo assim que os mínimos sejam encontrados.

5.3.2 Rede de Funções de Base Radial

A Rede de Funções de Base Radial (Radial Basis Function Network) distingue-se do

Perceptrão Multicamada pela existência de apenas uma camada escondida de neurónios. Estes

calculam a distância do seu centro às entradas recebidas, aplicando-lhe posteriormente uma

função de activação gaussiana. A saída da rede é linear, produzida pela soma das saídas dos

neurónios da camada escondida.

Figura 39 – Rede de Funções de Base Radial [10]

Durante o treino da rede, os centros dos neurónios são determinados recorrendo ao

algoritmo de k-means clustering, o qual procura separar os elementos em K grupos (clusters)

e determinar os respectivos centros.

Page 53: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

44

Figura 40 – Exemplo do algoritmo k-means clustering [11]

5.3.3 Parâmetros de Teste

Para a rede neuronal Perceptrão Multicamada, os parâmetros que melhores resultados

produziram foram:

Neurónios camada escondida = (n entrada + n saída) / 2

Ritmo de aprendizagem (learning rate): 0.3

Momentum: 0.2

Épocas de aprendizagem: 500

Para a Rede de Funções de Base Radial, o parâmetro [“nº de clusters” = 35] foi obtido

após a realização de alguns testes.

No Anexo C são apresentados os outputs respectivos, onde se pode observar os resultados

e a matriz de confusão (dígitos correcta e incorrectamente interpretados pelo algoritmo).

Page 54: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

45

5.4 Máquinas de Vectores de Suporte

As Máquinas de Vectores de Suporte (Support Vector Machines) representam uma

alternativa às redes neuronais e procuram solucionar o problema da classificação e

reconhecimento encontrando hiperespaços de N dimensões que melhor separam os objectos

nas suas classes/categorias distintas.

Figura 41 – Máquinas de Vectores de Suporte [12]

Para cada elemento, os dados de entrada (designados por atributos) são transformados

por uma função de kernel em características (features), formando um vector. Pretende-se

então encontrar o hiperplano que melhor separa os vectores de elementos de classes

diferentes, isto é, cuja margem seja a mais elevada possível. Os vectores que definem a

largura da margem são designados vectores de suporte, e podem ser observados na Figura 42:

Figura 42 – Vectores de suporte e margens [12]

Page 55: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

46

5.4.1 Kernels

A utilização de uma kernel polinomial ou outros permite definir limites de separação não-

lineares quando não é possível separar os vectores linearmente (Figura 43).

Figura 43 – Kernel polinomial [12]

Uma outra alternativa é a kernel RBF, a qual permite especificar fronteiras de separação

mais complexas, na figura 44.

Figura 44 – kernel RBF [12]

Page 56: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

47

5.4.2 Parâmetros de Teste

Para a Máquina de Vectores de Suporte com kernel polinomial, o parâmetro [expoente =

1.0] produziu os melhores resultados. Para a Máquina de Vectores de Suporte com kernel

RBF, os melhores resultados foram obtidos com o parâmetro (alpha) = 0.04, e o parâmetro

de complexidade C = 2.0 para os dígitos grayscale e binarizados, e 9.0 para os contornos. No

Anexo C são apresentados os outputs respectivos, onde se pode observar os resultados obtidos

e a matriz de confusão determinados pelo software Weka.

5.5 Comparação de resultados

A Tabela 6 apresenta um resumo das taxas de reconhecimento apresentadas no Anexo C:

grayscale binarizados contorno

MLP 88.8 87.6 91.3 89.2

RBF 85.7 70.2 86.3 80.7

SVM polinomial 88.8 87.6 92.5 89.6

SVM-RBF 89.4 88.2 93.2 90.3

88.2 83.4 90.8

Tabela 6 – Comparação de algoritmos e formatos

Ao ordenar os valores obtidos, obtém-se o seguinte quadro:

SVM-RBF contorno 93.2

SVM polinomial contorno 92.5

MLP contorno 91.3

SVM-RBF grayscale 89.4

SVM polinomial

MLP grayscale 88.8

SVM-RBF binarizados 88.2

SVM polinomial

MLP binarizados 87.6

RBF contorno 86.3

RBF grayscale 85.7

RBF binarizados 70.2

Tabela 7 – Resultados ordenados por taxa de reconhecimento

Page 57: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

48

Comparando as formas de análise dos algarismos, é possível concluir que para cada

algoritmo analisado, os melhores resultados são produzidos pelo reconhecimento baseado no

contorno (90.8%), seguido pelo reconhecimento com base na imagem grayscale (88.2%), e

finalmente pela imagem binarizada do algarismo (83.4%).

Relativamente aos algoritmos utilizados, verifica-se que as Máquinas de Vectores de

Suporte apresentam melhores resultados do que as Redes Neuronais. As Máquinas de

Vectores de Suporte com kernel RBF obtiveram em média 90.3%, enquanto que as Redes de

Funções de Base Radial apenas obtiveram uma taxa de reconhecimento de 80.7%.

Page 58: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

49

6 Reconhecimento do valor legal

Para reconhecer automaticamente o montante de um cheque, a análise do valor de

cortesia é suficiente, dada a sua menor complexidade face à análise do valor legal. No

entanto, para proceder à validação automática de um cheque, é necessário considerar ambos

os campos. O reconhecimento do valor legal paralelamente ao valor de cortesia permite

também consolidar o reconhecimento do montante, ao confirmar o valor detectado ou

esclarecer dúvidas relativamente ao mesmo, por análise probabilística.

A análise do valor legal implica também um preprocessamento específico, como a

remoção das linhas de base, correcção da inclinação do texto (slant correction), e

segmentação do valor legal nas suas palavras constituintes.

Inicialmente o reconhecimento do valor legal foi efectuado com base em Redes

Neuronais e Máquinas de Vectores de Suporte, mas os resultados obtidos recorrendo a

Modelos Escondidos de Markov têm produzido melhores resultados.

Neste capítulo, será apresentado um breve estudo sobre os Modelos Escondidos de

Markov bem como a sua utilização no reconhecimento do valor legal presente nos cheques

bancários.

6.1 Modelos Escondidos de Markov

Os Modelos Escondidos de Markov (HMM – “Hidden Markov Models”) procuram

encontrar padrões em sequências de observações. A partir de sequências de estados

observáveis, o modelo estabelece relações com os estados pretendidos, os quais não são

directamente observáveis.

Figura 45 – Relação entre estados observáveis e escondidos [13]

Page 59: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

50

Na Figura 45 é demonstrado um exemplo da aplicação dos HMMs: a partir do estado das

algas marinhas (observável), pretende-se determinar as condições atmosféricas. As transições

de estado das condições atmosféricas estão relacionadas com as transições de estado das algas

marinhas, e através do modelo apresentado procura-se determinar padrões que apesar de não

serem facilmente identificáveis, permitem determinar os estados escondidos a partir dos

estados observáveis.

O modelo HMM é assim constituído por dois conjuntos de estados e três conjuntos de

probabilidades:

Estados escondidos;

Estados visíveis;

Vector (probabilidade de o modelo se encontrar num determinado estado

escondido em t=1);

Matriz de transição de estados (probabilidade de o modelo se encontrar num

determinado estado escondido com base no estado escondido anterior);

Matriz de confusão (probabilidade de se observar um determinado estado visível

estando o sistema num determinado estado escondido).

Figura 46 – Exemplos de matriz de transição (A) e matriz de confusão (B) [17]

A aprendizagem do modelo HMM, com base em sequências de observações relacionadas

com os estados escondidos pretendidos, é feita através do algoritmo de Baum-Welch, também

conhecido por algoritmo de forward-backward. A determinação das sequências mais

prováveis de estados escondidos, a partir de observações obtidas e do modelo HMM, é feita

através do algoritmo de Viterbi. Ambos os algoritmos são apresentados em pormenor em [14].

Os sistemas de reconhecimento de fala baseados em HMMs têm obtido excelentes

resultados, e a utilização de HMMs no reconhecimento de texto manuscrito tem sido alvo de

investigação ao longo das últimas décadas.

Page 60: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

51

6.2 Preprocessamento do valor legal

O preprocessamento do valor de cortesia é necessário para a correcta extracção das

palavras que o compõem. Os processos de atenuação de ruído utilizados para o valor de

cortesia (apresentados no Capítulo 5) podem também ser aplicados na imagem contendo o

valor legal, obtendo os resultados observáveis nas figuras 47 e 48:

Figura 47 – Valor legal extraído

Figura 48 – Valor legal após atenuação de ruído e binarização

As linhas de base, utilizadas como linhas de orientação na escrita do montante, introduzem

ruído visual e dificultam a segmentação directa do valor em palavras. A sua remoção é

normalmente efectuada através da análise da projecção horizontal da imagem. As linhas de

base são representadas por “picos” acentuados, o que facilita a sua localização e posterior

eliminação.

É ainda necessário remover o “traço” de segurança habitualmente colocado pelo emissor

do cheque por motivos de segurança. Este elemento e eventuais artefactos resultantes da

binarização da imagem são removidos por blob filtering, de forma semelhante ao efectuado

no preprocessamento do valor de cortesia.

Após a extracção das palavras por segmentação da imagem, é ainda necessário corrigir a

inclinação das mesmas para permitir um melhor reconhecimento (Figura 49). Algumas

técnicas de detecção e remoção do ângulo de inclinação são mencionadas em [15] e [16].

Figura 49 – slant correction: a) original e b) inclinação corrigida

Page 61: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

52

Para o reconhecimento através de Modelos Escondidos de Markov, são obtidas

características das palavras extraídas. Em [17] as características escolhidas são a presença de

ascendentes e descendentes na escrita das palavras, detectados através de linhas de referência

(Figura 50).

Figura 50 – ascendentes e descendentes detectados numa linha de texto [17]

Dessa forma, as palavras podem ser representadas por sequências de ascendentes e

descendentes, conforme se pode observar na figura 51.

Figura 51 – Sequências de ascendentes (A) e descendentes (D) [17]

O sistema apresentado em [4] extrai um conjunto de características diferentes, similares

ao histograma vertical da imagem. Uma “janela” de N pixéis de largura percorre a palavra, e

são contados os pixéis pretos contidos na janela (Figura 52).

Page 62: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

53

Figura 52 – Janela de contagem [4]

Este processo resulta na criação de um vector que representa a sequência de contagem

característica da palavra. Em ambos os casos, as palavras são caracterizadas por uma

sequência de características, a qual irá permitir o seu reconhecimento através de Modelos

Escondidos de Markov.

Page 63: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

54

7 Conclusões

Neste capítulo final, é apresentado um resumo dos resultados obtidos e as contribuições

desta dissertação, bem como os recentes e futuros desenvolvimentos do sistema.

7.1 Conclusões sobre a dissertação

O trabalho desenvolvido ao longo das 20 semanas de dissertação, incluindo a elaboração

deste documento, permitiu atingir os objectivos propostos.

Conforme foi mencionado no capítulo inicial, a framework especificada e a

implementação do respectivo protótipo permitem uma rápida evolução do sistema através da

adição de novos módulos ou adaptação dos módulos existentes.

As técnicas de processamento digital de imagem utilizadas para o preprocessamento do

cheque, aliadas ao layout normalizado dos cheques portugueses permitem a rápida extracção

do cheque digitalizado e respectivos campos pretendidos.

O estudo realizado a nível de algoritmos de OCR para o reconhecimento do valor de

cortesia, com posterior inclusão no protótipo, permitiu obter bons resultados e deverá ser

considerado também para a análise da data de emissão do cheque, devido à similaridade entre

os campos.

O estudo sobre o reconhecimento do valor legal, com ênfase nos Modelos Escondidos de

Markov foi elaborado como ponto de partida para a sua implementação no protótipo e

posterior evolução do sistema, não só para o reconhecimento automático do montante

especificado no cheque mas também para a comparação dos valores de cortesia e valor legal e

consequente validação.

7.2 Perspectivas futuras

O protótipo desenvolvido durante a dissertação permite a submissão de cheques

digitalizados, e reconhecimento do montante especificado no valor de cortesia. Foi possível

posteriormente preparar o módulo de preprocessamento para extrair também o campo da data

de emissão do cheque, e reutilizar os algoritmos de reconhecimento do valor de cortesia para

reconhecer os algarismos contidos na data, dada a similaridade dos campos.

A continuação do desenvolvimento do sistema passará pela implementação ou inserção

do algoritmo de Modelos Escondidos de Markov no módulo de reconhecimento, bem como a

introdução de técnicas de preprocessamento específicas para o campo do valor legal, como a

remoção das linhas de base e correcção da inclinação das palavras.

Após essa fase, o sistema passará não só a reconhecer o montante especificado no cheque

como também será possível validar o próprio cheque por comparação do valor legal e valor de

Page 64: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

55

cortesia. A extracção e análise dos restantes campos permitirá, por exemplo, verificar a

assinatura do signatário, detectando eventuais tentativas de falsificação.

Um aspecto não abordado durante a realização da dissertação está relacionado com a

aparência gráfica da aplicação web. Embora não sendo relevante para o processamento dos

cheques, é um factor relevante para a interacção com o sistema em fases mais avançadas.

Finalmente, uma possível etapa futura será a validação do sistema desenvolvido em

ambiente real.

Page 65: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

56

Referências

[1] – Cheques, Regras Gerais – Banco de Portugal

www.bportugal.pt/root/publish/cadernos/cheques_geral.pdf, 31/11/2007

[2] – Síntese dos Três Pilares do Acordo de Basiléia II

http://www.eumed.net/ce/2005/jmp-risco/9.htm, 15/11/2007

[3] – Arica, N.; Yarman-Vural, F.T., "An overview of character recognition focused on

off-line handwriting," Systems, Man, and Cybernetics, Part C: Applications and Reviews,

IEEE Transactions on , vol.31, no.2, pp.216-233, May 2001.

http://ieeexplore.ieee.org/iel5/5326/20390/00941845.pdf, 02/11/2007

[4] – G. Kaufmann and H. Bunke. Automated reading of cheque amounts. Pattern

Analysis and Applications, 3(2):132141, 2000.

http://www.springerlink.com/content/waclu2a1kun0ncj0/fulltext.pdf, 05/11/2007

[5] – Gorski, N.; Anisimov, V.; Augustin, E.; Baret, O.; Price, D.; Simon, J.-C., "A2iA

Check Reader: a family of bank check recognition systems," Document Analysis and

Recognition, 1999. ICDAR '99. Proceedings of the Fifth International Conference on ,

vol., no., pp.523-526, 20-22 Sep 1999.

http://ieeexplore.ieee.org/iel5/6420/17144/00791840.pdf, 07/11/2007

[6] – Spacial Filters – Median Filter

http://homepages.inf.ed.ac.uk/rbf/HIPR2/median.htm, 17/11/2007

[7] – Math 151 Introduction to Eigenvectors

www.tiem.utk.edu/~gross/math151fall06/eigenvector.intro.pdf, 08/11/2007

[8] – A tutorial on Principal Components Analysis, Lindsay I Smith

http://kybele.psych.cornell.edu/~edelman/Psych-465-Spring-2003/PCA-tutorial.pdf,

08/11/2007

[9] – Feedforward Neural Networks

http://documents.wolfram.com/applications/neuralnetworks/NeuralNetworkTheory/2.5.1.

html, 18/11/2007

[10] – Radial Basis Function Networks

http://documents.wolfram.com/applications/neuralnetworks/NeuralNetworkTheory/2.5.2.

html, 18/11/2007

[11] – K-means algorithm - Demonstration of the algorithm

http://en.wikipedia.org/wiki/K-means_algorithm, 18/11/2007

[12] – Support Vector Machines

http://www.dtreg.com/svm.htm, 19/11/2007

[13] – Hidden Markov Models

http://www.comp.leeds.ac.uk/roger/HiddenMarkovModels/html_dev/hidden_patterns/s2_

pg1.html, 09/11/2007

[14] – Rabiner, L. R. 1990. “A tutorial on hidden Markov models and selected

applications in speech recognition”. In Readings in Speech Recognition, A. Waibel and K.

Page 66: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

57

Lee, Eds. Morgan Kaufmann Publishers, San Francisco, CA, 267-296.

http://ieeexplore.ieee.org/iel5/5/698/00018626.pdf, 12/11/2007

[15] – Sun, C. and Si, D. 1997. “Skew and Slant Correction for Document Images Using

Gradient Direction”. In Proceedings of the 4th international Conference on Document

Analysis and Recognition (August 18 - 20, 1997). ICDAR. IEEE Computer Society,

Washington, DC, 142-146.

http://ieeexplore.ieee.org/iel3/4891/13483/00619830.pdf, 09/11/2007

[16] – Palacios, Rafael and Gupta, Amar, "A System for Processing Handwritten Bank

Checks Automatically" (February 2002). MIT Sloan Working Paper No. 4346-02; Eller

College Working Paper No. 1028-05.

www.iit.upcomillas.es/docs/02.RPH.01.pdf, 23/11/2007

[17] – D. Guillevic and C.Y. Suen, "HMM-KNN Word Recognition Engine for Bank

Cheque Processing," Proc. Int'l Conf. Pattern Recognition, pp. 1,526-1,529, Brisbane,

Australia, Aug. 1998.

http://ieeexplore.ieee.org/iel4/5726/15322/00711998.pdf, 05/11/2007

Page 67: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

58

Bibliografia

“Artificial Intelligence, a Modern Approach, 2nd

Edition”

Stuart Russell and Peter Norvig, 2002

“Digital Image Processing, 2nd

Edition”

Rafael C. Gonzalez and Richard E. Woods, 2002

“Machine Learning”

Thomas Mitchell, 1997

“Pattern Recognition and Machine Learning”

Christopher M. Bishop, 2006

Page 68: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

59

Lista de Acrónimos

OCR – Optical Character Recognition

ICR – Intelligent Character Recognition

PDA – Personal Digital Assistant

MLP – MultiLayer Perceptron

BPL – Back Propagation Learning

SVM – Support Vector Machines

HMM – Hidden Markov Models

SGBD – Sistema de Gestão de Bases de Dados

RBF – Radial Basis Functions

Page 69: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

60

ANEXO A: Exemplos de cheques manuscritos

Figura 53 – Cheque 01

Figura 54 – Cheque 04

Figura 55 – Cheque 07

Page 70: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

61

Figura 56 – Cheque 10

Figura 57 – Cheque 13

Figura 58 – Cheque 16

Page 71: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

62

Figura 59 – Cheque 19

Figura 60 – Cheque 22

Figura 61 – Cheque 25

Page 72: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

63

ANEXO B: Algarismos usados para treino

Imagens “grayscale”

Imagens binarizadas

Contornos dos algarismos (zoom 50%)

Page 73: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

64

ANEXO C: Resultados Weka – Reconhecimento do valor de cortesia

Redes Neuronais

o Algarismos “grayscale”

Perceptrão Multicamada

Rede de Funções de Base Radial

o Algarismos “binarizados”

Perceptrão Multicamada

Rede de Funções de Base Radial

o Contorno dos algarismos

Perceptrão Multicamada

Rede de Funções de Base Radial

Máquinas de Vectores de Suporte

o Algarismos “grayscale”

Kernel polinomial

Kernel RBF

o Algarismos “binarizados”

Kernel polinomial

Kernel RBF

o Contorno dos algarismos

Kernel polinomial

Kernel RBF

Page 74: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

65

Algarismos “grayscale” – Redes Neuronais

Perceptrão Multicamada

=== Run information ===

Scheme: weka.classifiers.functions.MultilayerPerceptron -L 0.3 -M 0.2 -N 500 -V 0 -S 0 -E 20 -H a

Relation: digits

Instances: 161

Attributes: 129

[list of attributes omitted]

Test mode: 10-fold cross-validation

=== Stratified cross-validation ===

=== Summary ===

Correctly Classified Instances 143 88.8199 %

Incorrectly Classified Instances 18 11.1801 %

Kappa statistic 0.873

Mean absolute error 0.0317

Root mean squared error 0.1253

Relative absolute error 19.621 %

Root relative squared error 44.1466 %

Total Number of Instances 161

=== Confusion Matrix ===

a b c d e f g h i j k <-- classified as

33 1 0 0 0 1 0 0 0 0 0 | a = 0

0 17 0 0 0 0 0 1 0 0 0 | b = 1

1 1 7 1 0 1 0 0 0 0 0 | c = 2

0 0 0 11 0 0 0 0 0 0 0 | d = 3

0 0 0 0 6 0 0 1 0 0 1 | e = 4

0 0 0 0 0 19 0 0 0 0 0 | f = 5

0 0 0 0 0 1 6 0 1 0 0 | g = 6

0 0 0 0 0 0 0 18 0 0 0 | h = 7

1 0 1 0 0 0 0 0 12 0 0 | i = 8

0 0 0 0 0 1 0 0 0 7 0 | j = 9

1 3 0 0 0 0 0 0 0 0 7 | k = 10

Page 75: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

66

Rede de Funções de Base Radial

=== Run information ===

Scheme: weka.classifiers.functions.RBFNetwork -B 35 -S 1 -R 1.0E-8 -M -1 -W 0.1

Relation: digits

Instances: 161

Attributes: 129

[list of attributes omitted]

Test mode: 10-fold cross-validation

=== Stratified cross-validation ===

=== Summary ===

Correctly Classified Instances 138 85.7143 %

Incorrectly Classified Instances 23 14.2857 %

Kappa statistic 0.8377

Mean absolute error 0.026

Root mean squared error 0.1612

Relative absolute error 16.1019 %

Root relative squared error 56.7758 %

Total Number of Instances 161

=== Confusion Matrix ===

a b c d e f g h i j k <-- classified as

34 0 0 0 0 0 0 0 0 0 1 | a = 0

0 17 1 0 0 0 0 0 0 0 0 | b = 1

1 2 6 1 0 1 0 0 0 0 0 | c = 2

1 0 0 9 0 0 0 0 1 0 0 | d = 3

0 3 0 0 5 0 0 0 0 0 0 | e = 4

0 1 0 0 0 18 0 0 0 0 0 | f = 5

0 0 0 0 0 1 6 0 1 0 0 | g = 6

0 2 0 0 0 0 0 16 0 0 0 | h = 7

0 1 1 0 0 1 0 0 11 0 0 | i = 8

0 0 0 0 0 1 0 0 1 6 0 | j = 9

0 1 0 0 0 0 0 0 0 0 10 | k = 10

Page 76: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

67

Algarismos binarizados – Redes Neuronais

Perceptrão Multicamada

=== Run information ===

Scheme: weka.classifiers.functions.MultilayerPerceptron -L 0.3 -M 0.2 -N 500 -V 0 -S 0 -E 20 -H a

Relation: digits

Instances: 161

Attributes: 129

[list of attributes omitted]

Test mode: 10-fold cross-validation

=== Stratified cross-validation ===

=== Summary ===

Correctly Classified Instances 141 87.5776 %

Incorrectly Classified Instances 20 12.4224 %

Kappa statistic 0.8588

Mean absolute error 0.0345

Root mean squared error 0.135

Relative absolute error 21.4032 %

Root relative squared error 47.5721 %

Total Number of Instances 161

=== Confusion Matrix ===

a b c d e f g h i j k <-- classified as

34 0 0 0 0 1 0 0 0 0 0 | a = 0

0 17 0 0 0 0 0 0 0 0 1 | b = 1

2 1 5 1 0 1 1 0 0 0 0 | c = 2

0 0 0 11 0 0 0 0 0 0 0 | d = 3

0 1 0 0 6 0 0 1 0 0 0 | e = 4

0 0 0 1 0 18 0 0 0 0 0 | f = 5

1 0 1 0 0 0 6 0 0 0 0 | g = 6

0 0 0 0 1 0 0 17 0 0 0 | h = 7

1 0 1 0 0 0 0 0 12 0 0 | i = 8

0 0 0 0 0 1 0 0 0 7 0 | j = 9

1 2 0 0 0 0 0 0 0 0 8 | k = 10

Page 77: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

68

Rede de Funções de Base Radial

=== Run information ===

Scheme: weka.classifiers.functions.RBFNetwork -B 35 -S 1 -R 1.0E-8 -M -1 -W 0.1

Relation: digits

Instances: 161

Attributes: 129

[list of attributes omitted]

Test mode: 10-fold cross-validation

=== Stratified cross-validation ===

=== Summary ===

Correctly Classified Instances 113 70.1863 %

Incorrectly Classified Instances 48 29.8137 %

Kappa statistic 0.6619

Mean absolute error 0.0542

Root mean squared error 0.2328

Relative absolute error 33.6039 %

Root relative squared error 82.02 %

Total Number of Instances 161

=== Confusion Matrix ===

a b c d e f g h i j k <-- classified as

29 1 0 0 0 0 0 0 4 0 1 | a = 0

0 15 0 0 1 0 0 0 1 0 1 | b = 1

1 3 4 0 0 0 0 0 3 0 0 | c = 2

0 1 0 5 0 0 0 0 5 0 0 | d = 3

0 3 0 0 4 0 0 0 1 0 0 | e = 4

0 2 0 0 0 16 0 0 1 0 0 | f = 5

0 3 0 0 0 1 3 0 1 0 0 | g = 6

0 0 0 0 0 1 0 15 2 0 0 | h = 7

1 0 1 0 0 1 0 0 11 0 0 | i = 8

0 0 0 0 0 2 0 0 2 4 0 | j = 9

0 2 0 0 0 0 0 0 2 0 7 | k = 10

Page 78: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

69

Contornos dos algarismos – Redes Neuronais

Perceptrão Multicamada

=== Run information ===

Scheme: weka.classifiers.functions.MultilayerPerceptron -L 0.3 -M 0.2 -N 500 -V 0 -S 0 -E 20 -H a

Relation: digits

Instances: 161

Attributes: 193

[list of attributes omitted]

Test mode: 10-fold cross-validation

=== Stratified cross-validation ===

=== Summary ===

Correctly Classified Instances 147 91.3043 %

Incorrectly Classified Instances 14 8.6957 %

Kappa statistic 0.9015

Mean absolute error 0.0271

Root mean squared error 0.1195

Relative absolute error 16.7995 %

Root relative squared error 42.1038 %

Total Number of Instances 161

=== Confusion Matrix ===

a b c d e f g h i j k <-- classified as

35 0 0 0 0 0 0 0 0 0 0 | a = 0

0 15 1 1 1 0 0 0 0 0 0 | b = 1

1 1 8 0 0 0 1 0 0 0 0 | c = 2

0 0 1 10 0 0 0 0 0 0 0 | d = 3

0 3 0 0 5 0 0 0 0 0 0 | e = 4

0 0 0 0 1 17 0 0 1 0 0 | f = 5

0 0 0 0 0 0 8 0 0 0 0 | g = 6

0 0 0 0 0 0 0 18 0 0 0 | h = 7

1 0 0 0 0 0 0 1 12 0 0 | i = 8

0 0 0 0 0 0 0 0 0 8 0 | j = 9

0 0 0 0 0 0 0 0 0 0 11 | k = 10

Page 79: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

70

Rede de Funções de Base Radial

=== Run information ===

Scheme: weka.classifiers.functions.RBFNetwork -B 35 -S 1 -R 1.0E-8 -M -1 -W 0.1

Relation: digits

Instances: 161

Attributes: 193

[list of attributes omitted]

Test mode: 10-fold cross-validation

=== Stratified cross-validation ===

=== Summary ===

Correctly Classified Instances 139 86.3354 %

Incorrectly Classified Instances 22 13.6646 %

Kappa statistic 0.8453

Mean absolute error 0.0248

Root mean squared error 0.1576

Relative absolute error 15.4018 %

Root relative squared error 55.5278 %

Total Number of Instances 161

=== Confusion Matrix ===

a b c d e f g h i j k <-- classified as

33 1 1 0 0 0 0 0 0 0 0 | a = 0

0 18 0 0 0 0 0 0 0 0 0 | b = 1

0 2 8 0 0 0 0 0 1 0 0 | c = 2

0 1 1 8 0 0 0 1 0 0 0 | d = 3

0 1 0 0 7 0 0 0 0 0 0 | e = 4

0 0 0 2 0 17 0 0 0 0 0 | f = 5

0 0 1 0 0 1 5 0 1 0 0 | g = 6

0 2 0 0 0 0 0 16 0 0 0 | h = 7

1 1 0 1 0 0 0 1 10 0 0 | i = 8

0 1 0 0 0 0 0 0 0 7 0 | j = 9

0 1 0 0 0 0 0 0 0 0 10 | k = 10

Page 80: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

71

Algarismos “grayscale” – Máquinas de Vectores de Suporte

Máquinas de Vectores de Suporte – Kernel polinomial

=== Run information ===

Scheme: weka.classifiers.functions.SMO -C 1.0 -E 1.0 -G 0.01 -A 250007 -L 0.0010 -P 1.0E-12 -N 0 -V -1 -W 1

Relation: digits

Instances: 161

Attributes: 129

[list of attributes omitted]

Test mode: 10-fold cross-validation

=== Stratified cross-validation ===

=== Summary ===

Correctly Classified Instances 143 88.8199 %

Incorrectly Classified Instances 18 11.1801 %

Kappa statistic 0.8728

Mean absolute error 0.1496

Root mean squared error 0.2648

Relative absolute error 92.7543 %

Root relative squared error 93.2704 %

Total Number of Instances 161

=== Confusion Matrix ===

a b c d e f g h i j k <-- classified as

34 0 0 0 0 1 0 0 0 0 0 | a = 0

0 18 0 0 0 0 0 0 0 0 0 | b = 1

0 1 8 1 0 1 0 0 0 0 0 | c = 2

1 0 0 10 0 0 0 0 0 0 0 | d = 3

0 2 0 0 5 1 0 0 0 0 0 | e = 4

0 0 0 0 0 19 0 0 0 0 0 | f = 5

2 0 0 0 0 0 6 0 0 0 0 | g = 6

0 2 0 0 0 0 0 16 0 0 0 | h = 7

1 1 1 0 0 0 0 0 11 0 0 | i = 8

0 0 0 0 0 1 0 0 0 7 0 | j = 9

0 2 0 0 0 0 0 0 0 0 9 | k = 10

Page 81: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

72

Máquinas de Vectores de Suporte – Kernel RBF

=== Run information ===

Scheme: weka.classifiers.functions.SMO -C 2.0 -E 1.0 -G 0.04 -A 250007 -L 0.0010 -P 1.0E-12 -N 0 -R -V -1 -W 1

Relation: digits

Instances: 161

Attributes: 129

[list of attributes omitted]

Test mode: 10-fold cross-validation

=== Stratified cross-validation ===

=== Summary ===

Correctly Classified Instances 144 89.441 %

Incorrectly Classified Instances 17 10.559 %

Kappa statistic 0.8798

Mean absolute error 0.1498

Root mean squared error 0.2654

Relative absolute error 92.8816 %

Root relative squared error 93.4845 %

Total Number of Instances 161

=== Confusion Matrix ===

a b c d e f g h i j k <-- classified as

34 0 0 0 0 1 0 0 0 0 0 | a = 0

0 18 0 0 0 0 0 0 0 0 0 | b = 1

1 2 6 1 0 1 0 0 0 0 0 | c = 2

1 0 0 10 0 0 0 0 0 0 0 | d = 3

0 2 0 0 5 1 0 0 0 0 0 | e = 4

0 0 0 0 0 19 0 0 0 0 0 | f = 5

1 0 0 0 0 2 5 0 0 0 0 | g = 6

0 0 0 0 0 0 0 18 0 0 0 | h = 7

0 1 0 0 0 1 0 0 12 0 0 | i = 8

0 0 0 0 0 1 0 0 0 7 0 | j = 9

0 1 0 0 0 0 0 0 0 0 10 | k = 10

Page 82: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

73

Algarismos binarizados – Máquinas de Vectores de Suporte

Máquinas de Vectores de Suporte – Kernel polinomial

=== Run information ===

Scheme: weka.classifiers.functions.SMO -C 1.0 -E 1.0 -G 0.01 -A 250007 -L 0.0010 -P 1.0E-12 -N 0 -V -1 -W 1

Relation: digits

Instances: 161

Attributes: 129

[list of attributes omitted]

Test mode: 10-fold cross-validation

=== Stratified cross-validation ===

=== Summary ===

Correctly Classified Instances 141 87.5776 %

Incorrectly Classified Instances 20 12.4224 %

Kappa statistic 0.8591

Mean absolute error 0.1498

Root mean squared error 0.2651

Relative absolute error 92.8434 %

Root relative squared error 93.3742 %

Total Number of Instances 161

=== Confusion Matrix ===

a b c d e f g h i j k <-- classified as

33 0 1 0 0 1 0 0 0 0 0 | a = 0

0 17 0 0 0 0 0 0 0 0 1 | b = 1

1 1 7 0 0 1 0 0 1 0 0 | c = 2

0 0 0 10 0 0 0 0 1 0 0 | d = 3

0 1 0 0 6 0 0 1 0 0 0 | e = 4

0 0 0 0 0 19 0 0 0 0 0 | f = 5

0 1 0 0 0 1 5 0 1 0 0 | g = 6

0 0 0 0 1 0 0 17 0 0 0 | h = 7

1 0 1 0 0 0 0 0 12 0 0 | i = 8

0 0 0 0 0 1 0 0 0 7 0 | j = 9

0 3 0 0 0 0 0 0 0 0 8 | k = 10

Page 83: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

74

Máquinas de Vectores de Suporte – Kernel RBF

=== Run information ===

Scheme: weka.classifiers.functions.SMO -C 2.0 -E 1.0 -G 0.04 -A 250007 -L 0.0010 -P 1.0E-12 -N 0 -R -V -1 -W 1

Relation: digits

Instances: 161

Attributes: 129

[list of attributes omitted]

Test mode: 10-fold cross-validation

=== Stratified cross-validation ===

=== Summary ===

Correctly Classified Instances 142 88.1988 %

Incorrectly Classified Instances 19 11.8012 %

Kappa statistic 0.8655

Mean absolute error 0.1498

Root mean squared error 0.2654

Relative absolute error 92.8434 %

Root relative squared error 93.4837 %

Total Number of Instances 161

=== Confusion Matrix ===

a b c d e f g h i j k <-- classified as

34 0 0 0 0 1 0 0 0 0 0 | a = 0

0 18 0 0 0 0 0 0 0 0 0 | b = 1

2 2 5 0 0 1 0 0 1 0 0 | c = 2

0 0 0 10 0 0 0 0 1 0 0 | d = 3

0 2 0 0 5 0 0 1 0 0 0 | e = 4

0 0 0 1 0 18 0 0 0 0 0 | f = 5

1 0 0 0 0 1 6 0 0 0 0 | g = 6

0 0 0 0 0 0 0 18 0 0 0 | h = 7

1 0 0 0 0 0 0 0 13 0 0 | i = 8

0 0 0 0 0 1 0 0 0 7 0 | j = 9

1 2 0 0 0 0 0 0 0 0 8 | k = 10

Page 84: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

75

Contornos dos algarismos – Máquinas de Vectores de Suporte

Máquinas de Vectores de Suporte – Kernel polinomial

=== Run information ===

Scheme: weka.classifiers.functions.SMO -C 1.0 -E 1.0 -G 0.01 -A 250007 -L 0.0010 -P 1.0E-12 -N 0 -V -1 -W 1

Relation: digits

Instances: 161

Attributes: 193

[list of attributes omitted]

Test mode: 10-fold cross-validation

=== Stratified cross-validation ===

=== Summary ===

Correctly Classified Instances 149 92.5466 %

Incorrectly Classified Instances 12 7.4534 %

Kappa statistic 0.9154

Mean absolute error 0.1493

Root mean squared error 0.2641

Relative absolute error 92.5634 %

Root relative squared error 93.0414 %

Total Number of Instances 161

=== Confusion Matrix ===

a b c d e f g h i j k <-- classified as

35 0 0 0 0 0 0 0 0 0 0 | a = 0

0 18 0 0 0 0 0 0 0 0 0 | b = 1

0 1 8 0 0 0 1 0 1 0 0 | c = 2

0 0 1 9 0 0 0 1 0 0 0 | d = 3

0 3 0 0 5 0 0 0 0 0 0 | e = 4

0 0 0 0 0 19 0 0 0 0 0 | f = 5

0 0 0 0 0 0 8 0 0 0 0 | g = 6

0 1 0 0 0 0 0 17 0 0 0 | h = 7

1 0 0 0 0 0 0 1 12 0 0 | i = 8

0 0 0 0 0 0 0 0 0 8 0 | j = 9

1 0 0 0 0 0 0 0 0 0 10 | k = 10

Page 85: Sistema automático de reconhecimento do montante de um ...jsc/students/2008FilipeCoelho/2008relatorioFili... · Sistema automático de reconhecimento do montante de um cheque iii

Sistema automático de reconhecimento do montante de um cheque

76

Máquinas de Vectores de Suporte – Kernel RBF

=== Run information ===

Scheme: weka.classifiers.functions.SMO -C 9.0 -E 1.0 -G 0.04 -A 250007 -L 0.0010 -P 1.0E-12 -N 0 -R -V -1 -W 1

Relation: digits

Instances: 161

Attributes: 193

[list of attributes omitted]

Test mode: 10-fold cross-validation

=== Stratified cross-validation ===

=== Summary ===

Correctly Classified Instances 150 93.1677 %

Incorrectly Classified Instances 11 6.8323 %

Kappa statistic 0.9225

Mean absolute error 0.1492

Root mean squared error 0.2642

Relative absolute error 92.487 %

Root relative squared error 93.056 %

Total Number of Instances 161

=== Confusion Matrix ===

a b c d e f g h i j k <-- classified as

35 0 0 0 0 0 0 0 0 0 0 | a = 0

0 18 0 0 0 0 0 0 0 0 0 | b = 1

0 0 9 0 0 0 1 0 1 0 0 | c = 2

0 0 1 10 0 0 0 0 0 0 0 | d = 3

0 3 0 0 5 0 0 0 0 0 0 | e = 4

0 0 0 0 0 19 0 0 0 0 0 | f = 5

0 1 0 0 0 1 6 0 0 0 0 | g = 6

0 1 0 0 0 0 0 17 0 0 0 | h = 7

1 0 0 0 0 0 0 0 13 0 0 | i = 8

0 0 0 0 0 0 0 0 0 8 0 | j = 9

1 0 0 0 0 0 0 0 0 0 10 | k = 10