Esquema JSON: extrair uma fatura portuguesa
JSON Schema para extrair uma fatura portuguesa com um LLM: fornecedor e NIF, número, ATCUD, data, linhas, base tributável, IVA e total em euros.
Extrai os dados da fatura. Os montantes são números em euros, sem símbolo. Se faltar um dado, não o inventes.
JSON Schema
{
"type": "object",
"required": [
"fornecedor",
"data",
"total"
],
"properties": {
"iva": {
"type": "number"
},
"nif": {
"type": "string",
"description": "NIF do fornecedor (9 algarismos)"
},
"data": {
"type": "string",
"format": "date",
"description": "Data de emissão (AAAA-MM-DD)"
},
"atcud": {
"type": "string",
"description": "Código único do documento (ATCUD)"
},
"total": {
"type": "number"
},
"linhas": {
"type": "array",
"items": {
"type": "object",
"required": [
"descricao",
"valor"
],
"properties": {
"valor": {
"type": "number"
},
"descricao": {
"type": "string"
},
"quantidade": {
"type": "number"
}
}
}
},
"numero": {
"type": "string",
"description": "Número da fatura (série/número)"
},
"taxa_iva": {
"type": "number",
"description": "Taxa de IVA em percentagem (23, 13 ou 6 no continente)"
},
"fornecedor": {
"type": "string",
"description": "Nome ou firma do fornecedor"
},
"base_tributavel": {
"type": "number"
}
}
}Exemplo de saída
{
"fornecedor": "Tipografia Lusa, Lda.",
"nif": "123456789",
"numero": "FT 2026/412",
"atcud": "JFM3PQ2T-412",
"data": "2026-09-15",
"linhas": [
{
"descricao": "Cartões de visita x500",
"quantidade": 1,
"valor": 80.0
},
{
"descricao": "Folhetos A5 x1000",
"quantidade": 1,
"valor": 120.0
}
],
"base_tributavel": 200.0,
"taxa_iva": 23,
"iva": 46.0,
"total": 246.0
}Custo estimado
Tokens de entrada por chamada : ≈ 659
| Modelo | Por chamada | Por 1000 chamadas |
|---|---|---|
| Mistral Large · Mistral AI | € 0,00029 | € 0,29 |
| DeepSeek Flash · DeepSeek | € 0,00017 | € 0,17 |
| DeepSeek V4 Pro · DeepSeek | € 0,00077 | € 0,77 |
| GPT-6 Luna · OpenAI | € 0,00006 | € 0,06 |
| GPT-6 Sol · OpenAI | € 0,00116 | € 1,16 |
| Claude Sonnet 5.5 · Anthropic | € 0,00116 | € 1,16 |
| Claude Opus 5.5 · Anthropic | € 0,00232 | € 2,32 |
| Modelo open source alojado por si (Ollama, vLLM) | 0 € em custos de API (apenas o custo do servidor) | |
Apenas o custo de entrada, sem a resposta do modelo. Preços públicos padrão dos fornecedores (Mistral AI, DeepSeek, OpenAI, Anthropic) convertidos de USD para euros à taxa do BCE de 29 de setembro de 2026. Estimativa: 1 token ≈ 3,6 caracteres.
Comum às 3 regiões
Criado pelo autor, sem fonte externa.
Utilização comercial permitida · citar o autor · alterações permitidas.
Apenas texto ou dados: sem acesso a ficheiros, à rede ou a comandos.
Alojado em França (Scaleway, Paris). Sem transferência para fora da UE.
União Europeia · 5/5
Sem dados pessoais.
Sem dados de treino: nenhum resumo exigido.
Estados Unidos · 5/5
Sem dados pessoais.
Sem dados de treino: nenhuma documentação a publicar.
China · 5/5
Sem dados pessoais.
Sem dados de treino; os conteúdos gerados por IA difundidos na China devem ser identificados (2025).
Resumo indicativo em 30/09/2026, sem valor de certificação jurídica. Método e fontes →
Estatísticas
Gostos : 0 · Comentários : 0
Clique num contador para o mostrar ou ocultar, passe o rato sobre o gráfico para ver os detalhes. Uma visualização por visitante por dia, sem robôs; contagem iniciada a 30 de setembro de 2026.
- Identificador
- contextetech--extrair-fatura-portuguesa
- Tipo
- Esquemas de saída
- Ficheiro
- extrair-fatura-portuguesa.schema.json
- Formato
- JSON (application/json)
- Tamanho
- 1.313 bytes (1,3 KB)
- Codificação
- UTF-8
- Tokens estimados
- ≈ 363
- Idioma
- Português
- Licença
- MIT
- Utilização comercial
- Permitida
- Dados pessoais
- Nenhum
- Versão
- 1.0
- Publicado em
- 8 de outubro de 2026 às 19:47
- Atualizado em
- 8 de outubro de 2026 às 19:47
- Armazenamento
- na base de dados
- Utilizações
- 0
- Gostos
- 0
extrair-fatura-portuguesa.schema.json
{
"type": "object",
"required": [
"fornecedor",
"data",
"total"
],
"properties": {
"iva": {
"type": "number"
},
"nif": {
"type": "string",
"description": "NIF do fornecedor (9 algarismos)"
},
"data": {
"type": "string",
"format": "date",
"description": "Data de emissão (AAAA-MM-DD)"
},
"atcud": {
"type": "string",
"description": "Código único do documento (ATCUD)"
},
"total": {
"type": "number"
},
"linhas": {
"type": "array",
"items": {
"type": "object",
"required": [
"descricao",
"valor"
],
"properties": {
"valor": {
"type": "number"
},
"descricao": {
"type": "string"
},
"quantidade": {
"type": "number"
}
}
}
},
"numero": {
"type": "string",
"description": "Número da fatura (série/número)"
},
"taxa_iva": {
"type": "number",
"description": "Taxa de IVA em percentagem (23, 13 ou 6 no continente)"
},
"fornecedor": {
"type": "string",
"description": "Nome ou firma do fornecedor"
},
"base_tributavel": {
"type": "number"
}
}
}API da Anthropic (Python)
import json, anthropic
schema = json.load(open("extrair-fatura-portuguesa.schema.json"))
client = anthropic.Anthropic()
resp = client.messages.create(model="claude-sonnet-5", max_tokens=1024,
tools=[{"name": "extraire", "description": "Renvoie les données extraites", "input_schema": schema}],
tool_choice={"type": "tool", "name": "extraire"},
messages=[{"role": "user", "content": "a sua entrada aqui"}])
print(resp.content[0].input)Formato OpenAI (response_format)
{
"type": "json_schema",
"json_schema": {
"name": "extrair-fatura-portuguesa",
"schema": {
"type": "object",
"required": [
"fornecedor",
"data",
"total"
],
"properties": {
"iva": {
"type": "number"
},
"nif": {
"type": "string",
"description": "NIF do fornecedor (9 algarismos)"
},
"data": {
"type": "string",
"format": "date",
"description": "Data de emissão (AAAA-MM-DD)"
},
"atcud": {
"type": "string",
"description": "Código único do documento (ATCUD)"
},
"total": {
"type": "number"
},
"linhas": {
"type": "array",
"items": {
"type": "object",
"required": [
"descricao",
"valor"
],
"properties": {
"valor": {
"type": "number"
},
"descricao": {
"type": "string"
},
"quantidade": {
"type": "number"
}
}
}
},
"numero": {
"type": "string",
"description": "Número da fatura (série/número)"
},
"taxa_iva": {
"type": "number",
"description": "Taxa de IVA em percentagem (23, 13 ou 6 no continente)"
},
"fornecedor": {
"type": "string",
"description": "Nome ou firma do fornecedor"
},
"base_tributavel": {
"type": "number"
}
}
},
"strict": true
}
}
Comunidade
Ainda não há comentários. Partilhe a sua experiência, vai ajudar a próxima pessoa.