Scripts locais

PDF para Markdown com Python

Atualizado em · Equipe pdftomd.tools

Converter PDF para Markdown com Python é coisa de um script no seu próprio computador. Este guia mostra trechos testados para duas bibliotecas de código aberto e uma ferramenta no navegador para os dias em que você prefere não instalar nada.

Um documento passa por um editor de código e sai como arquivo Markdown

Sem Python à mão? A ferramenta abaixo faz a mesma conversão de PDF para Markdown, sem instalação. Solte um arquivo com camada de texto e copie o resultado.

No navegador · sem upload

PDF de origem

Solte um PDF aqui ou clique para escolher

Só PDFs com texto. Digitalizações precisariam de OCR, e esta ferramenta não faz OCR.

Prévia do Markdown

O Markdown vai aparecer aqui.
Configuração

PDF para Markdown com Python: configuração em quatro passos

Um fluxo local, da instalação aos arquivos de saída.

  1. Um arquivo sendo arrastado para uma área de upload
    01

    Crie o ambiente

    Crie um ambiente virtual com python -m venv .venv e ative, para que as bibliotecas não caiam na instalação do sistema.

    Ver os trechos
  2. Pedaços de texto agrupados em linhas ordenadas
    02

    Instale uma biblioteca

    Rode pip install pymupdf4llm para uma saída Markdown geral, ou pip install pdfplumber se o que mais importa são as tabelas.

    Escolher biblioteca
  3. Prévia de Markdown com títulos e listas
    03

    Rode o script

    Copie um trecho desta página para um arquivo .py e aponte para o seu documento. Cada execução grava um arquivo .md que você pode abrir.

    Copiar um trecho
  4. Ícones de Markdown e documento ligados por setas
    04

    Confira a saída

    Compare o arquivo .md com o original e remova cabeçalhos e rodapés perdidos antes de o texto seguir para outro lugar.

    Comparar no navegador
Opções

Qual biblioteca Python usar de PDF para Markdown?

Não existe uma única melhor biblioteca para converter PDF para Markdown com Python; cada uma equilibra de um jeito velocidade, licença e tabelas. A pymupdf4llm é construída sobre o PyMuPDF, lê o layout e grava Markdown direto, incluindo títulos e tabelas com linhas. Por isso é uma escolha padrão sensata para notas e recuperação. A pdfplumber dá acesso mais fino a caracteres, linhas e células, então combina com scripts focados em dados de tabelas.

As duas são projetos de código aberto de terceiros, não produtos deste site. Para poucos documentos, a ferramenta no navegador desta página faz uma passada parecida sem instalação. Para centenas de arquivos em horários programados, um script Python local é a melhor escolha.

  • pymupdf4llm: de PDF para Markdown numa chamada só
  • pdfplumber: acesso preciso às células de tabelas com linhas
  • Ferramenta no navegador: sem instalação, sem upload

Limites que todas as abordagens têm

Nenhuma dessas opções lê digitalizações sozinha: a ferramenta no navegador não tem OCR, e as bibliotecas acima precisam de uma etapa de OCR separada para páginas que são só imagem. Células mescladas, tabelas giradas e layouts em duas colunas são difíceis para qualquer biblioteca Python e para a nossa ferramenta, então confira as tabelas à mão. Na ferramenta no navegador, tabelas sem borda precisam de pelo menos três linhas e a primeira linha sempre vira cabeçalho.

Navegador ou scriptComparação
Área de upload com um cadeado ao lado de um terminal com uma engrenagem
À esquerda, a ferramenta no navegador sem configuração; à direita, um script Python para tarefas automatizadas.
Trechos

Trechos de Python para converter PDF para Markdown

Testados com pymupdf4llm 1.28 e pdfplumber 0.11. Copie um e rode localmente.

Um arquivo com pymupdf4llm

Terceiros · AGPL

Rápido e atento ao layout: a saída mantém títulos e tabelas com linhas. O PyMuPDF é AGPL; confira os termos antes de incluir num produto fechado.

# pip install pymupdf4llm
import pathlib
import pymupdf4llm

md = pymupdf4llm.to_markdown("report.pdf")
pathlib.Path("report.md").write_text(md, encoding="utf-8")

Tabelas com pdfplumber

