技术点

1 Tesseract.js 识别长串期号

2 OCRAD.js 识别单个开奖号

3 file文件技术

4 canvas 裁切图片 canvas.getContext('2d').drawImage(img,0,0,w,h,0,0,imgW,imgH);

5 canvas 图片信息 canvas.toDataURL 得到图片src信息

6 canvas 像素点rgba值 imgData = canvas.getContext('2d').getImageDate(0,0,1,1);

   rgba(imgData.data[0],imgData.data[1],imgData.data[2],imgData.data[3]);

7 canvas 灰度化处理 getImageData 处理 context.putImageData(imgData, 0, 0);

	浮点算法  整数算法  移位算法  平均值算法   仅取绿色

	    var imgData = context.getImageData(0, 0, imgArea.width, imgArea.height);
	    for (var i = 0; i < imgData.data.length; i += 4) {
	        var R = imgData.data[i]; //R(0-255)
	        var G = imgData.data[i + 1]; //G(0-255)
	        var B = imgData.data[i + 2]; //G(0-255)
	        var Alpha = imgData.data[i + 3]; //Alpha(0-255)
	        //浮点算法
	        var gray = R * 0.299 + G * 0.587 + B * 0.114;
		//整数算法
    		//var gray = (R*299 + G*587 + B*114 + 500) / 1000; 
   			//移位算法
    		//var gray =(R*76+G*151+B*28)>>8;
    		//平均值算法
    		//var gray = (R+G+B)/3;
    		//仅取绿色
    		//var gray=G;
	        imgData.data[i] = gray;
	        imgData.data[i + 1] = gray;
	        imgData.data[i + 2] = gray;
	        imgData.data[i + 3] = Alpha;
	    }
	    context.putImageData(imgData, 0, 0);

8 canvas 二值化处理 getImageData 处理 context.putImageData(imgData, 0, 0);

    imgData = context.getImageData(0, 0, imgArea.width, imgArea.height);
        var index = 255/2;//阈值
        for (var i = 0; i < imgData.data.length; i += 4) {
            var R = imgData.data[i]; //R(0-255)
            var G = imgData.data[i + 1]; //G(0-255)
            var B = imgData.data[i + 2]; //B(0-255)
            var Alpha = imgData.data[i + 3]; //Alpha(0-255)
            var sum = (R + G + B) / 3;
            if (sum > index) {
                imgData.data[i] = 255;
                imgData.data[i + 1] = 255;
                imgData.data[i + 2] = 255;
                imgData.data[i + 3] = Alpha;
            } else {
                imgData.data[i] = 0;
                imgData.data[i + 1] = 0;
                imgData.data[i + 2] = 0;
                imgData.data[i + 3] = Alpha;
            }
        }
        context.putImageData(imgData, 0, 0);

9 过滤 得到重复最多的值,及重复总和 function filterNum(arr){ var maxCount = 0, maxItem = '', obj = {} arr.forEach(function(item){ if(item != "" && !/[a-z]/i.test(item) && !/[-]/i.test(item)){ obj[item] ? (obj[item].count += 1) : obj[item] = {count: 1} obj[item].count > maxCount && (maxCount = obj[item].count, maxItem = item) }

	    })
	    return {item:maxItem,count:maxCount}
	}

10 接近值-乱码正则替换 item = item.replace(/[lLiIT]/i,"1"); 和数字1相同的,替换为1,和大S小s替换为5

11 非空 非字母 非- item != "" && !/[a-z]/i.test(item) && !/[-]/i.test(item)) 正则表达式

12 资源文件循环读取,需有序,采用bat方式进行批处理重命名 rename.bat

@echo off
setlocal enabledelayedexpansion
set count=0
for /f %%i in ('dir /b *.jpg') do (
		set /a count+=1
		echo 改名:%%i !count!
		rename %%i !count!.jpg
)

100 输出结果展示

0: (4) [11190126100, 4, 5, 6] 1: (4) [11190126101, 3, 3, 5] 2: (4) [11190126102, 2, 5, 5] 3: (4) [11190126103, 2, 3, 5] 4: (4) [11190126104, 1, 3, 5] 5: (4) [11190126105, 1, 3, 4] 6: (4) [11190126106, 2, 3, 5] 7: (4) [11190126107, 2, 3, 6] 8: (4) [11190126108, 2, 6, 6] 9: (4) [11190126109, 1, 3, 6] 10: (4) [11190126110, 1, 3, 6] 11: (4) [11190126111, 1, 1, 5] 12: (4) [11190126112, 1, 5, 6] 13: (4) [11190126113, 3, 5, 5] 14: (4) [11190126114, 1, 3, 4] 15: (4) [11190126117, 2, 4, 6] 16: (4) [11190126118, 3, 6, 6] 17: (4) [11190126119, 2, 2, 6] 18: (4) [11190126120, 2, 4, 6] 19: (4) [11190126121, 1, 2, 6] 20: (4) [11190126122, 1, 1, 2] 21: (4) [11190126123, 1, 6, 6] 22: (4) [11190126124, 2, 3, 3] 23: (4) [11190126125, 3, 5, 5] 24: (4) [11190126126, 1, 1, 2] 25: (4) [11190126127, 1, 4, 6] 26: (4) [11190126128, 1, 5, 6] 27: (4) [11190126129, 3, 4, 6]