Cualquier documento a JSON
Todo proyecto de extracción de documentos choca eventualmente con la misma pared: el OCR genérico entrega un muro de texto, pero su base de datos necesita campos. Este endpoint toma un documento y el esquema que usted define, y devuelve un JSON con exactamente esa forma, para que extraer datos deje de ser un proyecto de procesamiento de texto y se convierta en una simple llamada a una API.
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 el OCR y los datos usables
El OCR plano le dice qué caracteres hay en una página; no sabe que el tercer número en la esquina superior derecha es el total de una factura, ni que el párrafo bajo 'Fecha de vigencia' es el campo que necesita su sistema de contratos. Los equipos históricamente han cerrado esa brecha con expresiones regulares ajustadas a un solo diseño de documento, que se rompen apenas un proveedor cambia su plantilla. Este endpoint cierra la brecha de otra manera: describe los campos que quiere, por nombre y tipo, y la extracción apunta exactamente a esos campos sin importar cómo esté diseñado el documento de origen.
Cómo define lo que recibe de vuelta
Envía el documento junto con un esquema que describe los campos que necesita, ya sea una lista plana como invoice_number y total_due o una estructura anidada con partidas y sus propios subcampos, a POST /ocr/to-json. Recibe un task_id de inmediato, porque hacer coincidir el contenido del documento con un esquema arbitrario toma tiempo real de procesamiento. Al terminar, el resultado es un JSON que refleja su esquema, con los campos completos donde el documento los contiene y vacíos o marcados donde no, en lugar de forzar un valor que en realidad no estaba ahí.
Por qué la extracción guiada por esquema generaliza mejor
Los extractores de plantilla fija tienen una larga historia en la automatización de documentos y todavía funcionan bien para un formulario único que nunca cambia, pero la mayoría de los flujos reales de documentos involucran docenas de diseños de proveedores, plantillas de contrato que evolucionan o variaciones manuscritas que una plantilla rígida no puede anticipar. La extracción guiada por esquema invierte la lógica: en lugar de enseñarle al sistema un solo diseño, le dice cómo se ve una buena respuesta, y él lee cualquier diseño buscando esa respuesta. Eso es lo que hace que el mismo esquema funcione tanto en una factura de un proveedor como en otra completamente distinta de otro.
Cómo se conecta con el resto de un flujo
Este endpoint suele ser el segundo paso después de clasificar documentos, porque el esquema correcto depende de saber si está ante una factura, un contrato de arrendamiento o un formulario médico. Una vez que tiene JSON estructurado, se inserta directamente en una base de datos, en un conjunto de reglas de validación o en un paso posterior de puntos clave, sin necesidad de manipular más texto. Como cada llamada lleva su propio esquema, puede ejecutar extracciones distintas para distintos tipos de documento dentro del mismo flujo sin mantener integraciones separadas para cada uno.
Un precio que corresponde al trabajo involucrado
El costo es de $0.010 por solicitud más $0.0575 por página, reflejando que el tiempo de extracción escala con la longitud del documento, no con cuántos campos pida su esquema. Una tarea que falla nunca se cobra: reintentamos automáticamente hasta tres veces y luego devolvemos un error específico si la extracción realmente no puede completarse. No hay plan gratuito ni prueba, el acceso requiere saldo prepago y las llamadas sin saldo devuelven HTTP 402, lo que mantiene el rendimiento confiable para las cargas de trabajo que sí pagan, en lugar de degradarse por tráfico sin medir.
Qué puede hacer con ella
Ingesta de facturas en un sistema contable
Un equipo de cuentas por pagar define un esquema con proveedor, número de factura, partidas y total, y extrae cada factura entrante con esa forma exacta sin importar el diseño del proveedor.
Resumen de contratos de arrendamiento para administración de propiedades
Un administrador de propiedades extrae monto de renta, fechas de plazo y cláusulas de renovación de contratos con formatos muy distintos hacia una sola estructura JSON consistente.
Digitalización de formularios de reclamos de seguros
Una aseguradora extrae datos del asegurado, montos del reclamo y fechas del incidente desde formularios escaneados directamente al esquema de su base de datos de reclamos.
Procesamiento de formularios de admisión médica
Una clínica extrae datos demográficos del paciente e información del seguro desde formularios de admisión manuscritos hacia los campos exactos que espera su sistema de registros.
Preguntas frecuentes
¿Cómo defino qué campos extrae la api documento a json?
Envía un esquema que describe los campos que quiere, por nombre y tipo, junto con el documento, y la respuesta refleja exactamente ese esquema, incluyendo estructuras anidadas como partidas de una factura.
¿Qué pasa si un campo de mi esquema no está en el documento?
El campo queda vacío o marcado en lugar de rellenarse con un valor inventado, así puede distinguir un dato realmente ausente de un fallo de análisis.
¿Funciona con papel escaneado además de PDF nativos?
Sí, procesa tanto documentos escaneados como digitales nativos, y el precio es por página sin importar el formato de origen.
¿El mismo esquema puede funcionar con documentos de distintos proveedores?
Esa es la ventaja principal frente a la extracción por plantilla: un esquema bien definido apunta a los mismos campos en documentos con diseños distintos, sin necesidad de una plantilla por proveedor.
¿Hay un plan gratuito para probar la api documento a json?
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 extraer datos de un documento?
Cuesta $0.010 por solicitud más $0.0575 por página, y solo se cobra por las páginas procesadas exitosamente.
¿Cómo recibo el JSON extraído?
Recibe un task_id de inmediato, y luego el resultado en JSON llega por webhook firmado cuando está listo o mediante un enlace firmado válido por 24 horas.
¿Puedo ejecutar extracción por esquema en un lote grande de documentos?
Sí, cada solicitud es independiente y se cobra por documento, así que puede enviar un solo archivo o aplicar el mismo esquema a miles de documentos.
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/to-json \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"input":"…"}'const res = await fetch("https://api.kit.forhosting.com/ocr/to-json", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"input": "…"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/ocr/to-json",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"input": "…"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/ocr/to-json", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"input":"…"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"input":"…"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/ocr/to-json", 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
{
"input": "…"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "ocr.to_json",
"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. |
413 | input_too_large | El archivo supera el límite de tamaño. |
422 | task_failed | La tarea falló tras 3 reintentos. No se cobra. |