Cursor para no programadores: crea un script que renombra tus facturas PDF
Primer proyecto con Cursor sin saber programar: un script en Python que lee tus facturas PDF y las renombra por fecha, proveedor y número.
Por Redacción Atajo
- Herramientas
- Cursor, Python
- Nivel
- Intermedio
- Tiempo de montaje
- 40 minutos
- Actualizado
- 12 sept 2026
Si eres autónomo o llevas la administración de una pequeña empresa, conoces la carpeta: decenas de PDF llamados factura.pdf, Factura (3).pdf o doc_20260903_1847.pdf. Encontrar la factura de un proveedor concreto en trimestre de impuestos se convierte en una búsqueda a ciegas.
En este tutorial vas a resolverlo con un pequeño programa que renombra cada factura con un formato ordenado:
2026-09-03_Papeleria-Gomez-SL_2026-0147.pdf
Fecha, proveedor y número. Ordenadas solas por fecha en cualquier carpeta. Y lo vas a hacer con Cursor, un editor de código con IA integrada, aunque no hayas escrito una línea de código en tu vida.
Qué es Cursor y por qué sirve a quien no programa
Cursor es un editor de código basado en Visual Studio Code con un asistente de IA integrado. Puedes pedirle en lenguaje natural lo que quieres, y el asistente escribe el código, lo explica y lo corrige cuando algo falla. Tú pones el criterio: qué debe hacer el programa y si el resultado es correcto.
Paso 1. Instala lo necesario
- Cursor: descárgalo desde su web oficial e instálalo. El plan gratuito incluye un número limitado de peticiones al asistente, suficiente para este proyecto.
- Python: descarga la última versión estable desde python.org. En Windows, marca la casilla Add Python to PATH durante la instalación. Es el error más común.
- Crea una carpeta de trabajo, por ejemplo
Documentos/renombrador, y dentro otra llamadafacturas. - Copia (no muevas) unas cuantas facturas reales en
facturas. Trabajarás siempre sobre copias hasta estar seguro de que el script funciona.
Paso 2. Abre la carpeta en Cursor
En Cursor, ve a File > Open Folder y elige renombrador. Abre el panel del asistente (el chat lateral) y asegúrate de que está en el modo que puede crear y editar archivos.
Paso 3. Pide el programa con un buen prompt
La calidad del resultado depende de lo concreto que seas. Este prompt funciona bien:
Quiero un script de Python llamado renombrar_facturas.py para Windows.
Debe leer los PDF de la carpeta "facturas", extraer el texto de la primera página
y renombrar cada archivo con el formato AAAA-MM-DD_Proveedor_Numero.pdf.
- Fecha: la primera fecha con formato dd/mm/aaaa, dd-mm-aaaa o dd.mm.aaaa.
- Proveedor: la primera línea de texto de la factura, sin símbolos raros y con guiones en lugar de espacios.
- Número: lo que aparece después de "Factura nº", "Factura número" o similar. Si no hay, se omite.
- Si no encuentra fecha, deja el archivo como está y avisa.
- Si ya existe un archivo con ese nombre, añade _2, _3, etc.
- IMPORTANTE: por defecto solo debe MOSTRAR los cambios. Solo renombra si lo ejecuto con --aplicar.
Usa la librería pypdf. Explícame cómo instalarla y cómo ejecutar el script.
El último requisito, el modo de prueba por defecto, es la diferencia entre un experimento seguro y perder la referencia de tus archivos. Pídelo siempre en cualquier script que modifique o borre cosas.
Paso 4. Revisa lo que ha escrito
El asistente creará el archivo. El resultado debería parecerse a esto:
"""Renombra facturas PDF como AAAA-MM-DD_Proveedor_Numero.pdf.
Uso:
python renombrar_facturas.py # solo muestra los cambios
python renombrar_facturas.py --aplicar # renombra de verdad
"""
import re
import sys
from pathlib import Path
from pypdf import PdfReader
CARPETA = Path("facturas")
APLICAR = "--aplicar" in sys.argv
PATRON_FECHA = re.compile(r"\b(\d{1,2})[/.-](\d{1,2})[/.-](\d{4})\b")
PATRON_NUMERO = re.compile(
r"factura\s*(?:n[º°o]?\.?|número|num\.?)?\s*[:#]?\s*([A-Z0-9][A-Z0-9/-]{2,})",
re.IGNORECASE,
)
def texto_primera_pagina(ruta: Path) -> str:
return PdfReader(ruta).pages[0].extract_text() or ""
def limpiar(texto: str) -> str:
texto = re.sub(r"[^\w\s-]", "", texto).strip()
return re.sub(r"\s+", "-", texto)[:40]
def nuevo_nombre(texto: str) -> str | None:
lineas = [l.strip() for l in texto.splitlines() if l.strip()]
fecha = PATRON_FECHA.search(texto)
if not lineas or not fecha:
return None
dia, mes, anio = fecha.groups()
partes = [f"{anio}-{int(mes):02d}-{int(dia):02d}", limpiar(lineas[0])]
numero = PATRON_NUMERO.search(texto)
if numero:
partes.append(limpiar(numero.group(1).replace("/", "-")))
return "_".join(partes) + ".pdf"
def main() -> None:
for ruta in sorted(CARPETA.glob("*.pdf")):
nombre = nuevo_nombre(texto_primera_pagina(ruta))
if not nombre:
print(f"SIN FECHA, se deja igual: {ruta.name}")
continue
destino = ruta.with_name(nombre)
contador = 2
while destino.exists() and destino != ruta:
destino = ruta.with_name(f"{Path(nombre).stem}_{contador}.pdf")
contador += 1
print(f"{ruta.name} -> {destino.name}")
if APLICAR:
ruta.rename(destino)
if not APLICAR:
print("\nPrueba terminada. Ejecuta con --aplicar para renombrar.")
if __name__ == "__main__":
main()
No necesitas entender cada línea, pero sí puedes comprobar lo esencial. Pregúntale al asistente cosas como «¿en qué línea se decide si renombra o solo muestra?» o «¿qué pasa si dos facturas tienen la misma fecha y proveedor?». Si las respuestas cuadran con lo que pediste, vas bien.
Paso 5. Instala pypdf y haz la primera prueba
Abre la terminal integrada de Cursor (View > Terminal) y escribe:
pip install pypdf
python renombrar_facturas.py
En Windows, si python no se reconoce, prueba con py en su lugar. Verás una lista como esta, sin que se haya renombrado nada:
factura.pdf -> 2026-09-03_Papeleria-Gomez-SL_2026-0147.pdf
doc_8812.pdf -> 2026-10-15_Luz-Electrica-SA_FE-88123.pdf
SIN FECHA, se deja igual: escaneo_ticket.pdf
Prueba terminada. Ejecuta con --aplicar para renombrar.
Paso 6. Ajusta con el asistente lo que no salga bien
Es casi seguro que alguna factura no se renombrará como esperas. Los motivos típicos:
- El proveedor sale mal porque la primera línea es «FACTURA» o el logotipo contiene texto. Pide: «si la primera línea es la palabra factura, usa la segunda».
- Facturas escaneadas sin texto real: son imágenes y pypdf no puede leerlas. Para esas necesitarías reconocimiento de texto (OCR), que es un proyecto aparte.
- Fechas escritas con letra, como «3 de septiembre de 2026». Pide al asistente que también reconozca ese formato.
Pega en el chat la salida de la terminal y describe qué esperabas. El asistente propondrá el cambio y podrás aceptarlo o rechazarlo antes de que toque el archivo.
Paso 7. Ejecútalo de verdad
Cuando la lista de prueba sea correcta para todas las facturas:
python renombrar_facturas.py --aplicar
Comprueba la carpeta. Si algo no te convence, todavía tienes los originales, porque trabajaste con copias.
Lo que has aprendido (y vale para cualquier otro script)
- Describe el resultado, no el código. El asistente sabe programar; tú sabes qué necesitas.
- Exige un modo de prueba en todo lo que modifique archivos.
- Trabaja con copias hasta confiar en el resultado.
- Itera con ejemplos reales. Pegar la salida y explicar qué esperabas es la forma más rápida de corregir.
Con este mismo método puedes crear scripts para unir PDF, convertir hojas de Excel a CSV, ordenar fotos por fecha o extraer datos de cientos de documentos. Es el primer paso para que el ordenador haga el trabajo repetitivo por ti.