Leer un currículum
Deje de copiar currículums campo a campo: cada CV, desde una plantilla de diseño a dos columnas hasta la foto de una copia impresa, vuelve con nombre, contacto, experiencia, formación y competencias en una misma estructura.
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.
Un currículum es un bloque de texto que ningún sistema de reclutamiento puede filtrar ni ordenar hasta que alguien lo transcribe a mano.
Por qué un currículum hay que leerlo, no copiarlo
Un currículum es un bloque de texto que un programa de selección no puede buscar, filtrar ni ordenar hasta que alguien lo vuelve a teclear. Los equipos de selección rara vez reciben uno solo: reciben cientos al día con todos los diseños imaginables, desde plantillas a dos columnas hasta exportaciones de texto plano y fotocopias escaneadas de un candidato que pasó por la oficina. Esta herramienta lee el documento como lo haría un reclutador, siguiendo los títulos y los grupos, y ordena lo que encuentra en una estructura estable: nombre, contacto, experiencia, formación y competencias.
Para qué usarlo y qué error evitar
Complete la ficha del candidato en cuanto sube su CV, traslade de una vez una carpeta con miles de currículums antiguos en PDF a un nuevo sistema de selección, filtre por competencias y puestos normalizados o unifique los currículums que llegan de varios portales de empleo antes de que lleguen a un reclutador. El error que conviene evitar es buscar con patrones de palabras sobre el texto bruto: eliminar duplicados, buscar y ordenar frente a una vacante funciona mucho mejor sobre datos ordenados.
Dónde encaja en su flujo de trabajo
Puede alimentarlo directamente desde su formulario de postulación, su buzón de correo o una carga masiva del archivo acumulado de años en PDF. La salida se mapea con naturalidad a los campos habituales de un sistema de seguimiento de candidatos, así que el siguiente paso —deduplicar, buscar por palabra clave, comparar contra un requisito de vacante— se ejecuta sobre datos estructurados y no sobre expresiones regulares improvisadas.
Qué puede hacer con ella
Automatización de ingreso al ATS
Complete el registro del candidato en cuanto sube su CV, sin que un reclutador tenga que copiar cada campo manualmente.
Migración masiva de bases de currículums
Convierta una carpeta con miles de CV antiguos en PDF a filas estructuradas para un nuevo sistema de reclutamiento, en un solo lote.
Búsqueda de candidatos por habilidades
Extraiga habilidades y puestos normalizados para que los reclutadores filtren candidatos por criterio en lugar de leer documento por documento.
Filtrado en agencias de colocación
Convierta los currículums que llegan desde distintas bolsas de empleo a un formato uniforme antes de que lleguen a la bandeja de un reclutador.
Preguntas frecuentes
¿Existe una capa gratuita para la api leer curriculum?
No hay capa gratuita: las capas gratis se abusan y ralentizan a todos. Sin suscripción, sin tokens ni créditos inventados, y una tarea fallida no se cobra.
¿Se cobra si la extracción falla?
No. Las tareas fallidas se reintentan automáticamente hasta tres veces y nunca se cobran; solo paga por un documento procesado con éxito.
¿Funciona con currículums escaneados?
Sí, extrae texto tanto de páginas escaneadas o fotografiadas como de documentos digitales nativos.
¿Qué datos saca de un currículum?
El nombre, los datos de contacto, la experiencia laboral, la formación y las competencias, ordenados siempre de la misma forma para que cada ficha de candidato sea comparable, sea cual sea la plantilla que usó la persona.
¿Cómo recibo el perfil del candidato?
La lectura se hace en segundo plano, sin páginas abiertas esperando. Al terminar se le avisa, o puede descargar el perfil desde un enlace privado que sigue válido durante 24 horas.
Herramientas relacionadas
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, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/ocr/resume \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"El informe trimestral cerró con 1,2 M€ de ingresos."}'const res = await fetch("https://api.kit.forhosting.com/ocr/resume", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "El informe trimestral cerró con 1,2 M€ de ingresos."
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/ocr/resume",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "El informe trimestral cerró con 1,2 M€ de ingresos."
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/ocr/resume", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"El informe trimestral cerró con 1,2 M€ de ingresos."}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"El informe trimestral cerró con 1,2 M€ de ingresos."}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/ocr/resume", 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
{
"text": "El informe trimestral cerró con 1,2 M€ de ingresos."
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "ocr.resume",
"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. |
Notas técnicas
Este endpoint lee el CV como lo haría una persona y devuelve datos estructurados del candidato —nombre, contacto, experiencia, educación, habilidades— en segundos.
Pensado para el volumen, no para el caso aislado
Los equipos de reclutamiento rara vez procesan un currículum a la vez; reciben cientos por día en formatos de todo tipo, desde plantillas de diseño con dos columnas hasta fotocopias escaneadas de un candidato que se presentó sin cita. Este endpoint está construido para ese volumen: no asume un único formato, sigue los encabezados y agrupa la información como lo haría un ojo humano, y normaliza el resultado en un esquema estable que su base de datos puede confiar.
Qué ocurre exactamente con el archivo
Nada queda esperando a que una pestaña consulte el estado; su sistema simplemente recibe el aviso. Envía el archivo del currículum a POST /ocr/resume y recibe un task_id de inmediato porque el proceso corre de forma asíncrona. Cuando termina, el perfil extraído llega mediante un webhook firmado, o puede recuperarlo desde un enlace firmado que permanece válido durante 24 horas.
De la página escrita al JSON consultable
El currículum como género apenas ha cambiado en un siglo —nombre, experiencia, educación, contacto—, pero los contenedores no dejan de multiplicarse: exportaciones en PDF desde herramientas de diseño, documentos de Word con tablas, descargas de perfiles de LinkedIn, incluso fotos tomadas con el teléfono a una copia impresa. Una extracción confiable significa manejar esa variedad sin pedirle al candidato que reformatee nada, y esa es exactamente la capa que ofrece esta API.
Un precio acorde al trabajo realizado
Cada llamada cuesta $0.003 por solicitud más $0.0135 por documento, y se cobra únicamente cuando la extracción se completa con éxito; un intento fallido se reintenta automáticamente hasta tres veces y, si aun así falla, recibe un error claro sin ningún cargo. No existe capa gratuita ni período de prueba por diseño: el acceso requiere saldo prepago, lo que mantiene el endpoint rápido y libre de tráfico de abuso.
Preguntas técnicas
¿Qué devuelve la api para leer currículums?
Un perfil en JSON estructurado con contacto, experiencia laboral, educación, habilidades y fechas extraídas del CV subido.
¿Qué formatos de archivo acepta?
Documentos de currículum estándar en PDF, Word y páginas escaneadas o fotografiadas; el endpoint lee el diseño sin importar la herramienta de exportación usada.
¿Cómo recibo los resultados del análisis?
Mediante un webhook firmado cuando termina la tarea asíncrona, o descargándolos desde un enlace firmado válido por 24 horas.
¿Puedo enviar currículums en lote?
Sí, envíe una solicitud por documento y cada una devuelve su propio task_id, lo que permite procesar lotes grandes en paralelo.
¿Cuánto cuesta la api leer curriculum?
$0.003 por solicitud más $0.0135 por documento procesado, con precios publicados y sin créditos ni tokens ocultos.