Terceiros · MIT

O melhor para tabelas com linhas. Por padrão só encontra tabelas com linhas desenhadas; grades sem borda precisam de ajustes próprios. A função auxiliar grava cada tabela como tabela com barras.

# pip install pdfplumber
import pdfplumber

def table_to_md(rows):
    rows = [[(c or "").replace("|", "\\|").strip() for c in r] for r in rows]
    head, body = rows[0], rows[1:]
    lines = ["| " + " | ".join(head) + " |", "|" + " --- |" * len(head)]
    lines += ["| " + " | ".join(r) + " |" for r in body]
    return "\n".join(lines)

with pdfplumber.open("invoice.pdf") as pdf:
    for page in pdf.pages:
        for table in page.extract_tables():
            print(table_to_md(table), end="\n\n")

Uma pasta inteira com pymupdf4llm

Terceiros · AGPL

Um loop: lê cada arquivo da pasta pdfs e grava um arquivo .md para cada entrada.

# pip install pymupdf4llm
import pathlib
import pymupdf4llm

out = pathlib.Path("markdown")
out.mkdir(exist_ok=True)
for pdf in sorted(pathlib.Path("pdfs").glob("*.pdf")):
    md = pymupdf4llm.to_markdown(str(pdf))
    (out / f"{pdf.stem}.md").write_text(md, encoding="utf-8")
    print("wrote", out / f"{pdf.stem}.md")
Usos

Onde um script Python faz sentido

Três tarefas em que vale a pena programar.

Local primeiro
Processamento local no navegador

Script ou navegador: seus arquivos ficam no seu computador

Um script local não manda seus arquivos para lugar nenhum, e a nossa ferramenta no navegador também não: a conversão de PDF para Markdown roda com pdf.js na página, e o arquivo nunca chega aos nossos servidores.

Scripts rodam no seu computadorA ferramenta no navegador não envia nadaOpções de código aberto
Outra direção
Seta de mão dupla entre um ícone de Markdown e um de documento

Transformar Markdown em páginas de novo

Depois de uma rodada com Python, talvez você precise de uma versão para imprimir. A ferramenta do outro lado transforma Markdown em páginas A4 no navegador.

Ferramentas

Ferramentas relacionadas

Mais páginas sobre PDF para Markdown.

Prefere não configurar nada? Converta aqui seu PDF para Markdown

Solte um documento e copie texto limpo, ou rode os trechos acima no seu computador. Grátis e privado.

Converter um arquivo

Fontes

  1. pymupdf4llm to_markdown() reference — PDF4LLM docs
  2. PyMuPDF (AGPL-3.0) — GitHub
  3. pdfplumber (MIT) — GitHub
  4. pdf.js — Mozilla
Perguntas

Perguntas frequentes

Dúvidas sobre opções em Python, licenças e limites.

Qual é o jeito mais simples de converter PDF para Markdown com Python?

pymupdf4llm: instale com pip e chame to_markdown num arquivo. Você recebe Markdown com títulos, listas e tabelas com linhas.

Preciso de conta ou de chave?

Não. As bibliotecas são instaladas com pip e rodam offline, e a ferramenta no navegador não pede cadastro. Para scripts, use uma biblioteca Python local.

pymupdf4llm e pdfplumber são de vocês?

Não. Os dois são projetos de código aberto de terceiros. pymupdf4llm e PyMuPDF são AGPL; pdfplumber é MIT.

Um script Python consegue ler digitalizações?

Não sozinho. Páginas que são só imagem precisam antes de uma etapa de OCR. A nossa ferramenta no navegador também não tem OCR e avisa quando um arquivo parece digitalizado.

Como manter as tabelas ao converter PDF para Markdown?

pymupdf4llm grava tabelas com linhas como tabelas com barras; pdfplumber encontra as tabelas e a função auxiliar converte. Tabelas sem borda precisam de ajuste fino nos dois casos.

A ferramenta no navegador é igual a essas bibliotecas?

Não. Ela usa pdf.js e regras de layout próprias, então a saída pode ser diferente. Não precisa de instalação e serve para um punhado de arquivos.

Um script Python envia meus arquivos?

Não. Scripts locais rodam no seu computador, e a ferramenta no navegador desta página processa os arquivos sem enviá-los.