文字单行唯一特征

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
const PNG = require("pngjs").PNG;
const fs=require('fs')
require('./sortAdd')
const getGrayData=require('./getGrayData')
const {getLbpData,getUniformLbpData}=require('./getLbpData')
const getLineArrByGrayData=require('./getLineArrByGrayData')
 
const getTextArr=require('./getTextArr')
const getV=require('./getV')
 
const buff=fs.readFileSync('../data/Arial32.png');
const imageData=PNG.sync.read(buff)
const grayData=getGrayData(imageData)
const lbpData=getUniformLbpData(grayData)
 
const posArr=getLineArrByGrayData(grayData)
const textArr=getTextArr();
 
const onceMap={};
const list_key=[];
const list_val=[];
let noUseNum=0;
posArr.forEach(function (pos,i) {
  // if(i>9){return}
 
  if(/[a-z]/i.test(textArr[i])){
    noUseNum++
    return;
  }
  const [x1,y1,x2,y2]=pos;
  const w=x2-x1
  const h=y2-y1
  for(let y=y1;y<y2;y++){
    const arr=[]
    for(let x=x1;x<x2;x++){
      const v=getV(x,y,lbpData)
      arr.push(v)
    }
    const key=arr.join('').replace(/^0*(.*?)0*$/,'$1');
    if(key){
      const [n,len,dis]=list_key.sortFindLen(key)
      const obj=[i]
      if(dis===1){
        list_key.splice(n+1,0,key)
        list_val.splice(n+1,0,obj)
      }else if(dis===-1){
        list_key.splice(n,0,key)
        list_val.splice(n,0,obj)
      }else{
        list_val[n].pushOnly(i)
      }
    }
  }
})
const twoArr=[]
for(let i=list_val.length-1;i>=0;i--){
  const arr=list_val[i]
  if(arr.length>1){
    list_key.splice(i,1)
    list_val.splice(i,1)
    twoArr.push(arr)
  }
}
//单行唯一特征
console.log(list_val)
 
 
function getLine(x1,x2,y,lbpData) {
  const arr = [];
  for (let x = x1; x < x2; x++) {
    const v = getV(x, y, lbpData)
    arr.push(v)
  }
  return arr.join('');
}
 
function solve(lbpData) {
  const text_Arr=[]
  for(let y=0;y<lbpData.height;y++) {
    const line=getLine(0,lbpData.width,y,lbpData)
    let x=0;
    while (x<lbpData.width){
      const [n,len,dis]=list_key.sortFindLen(line,x);
//命中了
      if(dis===0||dis===1&&len===list_key[n].length){
        const index=list_val[n][0];
        text_Arr.pushOnly(index)
        x=x+len
      }else{
        x++;
      }
    }
  }
  for(let i=0;i<textArr.length;i++){
    const tv=textArr[i]
    if(/[a-z]/i.test(tv)){
 
    }else{
      if(text_Arr.indexOf(i)===-1){
        console.log(i,tv)
      }
    }
  }
  console.log(text_Arr.length)
  console.log(textArr.length-noUseNum)
}
 
solve(lbpData)
 
 
// console.log(list_key)
// console.log(list_val)

  

posted @   无工时代  阅读(35)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示