

Wofür ich den Text im entfernen möchte Hintergrund. Es sollten nur die Captcha-Zeichen übrig bleiben (d. h. K6PwKA, YabVzu). Die Aufgabe besteht darin, diese Zeichen später mit Tesseract zu identifizieren.
Das habe ich versucht, aber es liefert keine sehr gute Genauigkeit.
Code: Select all
import cv2
import pytesseract
pytesseract.pytesseract.tesseract_cmd = r"C:\Users\HPO2KOR\AppData\Local\Tesseract-OCR\tesseract.exe"
img = cv2.imread("untitled.png")
gray_image = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
gray_filtered = cv2.inRange(gray_image, 0, 75)
cv2.imwrite("cleaned.png", gray_filtered)
Hinweis:
Ich habe alle Vorschläge ausprobiert, die ich für diese Frage bekam, aber keiner davon hat für mich funktioniert.
BEARBEITEN:
Gemäß Elias, ich habe versucht, die Farbe des Captcha-Textes mit Photoshop zu finden, indem ich ihn in Graustufen konvertiert habe Es stellte sich heraus, dass es irgendwo zwischen [100, 105] lag. Anschließend bewerte ich das Bild anhand dieses Bereichs. Aber das Ergebnis, das ich mit Tesseract erhalten habe, lieferte kein zufriedenstellendes Ergebnis.
Code: Select all
gray_filtered = cv2.inRange(gray_image, 100, 105)
cv2.imwrite("cleaned.png", gray_filtered)
gray_inv = ~gray_filtered
cv2.imwrite("cleaned.png", gray_inv)
data = pytesseract.image_to_string(gray_inv, lang='eng')
Code: Select all
'KEP wKA'
[img]https://i .sstatic.net/AqYeO.png[/img]
BEARBEITEN 2:
Code: Select all
def get_text(img_name):
lower = (100, 100, 100)
upper = (104, 104, 104)
img = cv2.imread(img_name)
img_rgb_inrange = cv2.inRange(img, lower, upper)
neg_rgb_image = ~img_rgb_inrange
cv2.imwrite('neg_img_rgb_inrange.png', neg_rgb_image)
data = pytesseract.image_to_string(neg_rgb_image, lang='eng')
return data
[img]https://i .sstatic.net/rSrSz.png[/img]
und der Text als
Code: Select all
GXuMuUZ