Tablas vs texto plano: Por qué importa
Antes de elegir un método, verifique qué tipo de datos contiene su PDF. El enfoque depende completamente de la estructura del PDF:
| Tipo de PDF | Qué contiene | Mejor método |
|---|---|---|
| Tablas nativas | PDF basado en texto con bordes de tabla visibles y líneas de cuadrícula | Cualquier método — CleverUtils es el más rápido |
| Tablas sin bordes | Columnas alineadas por espaciado, sin cuadrícula visible | Python (pdfplumber) para precisión |
| PDF escaneado | Imagen de una página impresa (sin texto seleccionable) | CleverUtils con OCR habilitado |
| Contenido mixto | Tablas + párrafos + encabezados en la misma página | Python para extracción selectiva |
Prueba rápida: abra su PDF e intente seleccionar texto con su ratón. Si puede resaltar palabras individuales, es un PDF nativo (basado en texto). Si la página completa se selecciona como un bloque, es una imagen escaneada — necesitará OCR.
Método 1: Convertir en línea con CleverUtils
La opción más rápida para la mayoría de usuarios. CleverUtils maneja PDFs nativos, tablas sin bordes e incluso documentos escaneados con OCR. Sin instalación, sin cuenta requerida.
- Vaya a cleverutils.com/es/pdf-to-csv
- Cargue su PDF — arrastre y suelte, o haga clic en « Elegir archivo PDF ». Máx. 100 MB.
- Para PDF escaneados: seleccione su idioma OCR en la lista desplegable antes de convertir.
- Haga clic en « Convertir a CSV » — la conversión toma unos segundos para la mayoría de archivos.
- Descargue el CSV — ábralo en Excel, Google Sheets o importe en su base de datos.
CleverUtils procesa todas las páginas de su PDF y combina datos extraídos en un único archivo CSV. Los archivos se cifran durante la transferencia y se eliminan automáticamente en 2 horas.
Método 2: Python con pdfplumber
pdfplumber es la mejor biblioteca Python para extraer tablas de PDFs. Entiende tablas con y sin bordes, le da coordenadas para cada carácter, y le permite ajustar parámetros de extracción.
Instalar pdfplumber
pip install pdfplumber
Extracción básica de tablas
Este script extrae todas las tablas de cada página de un PDF y las escribe en un archivo CSV:
import pdfplumber
import csv
with pdfplumber.open("invoice.pdf") as pdf:
all_rows = []
for page in pdf.pages:
table = page.extract_table()
if table:
all_rows.extend(table)
with open("output.csv", "w", newline="") as f:
writer = csv.writer(f)
writer.writerows(all_rows)
print(f"Extracted {len(all_rows)} rows to output.csv")
Manejo de tablas sin bordes
Cuando las tablas no tienen bordes visibles, pdfplumber aún puede detectar columnas utilizando posiciones de caracteres. Use extract_table() con configuración personalizada:
# Para PDFs sin bordes de tabla visibles
table_settings = {
"vertical_strategy": "text",
"horizontal_strategy": "text",
"snap_y_tolerance": 5,
"intersection_x_tolerance": 15,
}
with pdfplumber.open("report.pdf") as pdf:
page = pdf.pages[0]
table = page.extract_table(table_settings)
for row in table:
print(row)
Convertir múltiples PDFs por lotes
import pdfplumber
import csv
from pathlib import Path
for pdf_file in Path("./invoices").glob("*.pdf"):
csv_path = pdf_file.with_suffix(".csv")
with pdfplumber.open(pdf_file) as pdf:
rows = []
for page in pdf.pages:
table = page.extract_table()
if table:
rows.extend(table)
with open(csv_path, "w", newline="") as f:
csv.writer(f).writerows(rows)
print(f"{pdf_file.name} -> {csv_path.name} ({len(rows)} rows)")
Método 3: Microsoft Excel (Obtener datos)
Microsoft 365 (Excel para 365) puede importar archivos PDF directamente usando la función Power Query / Obtener datos. Esta opción no está disponible en Excel 2016 o 2019 independiente — requiere una suscripción activa a Microsoft 365. Funciona bien para tablas simples y bien estructuradas.
- Abra Excel y cree un nuevo libro en blanco.
- Vaya a Datos → Obtener datos → Desde archivo → Desde PDF.
- Seleccione su PDF del navegador de archivos.
- Elija la(s) tabla(s) que desea importar desde el panel Navegador. Excel mostrará una vista previa de cada tabla detectada.
- Haga clic en « Cargar » para importar los datos en su hoja de cálculo.
- Guardar como CSV: Archivo → Guardar como → elija « CSV (delimitado por comas) (*.csv) » como formato.
Limitación: la importación de PDF en Excel funciona mejor con tablas simples y delimitadas. Tiene dificultades con diseños multicolumna, celdas combinadas y tablas sin bordes. Para PDF complejos, use CleverUtils o Python en su lugar.
Método 4: Google Sheets
Google Sheets no importa PDFs directamente, pero puede usar el OCR integrado de Google Drive para extraer el texto primero, luego copiarlo en Sheets.
- Cargue el PDF en Google Drive.
- Haga clic derecho en el PDF → Abrir con → Google Docs. Google usará OCR en el archivo y lo convertirá a un documento editable.
- Seleccione los datos de la tabla en el Google Doc y cópielos (Ctrl+C / Cmd+C).
- Abra una nueva Google Sheet y pegue (Ctrl+V / Cmd+V). Los datos llenarán las celdas.
- Limpie los datos — ajuste anchos de columna, elimine filas adicionales, corrija errores de OCR.
- Descargue como CSV: Archivo → Descargar → Valores separados por comas (.csv).
Consejo: El OCR de Google funciona sorprendentemente bien para PDF escaneados. Pero la estructura de la tabla puede no sobrevivir al paso de copiar-pegar intacta. Para mejores resultados con datos tabulares, use el convertidor directo PDF a CSV de CleverUtils.
Comparación de métodos
| Característica | CleverUtils | Python | Excel | Google Sheets |
|---|---|---|---|---|
| Dificultad | Fácil | Avanzado | Medio | Fácil |
| Instalación | Ninguna (navegador) | Python + pip | Microsoft 365 | Ninguna (navegador) |
| Tablas delimitadas | Excelente | Excelente | Bueno | Justo |
| Tablas sin bordes | Bueno | Excelente | Malo | Malo |
| PDF escaneados (OCR) | Integrado | Con pytesseract | No soportado | Vía Google Drive |
| Procesamiento por lotes | Un archivo a la vez | Ilimitado | Un archivo a la vez | Un archivo a la vez |
| Mejor para | Conversiones puntuales rápidas | Automatización & PDF complejos | Usuarios de Excel con tablas simples | Extracción rápida con OCR |
Consejos para una salida CSV limpia
- Verifique la fila de encabezado. Algunos PDF tienen encabezados multilínea que se dividen en filas CSV separadas. Después de la conversión, verifique que sus encabezados de columna estén en una sola fila.
- Cuidado con las celdas combinadas. Las tablas PDF a menudo combinan celdas para títulos de grupo. Estos suelen convertirse en celdas vacías en CSV. Complételos manualmente o con un script después de la extracción.
- Maneje caracteres especiales. Las comas, comillas y saltos de línea dentro de valores de celda pueden romper el análisis de CSV. Los buenos convertidores (CleverUtils, pdfplumber) manejan el escape automáticamente. Si el suyo no, envuelva los valores entre comillas dobles.
- La codificación importa. Use codificación UTF-8 al guardar CSV para preservar caracteres acentuados, símbolos de moneda y texto no latino. En Python:
open("out.csv", "w", encoding="utf-8-sig")(el-sigañade una BOM que ayuda a Excel a detectar UTF-8). - Tablas multipágina. Cuando una tabla abarca múltiples páginas PDF, algunas herramientas extraen cada página como una tabla separada. En Python, omita la fila de encabezado en páginas posteriores para evitar duplicados.
Problemas comunes y soluciones
| Problema | Causa | Solución |
|---|---|---|
| Salida CSV vacía | PDF escaneado (basado en imagen) | Habilite OCR en CleverUtils o use pytesseract |
| Todos los datos en una columna | Excel abrió CSV con delimitador incorrecto | Use Datos → Texto a columnas → Delimitado → Coma |
| Columnas desalineadas | Tabla sin bordes con espaciado irregular | Use pdfplumber con vertical_strategy: "text" |
| Caracteres distorsionados | Codificación incorrecta (generalmente Latin-1 vs UTF-8) | Abra en editor de texto, guarde como UTF-8 |
| Encabezados duplicados | Tabla multipágina con encabezados repetidos | En Python, omita fila 0 en páginas después de la primera |