Indexar PDF y escaneos
Un archivo lleno de PDF solo es consultable si alguien recuerda qué archivo tiene qué. Este endpoint lee contratos, informes y formularios escaneados página por página y los convierte en un índice que puede consultar por significado, no por nombre de archivo.
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.
Por qué una carpeta de PDF no es realmente consultable
La búsqueda del sistema operativo mira nombres de archivo y, a veces, capas de texto incrustadas; no tiene idea de qué hay dentro de una factura escaneada o un informe guardado como imágenes planas. Cualquiera que haya buscado en una carpeta de contratos 'la cláusula de terminación anticipada' sin saber en qué archivo está ha sentido esta brecha de primera mano. search.index_document existe para cerrarla leyendo el contenido real, no solo los metadatos del archivo.
Qué pasa con un documento después de enviarlo
Haga POST a /search/index-document con su archivo, reciba un task_id y obtenga confirmación por webhook o mediante un enlace firmado de 24 horas cuando el documento ya haya sido leído, dividido en fragmentos por página o sección, vectorizado y agregado a su índice consultable. Las páginas escaneadas pasan primero por reconocimiento, así que tanto una página de contrato fotografiada como una generada digitalmente terminan igual de consultables.
Los dos tipos de documento que se tratan distinto
Un PDF nacido digital ya trae una capa de texto que se puede extraer directamente, pero un escaneo —un formulario enviado por fax, un recibo fotografiado, un informe viejo digitalizado años después— no tiene texto alguno, solo píxeles acomodados para parecer letras. Esa distinción ha importado desde que la digitalización de documentos se volvió común en los años noventa, y todavía determina cuánto trabajo hace falta antes de que el contenido de un documento se vuelva algo que una computadora pueda leer, y mucho menos buscar.
Dónde varía naturalmente la precisión
Una página limpia y bien escaneada se lee de forma confiable; un fax borroso, letra manuscrita pequeña o una tabla con formato inusual es más difícil de procesar, humano o automático, y los resultados deben tratarse en consecuencia cuando el detalle exacto importa, como en asuntos legales o financieros. Esto es un índice de búsqueda, no una transcripción certificada, pensado para encontrar el documento correcto rápido, no para reemplazar una lectura manual cuidadosa de una página crítica.
Cómo encaja en un flujo de trabajo cargado de documentos
Equipos legales indexan expedientes de casos para que un asociado pueda buscar en declaraciones, contratos y correspondencia por tema en lugar de abrir cada PDF uno por uno. Equipos de finanzas indexan facturas escaneadas para buscar registros antiguos por proveedor o monto sin mantener su propio proceso de reconocimiento óptico. Con precio por solicitud más por página, tanto un memo de dos páginas como un informe anual de doscientas cuestan exactamente lo que toma procesarlos, y no se cobra nada por un documento que no logra indexarse correctamente.
Qué puede hacer con ella
Búsqueda en expedientes legales
Un bufete indexa los PDF de la carpeta de un caso para que un asociado pueda buscar entre declaraciones, contratos y correspondencia por tema en vez de abrir cada archivo.
Archivo de facturas escaneadas
Un equipo de contabilidad indexa años de facturas escaneadas para buscar registros antiguos por nombre de proveedor o descripción de partida sin mantener su propio proceso de OCR.
Consulta de políticas y cumplimiento
Un departamento de recursos humanos indexa sus políticas en PDF para que los empleados busquen la cláusula específica que aplica a su caso en vez de revisar cada documento entero.
Biblioteca de artículos de investigación
Un grupo de investigación indexa una biblioteca de artículos en PDF para buscar hallazgos por concepto en lugar de depender solo del título o el resumen de cada artículo.
Preguntas frecuentes
¿Cómo indexo un PDF para búsqueda con la API?
Envíe el archivo a POST /search/index-document, guarde el task_id devuelto y reciba la confirmación de que el documento quedó indexado por webhook o mediante un enlace firmado válido por 24 horas.
¿Es gratis la API para indexar documentos?
No, no hay plan gratuito ni prueba; cuesta $0.010 por solicitud más $0.059 por página, y una tarea fallida nunca se cobra.
¿Puede indexar PDF escaneados, no solo digitales?
Sí, las páginas escaneadas pasan por reconocimiento antes de indexarse, así que tanto los PDF nacidos digitales como las imágenes escaneadas quedan consultables.
¿Qué tan precisa es la extracción de texto de un escaneo de baja calidad?
Depende de la calidad del escaneo: las páginas limpias se leen de forma confiable, mientras que las borrosas o manuscritas son más difíciles de procesar con precisión, así que los detalles críticos deben verificarse manualmente.
¿Qué formatos de archivo acepta además de PDF?
Revise la referencia del endpoint para conocer la lista vigente de formatos de documento aceptados además de PDF.
¿En qué se diferencia esto de search.index_text?
search.index_text indexa texto que usted ya tiene; search.index_document lee un archivo directamente, incluyendo reconocimiento para páginas escaneadas, antes de indexar su contenido.
¿Puedo indexar un lote grande de documentos a la vez?
Sí, envíe varios documentos como tareas asíncronas separadas y recoja cada confirmación por webhook, lo cual escala bien para archivos grandes.
¿Se conserva el documento subido después de indexarlo?
No, los archivos subidos y los resultados se eliminan después del período de retención y nunca se usan para entrenamiento.
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/search/index-document \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"input":"…"}'const res = await fetch("https://api.kit.forhosting.com/search/index-document", {
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/search/index-document",
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/search/index-document", 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/search/index-document", 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": "search.index_document",
"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_chunks | 10000 |
max_tokens | 20000 |
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. |