Tablas de PDF a ExcelDesarrollo y personalización

Un script de Python que extrae a Excel las tablas de sus informes, listas de precios o extractos en PDF

Suele estar listo en 15 minutosCambios incluidosControl de calidad
Paquetes
Protección de pagoDetalles
  • Los cambios dentro del paquete son gratuitos.
  • Si no responde en los 3 días siguientes a la entrega, el trabajo se acepta automáticamente.

El dinero queda reservado al pagar y solo se libera cuando usted acepta el trabajo.

Un script de Python que extrae a Excel las tablas de sus informes, listas de precios o extractos en PDF

Ejemplo de resultado

Ejemplo del paquete Estándar

Unir los archivos de ventas mensuales de 9 tiendas en un único informe de Excel

Cómo se ejecuta

python merge_sales.py --month 2026-10
2026-11-02 09:14:03 INFO  Carpeta: sales/2026-10, 9 archivos encontrados
2026-11-02 09:14:03 INFO  shop-01.csv: 1.284 filas
2026-11-02 09:14:04 INFO  shop-02.xlsx: 967 filas
2026-11-02 09:14:04 WARN  shop-07.csv: 3 filas sin precio omitidas (líneas 88, 412, 913)
2026-11-02 09:14:05 INFO  Listo: 10.412 filas -> report-2026-10.xlsx (hojas “Ventas” y “Totales”)

Configuración, no código

Los nombres de columna de cada tienda están en settings.ini, así que una tienda nueva o una columna renombrada es una línea ahí:

[columns]
date = Fecha, Fecha de venta, Día
product = Producto, Artículo, Nombre
quantity = Cant., Cantidad, Uds.
price = Precio, Precio unitario

Una parte del código

def read_shop_file(path: Path, columns: dict[str, list[str]]) -> pd.DataFrame:
    """Lee el archivo de una tienda y le da los nombres de columna del informe."""
    table = pd.read_excel(path) if path.suffix == ".xlsx" else pd.read_csv(path, encoding="utf-8-sig")
    renamed = {}
    for name, variants in columns.items():
        found = next((c for c in table.columns if c.strip() in variants), None)
        if found is None:
            raise ReportError(f"{path.name}: no hay columna para '{name}' (se buscó {', '.join(variants)})")
        renamed[found] = name
    table = table.rename(columns=renamed)[list(columns)]
    table["shop"] = path.stem
    return table

Archivos: un archivo ZIP con merge_sales.py (310 líneas), settings.ini, requirements.txt y un README sobre cómo instalar Python, ejecutar el script y qué significa cada mensaje del registro. El cliente lo ejecuta en su propio ordenador.

Cliente: una pequeña cadena de 9 papelerías; cada tienda envía sus ventas del mes en un archivo CSV o Excel, con nombres de columna ligeramente distintos. Tarea: un único script que lea todos los archivos de una carpeta, dé a las columnas un mismo formato y genere un solo informe de Excel con todas las ventas y una hoja de totales por tienda.

El cliente y todos los datos son ficticios.

Acerca de este servicio

Las listas de precios de proveedores, los informes bancarios o de marketplaces y los listados de stock a menudo llegan solo en PDF, y al copiar sus tablas a Excel las columnas se descolocan. Este script de Python lee las tablas de sus PDF y las escribe en Excel o CSV con las columnas en su sitio: une una tabla que ocupa muchas páginas, quita las filas de encabezado repetidas y los pies de página y, desde Estándar, convierte 1 234,50 o (120.00) en números de verdad y las fechas en fechas. Está ajustado a la estructura de sus archivos, así que envíe uno o dos PDF típicos o la misma estructura con cifras inventadas. El PDF debe contener texto real, como la mayoría de archivos guardados desde un programa; los escaneos y las fotos de papel necesitan reconocimiento de texto, que no se incluye. El script lo ejecuta usted y comprueba los totales.

