LlamaParse - Cheatsheet de Parsing de Documento para RAG
LlamaParse é um serviço de parsing de documento da equipe LlamaIndex, construído especificamente para pipelines LLM e RAG. Seu foco é o caso difícil: PDFs com tabelas complexas, layouts multi-coluna, figuras e gráficos incorporados que extractores de texto genéricos achatam em texto inutilizável. Ele gera Markdown limpo que preserva estrutura, e sua característica distintiva é instruções de parsing em linguagem natural — você descreve como o documento é disposto e o que fazer com ele, em vez de configurar regras de extração.
LlamaParse é um serviço hospedado com um tier gratuito (chave de API necessária). Para parsing totalmente local veja Docling ou Marker.
Instalação
| Método | Comando |
|---|
| pip | pip install llama-parse |
| Com LlamaIndex | pip install llama-index llama-parse |
| Chave de API | export LLAMA_CLOUD_API_KEY="llx-..." |
| Verificar | python -c "from llama_parse import LlamaParse; print('ok')" |
Parsing Básico
from llama_parse import LlamaParse
parser = LlamaParse(result_type="markdown")
documents = parser.load_data("./report.pdf")
print(documents[0].text)
| Parâmetro | Propósito |
|---|
result_type | "markdown" (preserva estrutura) ou "text" |
num_workers | Processamento paralelo de página |
verbose | Saída de progresso |
language | Dica de linguagem de documento |
parsing_instruction | Orientação em linguagem natural (abaixo) |
Instruções de Parsing (o diferenciador)
parser = LlamaParse(
result_type="markdown",
parsing_instruction="""
Este é um relatório financeiro. Preserve todas as tabelas como tabelas Markdown.
Para cada gráfico, escreva uma descrição de um parágrafo da tendência que mostra.
Ignore cabeçalhos e rodapés de página.
""",
)
Você descreve o documento e o manuseio desejado em linguagem simples em vez de escrever código de extração — útil para layouts específicos de domínio (faturas, artigos científicos, contratos legais) onde parsers genéricos funcionam mal.
Async & Batch
import asyncio
async def parse_many(paths):
parser = LlamaParse(result_type="markdown", num_workers=8)
return await parser.aload_data(paths)
docs = asyncio.run(parse_many(["a.pdf", "b.pdf", "c.pdf"]))
| Método | Use |
|---|
load_data(path) | Arquivo único, síncrono |
aload_data([paths]) | Async, múltiplos arquivos |
get_json_result(path) | JSON estruturado com metadados de página |
get_images(...) | Extrai imagens incorporadas |
Entradas Suportadas
| Formato | Nota |
|---|
| PDF | Alvo primário, inclusive scanned (OCR) |
| DOCX / PPTX / XLSX | Formatos Office |
| HTML | Documentos web |
| Imagens | PNG/JPEG via OCR |
Fiando em um Pipeline de RAG
from llama_parse import LlamaParse
from llama_index.core import VectorStoreIndex
from llama_index.core.node_parser import MarkdownElementNodeParser
docs = LlamaParse(result_type="markdown").load_data("./manual.pdf")
# Chunking ciente de Markdown mantém tabelas e seções intactas
node_parser = MarkdownElementNodeParser()
nodes = node_parser.get_nodes_from_documents(docs)
index = VectorStoreIndex(nodes)
Emparelhar saída Markdown com um node parser ciente de Markdown é o ponto: tabelas sobrevivem ao parsing e chunking, que é onde a maioria dos pipelines RAG perde fatos tabulares.
Tratando Bem Tabelas
| Técnica | Por quê |
|---|
result_type="markdown" | Tabelas se tornam grids Markdown |
| Instrução de parsing para tabelas | Force manuseio consistente de tabela |
MarkdownElementNodeParser | Mantém uma tabela em um chunk |
| Serialização row-per-sentence | Torna linhas individuais recuperáveis |
Custo & Notas Práticas
| Consideração | Detalhe |
|---|
| Serviço hospedado | Documentos são enviados para LlamaCloud |
| Tier gratuito | Páginas limitadas por dia |
| Caching | Re-parsing do mesmo arquivo pode reusar resultados |
| Privacidade | Para documentos sensíveis prefira parsers locais |
LlamaParse vs Parsers Locais
| Aspecto | LlamaParse | Docling | Marker |
|---|
| Hosting | Serviço em nuvem | Local | Local |
| Tabelas complexas | Muito forte | Forte | Bom |
| Instruções customizadas | Linguagem natural | Config | Config |
| Privacidade | Dados deixam sua máquina | Totalmente local | Totalmente local |
| Melhor para | Layouts difíceis, resultados rápidos | RAG auto-hospedado | Conversão bulk local |
Para corpora sensíveis de privacidade use Docling; para conversão bulk local use Marker.
Recursos