Ajuda com calculo matemático para reconhecimento de caracteres

Olá, eu estou com um problema de execução.

Estou fazendo um aplicativo em que o usuario desenha uma letra na tela e o computador identifica qual letra a pessoa esta desenhando, igual esses aplicativos de auxilio ortografico que veem nos celulares.

Porem estou com problemas para saber como calcular o que a pessoa desenha e identificar. Vou postar o código e me ajudem.

[code]public float carregaPorcentagem(BufferedImage arquivoA, String arquivoB) {
float porcentagem = 0;
int acertosTeste = 0;
int errosTeste = 0;

     int somaPixel = 0;
     
    int somadorBrancoTeste=0;
    int somadorPretoTeste=0;
    
   
    int somadorBrancoBase = 0;
    int somadorPretoBase = 0;
    
    try {

        BufferedImage bufi = arquivoA;// ImageIO.read( getClass().getResource( "/a.png" ) );
        BufferedImage bufi2 = MC_Imagem.getInstance().loadImage(arquivoB);

        Color corBase = null;
        Color corTeste = null;
        Color branca = new Color(255, 255, 255);
        Color preta = new Color(0, 0, 0);

        for (int i = 0; i < bufi.getHeight(); i++) {

            for (int j = 0; j < bufi.getWidth(); j++) {
                somaPixel++;
                corBase = new Color(bufi.getRGB(i, j));
                corTeste = new Color(bufi2.getRGB(i, j));

                if (corBase.getRGB() == branca.getRGB()) {
                    somadorBrancoBase++;
                } else {
                    somadorPretoBase++;
                }
                if (corTeste.getRGB() == preta.getRGB()) {
                    somadorBrancoTeste++;
                } else {
                    somadorPretoTeste++;
                }

                if (bufi.getRGB(i, j) == bufi2.getRGB(i, j)) {
                    acertosTeste++;
                } else {
                    errosTeste++;
                }
                //System.out.print( c + " " );
            }
            //System.out.println();
        }

        porcentagem = somaPixel  ;
        System.out.println("Letra: " + arquivoB);
        System.out.println("Soma: " + somaPixel);
        System.out.println("Somador branco Origem: " + somadorBrancoBase);
        System.out.println("Somador preto Origem: " + somadorPretoBase);
        System.out.println("Somador branco Teste: " + somadorBrancoTeste);
        System.out.println("Somador preto Teste: " + somadorPretoTeste);
        System.out.println("Acertos Pretos: " + acertosTeste);
        System.out.println("Erros: " + errosTeste);

    } catch (IOException exc) {

        exc.printStackTrace();

    }
    return porcentagem;
}[/code]

É nessa parte aqui que estou precisando de ajuda:

 porcentagem = somaPixel;

Eu tenho um banco de Letras um png, preta e branca, com 26 letras. E é feito um loop para verificar qual a porcentagem tem o desenho com cada letra, ou seja, o quanto o desenho se parece com a letra. Eu sei que é por aqui que devo mexer, mas estou fraco na matematica e fiz uns testes, vi que algumas letras atrapalhavam, como a letra W, que ocupa quase toda a imagem, a letra A com a letra R, são parecidas, entre outras.

Alguém pode me dar uma idéia de como poderia por exemplo calcular a porcentagem e como distinguir porcentagens muito próximas, por exemplo entre a letra A e R e o W que atrapalha mais que tem função? eu estou meio travado nos calculos. Está faltando alguma coisa, fiz tudo errado?

Obrigado.

O que você está tentando desenvolver é um algoritmo de OCR. Não é algo exatamente trivial, então não sei se, com base no que você já fez, o pessoal vai conseguir te ajudar.

Dê uma olhada no projeto Java OCR, pode ser uma base para o que você quer.

Abraço.