CodeGym /Curso de Java /Python SELF ES /Extracción de texto de documentos PDF para análisis de da...

Extracción de texto de documentos PDF para análisis de datos

Python SELF ES
Nivel 43 , Lección 2
Disponible

1. Extracción de texto

Casi todos nos hemos enfrentado a situaciones en las que necesitamos información de un documento PDF, ya sea un informe contable, una investigación o incluso nuestro libro electrónico favorito. Pero, ¿qué hacemos si necesitamos extraer datos automáticamente en lugar de hacerlo manualmente? Aquí es donde entra Python y su increíble biblioteca PyPDF2.

Pasos principales para extraer texto

Para extraer texto de un PDF con éxito, es necesario seguir algunos pasos simples:

  1. Leer el archivo PDF.
  2. Parsear el contenido del PDF.
  3. Extraer el texto para su posterior análisis.

2. Lectura y parsing de archivos PDF

Veamos cómo abrir y leer un documento PDF en Python. Primero necesitamos importar PyPDF2:

Python

import PyPDF2

Ahora abrimos el documento PDF. Supongamos que tenemos un archivo sample.pdf que queremos analizar. Carguémoslo y verifiquemos cuántas páginas tiene.

Carga del archivo PDF

Python

# Apertura del archivo PDF
with open("sample.pdf", "rb") as pdf_file:
    # Creamos un objeto PDF Reader
    pdf_reader = PyPDF2.PdfReader(pdf_file)

    # Obtenemos el número total de páginas
    num_pages = len(pdf_reader.pages)
    print(f"Número total de páginas en el documento: {num_pages}")

Extracción de texto

Ahora que el documento PDF está abierto, extraigamos texto de él. Para hacer esto necesitamos:

  • PdfReader abre el archivo PDF para leer.
  • Usamos un bucle for para recorrer todas las páginas y llamar a extract_text() para extraer el texto.
  • El texto extraído se guarda en la variable text y puede ser mostrado o procesado.

Un ejemplo de cómo podría verse esto es:

Python

import PyPDF2

# Apertura del archivo PDF
with open("sample.pdf", "rb") as pdf_file:
    pdf_reader = PyPDF2.PdfReader(pdf_file)
    text = ""
    
    # Extracción de texto de cada página
    for page_num in range(len(pdf_reader.pages)):
        page = pdf_reader.pages[page_num]
        text += page.extract_text() + "\n"

print(text)

Extracción de texto de páginas específicas

¿Qué pasa si solo necesitamos texto de una página específica? Por ejemplo, supongamos que queremos extraer texto solo de la tercera página. Esto se hace así:

Python

import PyPDF2

with open("sample.pdf", "rb") as pdf_file:
    pdf_reader = PyPDF2.PdfReader(pdf_file)
    page = pdf_reader.pages[2]  # Extraemos el texto de la tercera página (índice 2)
    text = page.extract_text()

print(text)

Este ejemplo permite extraer texto solo de la tercera página, lo que puede ser útil si el documento tiene muchas páginas y deseas limitar el procesamiento. PyPDF2 usa la numeración de páginas comenzando desde 0.

3. Automatización del procesamiento de texto desde PDF

Una vez que se extrae el texto de un PDF, se puede analizar y procesar para un análisis de datos más profundo. PyPDF2 permite automatizar este proceso, lo cual es especialmente útil cuando se trabaja con grandes volúmenes de documentos.

Extracción y almacenamiento de texto en un archivo separado

Para facilitar el análisis posterior, se puede guardar el texto extraído en un archivo de texto. Esto simplificará su procesamiento posterior.

Python

import PyPDF2

# Apertura del archivo PDF
with open("sample.pdf", "rb") as pdf_file:
    pdf_reader = PyPDF2.PdfReader(pdf_file)
    text = ""
    
    for page_num in range(len(pdf_reader.pages)):
        page = pdf_reader.pages[page_num]
        text += page.extract_text() + "\n"

# Almacenamiento del texto extraído en un archivo
with open("extracted_text.txt", "w", encoding="utf-8") as text_file:
    text_file.write(text)

Procesamiento y análisis del texto extraído

Una vez que se extrae el texto, se puede analizar usando Python. Para esto se suelen usar bibliotecas como re (expresiones regulares), nltk (Natural Language Toolkit) o pandas.

Conteo de palabras y búsqueda de frases clave

Supongamos que tenemos un archivo de texto extracted_text.txt, y queremos contar la cantidad de ciertas palabras y frases en el documento.

Python

import re

# Apertura del texto extraído
with open("extracted_text.txt", "r", encoding="utf-8") as text_file:
    text = text_file.read()

# Búsqueda y conteo de palabras clave
keywords = ["reporte", "datos", "análisis"]
keyword_counts = {keyword: len(re.findall(keyword, text, re.IGNORECASE)) for keyword in keywords}

print("Frecuencia de palabras clave:", keyword_counts)

Aquí:

  • Abrimos el texto guardado.
  • Usamos expresiones regulares para contar palabras clave (sin importar mayúsculas o minúsculas).
  • Obtenemos la cantidad de menciones de cada palabra clave.

4. Ventajas y limitaciones de PyPDF2

Ventajas:

  • Facilidad de uso para extracción básica de texto y procesamiento de páginas.
  • Soporte para operaciones principales: lectura de texto, unión y división de documentos.
  • Fácil integración con otras bibliotecas de Python.

Limitaciones:

  • PyPDF2 no siempre extrae correctamente texto de PDFs complejos con formatos multinivel, tablas e imágenes.
  • Falta de soporte para extracción directa de imágenes y tablas.
  • No soporta el procesamiento de archivos encriptados o protegidos con contraseña (aunque se puede intentar descifrar si se conoce la contraseña).
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION