Le solveur le plus rapide pour votre projet n'est pas celui d'un classement en ligne : c'est celui qui reste stable quand vous le mesurez avec votre trafic, vos pages et votre région. Un chiffre publié provient de conditions que vous ne contrôlez pas. Ce guide donne un protocole reproductible pour chiffrer vous-même la médiane, le P90 et le P99 par type de CAPTCHA, puis comparer plusieurs fournisseurs à conditions strictement égales.
Les chiffres que vous produirez reposent sur des mesures observées dans votre environnement. Les résultats varient selon l'environnement, le volume et le moment de la journée : traitez-les comme une photographie datée.
Pourquoi mesurer chez vous plutôt que suivre un classement
Un benchmark externe répond à « quelle latence ce fournisseur a obtenue sur son banc », pas au vôtre. Quatre variables déplacent le résultat, et aucune n'apparaît dans un tableau publié :
- La région. Depuis un worker hébergé à Paris (OVHcloud, Scaleway ou une région AWS eu-west-3), la latence réseau vers l'API diffère de celle d'un banc situé ailleurs.
- La charge du fournisseur. Un service sous forte demande en pleine journée ne répond pas comme à 3 h du matin.
- La cadence d'interrogation. Interroger toutes les 2 s ou toutes les 5 s change le temps total mesuré.
- Votre code d'intégration. Sérialisation, réutilisation de connexion, gestion des erreurs : votre application ajoute sa propre latence.
Côté conformité, si votre pipeline manipule des données personnelles pendant ces tests, restez cohérent avec vos obligations RGPD et minimisez ce que conservent les logs de mesure.
Le protocole de mesure de bout en bout
Le principe : chronométrer chaque résolution de l'envoi de la tâche à la réception du résultat, sur un échantillon assez large pour que les percentiles aient un sens.
Pour chaque type de CAPTCHA :
1. Soumettre la tâche à l'API du fournisseur
2. Démarrer le chrono à l'envoi
3. Interroger régulièrement jusqu’au résultat final
4. Enregistrer le temps total écoulé
5. Répéter sur un échantillon suffisant
6. Calculer médiane, P50, P90 et P99
Mesurez toujours de bout en bout : latence réseau, mise en file, temps de résolution et livraison. Un temps « moteur » isolé ignore ce que subit votre pipeline réel.
Le tableau de mesure à remplir
Gardez une ligne par couple type + fournisseur et figez les conditions : même région, même cadence de poll, même jeu de test.
| Type | Fournisseur | Médiane | P90 | P99 | Échantillon | Notes |
|---|---|---|---|---|---|---|
| reCAPTCHA v2 | CaptchaAI | à mesurer | à mesurer | à mesurer | n | même région, même cadence de poll |
| reCAPTCHA v2 | Fournisseur B | à mesurer | à mesurer | à mesurer | n | même jeu de test |
| reCAPTCHA v3 | CaptchaAI | à mesurer | à mesurer | à mesurer | n | même action, même seuil |
| Cloudflare Turnstile | CaptchaAI | à mesurer | à mesurer | à mesurer | n | même page de test |
| GeeTest v3 | CaptchaAI | à mesurer | à mesurer | à mesurer | n | même configuration |
| Image / OCR | CaptchaAI | à mesurer | à mesurer | à mesurer | n | même jeu d'images |
Remplissez-le avec vos propres mesures : les chiffres d'un tiers sont au mieux un point de départ, jamais un substitut à vos observations.
Lire la médiane, le P90 et le P99
Un seul nombre ne décrit pas une distribution. Trois repères suffisent à dimensionner correctement :
- La médiane décrit le comportement central : la moitié des résolutions passent en dessous. C'est le chiffre pour estimer le débit moyen.
- Le P90 décrit les ralentissements fréquents : neuf résolutions sur dix restent en dessous. C'est votre marge de confort.
- Le P99 décrit les cas de pointe : les 1 % les plus lents, ceux qui saturent une file mal dimensionnée. C'est le chiffre à couvrir en capacité.
Ne dimensionnez jamais sur la moyenne seule : une poignée de résolutions très lentes la tire vers le haut.
Le script Python de mesure
Ce script envoie une tâche, interroge le résultat, puis reporte le temps écoulé par exécution. Ajustez runs pour agrandir l'échantillon et l'intervalle de time.sleep selon la cadence testée.
import requests
import statistics
import time
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://ocr.captchaai.com"
def benchmark(method: str, runs: int = 10, **params):
times = []
for index in range(runs):
start = time.time()
submit = requests.post(
f"{BASE_URL}/in.php",
data={"key": API_KEY, "method": method, "json": 1, **params},
timeout=30,
)
submit.raise_for_status()
task_id = submit.json()["request"]
while True:
time.sleep(5)
poll = requests.get(
f"{BASE_URL}/res.php",
params={"key": API_KEY, "action": "get", "id": task_id, "json": 1},
timeout=30,
)
poll.raise_for_status()
payload = poll.json()
if payload["request"] != "CAPCHA_NOT_READY":
break
elapsed = time.time() - start
times.append(elapsed)
print(f"Run {index + 1}: {elapsed:.1f}s")
print(f"Mediane: {statistics.median(times):.1f}s")
return times
Lancez-le par type et par fournisseur, en changeant uniquement method et les paramètres. Conservez tout le reste identique : c'est la condition d'une comparaison honnête.
Estimer votre capacité de traitement
La capacité se déduit ensuite du nombre de résolutions parallèles. Chez CaptchaAI, ce parallélisme correspond aux threads de votre plan, les CAPTCHA simultanément en vol.
resolutions_par_heure = 3600 / temps_median_mesure
capacite_totale = resolutions_par_heure * nombre_de_slots
Un nombre_de_slots de 15 correspond au plan STANDARD ($30/mois, 15 threads) ; un besoin plus léger part de BASIC ($15/mois, 5 threads). Recalculez à chaque changement de région, de fournisseur, de type ou de charge.
Ce qui fait varier vos temps de réponse
Deux facteurs pèsent lourd quand vous comparez des mesures prises à des instants différents.
L'heure et le jour. Les services qui reposent sur des opérateurs humains ralentissent nettement la nuit et le week-end, quand la main-d'œuvre baisse. Un moteur basé sur l'IA garde une cadence plus régulière ; mesurez tout de même votre P90 aux heures creuses comme aux heures pleines.
La distance réseau. Un worker proche de l'API paie moins de latence d'aller-retour ; testez depuis une région plus proche avant d'incriminer le fournisseur.
Dépannage
| Problème | Cause probable | Correctif |
|---|---|---|
| Temps plus élevés que prévu | Latence réseau depuis votre région | Testez depuis un worker plus proche de l'API ; réduisez la cadence de poll |
| P99 très supérieur à la médiane | CAPTCHA occasionnellement complexes | Variance normale : dimensionnez sur le P99, planifiez sur la médiane |
| Temps qui augmentent dans le temps | Fournisseur sous charge | Suivez la tendance sur plusieurs jours ; prévoyez une solution de repli |
| Poll qui renvoie souvent « pas prêt » | Intervalle d'interrogation trop court | Interrogez toutes les 5 s plutôt que toutes les 1 s |
FAQ
Combien de mesures faut-il pour un benchmark fiable ?
Visez au moins plusieurs dizaines de résolutions par type et par fournisseur. En dessous, un P90 ou un P99 reste trop sensible à une exécution lente isolée.
Pourquoi mes temps sont-ils plus élevés que les chiffres publiés ?
Le plus souvent, la région ou la cadence de poll. Un banc distant de l'API et un intervalle d'interrogation trop long gonflent le temps total, indépendamment du moteur de résolution.
Quelle cadence d'interrogation utiliser pour ne pas fausser la mesure ?
Une interrogation toutes les 5 secondes est un bon point de départ. Trop court, vous multipliez les réponses « pas prêt » ; trop long, vous ajoutez une attente artificielle au temps mesuré.
Faut-il inclure la latence réseau dans le temps mesuré ?
Oui : votre pipeline la subit en production. Une mesure de bout en bout est plus honnête qu'un temps « moteur » isolé.
À quelle fréquence refaire le benchmark ?
Au minimum chaque trimestre, et après toute modification d'infrastructure ou d'intégration. Les systèmes de CAPTCHA et les moteurs de résolution évoluent, vos chiffres aussi.
Mesurez chez vous, comparez à protocole constant, puis tranchez selon vos SLO.