Documente Academic
Documente Profesional
Documente Cultură
Caracteres Manuscritos
Abstract
In spite of the growing spread of information technologies based on electronic media, hand-printed
information, such as forms, memoranda, letters, requirements, etc. is still abound. The conversion process of
these stored forms to electronic media has been onerous and unproductive, mainly due to the involvement of
unprepared personnel. This paper presents the results of a pioneer application of data mining technology known
as associative rules, for the automatic recognition of hand-printed characters.
1 Introdução
O artigo está estruturado como segue. A seção 1 é esta introdução. A seção 2 apresenta
sumariamente duas abordagens para o reconhecimento de caracteres manuscritos. Na seção 3,
introduzimos o processo de descoberta de conhecimento e o conceito de garimpagem de
dados, que lhe é subjacente. O nosso sistema de reconhecimento de caracteres manuscritos é
descrito na seção 4. A seção 5 mostra alguns testes realizados com o sistema, confrontando
seus resultados com os de outros trabalhos. As conclusões e trabalhos futuros são o tema da
sexta seção. O artigo termina com as referências bibliográficas.
2 Trabalhos Relacionados
Existem muitos trabalhos que exploram diversas tecnologias com o propósito de fazer o
reconhecimento de caracteres manuscritos. Restringir-nos-emos à análise sintática e às redes
neurais, as quais serão objeto de comparação com a técnica de garimpagem de dados que nós
utilizamos, com o mesmo fim.
A área de redes neurais artificiais, desde muito tempo, vem recebendo grande atenção dos
pesquisadores. Especificamente, as redes neurais multicamadas com propagação direta têm
demonstrado uma grande eficácia no reconhecimento de padrões visuais [21].
Em [22], é utilizada uma rede multicamadas com propagação direta para fazer o
reconhecimento de caracteres alfabéticos manuscritos. A camada de entrada da rede é
constituída de um número de nós igual ao número de pixels da imagem digitalizada do
símbolo a ser reconhecido. O número de nós na camada de saída é igual ao número de
caracteres alfabéticos existentes, neste caso 26 (alfabeto inglês, de A a Z).
Nos testes de reconhecimento de numerais manuscritos, em [21], foram criados dois
subconjuntos do conjunto de imagens digitalizadas de dígitos, denominados conjunto de
treinamento e conjunto de testes, respectivamente. O conjunto de treinamento foi utilizado
para realizar o treinamento da rede neural artificial. Ou seja, cada dígito (imagem) foi inserido
na camada de entrada da rede, depois os pesos das ligações da rede foram ajustados de forma
a gerarem na camada de saída o resultado correto [21] [16] [22]. O algoritmo de [17] treinou a
rede (isto é, ajustou os seus pesos). Uma vez a rede treinada, o conjunto de testes lhe foi
submetido para testar a sua capacidade de reconhecer caracteres manuscritos.
Embora as redes neurais apresentem bons resultados quando aplicadas no reconhecimento
de caracteres manuscritos, alguns problemas existem. O tempo de treinamento de uma rede
neural é extremamente longo para a maioria das aplicações de uso prático, como o é o
reconhecimento de caracteres. Há também certos tipos de padrões, como os envolvidos em
séries temporais, que demandam uma grande necessidade de pré-processamento, dada a
complexidade da análise e classificação dos padrões em questão [16].
De acordo com [16] é necessário uma boa escolha dos valores iniciais dos pesos da rede
para diminuir o tempo necessário de treinamento. A rigor, tal tempo pode tender ao infinito.
Segundo [4], descobrir conhecimento significa extrair, de grandes bases de dados, sem
nenhuma formulação prévia de hipóteses, informações genéricas, relevantes e previamente
desconhecidas, que podem ser utilizadas para a tomada de decisões. Associado à descoberta
de conhecimento, deve existir um processo de descoberta de conhecimento (“knowledge
discovery” – KD)1.
Um grande problema com o processo de KD é a qualidade do conhecimento gerado. Para
ilustrar, se uma cadeia de lojas resolve buscar associações entre os itens que ela vende,
certamente haverá associações entre itens que farão sentido, e outras que não farão [12]. Faz-
se necessário, então, um especialista dos negócios da empresa para avaliar quais são as
associações realmente relevantes para a empresa.
Por último, as associações descobertas precisam ser acionáveis. Em outras palavras, é
necessário que possam ser realizadas ações simples para que o conhecimento gerado seja
traduzido em vantagem aos negócios da empresa [12].
1
- Doravante, processo de KD.
3.2 As Etapas do Processo de KD
Para cada grande conjunto de itens X, todas as regras com fator de confiança acima de um
mínimo especificado (Cmin) são geradas como: ∀ Y⊂ X,se suporte(X) / suporte (X – Y) ≥ Cmin
então gera a regra X – Y ⇒ Y, onde o fator de confiança de uma regra R: X ⇒ Y, é definido
pela fórmula 3.2.
Nº de registros com X e Y
Confiança ( R) = (3.2)
Nº de registros com X
Corolário1: Se |Y| = 1 e todas as transações tiverem o mesmo valor para o item Y, então
Confiança(R) é igual a 1.
Supondo um fator de confiança mínimo de 0,8 para o nosso exemplo, teríamos como
válidas apenas as regras sombreadas da FIG 3.4.
1
- Este corolário é utilizado na próxima seção.
Por falta de espaço, e por não serem relevantes aos propósitos deste artigo, as outras
famílias citadas de algoritmos de garimpagem de dados, regras de classificação e
agrupamento, não serão tratadas.
A fase de preparação dos dados consumiu bastante esforço e tempo. A razão principal para
tal esforço é que os arquivos do CENPARMI são geometrica e topologicamente muito
irregulares, enquanto o algoritmo Apriori é extremamente sensível a mudanças de geometria e
de topologia. Assim, foi necessário todo um trabalho de regularização dos arquivos do
CENPARMI, a fim de se obter resultados significativos de reconhecimento de caracteres
numéricos. Os caracteres numéricos manuscritos são representados por matrizes booleanas e o
trabalho de regularização destes caracteres consistiu de: normalização, rotação,
esqueletização, dilatação, suavização e centralização.
Nas FIG’s 4.1 (a), 4.1 (b), 4.1 (c) , 4.1 (d) e 4.1 (e), são mostradas as transformações
operadas pelos diferentes algoritmos sobre um dígito 0 da base de dados do CENPARMI.
000000000000000000000 0000000000000000 0000000000000000 0000000000000000 0000000000000000
000000000000000000000 0000011111100000 0000001111000000 0000111111000000 0001111110000000
000000000000000001110 0000011111111100 0000011001111000 0001111111111000 0011111111110000
000000000000000011110 0000011001111110 0000010000000100 0001110000011100 0011100000111000
000000000000011111110 0000111000000111 0000010000000110 0001110000011110 0011100000111100
000000000001111111111 0001111000000111 0000010000000010 0001110000001110 0011100000011100
000000000111111101111 0001111000000011 0000010000000010 0001110000001110 0011100000011100
000000001111110000111 0001111000000011 0000100000000010 0011100000001110 0111000000011100
000000011111100000111 0001111000000111 0000100000000010 0011100000001110 0111000000011100
000000111111000000111 0001110000000111 0000010000000010 0001110000001110 0011100000011100
000001111100000000111 0001111110001111 0000011110000100 0001111110011100 0011111000111000
000011110000000001111 0000111000001110 0000001000001100 0000111000111100 0001110001111000
000111110000000011110 0000011110011100 0000001000001000 0000111000111000 0001110001110000
001111100000000111110 0000111111111100 0000001111110000 0000111111110000 0001111111100000
001111000000001111000 0000001111110000 0000000000000000 0000000000000000 0000000000000000
001110000000111110000 0000000000000110 0000000000000110 0000000000000110 0000000000000000
011110000111111000000
011111111111110000000
001111111111000000000
000111111100000000110
000000100000000000000
(a) (b) (c) (d) (e)
Figura 4.1 – Dígito “0” original; Dígito normalizado e rotacionado; Dígito “esqueletizado”;
Dígito dilatado; Dígito suavizado e centralizado, pela ordem.
É importante observar que, mesmo depois de todas as transformações feitas, muitos dígitos
ainda ficaram irreconhecíveis ao olho humano. As FIG’s 4.2 (a), 4.2 (b), 4.2 (c), 4.2 (d) e 4.2
(e) ilustram alguns exemplos de dígitos irreconhecíveis (2, 3, 4, 6 e 8, respectivamente). Em
consequência, não se poderia esperar que o nosso algoritmo de reconhecimento, ou qualquer
outro, pudesse reconhecê-los (pelo menos neste contexto, o que é irreconhecível pelo ser
humano, também o é pelas máquinas!).
A conclusão prática é que não poderá haver algoritmo de reconhecimento de caracteres
com eficácia de 100%.
Posições
1 2 3 4 ... 255 256 257 258 ... 265 266
1 1 1 0 ... 1 1 0 0 ... 1 0
1 1 1 0 ... 1 1 0 0 ... 1 0
... ... ... ... ... ... ... ... ... ... ... ...
0 1 1 0 ... 1 1 0 0 ... 1 0
Figura 4.3 – Parte representativa da tabela com dígitos “8” linearizados
Observando a FIG 4.3, vemos que as posições “2”, “3”, “255”, “256” e “265", marcadas
com 1, apresentam uma grande frequência (suporte), isto provavelmente levará o algoritmo a
gerar a regra {2, 3, 255, 256} ⇒ 265 para o dígito 8.
Vamos dar um outro exemplo, agora considerando um suporte e fator de confiança
mínimos. Seja um conjunto de treinamento de 10 caracteres “0”, com a posição “257” em
todos os dez caracteres marcada com “1”. Para SupMin igual a 0,65, suponhamos que o
algoritmo Apriori descobriu o seguinte conjunto de grandes conjuntos G = { {2,8,9,257}|0,71,
{34,102,257}|0,8, {2,98,257}|0,83 }. Temos então as regras {34,102} ⇒ 257, {2,98} ⇒ 257
e {2,8,9} ⇒ 257 para o dígito 0. Note que, como o consequente é o mesmo em todas as
regras, o fator de confiança (ver seção 3.3) é 1 (ou 100%). Isto conduz à generalização
seguinte: em relação a fatores de confiança, no nosso contexto de reconhecimento de
caracteres numéricos manuscritos, ele é sempre 1 (ou 100%). Na prática, isto significa que
não é preciso se preocupar com fatores de confiança.
1
- O valor 0,7 indica o suporte deste conjunto.
No que diz respeito ao suporte mínimo escolhido para as regras, o valor 0,60 foi o mais
adequado (ver a tabela da FIG 4.4). Qualquer valor maior que este número acarretou uma
diminuição muito sensível do número de regras, em prejuízo do reconhecimento dos
caracteres do conjunto de testes.
Numeral 0 1 2 3 4 5 6 7 8 9
Nº de Regras 254 353 213 219 210 223 212 205 245 219
Figura 4.4 – Número de regras para cada numeral, utilizando-se suporte igual a 0,6
Note que em nosso trabalho, o consequente da regra possui apenas um elemento, porque
desejamos obter para cada dígito as regras que os representem univocamente. Não é de nosso
interesse extrairmos regras com mais de um elemento no consequente, pois isto iria gerar
conflitos no momento de decidir a qual dígito a regra pertence.
Até aqui, a formulação das regras para os dígitos não considerou a seguinte importante
questão: dado um conjunto de regras para um dígito, qual é a importância de cada uma das
regras em relação às demais? Para resolvermos esta questão definimos uma grandeza
denominada peso de uma regra.
Seja G = { G1, G2, G3, ..., Gn } o conjunto dos grandes conjuntos gerados para um dado
dígito. O peso de cada uma das regras Ri’s extraídas de um conjunto Gi, exprime o quão forte
são as regras Ri’s em relação as demais regras Rj’s (∀j, 1 ≤ j ≤ n e j ≠ i) desse dígito.
Formalmente,
Peso( Ri) =
(Suporte(Gi) − SupMin) (4.1)
(Max(SuporteGi | ∀Gi ∈ G ) − SupMin )
Considerando o conjunto G da seção anterior, o peso da regra R: {34,102} ⇒ 257 é:
(0,8 − 0,65)
Peso(R) = = 0,83
(0,83 − 0,65)
{2} ⇒ 257 #0,60# {8}⇒ 258 #0,80# ... {90,100}⇒ 266 #0,42#
{2,15,102} ⇒ 257 #0,82# {8,32} ⇒ 258 #0,80# {90,105} ⇒ 266 #0,65#
... ... ...
{14,104,200} ⇒ 257 #0,76# {8,32,68} ⇒ 258 #0,45# {91,110,112} ⇒ 266 #0,60#
Figura 4.5 – Conjunto de regras após a fase de treinamento
Caso a regra {2} ⇒ 257 case com o registro lido (isto é, as posições “2” e “257” do vetor
são marcadas por 1), é adicionado no contador do dígito 0 o resultado da multiplicação do
peso da regra (0,60) pelo valor anterior do contador. Da mesma forma, se a regra {8,32} ⇒
258 casa com o registro, então o contador do dígito 1 é acrescentado do resultado da
multiplicação do peso da regra (0,80) pelo valor anterior do contador. No final da varredura
do arquivo de regras, os contadores de todos os dígitos terão um valor, e o dígito testado é
reconhecido como sendo igual ao dígito cujo contador tem o maior valor.
De um modo geral, o algoritmo será tão mais confiável quanto mais frequentemente o
dígito testado seja reconhecido como sendo igual ao dígito cujo contador tem o maior valor.
Visando uma melhoria dos resultados, estamos investigando um novo processo de
atualização dos contadores.
5 Avaliação Experimental
1
- Recordemos que os arquivos de treinamento e testes são disjuntos.
Numeral Algoritmo Algoritmo Redes Regras de Melhor Desempenho
sintático sintático neurais associação4
[13]1 [21]2 [21]3
0 71,80 71,80 81,87 95,48 Regras de associação
1 92,48 88,34 87,17 100 Regras de associação
2 18,04 68,04 54,33 65,08 Algoritmo sintático[21]
3 18,42 58,64 75,85 60,24 Redes neurais
4 23,30 68,42 88,68 79,21 Redes neurais
5 0 65,03 75,09 63,15 Redes neurais
6 0,37 63,15 83,02 79,32 Redes neurais
7 4,13 67,29 39,62 78,03 Regras de associação
8 45,48 58,64 69,81 60,13 Redes neurais
9 30,45 54,13 69,05 75,96 Regras de associação
Tabela 5.1 – Comparação dos resultados do nosso trabalho com outros métodos (em
percentagem).
1
- resultado dos testes utilizando o algoritmo sintático desenvolvido por [13].
2
- testes utilizando o algoritmo sintático desenvolvido por [21].
3
- testes com uma rede neural em [21].
4
- testes utilizando o sistema baseado em regras de associação.
contorno do dígito na matriz do numeral, ou seja, o padrão de um dígito é determinado pelas
regras geradas durante o treinamento e baseiam-se nas posições dos 1’s. Portanto, se um
dígito de teste estiver um pouco deslocado ou um pouco diferente do normal, o sistema
encontrará dificuldades em fazer o reconhecimento.
Observando-se a TAB 5.1 constatamos excelentes resultados do sistema de regras de
associação no reconhecimento dos dígitos 0 e 1. Isto acontece porque tais dígitos não
apresentam grandes variações nos conjuntos de treinamento e teste. Por este motivo, durante a
fase de treinamento do 1, por exemplo, são geradas um bom número de regras que aparecem
com grande frequência no dígito.
Na TAB 5.2 estão ilustrados os resultados obtidos, durante a fase de teste, com o sistema
de regras de associação, além de informações sobre quanto porcento dos caracteres de um
determinado numeral foram reconhecidos corretamente e os conflitos no reconhecimento dos
dígitos.
Analisando-se a coluna do numeral 5, notamos que, embora a maioria dos caracteres 5 de
entrada (63,15% dos 266 caracteres de teste) foram reconhecidos corretamente, há uma
grande proporção (18,04%) destes caracteres que foram reconhecidos como se fossem o
numeral 3. Tais números levam-nos a observar que existe uma semelhança nos padrões
gerados, na fase de treinamento do sistema, entre os dígitos 5 e 3, provocando erro no instante
de avaliação do sistema. Assim, um estudo de todas as regras e seus respectivos pesos,
geradas na fase de treinamento do sistema, deve ser realizado, a fim de eliminar o máximo
possível de conflitos (como no caso do 5 e 3). Notemos que o sistema de regras de associação
permite uma fácil interação com as regras geradas (com o padrão extraído para cada dígito), o
que não ocorre nas redes neurais, já que o ajuste dos pesos realizado é obscuro.
NUMERAIS DE TESTE
REC1 0 1 2 3 4 5 6 7 8 9
0 95,48 0 2,52 0,60 7,19 0,37 4,13 0,37 1,12 11,27
1 0 100 12,90 0 0,95 0 2,66 0,31 4,81 1,12
2 0 0 65,08 9,63 6,76 1,12 1,12 7,22 8,27 2,66
3 0 0 1,57 60,24 0 18,04 1,12 0,37 1,50 0
4 0,37 0 1,89 0 79,21 1,50 0,37 1,31 6,39 3,75
5 1,50 0 0,63 16,86 0,23 63,15 11,27 1,12 2,52 1,12
6 1,50 0 3,17 0 0,54 8,27 79,32 0 5,49 0
7 0 0 7,52 7,22 0,25 0 0 78,03 1,50 3,75
8 0 0 1,89 4,81 0,25 7,51 0 0 60,13 0,37
9 1,12 0 2,83 0,60 4,62 0 0 11,27 8,27 75,96
Tabela 5.2 – Tabela contendo a percentagem de caracteres do arquivo de teste que são
reconhecidos para o “0”, “1”, “2”... “9”
1
- Dígito reconhecido.
6 Conclusões e Trabalhos Futuros
Apesar da crescente difusão das tecnologias de informação, informações “em papel” como
formulários, memorandos e outros documentos continuam abundantes. Seu processo de
conversão para a mídia eletrônica tem se revelado caro e improdutivo, devido principalmente
à intervenção, no processo, de pessoal despreparado. Este artigo teve como objetivo
demonstrar a viabilidade do uso pioneiro da técnica de “data mining”, conhecida como regras
de associação, para o reconhecimento automático de caracteres numéricos manuscritos. A
demonstração consistiu em contrapor os resultados obtidos com essa técnica e os resultados
de duas outras abordagens de reconhecimento de caracteres numéricos, algoritmos sintáticos e
redes neurais.
No geral, regras de associação e redes neurais se houveram claramente melhor que
algoritmos sintáticos, embora algoritmos sintáticos ainda levem vantagem em um caso de
reconhecimento. Regras de associação mostraram-se mais eficientes que redes neurais em
50% dos dígitos. Em consequência, podemos vislumbrar um sistema híbrido de
reconhecimento de caracteres, baseado nos três enfoques, explorando o ‘melhor’ de cada um
deles.
Seguem-se outras vantagens da abordagem de regras de associação.
Regras de associação não levam em conta o tipo de caracteres (numérico, alfabético,
caracteres especiais) a ser treinado e testado. Desta forma, fazer um algoritmo de regras de
associação evoluir para reconhecer qualquer tipo de caracteres, além de caracteres numéricos,
não introduz nenhuma dificuldade adicional no algoritmo em si, apenas o passo referente à
preparação dos dados seria diferente. Esta é uma vantagem enorme em relação aos algoritmos
sintáticos, baseados na geometria e na topologia dos caracteres.
Melhorar ainda mais a acurácia dos algoritmos de regras de associação para o
reconhecimento de caracteres depende, no entanto, da preparação dos dados para os
algoritmos. A razão para isto é a sensibilidade dos algoritmos quanto às posições dos 1’s e
dos 0’s nas matrizes digitalizadas dos caracteres. Sucintamente, se um símbolo (conjunto de
posições com 1´s) estiver um pouco deslocado ou um pouco diferente do ‘normal’ na matriz,
o sistema poderá encontrar dificuldades em fazer o reconhecimento do símbolo, ou associá-lo
a um outro símbolo. Portanto, há necessidade de novos e melhores algoritmos de
processamento de imagens (normalização, rotação, dilatação, etc), a fim de depurar as
imagens para o sistema de reconhecimento.
Reconhecimento de cadeias de caracteres (palavras, números com mais de um dígito), por
meio de regras de associação, depende exclusivamente do processo de preparação de dados,
que deve ser refinado para incluir uma nova etapa, segmentação de cadeias de caracteres.
7 Referências Bibliográficas