Tabelas vs texto simples: Por que importa
Antes de escolher um método, verifique que tipo de dados seu PDF contém. A abordagem depende totalmente da estrutura do PDF:
| Tipo de PDF | O que contém | Melhor método |
|---|---|---|
| Tabelas nativas | PDF baseado em texto com bordas de tabela visíveis e linhas de grade | Qualquer método — CleverUtils é o mais rápido |
| Tabelas sem bordas | Colunas alinhadas por espaçamento, sem grade visível | Python (pdfplumber) para precisão |
| PDF digitalizado | Imagem de uma página impressa (sem texto selecionável) | CleverUtils com OCR ativado |
| Conteúdo misto | Tabelas + parágrafos + cabeçalhos na mesma página | Python para extração seletiva |
Teste rápido: abra seu PDF e tente selecionar texto com o mouse. Se você puder destacar palavras individuais, é um PDF nativo (baseado em texto). Se a página inteira for selecionada como um bloco, é uma imagem digitalizada — você precisará de OCR.
Método 1: Converter online com CleverUtils
A opção mais rápida para a maioria dos usuários. CleverUtils lida com PDFs nativos, tabelas sem bordas e até documentos digitalizados com OCR. Sem instalação, sem conta necessária.
- Vá para cleverutils.com/pt/pdf-to-csv
- Carregue seu PDF — arraste e solte, ou clique em « Escolher arquivo PDF ». Máx. 100 MB.
- Para PDFs digitalizados: selecione seu idioma OCR na lista suspensa antes de converter.
- Clique em « Converter para CSV » — a conversão leva alguns segundos para a maioria dos arquivos.
- Baixe o CSV — abra-o no Excel, Google Sheets ou importe em seu banco de dados.
CleverUtils processa todas as páginas do seu PDF e combina os dados extraídos em um único arquivo CSV. Os arquivos são criptografados durante a transferência e excluídos automaticamente em 2 horas.
Método 2: Python com pdfplumber
pdfplumber é a melhor biblioteca Python para extrair tabelas de PDFs. Ela entende tabelas com e sem bordas, fornece coordenadas para cada caractere e permite ajustar parâmetros de extração.
Instalar pdfplumber
pip install pdfplumber
Extração básica de tabelas
Este script extrai todas as tabelas de cada página de um PDF e as escreve em um arquivo 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")
Lidando com tabelas sem bordas
Quando as tabelas não têm bordas visíveis, pdfplumber ainda pode detectar colunas usando posições de caracteres. Use extract_table() com configurações personalizadas:
# Para PDFs sem bordas de tabela visíveis
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)
Converter múltiplos PDFs em lote
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 (Obter dados)
Microsoft 365 (Excel para 365) pode importar arquivos PDF diretamente usando o recurso Power Query / Obter dados. Esta opção não está disponível no Excel 2016 ou 2019 independente — requer uma assinatura ativa do Microsoft 365. Funciona bem para tabelas simples e bem estruturadas.
- Abra Excel e crie uma nova pasta de trabalho em branco.
- Vá para Dados → Obter dados → De arquivo → De PDF.
- Selecione seu PDF do navegador de arquivos.
- Escolha a(s) tabela(s) que deseja importar do painel Navegador. Excel mostrará uma visualização de cada tabela detectada.
- Clique em « Carregar » para importar os dados na sua planilha.
- Salvar como CSV: Arquivo → Salvar como → escolha « CSV (separado por vírgula) (*.csv) » como formato.
Limitação: a importação de PDF no Excel funciona melhor com tabelas simples e delimitadas. Tem dificuldades com layouts multicoluna, células mescladas e tabelas sem bordas. Para PDFs complexos, use CleverUtils ou Python em vez disso.
Método 4: Google Sheets
Google Sheets não importa PDFs diretamente, mas você pode usar o OCR integrado do Google Drive para extrair o texto primeiro e depois copiá-lo para o Sheets.
- Carregue o PDF no Google Drive.
- Clique com botão direito no PDF → Abrir com → Google Docs. Google usará OCR no arquivo e o converterá em um documento editável.
- Selecione os dados da tabela no Google Doc e copie (Ctrl+C / Cmd+C).
- Abra uma nova Google Sheet e cole (Ctrl+V / Cmd+V). Os dados preencherão as células.
- Limpe os dados — ajuste larguras de coluna, remova linhas extras, corrija erros de OCR.
- Baixar como CSV: Arquivo → Baixar → Valores separados por vírgula (.csv).
Dica: O OCR do Google funciona surpreendentemente bem para PDFs digitalizados. Mas a estrutura da tabela pode não sobreviver à etapa de copiar e colar intacta. Para melhores resultados com dados tabulares, use o conversor direto PDF para CSV do CleverUtils.
Comparação de métodos
| Recurso | CleverUtils | Python | Excel | Google Sheets |
|---|---|---|---|---|
| Dificuldade | Fácil | Avançado | Médio | Fácil |
| Instalação | Nenhuma (navegador) | Python + pip | Microsoft 365 | Nenhuma (navegador) |
| Tabelas delimitadas | Excelente | Excelente | Bom | Justo |
| Tabelas sem bordas | Bom | Excelente | Ruim | Ruim |
| PDFs digitalizados (OCR) | Integrado | Com pytesseract | Não suportado | Via Google Drive |
| Processamento em lote | Um arquivo por vez | Ilimitado | Um arquivo por vez | Um arquivo por vez |
| Melhor para | Conversões rápidas e únicas | Automação & PDFs complexos | Usuários do Excel com tabelas simples | Extração rápida com OCR |
Dicas para saída CSV limpa
- Verifique a linha de cabeçalho. Alguns PDFs têm cabeçalhos multilinhas que são divididos em linhas CSV separadas. Após a conversão, verifique se os cabeçalhos das colunas estão em uma única linha.
- Cuidado com células mescladas. Tabelas PDF frequentemente mesclam células para títulos de grupo. Estes geralmente se tornam células vazias em CSV. Preencha-os manualmente ou com um script após a extração.
- Lidar com caracteres especiais. Vírgulas, aspas e quebras de linha dentro de valores de célula podem quebrar a análise de CSV. Bons conversores (CleverUtils, pdfplumber) lidam automaticamente com escape. Se o seu não fizer, coloque valores entre aspas duplas.
- Codificação é importante. Use codificação UTF-8 ao salvar CSV para preservar caracteres acentuados, símbolos de moeda e texto não-latino. Em Python:
open("out.csv", "w", encoding="utf-8-sig")(o-sigadiciona uma BOM que ajuda Excel a detectar UTF-8). - Tabelas multipágina. Quando uma tabela abrange várias páginas de PDF, algumas ferramentas extraem cada página como uma tabela separada. Em Python, pule a linha de cabeçalho nas páginas subsequentes para evitar duplicatas.
Problemas comuns e soluções
| Problema | Causa | Solução |
|---|---|---|
| Saída CSV vazia | PDF digitalizado (baseado em imagem) | Ative OCR em CleverUtils ou use pytesseract |
| Todos os dados em uma coluna | Excel abriu CSV com delimitador errado | Use Dados → Texto em colunas → Delimitado → Vírgula |
| Colunas desalinhadas | Tabela sem bordas com espaçamento irregular | Use pdfplumber com vertical_strategy: "text" |
| Caracteres corrompidos | Codificação incorreta (geralmente Latin-1 vs UTF-8) | Abra no editor de texto, salve como UTF-8 |
| Cabeçalhos duplicados | Tabela multipágina com cabeçalhos repetidos | Em Python, pule linha 0 nas páginas após a primeira |