ompreendendo os códigos de cadeia Freeman para OCR

Note que estou realmente procurando uma resposta para minha pergunta. Eu sou procurando um link para algum código fonte ou algum artigo acadêmico: eu já usei a fonte e já li artigos e ainda não descobri a última parte desta edição ...

Estou trabalhando em um OCR de fonte de tela rápida e estou fazendo um progresso muito bo

á estou encontrando as linhas de base, separando os caracteres, transformando cada caractere em preto e branco e, em seguida, contornando cada caractere para aplicar um código de cadeia Freeman a el

Basicamente, é um código de cadeia com 8 conexões, assim:

  3  2  1
   \ | /
  4-- --0
   / | \
  5  6  7

Então, se eu tiver um 'a', depois de todas as minhas transformações (incluindo a transformação em preto e branco), acabo com algo assim:

11110
00001
01111
10001
10001
01110

Então, nosso país externo pode ficar assim (eupod estar cometendo um erro aqui, isso é contorno da arte ASCII e meu 'algoritmo' pode errar o contorno, mas esse não é o ponto da minha pergunta):

 XXXX
X1111X
 XXXX1X
X01111X
X10001X
X10001X
 X111X
  XXX

Após o X, recebo o código da cadeia, que seria:

0011222334445656677

Observe que esse é o código de cadeia normalizado, mas você sempre pode normalizar um código de cadeia como este: basta manter o menor número inteir

(A propósito, há uma implementação supereficiente para encontrar o código da cadeia em que você simplesmente pega os 8 pixels adjacentes de um 'X' e, em seguida, olha em uma tabela de pesquisa de 256 se tiver 0,1,2,3,4 , 5,6 ou 7)

Minha pergunta agora, no entanto, é: a partir desse código de cadeia 0011222334445656677, como faço para descobrir que tenho um 'a'?

Por exemplo, se meu 'a' se parece com isso:

11110
00001
01111
10001
10001
01111  <-- This pixel is now full

Em seguida, meu código de cadeia é agora: 0002222334445656677

E, no entanto, este também é um 'a'.

Sei que todo o objetivo desse código em cadeia é ser resiliente a alterações tão pequenas, mas não consigo descobrir como devo encontrar qual caractere corresponde a um código em cadei

Estive tão longe e agora estou preso ...

(A propósito, não preciso de 100% de eficiência e coisas como diferenciar '0' de 'O' ou 'o' não são realmente um problema)

questionAnswers(4)

yourAnswerToTheQuestion