Converter tabelas de PDF em Markdown

Tabelas são a coisa mais difícil de tirar intacta de um PDF, porque o PDF não faz ideia de que contém uma. Nos dados não existem linhas, nem células, nem bordas: só texto posicionado em coordenadas que por acaso se alinham. Recuperar uma tabela é detectar esse alinhamento.

Como extraio uma tabela de um PDF para Markdown?

Solte o PDF no conversor desta página. Texto que se alinha em colunas constantes ao longo de linhas consecutivas é detectado como tabela e gerado como tabela Markdown no formato GFM.

Por que copiar uma tabela de PDF resulta numa bagunça?

Copiar devolve o texto na ordem em que foi desenhado, não na ordem de leitura, e um PDF não guarda limites de célula. A estrutura precisa ser reconstruída a partir das coordenadas, coisa que copiar e colar nem tenta.

Solte seu PDF aqui

ou escolha um arquivo do seu computador

Somente PDF · até 50 MB

Como converter uma tabela de PDF em Markdown

  1. 1

    Converta o documento

    Solte o PDF no conversor. As tabelas são detectadas automaticamente junto com o resto do documento.

  2. 2

    Confira o número de colunas

    Compare a pré-visualização com o original. Uma coluna sempre vazia costuma indicar que um cabeçalho ocupava duas colunas no documento de origem.

  3. 3

    Corrija o que escapou

    Edite o Markdown direto no painel da esquerda. Tabelas em pipe são texto puro, então acrescentar ou juntar uma célula é uma edição mínima.

  4. 4

    Leve para o destino

    Cole a tabela no GitHub, no Obsidian, num README ou num site de documentação. O formato GFM é exibido corretamente em todos eles.

Como funciona a detecção de tabelas

Cada trecho de texto de um PDF carrega uma coordenada horizontal e uma largura. O conversor divide cada linha onde o espaço entre dois trechos passa de aproximadamente uma vez e meia a altura da fonte do corpo de texto: bem mais que um espaço entre palavras e bem menos que o vão entre colunas.

Isso sozinho erraria em parágrafos justificados, que também têm espaços largos. Por isso o detector acrescenta uma segunda condição: os espaços precisam cair no mesmo ponto em linhas consecutivas. Espaçamento irregular entre palavras nunca se alinha de uma linha para outra; uma coluna de verdade sempre alinha.

Um bloco só é gerado como tabela quando pelo menos duas linhas consecutivas compartilham pelo menos duas posições de coluna recorrentes. Todo o resto continua como texto de parágrafo.

O que sobrevive e o que se perde

A sintaxe de tabelas do Markdown é propositalmente mínima, o que impõe um teto ao que qualquer conversor consegue preservar.

  • Preservado: a estrutura de colunas, a ordem das linhas, o texto das células e o negrito ou itálico dentro de uma célula
  • Preservado: a primeira linha é tratada como cabeçalho, como quase todo documento organiza uma tabela
  • Perdido: células mescladas, que não têm equivalente em Markdown e se achatam na coluna da esquerda
  • Perdido: tabelas aninhadas, cores de fundo, bordas e largura das colunas
  • Aproximado: uma célula cujo texto ocupa várias linhas é unida numa célula só

Quando a detecção tem dificuldade

O caso difícil são as tabelas sem alinhamento constante: quando cada célula é centralizada individualmente, ou quando uma coluna de números alinhada à direita fica colada numa vizinha alinhada à esquerda com pouco espaço entre elas. O detector é ajustado para preferir deixar o texto como parágrafo a inventar uma tabela que nunca existiu, porque uma tabela errada dá mais trabalho para arrumar do que texto puro.

Demonstrativos financeiros, listas de preços, fichas técnicas e tabelas comparativas costumam converter bem. Formulários densos com campos em caixas não, já que a estrutura deles vem de retângulos desenhados e não do alinhamento do texto.

Perguntas frequentes

Posso extrair só as tabelas e pular o resto?
Não automaticamente. O documento inteiro é convertido, com as tabelas no lugar. Como a saída é texto puro, apagar os parágrafos ao redor leva segundos.
E as tabelas que ocupam várias páginas?
Cada página é detectada separadamente, então uma tabela que atravessa a quebra de página gera duas tabelas. Juntar é questão de apagar a linha de cabeçalho repetida.
Ele lida bem com colunas de números alinhadas à direita?
Quase sempre. A detecção agrupa células pela borda esquerda, então uma coluna alinhada à direita com números de larguras diferentes pode se dividir. Confira os totais com o original.
Dá para obter CSV em vez de Markdown?
Por enquanto não. Uma tabela Markdown vira CSV facilmente numa planilha ou com um script curto, e a exportação em CSV está no roteiro.

Conversores relacionados