MarkItDown: A ferramenta da Microsoft que converte qualquer documento em contexto para sua IA

Se você está construindo um pipeline de RAG, um assistente com IA, ou qualquer fluxo onde um LLM precisa ler documentos reais, você já esbarrou na mesma parede: seus dados não estão limpos. São um Word de RH, um PDF do fornecedor, um PowerPoint do planejamento do trimestre passado. Nada disso está pronto para um LLM por padrão.

A Microsoft tem uma resposta para isso. MarkItDown é uma biblioteca Python open-source que converte praticamente qualquer formato de documento em Markdown limpo e estruturado — o formato que os LLMs realmente entendem bem. Nasceu dentro da Microsoft Research como ferramenta interna para o framework multi-agente AutoGen, foi publicada como open-source no final de 2024 e desde então acumulou mais de 91.000 estrelas no GitHub. A última versão estável, v0.1.5, saiu em 20 de fevereiro de 2026.


Por que Markdown para LLMs?

Não é arbitrário. Markdown ocupa um lugar intermediário ideal: é próximo ao texto plano (pouco overhead de tokens), mas preserva a estrutura do documento — cabeçalhos, listas, tabelas, links. Os modelos mainstream são treinados extensamente em Markdown e o lidam de forma nativa. Quando você manda para um LLM um PDF cru cheio de espaços em branco desordenados e hierarquia perdida, a qualidade da recuperação cai. Quando você manda Markdown limpo, o chunking, o embedding e as citações funcionam muito melhor.

O trabalho do MarkItDown é tender essa ponte entre o material fonte desordenado e um input confiável para o LLM.


O Que Converte

A biblioteca lida com uma ampla variedade de formatos de entrada:

  • Documentos Office: DOCX, PPTX, XLSX, XLS
  • PDFs: via pdfminer (PDFs com camada de texto; o OCR requer o plugin)
  • Imagens: JPG, PNG — com descrição gerada por LLM quando você fornece um cliente
  • Áudio: WAV, MP3 — via transcrição de voz
  • Conteúdo web: HTML, URLs
  • Dados estruturados: CSV, JSON, XML
  • Arquivos comprimidos: ZIP (processa o conteúdo de forma recursiva)

A arquitetura é limpa: cada formato tem uma classe DocumentConverter dedicada, registrada ao iniciar. O processamento ocorre completamente na memória — sem arquivos temporários — o que importa tanto para o desempenho quanto para a segurança.


Como Instalar MarkItDown? (em 4 linhas)

pip install 'markitdown[all]'
from markitdown import MarkItDown

md = MarkItDown()

result = md.convert("informe_q4.xlsx")
print(result.text_content)

Isso é tudo. result.text_content te retorna Markdown estruturado, preservando nomes de abas, linhas de tabela e qualquer cabeçalho.


Como Usar MarkItDown a Partir do Terminal?

MarkItDown também vem como ferramenta de linha de comando, útil para pré-processamento em lote:

# Converter um arquivo individual
markitdown documento.pdf -o output.md

# Converter e fazer pipe para outra ferramenta
markitdown reporte.docx | grep "## "

Descrição de Imagens com um Cliente LLM

Para imagens (e áudio), MarkItDown pode chamar um LLM para gerar uma descrição — útil quando você precisa que as imagens dentro de um documento sejam semanticamente pesquisáveis:

from markitdown import MarkItDown
from openai import OpenAI

client = OpenAI()
md = MarkItDown(llm_client=client, llm_model="gpt-4o")

result = md.convert("diagrama_arquitetura.png")
print(result.text_content)
# Retorna uma descrição estruturada do conteúdo da imagem

Isso funciona com qualquer cliente compatível com OpenAI — você não está preso à OpenAI especificamente.


O Plugin de OCR

Para PDFs e arquivos Office que contêm imagens com texto incorporado, o plugin markitdown-ocr estende a biblioteca base com OCR baseado em LLM Vision:

pip install 'markitdown[all]' markitdown-ocr
from markitdown import MarkItDown
from openai import OpenAI

md = MarkItDown(
    enable_plugins=True,
    llm_client=OpenAI(),
    llm_model="gpt-4o",
)

