コメント:HTML 5のキャンバスには、検証コード画像からピクセルデータを取得するために使用できるインターフェイスgetImagedataがあります。各ピクセルには、r、g、b、aの4つの値があります。 R、G、Bは赤、緑、青であり、Aは透明性です。観察した後、アイデアと実装コードについて話しましょう。興味があるなら、去らないでください。
私たちの学校のアカデミックアフェアーズ管理システム(私たちの学校だけではないようです)は、コース選択タイムサーバーが崩壊したときに説明されていません。コースを選択するには、検証コードを繰り返し入力する必要がある場合があります。何千人もの大学生が検証コードの入力に時間を無駄にしていると考えるとき、私は人類を救う義務があると感じます。私はこの記事を検索して見ました。それは3年前のものでした。私は前半を紹介し、TamperMonkeyプラグインを使用して、目的の効果を大まかに実現しました。このスクリプトは、GitHubでも利用できます。コードは醜いです。デバッグしてアドバイスをくれてください。
アイデアについて話しましょう。HTML5のキャンバスには、検証コード画像からピクセルデータを取得するために使用できるインターフェイスgetImagedataがあります。各ピクセルには、r、g、b、aの4つの値があります。 R、G、Bは赤、緑、青であり、Aは透明性です。
アカデミックアフェアーズマネジメントシステムの検証コードは5つの数字であり、フォントサイズは変更されていないことが観察されました。背景は邪魔されますが、フォントの色とは明らかに非常に異なるため、非常に粗い方法が使用されました。色が明るいほど、RGB値が大きく、色が暗く、RGB値が少ないことがわかります。そこで、各ピクセルポイントを判断しました。 RGBの合計は350未満(この値が測定されます)は、フォントに属するピクセルです。簡単に観察するために、RGB値は255に設定されています。それ以外の場合は0に設定されます。これにより、黒の背景と白い文字が付いた写真が表示されます。
var ctx = canvas.getContext( '2d');
ctx.drawimage(IMG、0,0);
var c = ctx.getimagedata(0,0、img.width、img.height);
for(i = 0; i <c.height; i ++){
for(j = 0; j <c.width; j ++){
var x =(i*4)*c.width+(j*4);
var r = C.data [x];
var g = C.data [x+1];
var b = C.data [x+2];
if(r+g+b> 350){
c.data [x] = c.data [x+1] = c.data [x+2] = 0;
}
それ以外{
c.data [x] = c.data [x+1] = c.data [x+2] = 255;
}
}
}
次に、図面ツールを使用して画像を拡大し、観察し、各数値が12*8ピクセルの長方形であることがわかりました。その後、各数に対応するピクセルの数が同じであることがわかりました。次に...観察するだけです...各数値に対応するマトリックスの座標...この関数を書きます。
function getnum(imgdata、x1、y1、x2、y2){
var num = 0;
for(i = y1; i <y2; i ++){
for(j = x1; j <x2; j ++){
var x =(i*4)*imgdata.width+(j*4);
if(imgdata.data [x] == 255)num ++;
}
}
スイッチ(num)
{
ケース56:{
j =(x1+x2)/2;
i =(y1+y2)/2;
var x =(i*4)*imgdata.width+(j*4);
if(imgdata.data [x] == 255)
8を返します。
それ以外
0を返します。
}
ケース30:1を返します。
ケース50:2を返します。
ケース51:3を返します。
ケース48:返品4;
ケース57:戻り5;
ケース58:{
i = y2-2;
j = x1;
var x =(i*4)*imgdata.width+(j*4);
if(imgdata.data [x] == 255)
9を返します。
それ以外
6を返します。
}
ケース37:7を返します。
デフォルト:0を返します。
}
}
元のテキストはニューラルネットワークを使用して判断し、精度率は大幅に改善されます。使い方がわからないので、役に立たない…
この方法を使用して取得した検証コードの精度も95%を超えており、当面は十分です。時間がある場合は、ニューラルネットワークを研究できます。
それを必要とする学生はそれを使用できます。 Chromeブラウザは最初にTamperMonkeyをインストールする必要があり、FirefoxはGeaSemonKeyで次にこのスクリプトをインストールする必要があります。