martes, 9 de noviembre de 2021

Power Automate: Extraer texto de pdf a Excel

Mencioné en el artículo previo la posibilidad de extraer el texto de un pdf empleando Power Automate Desktop, y algunos lectores han sentido curiosidad sobre la forma de hacerlo...
Así pues aquí va el proceso.

Partiremos de un fichero Excel con una lista de rutas con los pdf de los cuales nos interesa recuperar su texto.
En mi caso, el fichero será: F:\excelforo\PA_ImportarPDF.xlsx, y en la hoja 1 dispongo del 'listado de pdf's':
F:\excelforo\FacturaEjemploPDF.pdf
F:\excelforo\FacturaEjemploPDF2.pdf
Power Automate: Extraer texto de pdf a Excel

Observa que no es una tabla, ni tiene asignado nombres definidos... son sencillamente dos celdas...

Mantendremos para nuestro ejemplo el fichero abierto

Listos para abrir Power Automate Desktop.
Crearemos un Nuevo Flujo que tendrá los siguientes pasos:
Power Automate: Extraer texto de pdf a Excel

Son 'diez' pasos muy sencillos de seguir que detallaré a continuación:
1- Asociar a Excel en ejecución: es decir, nos dirigimos a nuestro fichero Excel.
2- Establecer la hoja de cálculo activa: indicamos qué hoja del libro anterior activamos.
3- Leer en hoja de trabajo: recuperamos una 'tabla' con el contenido de las celdas.
4- Recuperar columna de datos de tabla en lista: transformamos la tabla anterior en una lista, que nos permitirá fácilmente recorrerla.
5- Bucle For each: que nos permitirá recorrer la lista de rutas del paso anterior.
Dentro del bucle, para elemento de la lista, esto es, para cada fichero pdf:
5.1- Extraer texto del PDF: recupera una única cadena de texto con el contenido completo del pdf..
5.2- Dividir texto: paso fundamental, ya que nos permitirá devolver en pasos siguientes en contenido anterior dividido en distintas celdas!!.
5.3- Establecer la hoja de cálculo activa: activamos la hoja destino de nuestro libro de Excel.
5.4- Obtener la primera columna o fila libre de la hoja de cálculo: nos dice cuál sera la celda destino donde pegar el texto obtenido.
5.5- Escribir en la hoja de cálculo: último paso, terminamos escribiendo a partir de la celda anterior.
Como se puede ver ser pasos bastante lógicos...

Veamos en detalle cada uno de ellos.

El primer paso es dirigirnos a nuestro libro de Excel:Asociar a Excel en ejecución.
Desde las acciones de Excel:
Power Automate: Extraer texto de pdf a Excel

La configuración es muy simple, basta seleccionar desde el buscador el fichero de Excel deseado.

Segundo paso. Establecer la hoja de cálculo activa.
También desde las acciones de Excel..
Power Automate: Extraer texto de pdf a Excel

A partir de la variable generada en el primer paso 'Excelinstance' indicamos la hoja que deseamos activar. Pudiendo optar por referirnos a ella bien por su nombre o bien por su posición entre hojas.
En este caso he optado por dirigirme a la primera hoja del libro.

Tercer paso. Leer en hoja de trabajo.
Igualmente desde las acciones de Excel recorremos un rango de celdas de la hoja activa.
Power Automate: Extraer texto de pdf a Excel

Los parámetros a configurar son sencillos:
- indicamos la variable de libro sobre la que trabajar (y OJO sobre la hoja activada previamente!!). - definimos dónde están los datos a recuperar. Tres opciones (Valor de una celda, Rango de celdas o Celdas seleccionadas).
Yo he optado en este caso por identificar los valores de un rango de celdas, por lo que he definido también las posiciones de fila+columna donde empieza y acaba el rango:
Primera columna=1
Primera fila=1
Última columna=1
Última fila=2
O sea, desde la celda A1 hasta A2

Cuarto paso. Recuperar columna de datos de tabla en lista.
Esta acción la encontramos en el grupo de 'Variables', y nos permite transformar la tabla de datos anterior (las celdas recuperadas) en una lista.
Lista que luego podremos recorrer!!
Power Automate: Extraer texto de pdf a Excel

Importante.. el parámetro que identifica la columna, nos permite optar por el nombre de la columna o por su posición o índice. Si optamos por índice debemos saber que está en base cero. Esto es, la primera columna es la posición cero, la segunda es la posición uno, etc...

Quinto paso. Bucle For each.
En el grupo de acciones de 'Bucles'. Indicamos que lista queremos recorrer. La lista creada en el paso anterior.
Power Automate: Extraer texto de pdf a Excel


Dentro del bucle previo (For each) daremos cinco pasos:
Paso I: Extraer texto del PDF, que recupera una única cadena de texto con el contenido completo del pdf.
Este paso lo encontramos en el grupo de acciones de PDF.
Power Automate: Extraer texto de pdf a Excel

El archivo pdf se le indica a partir de la variable del bucle; además, en este caso, indicamos que queremos recuperar todas las páginas del documento.

Paso II: Dividir texto
En el grupo de acciones de Texto
Este paso dividirá en distintas líneas el contenido obtenido del pdf anterior.. dividiéndolo por cada salto de línea que encuentre (en nuestro ejemplo).
Si bien la configuración nos permite un amplio abanico de posibilidades, incluso personalizando el delimitador!!
Power Automate: Extraer texto de pdf a Excel

Paso III: Establecer la hoja de cálculo activa activamos la hoja destino de nuestro libro de Excel.
Es una acción vista ya en el paso segundo...

Paso IV: Obtener la primera columna o fila libre de la hoja de cálculo Donde identificamos la primera celda libre donde trasladaremos los textos del pdf tratados...
Dentro del grupo de acciones de Excel.
Power Automate: Extraer texto de pdf a Excel

Nos devuelve hasta dos variables, una para la 'Primera fila' y otra para la 'Primera columna' disponible en la hoja activa de nuestra instancia de Excel...

Paso V y último: Escribir en la hoja de cálculo. Escribimos en nuestro Excel el resultado.
Power Automate: Extraer texto de pdf a Excel

Indicamos la variable a trasladar y el destino (en mi ejemplo siempre desde la fila 1 y la primera columna libre que encuentre...

Power Automate: Extraer texto de pdf a Excel


El resultado es óptimo, igual que el del desarrollo con VBA... pero con una ventaja: NO requerimos de licencias o librerías de Acrobat!!.

No hay comentarios:

Publicar un comentario

Nota: solo los miembros de este blog pueden publicar comentarios.