Automatización en el Procesamiento de Facturas con Python

En muchas empresas, la entrada de información –como los albaranes y facturas– se realiza de manera manual, lo que implica imprimir documentos y transcribir los datos al ERP. En este post, te mostramos cómo hemos automatizado este proceso utilizando Python, transformando una tarea repetitiva en una solución rápida y confiable.

5/31/20253 min leer

gray laptop computer on brown wooden desk
gray laptop computer on brown wooden desk

Automatización en el Procesamiento de Facturas con Python

En muchas empresas, la entrada de información –como los albaranes y facturas– se realiza de manera manual, lo que implica imprimir documentos y transcribir los datos al ERP. En este post, te mostramos cómo hemos automatizado este proceso utilizando Python, transformando una tarea repetitiva en una solución rápida y confiable.

Contexto y Desafío

La situación actual era la siguiente: la empresa recibía facturas en formato PDF mediante correo electrónico. Una persona debía imprimirlas y luego transferir manualmente la información al ERP. Este proceso no solo demandaba tiempo, sino que también daba lugar a errores. La solución ideada consistió en desarrollar un script en Python que:

  • Extrae la información relevante de las facturas en PDF.

  • Identifica y evita el procesamiento de facturas duplicadas.

  • Genera un archivo JSON por cada factura procesada para integrarlo al ERP.

  • Organiza los documentos en carpetas según su estado (nuevas, procesadas o duplicadas).


Herramientas y Librerías Utilizadas

Para implementar esta solución, se hizo uso de diversas librerías de Python, cada una con un rol específico:

  • os: Manejo de directorios y archivos. Permite crear, listar y validar rutas de almacenamiento.

  • re: Uso de expresiones regulares para identificar patrones específicos en el texto, como el número de factura o fechas de impresión.

  • json: Lectura y escritura de archivos JSON; fundamental para generar un documento estructurado con los datos extraídos.

  • pdfplumber: Extracción de texto desde archivos PDF, herramienta esencial para transformar el contenido visual de la factura en texto procesable.

  • datetime: Manejo de fechas y tiempos, utilizado para generar prefijos de fecha y hora en los nombres de archivo JSON.

  • shutil: Movimientos y copias de archivos; permite organizar los documentos una vez procesados, moviéndolos a las carpetas correspondientes.

Cómo Funciona el Script

El script se estructura en varios pasos clave:

  1. Extracción del Texto: Usando pdfplumber, el script recorre cada página del PDF para extraer el texto completo. Posteriormente, se une el contenido en una sola cadena para facilitar el análisis.

  2. Validación de Duplicados: Se utilizan expresiones regulares, mediante la librería re, para identificar el campo "Invoice" o "Delivery No". Con esta información, el script verifica en las carpetas de "Facturas Procesadas" y "Facturas Duplicadas" si el documento ya se había procesado, evitando así duplicados.

  3. Extracción de Datos Específicos: Para cada factura, se extraen campos como fecha de impresión, número de envío, ID del contenedor y el número de material, entre otros. En el caso del proveedor 1, las facturas pueden contener múltiples tablas debido a la presencia de varias Sales Order/Item. El script recorre el contenido, separando cada sección y organizándola en un diccionario estructurado.

  4. Generación del Archivo JSON y Organización de Archivos: Una vez extraída la información, se crea un archivo JSON (nombrado con la fecha y hora actual) que se envía al ERP. Además, la factura se mueve desde la carpeta "Facturas Nuevas" a "Facturas Procesadas" o, en caso de duplicado, a "Facturas Duplicadas".

Automatización y Ejecución Programada

Una vez finalizado el desarrollo del script, se creó un ejecutable que permite su ejecución automatizada. Se configuró un Programador de Tareas en Windows para ejecutar el proceso de facturación automáticamente cada día a las 10:00 a.m., eliminando la necesidad de intervención manual.

Además, se implementó una interfaz gráfica sencilla con Tkinter, que permite al usuario ejecutar el script de manera manual mediante botones intuitivos. Esto añade flexibilidad al sistema, ya que, si es necesario, se puede ejecutar la tarea on demand.

Conclusión

Esta experiencia demuestra cómo la integración de Python en procesos administrativos puede transformar completamente la eficiencia operativa de una empresa. Desde la extracción de datos en PDFs hasta su validación y organización automatizada, cada componente del proceso ha sido diseñado para reducir errores y liberar tiempo en tareas repetitivas.

Si estás buscando optimizar tus procesos y tomar decisiones basadas en datos confiables, automatizar tareas como la gestión de facturas es un camino seguro hacia la innovación. ¿Te gustaría conocer más sobre cómo implementar soluciones similares en tu empresa?