Todo projeto de RAG (Retrieval Augmented Generation) bate na mesma parede: como extrair texto limpo de PDFs? Bibliotecas tradicionais como PyPDF2 e pdfplumber falham com tabelas, fórmulas e layouts em múltiplas colunas. O Marker da VikParuchuri resolve isso usando modelos de IA — e está disponível em 1 clique no GPUBrasil.

⚡ Resumo

Marker converte PDFs em Markdown estruturado preservando tabelas, listas, equações (LaTeX) e ordem de leitura. Processa ~10 páginas/segundo em RTX 4090.

Por que Marker?

Marker é um pipeline open-source que usa Surya (layout detection) + modelos de OCR + heurísticas para gerar Markdown limpo. Diferente do pdftotext que solta texto bagunçado, o Marker preserva:

Casos de uso no Brasil

Hardware recomendado

💰 Custo no GPUBrasil

RTX 4090 (R$ 2,50/h) processa ~36.000 páginas/hora = R$ 0,00007 por página. Comparado a serviços OCR pagos (US$ 0,01-0,05/página), economia de 99%.

Deploy em 1 clique

Passo 1: Selecionar template

  1. Console → Templates → 📄 Documentos IA
  2. Clique em Marker
  3. GPU: RTX A4000 (econômico) ou RTX 4090 (produção)
  4. Clique em Iniciar

O template baixa os modelos do Marker (~3GB), expõe uma API HTTP na porta 8000 e abre uma Web UI Streamlit para teste manual.

Passo 2: Converter PDF via Web UI

Acesse https://<sua-instancia>.gpubrasil.com.br, faça upload do PDF e clique em Convert. Download do .md em segundos.

Passo 3: API HTTP

import requests

url = "https://sua-instancia.gpubrasil.com.br/api/convert"

with open("contrato.pdf", "rb") as f:
    files = {"file": f}
    r = requests.post(url, files=files)

result = r.json()
print(result["markdown"])

# Salvar como arquivo
with open("contrato.md", "w") as out:
    out.write(result["markdown"])

Passo 4: Integração com LangChain (RAG)

from langchain.text_splitter import MarkdownHeaderTextSplitter
from langchain.embeddings import HuggingFaceEmbeddings
from langchain.vectorstores import Qdrant
import requests

# 1. Converter PDF via Marker
def pdf_to_markdown(pdf_path):
    with open(pdf_path, "rb") as f:
        r = requests.post(
            "https://sua-instancia.gpubrasil.com.br/api/convert",
            files={"file": f}
        )
    return r.json()["markdown"]

md = pdf_to_markdown("manual.pdf")

# 2. Split por cabeçalhos (preserva contexto)
splitter = MarkdownHeaderTextSplitter(
    headers_to_split_on=[("#","h1"),("##","h2"),("###","h3")]
)
chunks = splitter.split_text(md)

# 3. Indexar em Qdrant
emb = HuggingFaceEmbeddings(model_name="BAAI/bge-m3")
vs = Qdrant.from_documents(chunks, emb, host="qdrant.gpubrasil.com.br")

print(f"Indexados {len(chunks)} chunks!")

Dicas para máxima qualidade

Marker vs alternativas

Converta milhares de PDFs por hora

Ganhe R$ 25 grátis no GPUBrasil e suba seu pipeline de ingestão em 90 segundos.

Começar Grátis →

Conclusão

Marker é a chave para qualquer RAG sério. Combinado com Qdrant + vLLM no GPUBrasil, você monta um stack completo de IA documental dentro do Brasil — sem enviar dados sensíveis para APIs externas, sem custos por página, escalando conforme demanda.

Próximos: Surya OCR · Qdrant vetor DB