result = md.convert("contrato_escaneado.pdf")
print(result.text_content)

Se llm_client não for fornecido, o plugin é carregado, mas silenciosamente volta ao extrator de texto padrão.


Como Conectar MarkItDown ao Claude? (passo a passo)

Uma das incorporações mais interessantes do ciclo v0.1.x: MarkItDown agora vem com um servidor MCP oficial (markitdown-mcp), o que significa que você pode expor a conversão de documentos como uma ferramenta dentro do Claude Desktop ou qualquer cliente compatível com MCP.

Na prática: em vez de pré-processar arquivos manualmente antes de mandá-los ao Claude, sua configuração de MCP lida com a conversão em tempo real. Claude pode chamar MarkItDown, obter Markdown estruturado de volta, e raciocinar sobre o conteúdo sem que você lidasse com a etapa do pipeline de forma manual.

1. Instale o servidor MCP

pip install markitdown-mcp

Teste diretamente do terminal — usa STDIO por padrão:

markitdown-mcp

2. Para Claude Desktop, a Microsoft recomenda a imagem Docker

Constru a imagem a partir do repositório do MarkItDown:

docker build -t markitdown-mcp:latest .

E adicione esta entrada ao seu claude_desktop_config.json:

{
  "mcpServers": {
    "markitdown": {
      "command": "docker",
      "args": ["run", "--rm", "-i", "markitdown-mcp:latest"]
    }
  }
}

3. Se você precisar converter arquivos locais, monte o diretório no contêiner:

docker run -it --rm -v /home/usuario/data:/workdir markitdown-mcp:latest

Tudo que estiver em data fica acessível como /workdir/arquivo.pdf dentro do contêiner.

O servidor expõe uma única ferramenta: convert_to_markdown(uri), que aceita URIs http:, https:, file: e data:.

:warning: markitdown-mcp é pensado para uso local, com agentes de confiança. Por padrão se vincula a localhost e não fica exposto à rede. Não o vincule a outras interfaces sem entender as implicações de segurança.


Onde MarkItDown se Encaixa (e Onde Não)

MarkItDown é a ferramenta correta quando você precisa de conversão rápida e leve para consumo por LLM — pipelines de RAG, indexação de documentos, assistentes de IA que precisam ler arquivos de negócio.

Não é a ferramenta correta quando:

  • Você precisa de formato de alta fidelidade para leitores humanos → use Pandoc em vez disso
  • Seus documentos são PDFs científicos complexos com tabelas, equações e desafios de ordem de leitura → Docling (IBM) os lida melhor
  • Você está construindo um pipeline ETL de documentos em larga escala com 40+ conectores → Unstructured.io é mais apropriado aí

Saber onde termina cada ferramenta é tão útil quanto saber o que ela faz.


v0.1.5: O Que Mudou

A última versão (20 de fevereiro de 2026) atendeu duas dependências de segurança:

  • Atualiza mammoth para 1.11.0 para resolver CVE-2025-11849
  • Atualiza pdfminer.six para 20251107 para resolver GHSA-wf5f-4jwr-ppcp

Também em versões recentes: mudança de minidom para defusedxml no parsing de XML — outro movimento de hardening de segurança. Se você está rodando uma versão mais antiga do MarkItDown em qualquer ambiente que processa documentos não confiáveis, vale a pena atualizar.


A Conclusão Prática

A etapa de pré-processamento em pipelines de IA é chata, mas é onde se ganha ou se perde muita qualidade. MarkItDown é uma biblioteca bem mantida, com licença MIT, de um time que a construiu para uso real em produção dentro de um dos maiores grupos de pesquisa de IA do mundo. Ela lida com a camada de conversão desordenada para que você possa se focar no que o LLM faz com os dados.

Instale-a, aponte-a para seu acervo de documentos, e mande para seu LLM algo com o qual ele realmente possa trabalhar.

pip install 'markitdown[all]'

GitHub: microsoft/markitdown


Como você está lidando com o pré-processamento de documentos em seus projetos de IA? Você está construindo algo customizado ou conta com bibliotecas como essa? Compartilhe sua experiência nos comentários :backhand_index_pointing_down: