Vergleiche

Text-CAPTCHA vs. Bild-CAPTCHA: Entwicklervergleich

Kurz gesagt: Ein Text-CAPTCHA prüft, ob Sie verzerrte Zeichen entziffern können, ein Bild-CAPTCHA, ob Sie Objekte auf Fotos erkennen. Für Entwickler entscheidet dieser Unterschied über fast alles Weitere – Sicherheitsniveau, Barrierefreiheit, Nutzerreibung und Automatisierungsaufwand. Die Kurzantwort zur Typwahl:

  • Text-CAPTCHA: günstig, selbst hostbar und per OCR leicht zu automatisieren – bietet dafür nur schwachen Bot-Schutz.
  • Bild-CAPTCHA: stärkerer Schutz, dafür mehr Nutzerreibung und ein höherer Automatisierungsaufwand.
  • Unsichtbar (reCAPTCHA v3, Cloudflare Turnstile): keine Nutzerinteraktion – der Standard für neue Projekte.

Text-CAPTCHA vs. Bild-CAPTCHA im direkten Vergleich

Dimension Text-CAPTCHA Bild-CAPTCHA
Sicherheitsniveau niedrig – moderne OCR erreicht laut Stichproben bis zu ~95 % hoch – erfordert Objekterkennung
Lösungszeit (Mensch) 5–10 Sekunden 10–30 Sekunden
Fehlerrate (Menschen) 15–20 % 8–15 %
Barrierefreiheit schlecht für sehbehinderte Nutzer sehr schlecht für sehbehinderte Nutzer
Mobile Nutzung mäßig (kleine Zeichen) gut (Tippauswahl)
Automatisierungsaufwand gering (OCR) hoch (Bildklassifizierung)
Bereitstellungskosten kostenlos (selbst gehostet) kostenlos bis kostenpflichtig (Drittanbieter-API)
API-Lösungskosten pro 1.000 0,50–1,00 $ 1,50–3,00 $
Datenerfassung keine trainiert ggf. ML-Modelle (reCAPTCHA)
Implementierungsaufwand minimal (serverseitige Bildgenerierung) mäßig (JavaScript-SDK-Integration)

Hinweis: Die Benchmarks und Vergleichswerte in diesem Artikel basieren auf internen Messungen und können je nach Region, Traffic-Muster und CAPTCHA-Konfiguration variieren. Eigene Tests mit realen Workflows sollten die maßgebliche Grundlage für Entscheidungen sein.

Im DACH-Raum kommen zwei rechtliche Aspekte hinzu. Seit dem Barrierefreiheitsstärkungsgesetz (BFSG, in Kraft seit Juni 2025) müssen viele B2C-Angebote barrierefrei sein – klassische Text- und Rasterbild-CAPTCHAs sind hier ein bekanntes Hindernis. Und da IP-Adressen nach DSGVO als personenbezogen gelten, sollten Sie bei datenerfassenden Bild-CAPTCHAs Rechtsgrundlage und Datenflüsse dokumentieren.


Entscheidungshilfe: Text-CAPTCHA, Bild-CAPTCHA oder unsichtbar?

Text-CAPTCHA sinnvoll, wenn …

  • Sie eine selbst gehostete Lösung ohne externe Abhängigkeiten brauchen
  • Ihre Zielgruppe auf Barrierefreiheit angewiesen ist (Text-CAPTCHAs lassen sich mit Audio-Alternativen ergänzen)
  • das Bot-Aufkommen gering ist und einfacher Spam-Schutz genügt
  • Sie Datenerfassung durch Dritte vermeiden möchten

Bild-CAPTCHA sinnvoll, wenn …

  • Sie starken Bot-Schutz benötigen
  • Ihre Anwendung sensible Vorgänge absichert (Login, Zahlungen)
  • Sie höhere Nutzerreibung in Kauf nehmen können
  • Sie einen verwalteten Dienst mit laufenden Updates wollen

Weder noch – setzen Sie auf unsichtbare Verfahren, wenn …

  • reCAPTCHA v3 oder Cloudflare Turnstile Ihren Traffic ganz ohne Nutzerinteraktion bewerten können

Wie Text-CAPTCHAs funktionieren

Ein Text-CAPTCHA rendert verzerrte Zeichen als Bild. Der Nutzer tippt sie ab, der Server vergleicht die Eingabe mit der gespeicherten Zeichenkette.

Typische Verzerrungstechniken bei Text-CAPTCHAs

  • Zeichenverzerrung – verbiegt Buchstaben, um einfaches OCR zu erschweren
  • Hintergrundrauschen – legt Linien, Punkte oder Farbverläufe hinter den Text
  • Zeichenüberlappung – überlappt benachbarte Buchstaben gegen Segmentierung
  • Schriftart-Zufall – nutzt mehrere Schriftarten und -größen pro Abfrage
  • Farbvariation – vergibt Zeichen- und Hintergrundfarben zufällig

Ablauf eines Text-CAPTCHAs

Server generates random string (e.g., "X7mK9p")
    ↓
Applies distortion: warping, noise, overlap
    ↓
Renders as PNG/JPEG image
    ↓
User reads characters, types into input field
    ↓
Server compares input against stored string (case-insensitive usually)

Wie Bild-CAPTCHAs funktionieren

Ein Bild-CAPTCHA zeigt ein Foto-Raster und fordert den Nutzer auf, Bilder einer Kategorie auszuwählen; die Auswahl wird gegen eine hinterlegte Referenz geprüft.

Gängige Bild-CAPTCHA-Aufgaben

  • Gitterauswahl – „Alle Felder mit Ampeln auswählen" (reCAPTCHA v2)
  • Bildbeschriftung – „Alle Bilder mit einem Bus anklicken" (hCaptcha)
  • Objektzählung – „Wie viele Fahrräder sind zu sehen?" (benutzerdefiniert)
  • Rotation – „Bild in die richtige Ausrichtung drehen" (FunCaptcha)

Ablauf eines Bild-CAPTCHAs

Server selects images from a labeled dataset
    ↓
Presents 3×3 or 4×4 grid with a text prompt
    ↓
User clicks matching images
    ↓
Server validates selections against ground truth
    ↓
If fading images: new images load in place of selected ones (multi-round)

CAPTCHA-Typ automatisch erkennen (Python & Node.js)

Vor dem Lösen steht die Frage, welcher Typ überhaupt vorliegt. Die folgenden Skripte lesen den Seitenquelltext und ordnen ihn einem Anbieter oder einem klassischen Text-CAPTCHA zu.

Erkennung mit Python

import requests
from bs4 import BeautifulSoup
import re

def detect_captcha_type(url):
    """Detect whether page uses text or image CAPTCHA."""
    response = requests.get(url, timeout=10)
    soup = BeautifulSoup(response.text, "html.parser")
    html = response.text

    result = {"text_captcha": False, "image_captcha": False, "provider": None}

    # Check for reCAPTCHA (image-based)
    if "google.com/recaptcha" in html or "g-recaptcha" in html:
        result["image_captcha"] = True
        result["provider"] = "reCAPTCHA"
        return result

    # Check for hCaptcha (image-based)
    if "hcaptcha.com" in html or "h-captcha" in html:
        result["image_captcha"] = True
        result["provider"] = "hCaptcha"
        return result

    # Check for text CAPTCHA patterns
    captcha_images = soup.find_all("img", attrs={
        "src": re.compile(r"captcha", re.I)
    })
    captcha_inputs = soup.find_all("input", attrs={
        "name": re.compile(r"captcha", re.I)
    })

    if captcha_images and captcha_inputs:
        # Image with text input = text CAPTCHA
        result["text_captcha"] = True
        result["provider"] = "custom text CAPTCHA"
        return result

    # Check for FunCaptcha (image-based rotation)
    if "funcaptcha" in html.lower() or "arkoselabs" in html.lower():
        result["image_captcha"] = True
        result["provider"] = "FunCaptcha"
        return result

    return result

captcha = detect_captcha_type("https://example.com/login")
print(captcha)

Erkennung mit Node.js

const axios = require("axios");
const cheerio = require("cheerio");

async function detectCaptchaType(url) {
    const { data: html } = await axios.get(url, { timeout: 10000 });
    const $ = cheerio.load(html);

    const result = { textCaptcha: false, imageCaptcha: false, provider: null };

    // reCAPTCHA detection
    if (html.includes("google.com/recaptcha") || html.includes("g-recaptcha")) {
        result.imageCaptcha = true;
        result.provider = "reCAPTCHA";
        return result;
    }

    // hCaptcha detection
    if (html.includes("hcaptcha.com") || html.includes("h-captcha")) {
        result.imageCaptcha = true;
        result.provider = "hCaptcha";
        return result;
    }

    // Text CAPTCHA: image + input with "captcha" in name/class
    const captchaImgs = $("img[src*='captcha' i]").length;
    const captchaInputs = $("input[name*='captcha' i]").length;

    if (captchaImgs > 0 && captchaInputs > 0) {
        result.textCaptcha = true;
        result.provider = "custom text CAPTCHA";
        return result;
    }

    return result;
}

