regex-vs-llm-structured-text
Faz seu agente escolher a melhor forma de ler textos como formulários ou notas. Ele usa regras simples ou inteligência artificial para extrair informações.
O que ela faz
Este sistema ajuda a decidir a melhor forma de extrair informações de textos que seguem um padrão, como questionários ou recibos. Ele usa uma abordagem combinada: primeiro tenta extrair a maior parte das informações com um método rápido e barato (regex) e só recorre a uma inteligência artificial mais avançada (LLM) para corrigir os poucos casos que o método rápido não conseguiu resolver.
Quando usar
- ✓Quando você tem muitos documentos com o mesmo formato para extrair dados.
- ✓Ao decidir se usa um método simples (regex) ou um mais complexo (LLM) para ler textos.
- ✓Para economizar dinheiro e tempo ao extrair informações de documentos.
Exemplo do que pedir para a IA
“Como posso extrair as perguntas e respostas de um arquivo de provas que tem um formato repetitivo?”
Quer saber mais? Abra as seções abaixo.
Como usar
O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.
Link da skill
Mensagem pronta para colar
Como funciona
Primeiro, ele usa um padrão de busca (regex) para encontrar e extrair a maioria das informações. Depois, verifica se a extração foi confiável. Se não foi, ele usa uma inteligência artificial (LLM) para corrigir apenas os casos problemáticos.
Instalação
Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.
No terminal (Claude Code, Codex, Cursor), na pasta do projeto:
npx skills add affaan-m/ECC --skill regex-vs-llm-structured-textOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/affaan-m/ECC/main/pi/core/skills/regex-vs-llm-structured-text/SKILL.md -o SKILL.mdConteúdo técnico (SKILL.md)
Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.
Regex vs. LLM para Análise de Texto Estruturado
Um framework de decisão prático para analisar texto estruturado (questionários, formulários, faturas, documentos). A principal percepção: regex lida com 95-98% dos casos de forma barata e determinística. Reserve chamadas caras de LLM para os casos extremos restantes.
Quando Ativar
- Analisar texto estruturado com padrões repetitivos (perguntas, formulários, tabelas)
- Decidir entre regex e LLM para extração de texto
- Construir pipelines híbridos que combinam ambas as abordagens
- Otimizar trade-offs de custo/precisão no processamento de texto
Framework de Decisão
Is the text format consistent and repeating?
├── Yes (>90% follows a pattern) → Start with Regex
│ ├── Regex handles 95%+ → Done, no LLM needed
│ └── Regex handles <95% → Add LLM for edge cases only
└── No (free-form, highly variable) → Use LLM directly
Padrão de Arquitetura
Source Text
│
▼
[Regex Parser] ─── Extracts structure (95-98% accuracy)
│
▼
[Text Cleaner] ─── Removes noise (markers, page numbers, artifacts)
│
▼
[Confidence Scorer] ─── Flags low-confidence extractions
│
├── High confidence (≥0.95) → Direct output
│
└── Low confidence (<0.95) → [LLM Validator] → Output
Implementação
1. Analisador Regex (Lida com a Maioria)
import re
from dataclasses import dataclass
@dataclass(frozen=True)
class ParsedItem:
id: str
text: str
choices: tuple[str, ...]
answer: str
confidence: float = 1.0
def parse_structured_text(content: str) -> list[ParsedItem]:
"""Parse structured text using regex patterns."""
pattern = re.compile(
r"(?P<id>\d+)\.\s*(?P<text>.+?)\n"
r"(?P<choices>(?:[A-D]\..+?\n)+)"
r"Answer:\s*(?P<answer>[A-D])",
re.MULTILINE | re.DOTALL,
)
items = []
for match in pattern.finditer(content):
choices = tuple(
c.strip() for c in re.findall(r"[A-D]\.\s*(.+)", match.group("choices"))
)
items.append(ParsedItem(
id=match.group("id"),
text=match.group("text").strip(),
choices=choices,
answer=match.group("answer"),
))
return items
2. Pontuação de Confiança
Marcar itens que podem precisar de revisão por LLM:
@dataclass(frozen=True)
class ConfidenceFlag:
item_id: str
score: float
reasons: tuple[str, ...]
def score_confidence(item: ParsedItem) -> ConfidenceFlag:
"""Score extraction confidence and flag issues."""
reasons = []
score = 1.0
if len(item.choices) < 3:
reasons.append("few_choices")
score -= 0.3
if not item.answer:
reasons.append("missing_answer")
score -= 0.5
if len(item.text) < 10:
reasons.append("short_text")
score -= 0.2
return ConfidenceFlag(
item_id=item.id,
score=max(0.0, score),
reasons=tuple(reasons),
)
def identify_low_confidence(
items: list[ParsedItem],
threshold: float = 0.95,
) -> list[ConfidenceFlag]:
"""Return items below confidence threshold."""
flags = [score_confidence(item) for item in items]
return [f for f in flags if f.score < threshold]
3. Validador LLM (Apenas Casos Extremos)
def validate_with_llm(
item: ParsedItem,
original_text: str,
client,
) -> ParsedItem:
"""Use LLM to fix low-confidence extractions."""
response = client.messages.create(
model="claude-haiku-4-5-20251001", # Cheapest model for validation
max_tokens=500,
messages=[{
"role": "user",
"content": (
f"Extract the question, choices, and answer from this text.\n\n"
f"Text: {original_text}\n\n"
f"Current extraction: {item}\n\n"
f"Return corrected JSON if needed, or 'CORRECT' if accurate."
),
}],
)
# Parse LLM response and return corrected item...
return corrected_item
4. Pipeline Híbrido
def process_document(
content: str,
*,
llm_client=None,
confidence_threshold: float = 0.95,
) -> list[ParsedItem]:
"""Pipeline completo: regex -> verificação de confiança -> LLM para casos extremos."""
# Passo 1: Extração com Regex (lida com 95-98%)
items = parse_structured_text(content)
# Passo 2: Pontuação de confiança
low_confidence = identify_low_confidence(items, confidence_threshold)
if not low_confidence or llm_client is None:
return items
…
Perguntas frequentes
Por que não usar apenas a inteligência artificial (LLM) para tudo?
Usar apenas a IA pode ser caro e lento. Este método é mais eficiente porque a maior parte do trabalho é feita por um método mais simples e rápido, reservando a IA para os casos mais difíceis.
O que é 'regex'?
Regex (expressão regular) é uma sequência de caracteres que forma um padrão de busca. É como uma 'receita' para encontrar textos específicos dentro de um documento maior.
Quando devo usar apenas a IA (LLM) sem regex?
Se o texto não tem um padrão claro e é muito variado (como um bate-papo livre), a IA sozinha é a melhor opção.
Detalhes
Descrição original do autor
Decision framework for parsing structured text (quizzes, forms, invoices, receipts, tables) with a hybrid regex-first pipeline — regex extraction handles 95%+ cheaply, a confidence scorer flags low-confidence items, and an LLM validator fixes only the edge cases. Use when choosing between regex and LLM for text extraction, building a cheap document parser, or optimizing extraction cost and accurac
repo: affaan-m/ECC
Popularidade
- Estrelas no GitHub
- 280 mil
- Posição no ranking
- #116
- Licença
- MIT
- Atualizada em
- 15/10/2026
Comentários
- …
Mais skills deste repositório
accessibility
Ajuda seu agente a criar interfaces que todos possam usar. Garante que sites e aplicativos funcionem bem para pessoas com deficiência, como cegos ou com mobilidade reduzida.
affaan-m/ECC
agent-architecture-audit
Faz seu agente verificar se tudo está funcionando corretamente. Ele encontra e conserta problemas em sistemas de IA, garantindo que funcionem como esperado.
affaan-m/ECC
agent-eval
Ajuda seu agente a comparar diferentes ferramentas de programação de IA. Ele mede qual é mais rápido, barato e confiável para realizar tarefas específicas.
affaan-m/ECC
agent-harness-construction
Faz seu agente entender melhor como realizar tarefas. Ele otimiza as ferramentas e instruções que o agente usa para aumentar suas chances de sucesso.
affaan-m/ECC
Skills parecidas
mcp-builder
Ajuda seu agente a criar servidores que conectam LLMs a serviços externos. Essencial para integrar APIs e serviços usando Python ou Node/TypeScript.
anthropics/skills
prepare-mcp-integration
Prepara integrações com fornecedores (MCP) através de pesquisa e aprovação humana. Segue um processo guiado para novas integrações.
paperclipai/paperclip
first-task
Guia o agente na primeira tarefa do usuário. Ele interpreta a resposta inicial, esclarece o objetivo e propõe um plano ou tarefa única para aprovação.
paperclipai/paperclip