Spaces:
Sleeping
Sleeping
Upload app.py
Browse files
app.py
CHANGED
|
@@ -35,11 +35,25 @@ def fetch_and_solve_captcha():
|
|
| 35 |
nparr = np.frombuffer(image_bytes, np.uint8)
|
| 36 |
original_image = cv2.imdecode(nparr, cv2.IMREAD_COLOR)
|
| 37 |
|
|
|
|
| 38 |
hsv = cv2.cvtColor(original_image, cv2.COLOR_BGR2HSV)
|
| 39 |
lower_blue = np.array([90, 50, 50])
|
| 40 |
upper_blue = np.array([130, 255, 255])
|
| 41 |
mask = cv2.inRange(hsv, lower_blue, upper_blue)
|
| 42 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 43 |
|
| 44 |
tesseract_config = r'--oem 3 --psm 7 -c tessedit_char_whitelist=ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
|
| 45 |
text = pytesseract.image_to_string(processed_image, config=tesseract_config)
|
|
|
|
| 35 |
nparr = np.frombuffer(image_bytes, np.uint8)
|
| 36 |
original_image = cv2.imdecode(nparr, cv2.IMREAD_COLOR)
|
| 37 |
|
| 38 |
+
# --- Этап 1: Фильтрация по цвету ---
|
| 39 |
hsv = cv2.cvtColor(original_image, cv2.COLOR_BGR2HSV)
|
| 40 |
lower_blue = np.array([90, 50, 50])
|
| 41 |
upper_blue = np.array([130, 255, 255])
|
| 42 |
mask = cv2.inRange(hsv, lower_blue, upper_blue)
|
| 43 |
+
|
| 44 |
+
# --- ЭТАП 2: УЛУЧШЕННАЯ ОЧИСТКА (НОВЫЙ ШАГ) ---
|
| 45 |
+
# Создаем "ядро" - небольшую матрицу для морфологических операций.
|
| 46 |
+
# Размер 2x2 хорошо подходит для удаления мелких артефактов.
|
| 47 |
+
kernel = np.ones((2, 2), np.uint8)
|
| 48 |
+
|
| 49 |
+
# Применяем операцию "Открытие" (Opening).
|
| 50 |
+
# Это эрозия, за которой следует расширение. Она удаляет мелкий шум (ошмётки).
|
| 51 |
+
logging.info("Применение морфологического открытия для удаления шума...")
|
| 52 |
+
cleaned_mask = cv2.morphologyEx(mask, cv2.MORPH_OPEN, kernel, iterations=1)
|
| 53 |
+
|
| 54 |
+
# --- Этап 3: Инверсия и распознавание ---
|
| 55 |
+
# Инвертируем очищенную маску для Tesseract (черный текст на белом фоне)
|
| 56 |
+
processed_image = cv2.bitwise_not(cleaned_mask)
|
| 57 |
|
| 58 |
tesseract_config = r'--oem 3 --psm 7 -c tessedit_char_whitelist=ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
|
| 59 |
text = pytesseract.image_to_string(processed_image, config=tesseract_config)
|