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
Sistema automático de reconhecimento do montante de um cheque
ii
Para a minha família
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.
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.
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
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
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
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
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
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.
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;
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
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;
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.
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.
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
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/
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/
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
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).
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);
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
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
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
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.
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.
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º)
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].
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/
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
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.
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
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.
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]
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
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.
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)
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.
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:
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.
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
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
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
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.
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.
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.
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
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%)
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).
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
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, é
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.
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).
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]
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]
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
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%.
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]
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.
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
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).
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.
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
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.
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.
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
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
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
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
Sistema automático de reconhecimento do montante de um cheque
61
Figura 56 – Cheque 10
Figura 57 – Cheque 13
Figura 58 – Cheque 16
Sistema automático de reconhecimento do montante de um cheque
62
Figura 59 – Cheque 19
Figura 60 – Cheque 22
Figura 61 – Cheque 25
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%)
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
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
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
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
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
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
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
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
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
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
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
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
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