Biblioteca PyPDF2. Segmentar el contenido (páginas)
Resuelto (en parte) el [acceso a las imágenes] de un pdf (1), nos queda aun mucho por delante para mejorar los procedimientos de modo que nos sea realmente de utilidad. Y se me ocurre que segmentar el contenido, aunque no sea la solución, sí nos acerque a ella.
Segmentar el contenido nos puede ayudar de muchas maneras, siendo la primera de ellas facilitar el acceso a segmentos del texto desde el script, cosa que resulta complicada cuando el contenido textual es amplio. Posiblemente no sea la única ventaja, así que merece la pena explorar esta opción.
Para ello debemos tener en cuenta las propias divisiones de un texto en páginas, párrafos, líneas y palabras, algunas de las cuales nos pueden interesar como criterio de segmentación. También las funciones de que dispone Python para trabajar con cadenas y las propias colecciones de datos de este lenguaje.
Tomando las listas como colección básica y la página como referencia para la división, una primera segmentación es capturar de forma diferenciada y en una lista, el contenido de cada una de las páginas de un texto. En teoría esto nos podría servir para trabajar de forma diferenciada con cada una de las páginas, incluyendo el acceso selectivo en función de objetivos (2).
A modo de ejemplo, tomando como referencia el mismo documento multi-página que nos sirvió para aprender a acceder a un documento de estas características (3), te planteo ahora el script que nos permite acceder a cada página por separado.
from PyPDF2 import PdfReader#Acceso al documentoleer_doc = PdfReader("pdf/Curriculo.pdf")pag = len(leer_doc.pages)pag_guardar= []# Recorrer las páginas del documento asignándolas a los componentes de la lista pag_guardarfor i in range(pag):pagina = leer_doc.pages[i]pag_guardar.append(pagina.extract_text())#Imprimir en consolaprint("INICIO DEL TEXTO -----------------------\n")for i in range(pag):print(pag_guardar[i] + "\n\n FÍN Página " + str(i+1) + " -------------------------------\n\n")print("\nFIN DEL TEXTO----------------------")
Puedes comparar este script con el que nos sirvió para acceder a las múltiples páginas del documento y cargarlas sobre la variable texto (4) y compararlo con el actual:
- Observarás que ahora declaramos una lista para contener las diferentes páginas (pag_guardar= []) y no una variable.
- Y lo que es más importante, ahora cargamos cada una de las páginas sobre cada uno de los elementos de la lista mediante la función append() (pag_guardar.append(pagina.extract_text())), siendo ésta la instrucción que sustituye a la que nos sirvió en su momento (texto += pagina.extract_text())
El resultado es un script realmente sencillo que después podemos "adornar" de diferentes maneras, incluyendo el que aquí presentamos en la parte final del script, que consiste en recorrer la lista mediante un bucle, mostrando página a página (5)
NOTAS
(1) Empecé por esta cuestión por ser evidente la carencia y a la vez por ser sencilla la solución. Desgraciadamente comprobamos que no es definitiva; pero sí prometedora (cuando funciona) para automatizar procedimientos de creación de soportes que emplean imágenes, como, por ejemplo, la creación de presentaciones.
(2) Aquí, por el momento, nos vamos a contentar con hacer posible la segmentación del documento en páginas, siguiendo la misma división que presenta el texto original.
(4) Recuerda la instrucción que empleamos en ese script: texto += pagina.extract_text()
(5) No se trata ahora de plantear las múltiples formas con las que podemos trabajar con el contenido de cada página, pero, además del presentado se me ocurre, por ejemplo, el acceso selectivo a determinadas páginas.

No hay comentarios:
Publicar un comentario
Comenta esta entrada