Cuando un equipo en China integra una API OCR, su primera reacción suele ser comparar la tasa de reconocimiento y llamar directamente a la interfaz. Los problemas aparecen al llegar a producción: la mayor parte del tiempo se va en la capa de acceso. ¿Se pueden subir las imágenes de forma estable? ¿Está disponible la conexión en horas de mayor tráfico? ¿La factura es en dólares o en yuanes? ¿Se puede contabilizar la factura? ¿Y cómo se reanuda una tarea por lotes que falló a mitad de camino?
La diferencia entre OCR y las API de chat es que la entrada son imágenes o PDF: el cuerpo de la solicitud es más grande, los timeouts son más frecuentes y los reintentos generan más fácilmente cobros duplicados. Este artículo compara tres rutas —acceso directo oficial, proxy propio y gateway de IA local— y se centra en la carga de imágenes, los límites de tasa, la conmutación por error y la lista de verificación. Los servicios y la facturación concretos se rigen por Precios de modelos y por la documentación del proveedor.
Nota: OpenAI, Claude, Gemini, Baidu AI Cloud, Tencent Cloud y Alibaba Cloud son marcas registradas de sus respectivos titulares; este artículo solo presenta una discusión técnica y no implica afiliación ni representación con esos proveedores. El tráfico transfronterizo, la salida de datos y la liquidación de pagos deben cumplir la legislación local y los términos de servicio de las plataformas.
1. Las tres rutas, en claro
Acceso directo oficial significa llamar directamente a la interfaz del proveedor de OCR o del proveedor del modelo. Si usas el OCR de una nube local, la conexión y el pago ya están dentro del país y suele ser la opción más sencilla; si usas un modelo de visión en el extranjero, debes gestionar por tu cuenta la red transfronteriza, la factura en dólares y el tipo de cambio.
Proxy propio significa desplegar un proxy inverso o un gateway en un servidor que cumpla la normativa, para centralizar autenticación, logs, reintentos y límites de tasa. Da más control, pero el servidor, los certificados, las actualizaciones y las guardias corren por tu cuenta. En OCR además hay que ajustar el límite del cuerpo de la solicitud y los timeouts; de lo contrario, las imágenes grandes suelen truncarse en la capa del proxy.
Gateway de IA local ofrece un punto de entrada compatible con OpenAI, liquidación en yuanes y, por lo general, consola, estadísticas de uso y factura. La integración es sencilla y facilita unificar varios modelos; hay que confirmar la entidad del servicio, las cláusulas de datos, las reglas de límites y la forma de respuesta ante incidentes.
| Dimensión | Acceso directo oficial | Proxy propio | Gateway de IA local |
|---|---|---|---|
| Red y acceso | Conexión corta con proveedores locales; los modelos extranjeros requieren tráfico transfronterizo | Ruta configurable, con operación propia | Entrada local, normalmente lista para usar |
| Carga de imágenes | Sujeta a los límites de cuerpo y formato del proveedor | Hay que ajustar los límites de la capa de proxy | Depende de la configuración de cuerpo y timeout del gateway |
| Pago y factura | Proveedores locales en yuanes; modelos extranjeros en dólares | Depende de la cuenta y de la entidad del servidor | Liquidación en yuanes, normalmente con factura |
| Lotes y límites | Sujetos al QPS, la concurrencia y la cuota del proveedor | Se pueden usar colas, pero persisten los límites del proveedor | Depende de los límites, la programación y los reintentos del gateway |
| Frontera de datos | Hay que evaluar por cuenta propia la salida de datos y los términos | La ubicación de los datos es responsabilidad propia | Hay que revisar los términos y la habilitación del proveedor |
| Costo de operación | Medio, sobre todo red y cuentas | Alto: servidores, certificados y monitoreo | Bajo, con gestión centralizada en consola |
| Cobertura de modelos | Principalmente un solo proveedor | Ampliable por cuenta propia | Suele cubrir varios proveedores |
2. Red y carga de imágenes: resuelve primero los 413 y los timeouts
El cuerpo de una solicitud OCR es mucho mayor que el de una solicitud de texto. Una imagen de 3 MB convertida a Base64 crece alrededor de un tercio y llega a unos 4 MB; si la interfaz solo acepta Base64, el cliente, el proxy inverso y el gateway deben ampliar el límite del cuerpo. Las fallas habituales no son «el reconocimiento es impreciso», sino 413, conexiones reiniciadas, timeouts y respuestas truncadas.
Algunas recomendaciones prácticas:
- Si la interfaz admite URL o direcciones prefirmadas, prioriza el envío por URL para reducir el cuerpo; confirma que el enlace siga vigente hasta terminar el reconocimiento y que no exija sesión iniciada.
- Comprime según la resolución que acepte el negocio, sin excederte: el texto pequeño, los sellos, la escritura a mano y las líneas de tabla son sensibles a la nitidez. Conviene comprimir con dos umbrales, lado largo y tamaño de archivo, y conservar el original para revisión.
- Rota según la orientación EXIF antes de subir, para que una página completa acostada no desordene el reconocimiento.
- Ajusta también en la capa de proxy
client_max_body_size,proxy_read_timeoutyproxy_send_timeout; no cambies solo el timeout de la aplicación. - Para PDF de varias páginas, usa preferentemente la interfaz de tareas asíncronas en lugar de meter el archivo completo en una solicitud síncrona.
Si es el proveedor quien descarga la URL de la imagen, confirma que la dirección sea accesible públicamente, que no requiera sesión y que la firma siga vigente durante el tiempo de cola.
3. Pago, contrato y factura
El titular del pago es un obstáculo frecuente para los equipos en China. Si se recarga con una tarjeta personal, se paga por terceros o el comprobante no coincide, finanzas a menudo no puede contabilizar el gasto. Antes de elegir una ruta, aclara: con quién se firma el contrato, la moneda de liquidación, el tipo de factura, la vigencia del prepago y las reglas de reembolso.
Con facturación por uso también hay que confirmar el criterio de la factura: si se cobra por imagen, por página de PDF, por solicitud o por token; si las solicitudes fallidas cuentan; si los reintentos se cobran dos veces; y si el uso se puede desglosar por proyecto o por key. Incluye estos puntos en la tabla comparativa de compra y prueba con el mismo lote de imágenes para estimar el costo real. Los importes concretos se rigen por Precios de modelos y por el contrato.
4. Límites de tasa, concurrencia y tareas por lotes
Las interfaces OCR suelen estar sujetas a la vez a QPS, número de conexiones simultáneas, tamaño por imagen, páginas de PDF y cuota diaria de la cuenta. Un 429 no siempre significa que el servicio esté fallando; puede ser solo una concurrencia instantánea demasiado alta. Para el reconocimiento por lotes se recomienda este orden de diseño:
- Calcula un SHA-256 de cada imagen o PDF como clave de idempotencia, y consulta primero la tabla local de resultados antes de decidir si se envía.
- Divide las tareas según los límites de la interfaz: fija umbrales separados para tamaño por imagen, páginas por solicitud y concurrencia máxima.
- Empieza con poca concurrencia, por ejemplo 2–4 vías, y observa la proporción de 429 y la latencia P95 antes de aumentarla.
- Para 429 y 5xx transitorios, aplica retroceso exponencial con jitter aleatorio; no reintentes 401, 403 ni errores de parámetros: corrige primero la configuración.
- En tareas asíncronas, registra
task_id, hora de envío, estado y dirección del resultado, y guarda los archivos de resultado a tiempo, porque los enlaces suelen caducar. - Al terminar cada lote, cuenta éxitos, fallos, imágenes facturadas y tiempo; envía las muestras fallidas a una cola de reintento separada.
- Al finalizar todo, haz una revisión humana por muestreo y contrasta el número de registros insertados con el número de archivos originales.
5. Reintentos, idempotencia y conmutación por error
Antes de reintentar, implementa idempotencia; de lo contrario, una fluctuación de red puede convertirse en dos cobros y dos registros. El ejemplo marca cada solicitud con el hash de la imagen y aplica retroceso a los errores reintentables:
import base64
import hashlib
import os
import time
from openai import OpenAI
client = OpenAI(
api_key=os.environ["ZSQH_API_KEY"],
base_url=os.environ["ZSQH_BASE_URL"],
timeout=90.0,
max_retries=0,
)
def ocr_image(path, model, attempts=4):
raw = open(path, "rb").read()
key = hashlib.sha256(raw).hexdigest()
data_url = "data:image/jpeg;base64," + base64.b64encode(raw).decode()
for i in range(attempts):
try:
resp = client.chat.completions.create(
model=model,
messages=[{
"role": "user",
"content": [
{"type": "text", "text": "Reconoce todo el texto de la imagen y respeta el orden original."},
{"type": "image_url", "image_url": {"url": data_url}},
],
}],
)
return key, resp.choices[0].message.content
except Exception as exc:
if i == attempts - 1:
raise
wait = min(2 ** i, 30) + 0.5 * (i + 1)
print(key[:8], type(exc).__name__, "retry in", wait)
time.sleep(wait)
key, text = ocr_image("invoice.jpg", os.environ["VISION_MODEL"])
print(key[:12], len(text))
Hay un límite que se pasa por alto con facilidad en la conmutación por error: las salidas de distintos motores de OCR no se pueden mezclar directamente. El OCR tradicional devuelve texto y coordenadas; un modelo de visión devuelve lenguaje natural o JSON, y los nombres de campo y los sistemas de coordenadas pueden diferir. Antes de cambiar, fija muestras reales y compara la precisión de caracteres, la precisión de campos y la tasa de éxito de la estructuración; el código de análisis y el flujo de revisión deben ajustarse junto con el modelo, no solo el nombre del modelo.
6. Lista de verificación antes de producción
- Conexión: prueba con imágenes grandes, PDF de varias páginas y horas de mayor tráfico; registra la proporción de 413, timeouts y 5xx.
- Precisión: usa 50–100 imágenes reales que cubran casos nítidos, borrosos, inclinados, manuscritos, tablas y diseños de varias columnas.
- Consumo: comprueba si el
usageo el número de imágenes de la respuesta coincide con la factura del panel y si los reintentos se cobran dos veces. - Límites: si el máximo de concurrencia, la proporción de 429 y la tasa de éxito tras el retroceso son aceptables.
- Datos: si las imágenes contienen información personal o secretos comerciales, y si el proveedor explica con claridad su política de conservación, logs y eliminación.
- Salida: si la key se puede rotar, si el saldo es reembolsable y si se conservan el servicio antiguo y la ruta de reversión.
Si algún punto no está claro, prueba primero con poco tráfico; no redirijas el tráfico de producción de inmediato.
7. Elección según las restricciones
El orden de selección es: si la red y el pago pueden mantenerse estables a largo plazo, si se necesita una salida fija y auditoría, y por último la cobertura de modelos y las capacidades de facturación. Si el OCR de una nube local funciona bien, se puede conectar directamente; si se usan modelos de visión extranjeros y no hay personal para operar la red transfronteriza, conviene evaluar un gateway local. Si se necesita un punto de entrada unificado y liquidación en yuanes, se puede crear una key de prueba en ZSQH AI Gateway, validar primero con un lote pequeño de imágenes y luego aumentar el volumen; la forma de facturación se detalla en Precios de modelos.
Lecturas relacionadas:
- Guía de API OCR: de imagen a texto, extracción estructurada y selección
- ¿Qué es un relay de API? Selección, precios y cumplimiento en 2026
- Cómo elegir una plataforma de API de modelos
Preguntas frecuentes
¿Es estable llamar directamente a una interfaz OCR extranjera desde China?
Depende de la salida local, la franja horaria, la región de destino y la cuota de la cuenta; no hay una respuesta general. Observa durante varios días con imágenes y concurrencia reales, registra la tasa de error y la latencia P95, y compáralas con la opción del gateway; no saques conclusiones a partir de una sola solicitud exitosa.
¿Conviene subir imágenes en Base64 o por URL?
Para imágenes pequeñas, Base64 es simple y directo; para imágenes grandes, PDF de varias páginas o escenarios de alta concurrencia, prioriza URL o direcciones prefirmadas de object storage, que reducen notablemente el cuerpo de la solicitud. En cualquier caso, confirma los límites de tamaño, los requisitos de formato y la vigencia del enlace.
Si se interrumpe un reconocimiento por lotes, ¿cómo se reanuda?
Usa el hash del contenido de la imagen como clave de idempotencia, guarda por lotes y reintenta solo la parte faltante. Antes de repetir, contrasta el número de registros insertados con el número de archivos originales para evitar duplicados y para no tomar un lote incompleto como resultado completo.
¿Cambia el formato del resultado al cambiar de servicio de OCR?
Normalmente sí. Los nombres de campo, los sistemas de coordenadas, la confianza y la estructura de errores pueden variar entre motores, y la salida estructurada requiere validar de nuevo el esquema. Durante la migración conviene conservar los resultados antiguos un tiempo y comparar las salidas nuevas y viejas con muestras fijas.
¿Se pueden desglosar la factura y el uso por proyecto?
Depende del proveedor. Antes de firmar, confirma si se puede exportar el uso por proyecto, key o modelo, si el criterio de facturación incluye solicitudes fallidas y reintentos, y si el contenido de la factura cumple los requisitos de compra.
