Captura de pantalla a texto
Alguien le envía una captura de pantalla de un mensaje de error, una conversación o un panel de configuración, y la única forma de actuar sobre eso solía ser volver a escribir cada palabra a mano. Este endpoint lee esa captura y devuelve el texto real, así que lo que estaba atrapado dentro de una imagen se convierte en algo que puede buscar, copiar o pasar a otro sistema.
Ejecútela online
Ejecute esto en nuestros servidores con su cuenta. Las herramientas gratuitas corren en su navegador; esta cobra de su saldo del KIT según el precio de arriba.
La brecha entre ver un texto y tenerlo
Una captura de pantalla es una imagen, y las imágenes no tienen portapapeles. Los tickets de soporte llegan como captura de un cuadro de error, los reportes de errores incluyen una imagen de un stack trace, y la retroalimentación de producto aparece como una captura de un panel de configuración con una queja marcada con un círculo. En cada uno de esos casos alguien está retipeando texto que ya existía en la pantalla de otra persona, y este endpoint existe para eliminar ese paso.
Para qué está afinado
A diferencia de un documento escaneado, una captura de pantalla contiene elementos de interfaz: barras de menú, botones, burbujas de chat, editores de código con resaltado de sintaxis, salida de terminal, banners de notificación. El endpoint está construido para separar el contenido de texto real de ese ruido visual y devolverlo en orden de lectura, así que una captura de un chat vuelve como una conversación, no como fragmentos revueltos de nombres de usuario, marcas de hora y mensajes mezclados.
De píxeles a algo que puede buscar con grep
El texto de pantalla normalmente lo renderiza el sistema operativo de forma limpia en vez de ser fotografiado en ángulo, lo cual juega a favor del endpoint: las fuentes son nítidas, el contraste es consistente, y no hay distorsión de lente que corregir. Eso significa que los casos difíciles suelen tener que ver con la densidad y el diseño, como un panel recargado con una docena de etiquetas pequeñas, más que con la legibilidad.
Cómo se procesa la solicitud
Envía la imagen a POST /ocr/screenshot y recibe un task_id de inmediato mientras la extracción corre de forma asíncrona. Los resultados se entregan a su webhook firmado o se recuperan desde un enlace firmado válido por 24 horas, y si una captura realmente no se puede interpretar tras tres intentos internos, recibe un error claro y ningún cobro.
Dónde ahorra más tiempo
Los equipos de soporte lo usan para convertir la captura de error de un cliente en texto buscable que pueden cotejar contra una base de problemas conocidos, los flujos de QA pasan capturas automáticas de fallas de pruebas para extraer el mensaje de error exacto, y los equipos de contenido extraen citas o pies de foto de capturas compartidas en Slack sin abrir jamás un editor de imágenes.
Qué puede hacer con ella
Triaje de tickets de soporte
Una mesa de ayuda extrae el texto exacto del error en la captura de un cliente y lo coteja automáticamente contra una lista de problemas conocidos, sin que una persona lea la imagen.
Procesamiento de reportes de errores
Un flujo de QA extrae el texto del stack trace de una captura automática de falla de prueba para registrarlo y deduplicarlo como texto plano.
Archivo de conversaciones de chat
Un equipo de cumplimiento convierte la captura de un hilo de chat presentado como evidencia en una transcripción de texto buscable.
Extracción de citas de imágenes compartidas
Un editor de contenido extrae un pie de foto o comentario de una captura que circula en un chat grupal sin retipearlo a mano.
Preguntas frecuentes
¿Qué hace una API de captura de pantalla a texto?
Lee cualquier captura de pantalla, incluyendo elementos de interfaz, mensajes de chat, código o cuadros de error, y devuelve el texto visible como contenido copiable y estructurado.
¿Hay alguna forma gratuita de probarla?
No hay capa gratuita: las capas gratis se abusan y ralentizan a todos. El acceso funciona con un saldo prepago de ForHosting KIT: se recarga desde $10.00 (no caduca) y cada solicitud se cobra a su precio publicado, así que una llamada sin saldo devuelve HTTP 402. Sin suscripción, sin tokens ni créditos inventados, y una tarea fallida no se cobra.
¿Cuánto cuesta cada captura?
$0.010 por solicitud más $0.0575 por imagen, cobrado solo por tareas que se completan con éxito.
¿Funciona con capturas de código y terminal?
Sí, está diseñada para separar el contenido de texto real de los elementos de interfaz, así que editores de código, terminales y paneles con resaltado de sintaxis se extraen limpiamente.
¿Es más precisa que el OCR de fotos?
Generalmente sí, porque el texto renderizado en pantalla es nítido y sin distorsión comparado con un documento fotografiado, aunque diseños muy densos o recargados pueden seguir siendo más difíciles de interpretar.
¿Cómo recupero el texto extraído?
Llama a POST /ocr/screenshot para obtener un task_id de inmediato, y luego recibe el resultado por webhook firmado o por un enlace firmado válido durante 24 horas.
¿Qué pasa si la captura es muy pequeña o de baja resolución?
El sistema reintenta internamente hasta tres veces; si aún así no logra extraer texto confiable, recibe un error claro y no se le cobra.
¿Puedo procesar un lote de capturas?
Sí, cada captura corre como su propia tarea asíncrona, así que puede enviar un lote y recoger los resultados conforme terminan.
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, y pronto desde nuestra app, el email y Telegram.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/ocr/screenshot \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"image":"https://ejemplo.com/imagen.jpg"}'const res = await fetch("https://api.kit.forhosting.com/ocr/screenshot", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"image": "https://ejemplo.com/imagen.jpg"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/ocr/screenshot",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"image": "https://ejemplo.com/imagen.jpg"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/ocr/screenshot", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"image":"https://ejemplo.com/imagen.jpg"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"image":"https://ejemplo.com/imagen.jpg"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/ocr/screenshot", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"image": "https://ejemplo.com/imagen.jpg"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "ocr.screenshot",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Límites
max_mb | 25 |
max_pages | 10 |
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |
422 | task_failed | La tarea falló tras 3 reintentos. No se cobra. |