Le recours à un relais OCR répond généralement à trois situations : l'accès aux modèles visuels étrangers est difficile depuis la Chine, les factures de plusieurs fournisseurs OCR sont dispersées, et la reconnaissance par lots exige une file d'attente et des tentatives unifiées. La couche de relais réduit le coût d'intégration, mais concentre aussi les clés, les données, la facturation et la disponibilité dans une nouvelle dépendance.
Cet article présente les formes de relais OCR, le traitement par lots et asynchrone, les bases de facturation, le risque des clés, la confidentialité des données, puis la vérification et une migration sûre. Les services et tarifs exacts font foi sur la page Tarifs des modèles et dans les conditions du prestataire.
Remarque : OpenAI, Claude, Gemini, Baidu AI Cloud, Tencent Cloud, Alibaba Cloud et les autres noms cités sont des marques de leurs détenteurs respectifs ; cet article est purement technique et n'implique aucune affiliation ni relation d'agence avec ces sociétés. Le transfert transfrontalier de données, la protection de la vie privée et le règlement des paiements doivent respecter la législation locale et les conditions des plateformes.
1. Ce que fait réellement un relais OCR
Un relais ou proxy ne produit pas la capacité OCR : il transmet la requête à un fournisseur OCR ou à un modèle visuel en amont, puis renvoie le résultat. Sa valeur se situe dans la couche d'accès : adresse et authentification unifiées, gestion centralisée des clés, quotas par projet, journalisation de l'usage et des erreurs, bascule entre plusieurs amonts.
Évaluer un relais ne se limite pas à la qualité de reconnaissance : il faut aussi vérifier que la chaîne devient plus contrôlable. Chaque saut supplémentaire ajoute un point de timeout, un journal et un acteur de traitement des données. Un relais convient aux équipes qui manquent de ressources d'exploitation et veulent un point d'entrée unique ; pour des exigences très fortes en latence ou en audit, un déploiement interne ou une connexion directe est plus adapté.
2. Formes courantes et limites d'usage
| Forme | Mode d'accès | Adapté à | Risque principal |
|---|---|---|---|
| Connexion directe officielle | Ouvrir un compte chez le fournisseur | Moteur unique, usage stable, moyen de paiement disponible | Réseau transfrontalier et factures en devises à gérer |
| Relais revendeur | Achat de quota ou clé partagée | Essai rapide, validation de petit volume | Amont et quota opaques, service pouvant s'interrompre |
| Passerelle hébergée | Entrée compatible OpenAI, gestion par console | Facturation unifiée multi-modèles, travail en équipe | Conditions de données et règles de quota à vérifier une par une |
| Proxy auto-hébergé | Déploiement d'un reverse proxy ou d'une passerelle | Sortie fixe, audit, personnalisation poussée | Coûts de serveur, certificats, mises à jour et astreinte |
Le relais revendeur ressemble à un « achat de quota pour vous » : demandez surtout à qui appartient le solde et comment fonctionne le remboursement. La passerelle hébergée est plutôt un « service de couche d'accès » : vérifiez la compatibilité du protocole, les logs, les quotas et la réponse aux incidents.
3. Lots et asynchrone : ne pas forcer l'interface synchrone
Une image isolée peut passer par une interface synchrone ; pour des centaines ou milliers d'images, des PDF multipages ou des soumissions groupées, l'interface synchrone rencontre des timeouts, des connexions saturées et des tempêtes de tentatives. La reconnaissance par lots doit séparer la « soumission » de la « récupération du résultat » :
- Établir une liste de traitements et calculer un hash du contenu de chaque image ou PDF comme clé d'idempotence.
- Découper selon les limites de l'interface : taille d'image, pages par requête, fichiers par tâche et concurrence maximale.
- Soumettre via une interface de tâches asynchrones et enregistrer
task_id, l'heure de soumission, l'état et l'adresse du résultat. - Récupérer les résultats par polling ou callback, avec un intervalle raisonnable et une durée d'attente maximale.
- Télécharger rapidement les fichiers de résultat sur disque plutôt que de dépendre durablement de liens temporaires.
- Classer les tâches échouées : les réessayables vont dans une file avec backoff, les autres dans une file de traitement manuel.
- Pour chaque lot, rapprocher succès, échecs, nombre de pages facturées et nombre réellement stocké, puis faire un contrôle par échantillon.
La file doit avoir une contre-pression : quand les 429 augmentent, réduisez la vitesse de consommation au lieu de réessayer sans fin. Pour les PDF multipages, distinguez l'échec du document entier de l'échec d'une page.
4. Transparence de la facturation : par image, par page ou par token
Les bases de facturation OCR varient beaucoup : l'OCR classique facture souvent à l'image ou à l'appel, les PDF parfois à la page ; les grands modèles visuels facturent généralement des tokens convertis depuis l'image d'entrée plus les tokens de sortie ; certains services proposent des quotas mensuels ou des offres par paliers. Uniformisez la base avant de comparer.
Points à confirmer avec le relais :
- Les requêtes échouées sont-elles facturées ? Les timeouts et les 5xx comptent-ils dans l'usage ?
- Les tentatives automatiques sont-elles facturées deux fois ? Comment distinguer un retry avec backoff d'une relance manuelle ?
- Un PDF est-il facturé au fichier ou à la page ? Les pages blanches et de mauvaise qualité sont-elles comptées ?
- La compression et le recadrage d'image influencent-ils le nombre de pages ou de tokens facturés ?
- Une tâche asynchrone échouée ou expirée est-elle remboursée ? Le solde a-t-il une date d'expiration ?
- L'usage peut-il être exporté par projet, clé et modèle ? La facture peut-elle être rapprochée des logs ?
Si un point reste flou, mesurez-le sur un lot fixe. Ne vous fiez pas au prix unitaire promotionnel et ne soustrayez pas des bases de facturation différentes. Les coûts réels font foi sur la page Tarifs des modèles et dans le contrat.
5. Risque des clés : le point unique le plus négligé du relais
Une clé de relais porte souvent un quota important ; en cas de fuite, la perte peut dépasser celle d'un compte direct. Risques fréquents : clé intégrée dans un paquet front-end ou mobile, clé de test jamais révoquée, une seule clé pour tous les projets, absence de plafond, clé non révoquée après le départ d'un membre.
Mesures de base : séparer les clés par projet et par environnement, fixer quota et date d'expiration, activer une liste blanche d'IP si possible ; ne placer la clé que côté serveur et faire transiter le front-end par le backend ; alerter sur le volume d'appels, le taux d'échec et les IP sources ; utiliser des clés distinctes pour le lot et le trafic en ligne.
Demandez aussi la procédure de sortie : que devient le solde si le service s'arrête, les résultats peuvent-ils être exportés, la clé peut-elle être révoquée immédiatement, y a-t-il une confirmation de suppression. N'acceptez pas de prépayer une très longue période pour une remise.
6. Confidentialité : une image est plus sensible qu'un texte
Les images envoyées à l'OCR peuvent être des pièces d'identité, licences commerciales, factures, contrats ou dossiers médicaux, à forte densité d'information. Avant de signer, vérifiez au minimum : les images sont-elles stockées, où, combien de temps ; servent-elles à l'entraînement ; quels sous-traitants interviennent ; comment une demande de suppression prend effet ; le transport et le stockage sont-ils chiffrés ; un accord de traitement des données peut-il être signé.
Techniquement, réduisez l'exposition : n'envoyez que la zone recadrée contenant les champs utiles, masquez les données personnelles sans rapport, utilisez un projet et une clé dédiés pour les fichiers sensibles, et fixez des droits d'accès et une durée de conservation sur les résultats. La licéité du transfert transfrontalier et les procédures à suivre doivent être évaluées selon la réglementation, avec un avis juridique si nécessaire. Un service de relais ne doit pas être considéré par défaut comme une solution de conformité : ce n'est qu'un maillon de la chaîne.
7. Liste de migration
- Inventorier les interfaces, noms de modèles, tailles d'image, pages PDF, pics de concurrence, appels mensuels et factures actuelles.
- Préparer 50 à 100 échantillons réels couvrant net, flou, incliné, manuscrit, tableaux, colonnes multiples et PDF multipages.
- Faire tourner l'ancien et le nouveau en parallèle sur le même lot et comparer précision caractère, précision des champs, taux de structuration et latence P95.
- Vérifier la facturation sur un lot fixe : cohérence entre nombre de logs, succès, échecs et facture.
- Tester les chemins d'erreur : 401, 403, 404, 413, 429, 5xx, timeout et expiration du lien de résultat.
- Examiner le contrat et les clauses de données : mécanisme de suppression, sous-traitants et type de facture.
- Monter progressivement à 5 %, 20 %, 50 %, puis basculer entièrement en conservant l'ancienne chaîne comme secours.
- Après deux à quatre semaines stables, révoquer les anciennes clés, archiver les anciens résultats et ajuster les seuils de surveillance.
Pendant la migration, ne modifiez pas simultanément le modèle de reconnaissance et la logique d'analyse : vous ne sauriez plus d'où vient le problème.
8. Comment vérifier un service de relais
Faites d'abord passer une image de test fixe et vérifiez la structure de réponse, les champs d'usage et les codes d'erreur ; répétez ensuite avec la même image pour observer la cohérence de la latence et de la facturation. L'exemple utilise une requête visuelle compatible OpenAI ; le nom du modèle et les paramètres dépendent de la documentation du fournisseur :
import os
import requests
base = os.environ["ZSQH_BASE_URL"].rstrip("/")
headers = {"Authorization": f"Bearer {os.environ['ZSQH_API_KEY']}"}
resp = requests.post(
f"{base}/chat/completions",
headers=headers,
json={
"model": os.environ["VISION_MODEL"],
"messages": [{
"role": "user",
"content": [
{"type": "text", "text": "Reconnais tout le texte de l'image et restitue-le dans l'ordre d'origine."},
{"type": "image_url", "image_url": {"url": "https://example.com/test.png"}},
],
}],
},
timeout=90,
)
resp.raise_for_status()
data = resp.json()
print(data["choices"][0]["message"]["content"][:200])
print("usage:", data.get("usage"))
Au-delà des fonctionnalités, observez les indicateurs non fonctionnels : trois à sept jours de trafic réduit, proportion de 429 et de 5xx, délai de réponse du support, export des détails de facturation, cycle de facturation. Testez aussi une clé erronée et une requête hors quota pour vérifier que les messages sont clairs et ne divulguent pas de détails internes. Pour un point d'entrée unifié et un règlement en yuans, créez une clé de test sur ZSQH AI Gateway, validez sur un petit lot d'images, puis migrez.
À lire aussi :
- Configurer une API personnalisée dans Cursor : URL, clé et modèles
- API OpenAI : mise en place et bonnes pratiques
- API Gemini : mise en place et bonnes pratiques
Questions fréquentes
Quelle différence entre un relais d'API OCR et l'achat direct de l'interface officielle ?
La connexion directe est fournie par le fabricant, avec des fonctionnalités et une documentation synchronisées ; le relais ajoute une couche de service d'accès, avec l'avantage d'un point d'entrée unifié, d'un règlement en yuans et d'une gestion centralisée, mais aussi un point de timeout, un acteur de données et une dépendance supplémentaires. Le choix dépend du réseau, du paiement, de l'exploitation et des contraintes de conformité.
Le service de relais conserve-t-il mes images ?
Cela dépend de l'architecture et des conditions du service ; on ne peut pas généraliser. Vérifiez le stockage, son emplacement, la durée de conservation, l'usage pour l'entraînement, les sous-traitants et l'application des demandes de suppression. Pour les images sensibles, recadrez et masquez avant l'envoi.
Faut-il une interface synchrone ou asynchrone pour la reconnaissance par lots ?
Pour quelques images, l'interface synchrone suffit ; pour de gros volumes, des PDF multipages ou des soumissions groupées, privilégiez l'asynchrone en séparant soumission et récupération, avec task_id, état de polling et date d'expiration des résultats.
Pourquoi la facturation du relais ne correspond-elle pas à l'officielle ?
Les bases diffèrent souvent : image, page, requête ou token ; les échecs et tentatives sont-ils comptés ; les PDF sont-ils découpés par page. Uniformisez la base, puis vérifiez logs et facture sur un lot fixe.
Combien de code faut-il modifier pour passer à un relais ?
Avec le protocole compatible OpenAI, il suffit souvent de changer base_url, la clé et le nom du modèle ; le format des images, les timeouts, les tentatives et l'analyse des résultats demandent toutefois des ajustements. Prévoyez un fonctionnement en parallèle, une bascule progressive et une voie de retour.
