Ich bin so neu in der Bildverarbeitung und versuche, das Rauschen von Captchas zu beseitigen.
Für Captchas habe ich verschiedene Arten von ihnen:
Zum ersten habe ich Folgendes getan:
Erstens habe ich jedes Pixel, das nicht schwarz ist, in Schwarz konvertiert. Dann habe ich ein Muster gefunden, das ein Bildrauschen ist, und es gelöscht. Für das erste Captcha war es leicht zu löschen und ich fand den Text mit Tesseract.
Aber ich suche nach einer Lösung für die zweite und die dritte.
Wie muss das gehen? Ich meine, was sind die möglichen Methoden, um es zu löschen?
So lösche ich Muster:
def delete(searcher,h2,w2):
h = h2
w = w2
search = searcher
search = search.convert("RGBA")
herear = np.asarray(search)
bigar = np.asarray(imgCropped)
hereary, herearx = herear.shape[:2]
bigary, bigarx = bigar.shape[:2]
stopx = bigarx - herearx + 1
stopy = bigary - hereary + 1
pix = imgCropped.load()
for x in range(0, stopx):
for y in range(0, stopy):
x2 = x + herearx
y2 = y + hereary
pic = bigar[y:y2, x:x2]
test = (pic == herear)
if test.all():
for q in range(h):
for k in range(w):
pix[x+k,y+q] = (255,255,255,255)
Entschuldigung für die Variablennamen, ich habe gerade die Funktion getestet.
Vielen Dank..
Antworten:
Dies ist so weit ich kann:
Sie kennen wahrscheinlich die
medianBlur
Funktion, die den Medianwert in jedem Kernel findet und diesen Wert durch das Kernelzentrum ersetzt. Wir können etwas Ähnliches tun, aber anstelle des Medians den Maximalwert und dann den Minimalwert verwenden. Mit einem mittleren Bluring habe ich auch einige Ergebnisse erzielt. Ich weiß, dass sie nicht perfekt sind, aber ich hoffe, es gibt Ihnen einige Ideen (Sie können mit den Größen des Eingabebildes und der Kernel spielen, es kann die Ergebnisse ein wenig verbessern).Ich habe Python momentan nicht installiert, daher teile ich den genauen C ++ - Code, den ich verwendet habe:
In solchen Fällen sind Deep-Learning-Methoden wie YOLO und RCNN übrigens die besten Methoden. Probieren Sie sie auch aus.
quelle
Hier ist meine Lösung,
Zuerst habe ich das Hintergrundmuster bekommen (von Hand auf Farbe bearbeitet). Von:
Danach habe ich ein leeres Bild erstellt, um es mit Unterschieden zwischen Muster und Bild zu füllen.
Hier sind die Unterschiede ..
und schließlich fügte ich Unschärfe hinzu und löschte die nicht schwarzen Stellen.
Ergebnis:
Mit pytesseract Ergebnis ist 2041, es ist falsch für dieses Bild, aber die allgemeine Rate liegt bei% 60.
quelle
Sie können die opencv-Bibliothek für die Bildverarbeitung verwenden. Sehr nützlich könnte diese opencv-Dokumentationsseite sein . Versuchen Sie dann, Ihre Nummer mit der findCountour-Methode wie folgt zu extrahieren:
Danach gibt es folgendes Ergebnis:
Es ist alles andere als perfekt, aber wenn Sie es mit unterschiedlichen Schwellenwerten versuchen, z.
Sie können bessere Ergebnisse erzielen.
quelle