Como convertir 500 facturas PDF en Excel automaticamente con Python
Si manejas facturas de proveedores, sabes lo tedioso que es pasarlas a Excel a mano. Yo lo resolvi con 40 lineas de Python y ahorro 6 horas al mes.
El problema
Cada mes recibo entre 50 y 80 facturas PDF de diferentes proveedores. Cada una con formato distinto. Pasarlas a Excel es un infierno: errores de tipeo, datos olvidados, totales que no cuadran.
La libreria clave: pdfplumber
Despues de probar PyPDF2, PyMuPDF y PDFMiner, me quede con pdfplumber porque extrae texto con mejor precision en tablas.
Instalacion:
pip install pdfplumber openpyxl
El codigo base
import os
import re
import pdfplumber
import openpyxl
CAMPOS = {
"numero": r"(?:factura|invoice|numero):?\s*([A-Z0-9-]+)",
"fecha": r"(?:fecha|date):?\s*(\d{1,2}[/.-]\d{1,2}[/.-]\d{2,4})",
"total": r"(?:total):?\s*\$?\s*([\d.,]+)",
}
def extraer(ruta):
with pdfplumber.open(ruta) as pdf:
texto = "\n".join(p.extract_text() or "" for p in pdf.pages)
datos = {}
for campo, patron in CAMPOS.items():
m = re.search(patron, texto, re.IGNORECASE)
datos[campo] = m.group(1) if m else "N/D"
return datos
resultados = []
for archivo in os.listdir("facturas"):
if archivo.endswith(".pdf"):
resultados.append(extraer("facturas/" + archivo))
wb = openpyxl.Workbook()
ws = wb.active
ws.append(["Numero", "Fecha", "Total"])
for r in resultados:
ws.append([r["numero"], r["fecha"], r["total"]])
wb.save("facturas.xlsx")
Resultados reales
- Antes: 6 horas al mes copiando facturas a mano
- Despues: 30 segundos ejecutando el script
- Ahorro: 71 horas al ano
Consideraciones importantes
Formatos variables: Cada proveedor usa su propio formato. Los regex hay que ajustarlos al inicio, pero una vez funcionan, funcionan siempre.
PDFs escaneados: Si la factura es una imagen (no texto), pdfplumber no la lee. Necesitas OCR (Tesseract).
Multiples paises: El script detecta formatos en espanol, ingles y portugues automaticamente.
Conclusion
Automatizar facturas es una de las mejores inversiones de tiempo que puedes hacer. 2 horas configurando, 71 horas ahorradas al ano.
Si quieres la version completa con menu interactivo, deteccion multi-idioma y exportacion a Excel formateado:
Top comments (0)