[.NET] Simple Captchas auslesen

  • Hallo heute hat mich jemand gefragt wie man captchas zu einen Text konvetieren kann und da war ich baff. Das hat mich jetzt genauso intressiert. Jedoch intressiert mich das ebenfalls wie man von normalen Bilder Texte und Zahlen erkennen kann. Um später eine Art Scanner oder ähnliches zu programmieren.


    Das Captcha ist sehr einfach gehalten:


    rechen-captcha.php.png


    Für Hilfe und Lösungen wäre ich sehr erfreut.


    PS: Gegooglet, Sufu genutzt und Foren durchwühlt habe ich bereits. Jedoch nichts gefunden :/


    mfg take

  • Ich denke mal, dass du dir das Bild nimmst und dir dann alle Pixel anschaust.
    Kannst das ja in nem Array speichern z.B. 0 = weiß; 1 = blau..
    ( Musst davor natürlich schon richtige Arrays haben das du dann abgleichen kannst )


    Pseudecode


    Code
    1. if( tempArray == arrayEins )
    2. Ausgabe( "Zahl 1 erfasst" );
  • is ja jetzt auch ned so schwer (also die pixelfarbe in nem array speichern)


    2 Schleifen von 0 bis width bzw. height ineinanderverschachtelt und dann die Farbe in ein Array col[x,y] = getpixel(x,y)


    Da wir hier ja in der Requests Sektion sind geb ich dir auch gleich noch ein bisschen Beispielcode mit auf den Weg


    [cs]
    Image BlackWhite(Image img)
    {
    Bitmap b = new Bitmap(img);


    Color toWhite = b.GetPixel(b.Width - 1, b.Height - 1);


    for (int x = 0; x < b.Width; x++)
    for (int y = 0; y < b.Height; y++)
    {
    if (b.GetPixel(x, y) == toWhite)
    b.SetPixel(x, y, Color.White);
    else
    b.SetPixel(x, y, Color.Black);
    }


    return Image.FromHbitmap(b.GetHbitmap());
    }
    [/cs]
    Wandelt ein Bild in schwarz/weiß um.

  • naja du musst schon eine gewisse Grundlage schaffen.
    Du kannst z.B. Musterarrays zum vergleichen vorgeben.


    Mein Tipp wäre erstmal das Captcha in seine Einzelteile zu zerlegen, d.h. die erste Zahl als einzelnes Array, der Operand die 2. Zahl, usw. und dann kannste dir die Musterarrays in Textfiles speichern und beim Programmstart laden.

  • Also zuerst mal auslesen und die Arrays dann als Muster einbauen.


    Dein Code verstehe ich trotzdem nicht ganz, kannst du ihn etwas erklären so lerne ich auch dazu :)


    Edit: Habs glaub verstanden, danke dir :)

  • Nette kleine Übung + Langweile:


    http://termi.www.stagetwo.eu/downloads/Captcha.exe


    Also wenn du Fragen hast oder die "vorgefertigten" Arrays brauchst sag Bescheid ;).


    E: Auf Wunsch:


    http://paste.www.stagetwo.eu/paste.php?key=j4r30qjy&title=CaptchaArray


    Du musst die Arrays aber auch so wie ich anlegen. Bei mir eben "new char[6,15]". 6 ist quasi die Breite und 15 die Höhe.
    Habe mich immer von Oben nach unten gearbeitet, dann wieder eins nach rechts etc..
    Wenn es grau/weiß war, dann hab ich eine 0 geschrieben, bei blau eine 1.