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:
- Leer el archivo PDF.
- Parsear el contenido del PDF.
- 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:
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
# 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 aextract_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:
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í:
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.
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.
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).
GO TO FULL VERSION