detectCaptchaType("https://example.com/login").then(console.log);

Text-CAPTCHAs mit der OCR-API von CaptchaAI lösen

Ein Text-CAPTCHA ist im Kern ein Bild: Der verzerrte Text wird als PNG oder JPEG ausgeliefert. Genau deshalb löst die Bild-OCR-API von CaptchaAI diese Abfragen direkt – Sie laden das Bild, übermitteln es als Base64 an in.php und fragen das Ergebnis per Polling von res.php ab.

import requests
import base64
import time

API_KEY = "YOUR_API_KEY"

# Get the CAPTCHA image
captcha_url = "https://example.com/captcha.png"
image_data = requests.get(captcha_url).content
b64 = base64.b64encode(image_data).decode()

# Submit to CaptchaAI
submit = requests.post("https://ocr.captchaai.com/in.php", data={
    "key": API_KEY,
    "method": "base64",
    "body": b64,
    "json": 1,
})
task_id = submit.json()["request"]

# Poll for result
for _ in range(30):
    time.sleep(3)
    resp = requests.get("https://ocr.captchaai.com/res.php", params={
        "key": API_KEY,
        "action": "get",
        "id": task_id,
        "json": 1,
    }).json()

    if resp.get("status") == 1:
        print(f"CAPTCHA text: {resp['request']}")
        break

CaptchaAI verarbeitet über 27.500 Bild- und OCR-Varianten, darunter verzerrten Text, mathematische Gleichungen und Zeichenerkennungsaufgaben.


Häufige Fragen

Woran erkenne ich, ob eine Seite ein Text- oder Bild-CAPTCHA einsetzt?

Prüfen Sie den Seitenquelltext. Enthält er g-recaptcha oder google.com/recaptcha, liegt ein Bild- oder unsichtbares reCAPTCHA vor. Ein <img>-Element mit „captcha" im src plus ein zugehöriges Textfeld deutet dagegen auf ein klassisches Text-CAPTCHA hin. Die Erkennungsskripte weiter oben automatisieren genau diese Prüfung.

Spielt die DSGVO bei der Wahl des CAPTCHA-Typs eine Rolle?

Ja. Bild-CAPTCHAs großer Anbieter erheben Interaktionsdaten, und IP-Adressen gelten in der EU als personenbezogen. Wer reCAPTCHA einbindet, sollte Rechtsgrundlage und Datenflüsse dokumentieren; selbst gehostete Text-CAPTCHAs erfassen keine Drittanbieterdaten.

Was kostet das Lösen von Text- gegenüber Bild-CAPTCHAs per API?

Text-CAPTCHAs sind günstiger: OCR-basiertes Lösen liegt bei etwa 0,50–1,00 $ pro 1.000. Bild-CAPTCHAs wie reCAPTCHA kosten rund 1,50–3,00 $ pro 1.000, weil die Verarbeitung aufwendiger ist. CaptchaAI selbst rechnet Thread-basiert ab – Sie zahlen pro gleichzeitigem Thread, nicht pro Lösung.

Löst CaptchaAI Text- und Bild-CAPTCHAs mit einer Integration?

Ja. Text-CAPTCHAs laufen über die Bild-OCR-API, gitterbasierte Bild-CAPTCHAs über die reCAPTCHA-v2- und Rasterbild-Löser – beide über dasselbe in.php/res.php-Muster. hCaptcha und FunCaptcha unterstützt CaptchaAI derzeit nicht.

Kann ich Text- und Bild-CAPTCHAs im selben Workflow parallel verarbeiten?

Ja. Da CaptchaAI pro Thread abrechnet, laufen mehrere Abfragen gleichzeitig – ein Thread nimmt nach jeder Lösung sofort die nächste. Die Parallelität richtet sich nach Ihrer Thread-Anzahl, etwa 5 Threads bei BASIC (15 $/Monat).


Fazit

Die Wahl hängt vom Schutzbedarf ab, nicht von der Automatisierbarkeit – beide Typen löst CaptchaAI über dasselbe in.php/res.php-Muster:

  • Text-CAPTCHAs sind günstig im Betrieb und mit OCR problemlos zu automatisieren – die Bild-OCR von CaptchaAI übernimmt sie direkt.
  • Bild-CAPTCHAs bieten stärkeren Schutz, verlangen dafür aber spezialisierte Löser wie die reCAPTCHA-v2- und Rasterbild-API von CaptchaAI.
  • Der Trend geht klar zu unsichtbaren Verfahren wie reCAPTCHA v3 und Cloudflare Turnstile.

Verwandte Leitfäden

Kommentare sind für diesen Artikel deaktiviert.