文字识别算法思路整理-图的路径搜索
通过网页生成一张Arial12字体的图,采集训练数据
一、将图二值化,采集3557个汉字、字母、数字的二值化二维数据
二、根据欧拉回路的思路,遍历所有的点到点线条
1、文字的最长公共路径:也就是文字的识别入口
通过统计,3557个字都包含的
以1开头的长度为2的公共路径有:
[ '10,1,1', '10,1,3', '10,1,4', '10,1,5', '10,1,0', '10,1,-2', '10,1,-3', '10,1,-4', '10,1,-5' ]3557
以1开头的长度为3的路径有:
[ '100,1,1,1,2', '100,1,1,1,3', '100,1,1,1,4', '100,1,1,1,0', '100,1,1,1,-1', '100,1,1,1,-2', '100,1,3,1,1', '100,1,4,1,1', '100,1,4,1,2', '100,1,0,1,1', '100,1,-2,1,1' ]3556
长度为2的路径[ '10,1,1' ] ,是判断是否文字的必要条件
开始进行二分查找,得出最快的长度13的路径
[
'10000001000011,1,1,11,-7,10,2,4,-8,1,3,6,-6,3,-3,10,-5,8,-4,2,-6,-1,-8,0,-7,10,-7'
] [
3557, 1771, 888, 444,
222, 111, 55, 28,
14, 7, 3, 2,
1
] 13
根据黑点1优先得到的路径
[["10111111111111111111111111111111111111111111111111111,1,1,1,0,2,0,3,0,4,0,5,0,2,2,-1,0,6,0,3,2,1,2,4,2,5,2,0,2,5,4,2,4,3,4,4,4,1,4,0,4,6,4,6,2,-1,4,-1,2,-2,0,7,0,0,6,5,6,4,6,1,6,2,6,3,6,6,6,-1,6,4,8,2,8,3,8,5,8,0,8,1,8,6,8,-1,8,-2,2,7,2,6,9,-1,9,-2,4,-3,4,-1,7,0,-1,7,9,-3,0",1,1]]
根据路径可识别优先,得出2^13的三叉树,分成有1、0以及不存在三种情况,不存在用x表示
之后用三叉树数据识别文字,得到近似点[x,y,i],计算出相似度,判断是否文字
三、用上一步的公共路径,匹配图中所有点,得出一个匹配度n,按照n大小进行排序,先查找n大的点
假如当前点[0,0]值为0,下一个搜索点为[x1,y1],假如[x1,y1]的值为1,下一个搜索点为[x2,y2],不停的寻找到最后一个点,
得出识别结果[x,y,i](x,y为基准点,i为文字图指针),比较待识别的图和文字图的相似度,判断是否正确
四、继续识别下一个区域