Witam, co nalezy użyć by odczytać z tego obrazka te cyfry ?
OCR? openCV ?
Captcha jest po to żeby rozwiązywali ja ludzie.
Jeśli znasz konkretną czcionkę to możesz wyszukiwać wzorce w openCV. Ja kiedyś znalazłem stronę, która tekst z obrazka miała zapisany w adresie do obrazka (w base64), wszystko zależy od kontekstu i chęci, generalnie polecam znaleźć sobie ciekawsze hobby.
Captcha przypomina tę na jednym popularnym forum warezowym. Nie dość, że pytający i tak pobiera coś za free, to jeszcze musi koniecznie oszukiwać na captchy? Logika gimbusów.
@olesio
to nie ma sluzyc do pobierania plikow, to ma bardziej charytatywny cel :D
chętnie __**zapłace **__komuś za napisanie kodu który rozpozna cyfry z takiego obrazka
Nie musisz płacić, dam Ci za darmo: 5 6 1 7 8
Well, po to twórca systemu wprowadził takie zabezpieczenia dostępu, żeby ludzie nie używali botów/skryptów i prawdopodobnie ma w regulaminie, że jest to nielegalne. Więc sory, ale nie.
Pracowałem kiedyś z takim zewnętrznym systemem rozpoznawania captchy. Wysyłało się obrazek restem do serwera w Indiach i po kilku sekundach przychodziła zwrotka plain textem. Wysoka skuteczność :).
zamów przepisywanie captchy u chińczyków
za grosza przepiszą Ci okolo 5 kodów - nie jest to drogie
udalo mi sie napisac taki kod, ale tu jeszcze daleka droga i wgl zagmatwany ten kod...
na razie rozpoznaje 1 litere...
moze ktoś coś doradzi ? :D
Imports System.Runtime.InteropServices
Imports System.Drawing.Imaging
Public Class Form1
Dim bm As New Bitmap(100, 20, Imaging.PixelFormat.Format24bppRgb)
Dim str4 As String = "QWERTYUIOPASDFGHJKLZXCVBNM"
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim g As Graphics = Graphics.FromImage(bm)
g.DrawString("T", New Font("Arial", 14), Brushes.White, 0, 0)
PictureBox1.Image = bm
g.Dispose()
' bm.Save("./bmp")
' bm = New Bitmap("./bmp")
Dim clr(bm.Width - 1, bm.Height - 1) As Color
For i = 0 To bm.Width - 1
For j = 0 To bm.Height - 1
clr(i, j) = bm.GetPixel(i, j)
Next
Next
' PictureBox1.Image = tmp3(1)
Dim tmp As String = ""
For j = 0 To bm.Height - 1
Dim tmp2 As String = ""
For i = 0 To bm.Width - 1
If clr(i, j).R = 255 AndAlso clr(i, j).G = 255 AndAlso clr(i, j).B = 255 Then
tmp2 += "x"
Else
tmp2 += " "
End If
Next
If Trim(tmp2) <> "" Then
tmp += Trim(tmp2) + vbCrLf
End If
Next
TextBox1.Text = Trim(tmp.Remove(tmp.Length - 2, 2))
For Each str5 In str4.ToCharArray
Dim Bitm As New Bitmap(20, 20)
Dim g3 As Graphics = Graphics.FromImage(Bitm)
g3.DrawString(CStr(str5), New Font("Arial", 14), Brushes.White, 0, 0)
' PictureBox1.Image = bm
g3.Dispose()
Dim tmp6 As String = ""
For j = 0 To 19
Dim tmp2 As String = ""
For i = 0 To 19
If Bitm.GetPixel(i, j).R = 255 AndAlso Bitm.GetPixel(i, j).G = 255 AndAlso Bitm.GetPixel(i, j).B = 255 Then
tmp2 += "x"
Else
tmp2 += " "
End If
Next
If Trim(tmp2) <> "" Then
tmp6 += Trim(tmp2) + vbCrLf
End If
Next
Try
Dim a() As String = Split(TextBox1.Text, vbCrLf)
Dim b() As String = Split(Trim(tmp6.Remove(tmp.Length - 2, 2)), vbCrLf)
If a(0).StartsWith(b(0)) AndAlso a.Last.StartsWith(b.Last) AndAlso a.Count = b.Count AndAlso a(Int(a.Count / 2)).StartsWith(b(Int(b.Count / 2))) Then
MsgBox(str5)
End If
Catch
End Try
Next
End Sub
Private Sub PictureBox1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove
Try
Me.Text = bm.GetPixel(e.X, e.Y).ToString
Catch
End Try
End Sub
End Class
moze ktoś coś doradzi ?
Użyj sieci neuronowych?
a w jaki sposob mozna chociazby oczyscic obraz z tych linii ?
Można oczyścić obrazek z linii, wystarczy, że twój program będzie rozpoznawał, że to linia i zamieniał je na kolor tła
Obrazek z lini można dość łatwo oczyścić algorytmem erozji z przetwarzania obrazów. Cyfry też trochę na tym ucierpią, ale raczej nie na tyle żeby był problem z ich odczytaniem prez ocr.
ten przyklad kodu captcha wydaje sie prosty do zlamania, ale moze mi sie tylko wydaje. Wrzuc wiecej zdjec
autor captchy chyba dla ułatwienia zrobił każdą cyferkę w innym kolorze
wystarczy że przeanalizujesz obraz znajdując kolory najczęściej występujące i tylko te zostawisz i już masz same cyfry
potem wystarczy że rozdzielisz obraz po kolorze i przytniesz go
na koniec wystarczy porównać otrzymane obrazki (wyseparowane cyfry) ze wzorcami przyjmując jakiś margines błędu
ogólnie łatwe do zrobienia i nie trzeba żadnych sieci neuronowych - za 200 zł mogę Ci napisać
fsadsafdfdsa napisał(a):
autor captchy chyba dla ułatwienia zrobił każdą cyferkę w innym kolorze
wystarczy że przeanalizujesz obraz znajdując kolory najczęściej występujące i tylko te zostawisz i już masz same cyfry
potem wystarczy że rozdzielisz obraz po kolorze i przytniesz go
na koniec wystarczy porównać otrzymane obrazki (wyseparowane cyfry) ze wzorcami przyjmując jakiś margines błęduogólnie łatwe do zrobienia i nie trzeba żadnych sieci neuronowych - za 200 zł mogę Ci napisać
podaj do siebie kontakt e-mail / gg / skype