Qué incluye

  • Qué recibeUn archivo ZIP con el script de Python, un README con instrucciones paso a paso y, desde Estándar, un archivo de configuración con nombres de columnas y páginas; el código también se muestra en la página del pedido.
  • Ajustado a su estructuraHecho y probado con los archivos de muestra que envía
  • Columnas en su sitioUna fila del PDF es una fila en Excel
  • Muchas páginas unidasUna tabla larga se convierte en una hoja sin encabezados repetidos
  • Números de verdadDesde Estándar, importes y fechas que puede sumar y ordenar
  • Código legibleCon comentarios, fácil de ajustar si cambia la estructura

Cómo funciona

  1. 1
    MuestrasUsted envía uno o dos PDF típicos y muestra la tabla que necesita
  2. 2
    CódigoEscribimos el script para esa estructura y la guía para ejecutarlo
  3. 3
    PruébeloLo ejecuta con sus archivos y compara los totales con el PDF
  4. 4
    CambiosPide cambios dentro de su paquete y nos envía cualquier mensaje de error

Qué necesitamos de usted

Uno o dos PDF típicos de los que recibe (o la misma estructura con nombres y cifras inventados), qué tabla y en qué páginas necesita, y las columnas que quiere en Excel. Cómo se escriben los números en ellos (comas, espacios, signos menos o paréntesis) y el formato de fecha. Si todos sus archivos comparten una estructura o hay varios tipos, cuántos archivos procesa aproximadamente y su sistema: Windows, macOS o Linux.

Le preguntaremos:

  • ¿Qué PDF son?
  • ¿Qué columnas necesita en Excel?
  • ¿Todos sus archivos son iguales?
  • ¿Dónde se ejecutará?

Comparar paquetes

PaquetesBásicoUna estructura de tabla16 US$EstándarTablas con configuración33 US$PremiumHerramienta de tablas67 US$
Plazo1 día2 días3 días
Cambios123
Códigohasta 150 líneashasta 400 líneashasta 1.000 líneas
Archivos de código1hasta 3hasta 8
Archivo de configuraciónNoSíSí
Mensajes de error claros y registroNoSíSí
Opciones de ejecución y guía para ejecutarlo de forma programadaNoNoSí
Guía de instalación y uso (README)SíSíSí
LenguajePythonPythonPython
Hacer pedido BásicoHacer pedido EstándarHacer pedido Premium

Protección de pago

Usted paga al hacer el pedido, pero el dinero solo se libera por un trabajo aceptado.

  • Precio fijoEl precio del paquete no cambia después del pago.
  • El dinero queda reservadoAl pagar, el importe solo queda reservado. Pasa a Dleex cuando usted acepta el trabajo.
  • Revisado antes de la entregaCada resultado pasa un control de calidad antes de llegar a usted, y lo ve en la página del pedido antes de aceptarlo.
  • Cambios gratuitosSolicite cambios dentro de su brief tantas veces como permita el paquete.
  • Aceptación a los 3 díasSi en los 3 días siguientes a la entrega no acepta el trabajo ni solicita cambios, se acepta automáticamente. Si escribe en el chat del pedido después de la entrega, el pedido queda en espera; cuando le respondamos, podremos reiniciar el plazo de 3 días y se lo indicaremos en el chat.
  • Rehacer el trabajo o reembolso totalSi el resultado no se ajusta a su brief y los cambios no lo resolvieron, o el trabajo tarda más del doble de su plazo, escriba en el chat del pedido: rehacemos el trabajo o le reembolsamos el pago íntegro.
Cómo funciona →

Preguntas y respuestas

¿Funcionará con cualquier PDF?

Está hecho para la estructura de sus archivos de muestra. Si su proveedor cambia la estructura, puede que haya que ajustar el script. Los PDF sin texto real, como los escaneos, no están cubiertos.

¿Cómo sé si mi PDF tiene texto real?

Ábralo e intente seleccionar una palabra con el ratón. Si puede seleccionarla y copiarla, el texto es real. Si toda la página se selecciona como una imagen, es un escaneo.

¿Puede equivocarse?

Sí, las tablas de un PDF no se guardan como tablas, así que una línea rara puede romper una fila. Por eso el script registra las páginas de las que no estaba seguro, y conviene comparar los totales con el PDF antes de usar el resultado.

¿Tengo que enviar informes reales?

No. La misma estructura con cifras inventadas sirve igual, y después el script se ejecuta con sus archivos reales en su ordenador.

¿No encontró su respuesta?

Paquetes