【转】凭借OCR和神经网络,用JavaScript识别验证码
原文作者:John Resig image_data.data[i] = luma; // Turn all the pixels of the certain colour to white if(image_data.data[i] == 255 && image_data[i] = cropped_canvas.getContext("2d").getImageData(0, 0, 补充说明一下,这个脚本应该算是一个特例吧,这项技术可能会应用在更多设计不良的验证码上,但对于更多设计复杂的验证码来说,就有点力不从心了(尤其是这种基于客户端的分析)。 我非常期待能有更多人从这个项目中得到灵感,开发出更多有意思的东西来,它的潜力太巨大了。
原文链接:OCR and Neural Nets in JavaScript
译者:七月佑安
【原文作者】John Resig
for(var x = 0; x <image_data.width; x++){
for(var y = 0; y <image_data.height; y++){
var i = x*4+y*4*image_data.width;
var luma = Math.floor(image_data.data[i] * 299/1000 +
image_data.data[i+1] * 587/1000 +
image_data.data[i+2] * 114/1000);
image_data.data[i+1] = luma;
image_data.data[i+2] = luma;
image_data.data[i+3] = 255;
}
}
}
filter(image_data[1], 120);
filter(image_data[2], 135);
for(var x = 0; x <image_data.width; x++){
for(var y = 0; y <image_data.height; y++){
var i = x*4+y*4*image_data.width;
if(image_data.data[i] == colour){
image_data.data[i] = 255;
image_data.data[i+1] = 255;
image_data.data[i+2] = 255;
// Everything else to black
}else{
image_data.data[i] = 0;
image_data.data[i+1] = 0;
image_data.data[i+2] = 0;
}
}
}
}
var above = x*4+(y-1)*4*image_data.width;
var below = x*4+(y+1)*4*image_data.width;
image_data.data[above] == 0 &&
image_data.data[below] == 0) {
image_data.data[i] = 0;
image_data.data[i+1] = 0;
image_data.data[i+2] = 0;
}
var edges = find_edges(image_data[i]);
cropped_canvas.getContext("2d").drawImage(canvas, edges[0], edges[1],
edges[2]-edges[0], edges[3]-edges[1], 0, 0,
edges[2]-edges[0], edges[3]-edges[1]);
cropped_canvas.width, cropped_canvas.height);