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.