Extraer números de un texto
Una frase con 12.5%, 1,234,567.89, 3 plantas, 4200 unidades, un margen de -1.5 y 2e3 repuestos devuelve exactamente esos 6 números, en orden de lectura y con los repetidos. Pegue un informe o una nota de laboratorio y copie las cifras. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Sacar cifras de un párrafo es una tarea diaria para analistas, estudiantes, periodistas y quien hereda un informe como prosa en lugar de una hoja de cálculo. Esta herramienta recorre su texto de izquierda a derecha y lista cada entero y cada decimal que encuentra, con valores con signo, agrupación inglesa de millares y notación científica, en el orden en que aparecen. Sirve para extraer cantidades de actualizaciones de estado, notas de laboratorio, facturas escritas en frases y resúmenes de cambios sin abrir una hoja ni redactar una expresión regular. El texto vacío o ausente falla con entrada inválida para que nadie almacene una carga silenciosa.
Qué cuenta como número y cómo se leen los tokens en orden
Un número en prosa no es el mismo objeto que una celda de hoja de cálculo. La gente escribe 42, 3.14, .75, +2, el valor -1.5, 1,234.56 y 2e3 en la misma frase, y también escribe intervalos como páginas 10-20 y versiones como v1.2.3 que parecen numéricos pero no deben fundirse en un solo decimal. Esta capacidad recorre la cadena una sola vez, de izquierda a derecha, y conserva cada token que es un entero o un decimal bajo un conjunto fijo de reglas.
Un más o un menos inicial es signo solo al comienzo del texto o tras un espacio o puntuación de apertura, de modo que un cambio de -1.5 lleva signo mientras que el intervalo 10-20 produce dos enteros sin signo. La agrupación inglesa de millares se acepta cuando las comas separan grupos de exactamente tres dígitos, así que 1,234,567.89 es un solo valor. Se acepta un decimal que empieza por punto, como .75.
Los exponentes científicos de la forma e o E más un signo opcional y al menos un dígito forman parte del mismo token. Las rachas con varios puntos que parecen versiones o direcciones IPv4 se parten en componentes enteros, de modo que v1.2.3 pasa a 1, 2 y 3, y no a 1.2 seguido de .3. El orden es siempre el de primera aparición, con duplicados, porque un informe que repite la misma cifra dos veces dice algo distinto de un volcado de valores únicos.
Contrato de entrada, campos de respuesta y cuándo se rechaza la solicitud
No hallar números es un éxito válido: numbers queda como array vacío y count vale cero, el resultado honesto de un párrafo que solo tiene palabras. Use numbers solo cuando desee pegar las cifras de nuevo en un documento. Use values cuando un script vaya a sumar, ordenar o comparar.
Como el algoritmo es lógica pura de cadenas, las pruebas de integración continua pueden fijar el objeto completo. Mantenga las cargas en tamaños de documento ordinarios, no volcados de varios megabytes; este producto es una utilidad de texto, no un almacén masivo. El texto de origen sigue las mismas reglas de retención que otros elementos de parse de KIT.
Qué puede hacer con ella
Sacar cifras de informes escritos
Los analistas pegan un párrafo trimestral y obtienen cada entero y decimal en orden, con millares agrupados y porcentajes reducidos a su token numérico.
Notas de laboratorio y deberes
Estudiantes y técnicos extraen valores medidos de notas corridas sin volver a teclear cada lectura en una hoja de cálculo a mano.
Preguntas frecuentes
¿Cómo extraigo números de un texto?
El array numbers de la respuesta lista cada entero y decimal en orden de primera aparición, y values guarda los mismos tokens como números finitos.
¿Conserva decimales como 3.14 y .75?
Sí. Se recogen enteros, decimales ordinarios, decimales con punto inicial, agrupación inglesa de millares y notación científica.
¿Es gratuita la herramienta para extraer números de un texto?
La herramienta del navegador se ejecuta gratis en su dispositivo.
¿Un intervalo de páginas como 10-20 se convierte en un número negativo?
No. Un menos es signo solo al inicio o tras un espacio o puntuación de apertura, así que 10-20 produce 10 y 20, mientras que un cambio de -1.5 produce -1.5.
¿Por qué una versión como v1.2.3 da tres números separados?
Porque una secuencia con varios puntos parece una versión o una dirección, no un decimal. Se divide en sus partes enteras, de modo que v1.2.3 da 1, 2 y 3 en lugar de un engañoso 1.2 seguido de .3.
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/str/extract-numbers \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Quarterly report: revenue rose 12.5% to $1,234,567.89 after 3 plants shipped 4200 units at -1.5 margin and 2e3 spares."}'const res = await fetch("https://api.kit.forhosting.com/str/extract-numbers", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "Quarterly report: revenue rose 12.5% to $1,234,567.89 after 3 plants shipped 4200 units at -1.5 margin and 2e3 spares."
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/str/extract-numbers",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "Quarterly report: revenue rose 12.5% to $1,234,567.89 after 3 plants shipped 4200 units at -1.5 margin and 2e3 spares."
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/str/extract-numbers", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"Quarterly report: revenue rose 12.5% to $1,234,567.89 after 3 plants shipped 4200 units at -1.5 margin and 2e3 spares."}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"Quarterly report: revenue rose 12.5% to $1,234,567.89 after 3 plants shipped 4200 units at -1.5 margin and 2e3 spares."}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/str/extract-numbers", 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": "Quarterly report: revenue rose 12.5% to $1,234,567.89 after 3 plants shipped 4200 units at -1.5 margin and 2e3 spares."
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "str.extract_numbers",
"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_chars | 100000 |
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. |
Notas técnicas
Qué cuenta como número y cómo se leen los tokens en orden
Marcas de moneda, signos de porcentaje y palabras de unidad son fronteras, no parte del token: 12.5% y $42.00 aportan 12.5 y 42.00.
Contrato de entrada, campos de respuesta y cuándo se rechaza la solicitud
Envíe un cuerpo JSON con el campo de cadena obligatorio text igual a la muestra no vacía que desee analizar. Se aceptan los alias input, value, s, content, body y string cuando clientes antiguos o generadores de formularios usan esos nombres. Un text ausente, un valor que no sea cadena, una cadena de longitud cero o una cadena solo de espacios elevan invalid_input con un mensaje que nombra el problema, y esos fallos no se cobran en la API de prepago. La longitud se limita a cien mil caracteres para acotar el análisis en el navegador y en el Worker; el exceso también es invalid_input. En caso de éxito la respuesta incluye numbers como lista ordenada de tokens superficiales para que 1,234.50 y 007 sigan siendo legibles, values como los mismos tokens interpretados a números IEEE finitos sin comas de millar, count como la longitud compartida, integer_count para tokens sin punto decimal ni exponente, decimal_count para los que sí lo tienen, original que ecos de la entrada exacta para tablas de interfaz, y method siempre extract_numbers para que el código posterior ramifique sin olfatear formas.
Uso de la API, precios, flujos de trabajo y lo que esta herramienta no es
Llame a la herramienta gratuita del navegador para extraer números de un texto en deberes, extractos de factura, cuadernos de laboratorio y auditorías rápidas, sin escribir una expresión regular en cada lenguaje. Un flujo típico pega un párrafo trimestral, lista las cifras y copia values a una hoja. Combine este extremo con un extractor de importes cuando el siguiente paso sean monedas, impuestos y totales etiquetados, o con un extractor de fechas cuando necesite fechas de calendario normalizadas y no los dígitos sueltos de una cadena de fecha. No espere que esta página clasifique si un número es un precio, una cantidad o un año: esa es otra intención de búsqueda, servida por extractores estructurados. Use la API prepago de KIT cuando un CMS, una canalización de contenido, un arnés de QA, una aplicación de tutoría o un cliente móvil necesiten el mismo contrato con saldo a $0.002 por elemento correcto; los fallos de validación nunca consumen saldo tras el rechazo del motor. Quien publique SDK puede documentar text como único campo obligatorio, mostrar un ejemplo de éxito con enteros y decimales mezclados, y un ejemplo de error de cadena vacía para que quien integre vea ambos lados del contrato.
Casos de integración
Fixtures de CI para analizadores numéricos
Los scripts de compilación fijan números extraídos y valores interpretados para que las regresiones de signo, millares y notación científica fallen de inmediato en la integración continua.
Preguntas técnicas
¿Qué ocurre si text está vacío?
La solicitud falla con invalid_input. No se admite entrada vacía ni solo espacios; los fallos de validación no se cobran en la API de prepago.