Como converter uma fatura digitalizada em Excel com IA e conferir os itens
Extraia os itens de uma fatura sem perder zeros à esquerda nem duplicar subtotais. Use o PDF de exemplo, o prompt e as verificações de conciliação.
Para transformar uma fatura digitalizada em uma planilha utilizável, extraia os itens com suas páginas de origem, separe os totais das linhas de produtos e confira as contas antes de aceitar o arquivo. Uma planilha que abre normalmente ainda pode ter uma linha ausente, um SKU alterado ou um subtotal contado como compra.
Este tutorial usa uma fatura fictícia de duas páginas, criada para o teste, com seis itens e sem dados de clientes. As páginas do PDF são imagens rasterizadas, sem camada de texto: a extração sem OCR não retorna texto. Os valores de referência permitem conferir o resultado, em vez de confiar apenas na aparência. É um exercício controlado, não uma medida de precisão para qualquer fatura. O documento não representa uma NF-e brasileira nem sua estrutura fiscal.
Baixe a fonte antes de usar o prompt
Baixe o PDF da fatura digitalizada e mantenha os valores de referência fora da solicitação de extração. Se fornecer ambos ao assistente, estará testando a cópia de uma resposta, não a leitura da fatura.
O cabeçalho da tabela se repete na página 2. A primeira página termina com um valor transportado de USD 185,40, repetido na segunda antes do subtotal. Nenhuma dessas ocorrências é um sétimo item. Todos os SKUs começam com zeros. São dificuldades comuns: um documento limpo pode gerar uma planilha errada mesmo sem manuscritos ou grandes defeitos na digitalização.
| Informação a recuperar | Valor correto neste exemplo |
|---|---|
| Linhas de itens | 6 |
| Subtotal dos itens da página 1 | USD 185,40 |
| Subtotal dos itens da página 2 | USD 104,59 |
| Subtotal da fatura | USD 289,99 |
| Imposto, arredondado uma vez sobre o subtotal | USD 29,00 |
| Total da fatura | USD 318,99 |
A regra de imposto está impressa no exemplo. Não é uma recomendação tributária nem uma instrução para recalcular documentos de fornecedores conforme outra regra. Faturas reais podem ter arredondamento por item, descontos, frete, retenções ou várias alíquotas. Preserve o que consta na fonte e investigue as diferenças. A moeda continua sendo USD; os valores não foram convertidos para reais.
Escolha a extração conforme o documento
Primeiro, examine o PDF. Se selecionar uma frase permite copiar texto coerente, provavelmente existe uma camada de texto utilizável. Se apenas a imagem é selecionada, será necessário OCR ou um modelo que examine a página renderizada. Mesmo um PDF pesquisável pode ter OCR ruim: compare um SKU e um valor com a página visível.
Para uma fatura isolada, um assistente que trabalha com arquivos pode reunir extração, registro de exceções e criação da planilha. Para milhares de documentos com layouts e regras recorrentes, um processo mantido de tratamento documental costuma ser mais fácil de repetir e monitorar. Rankings de modelos ajudam a escolher o que avaliar; não provam a leitura correta de uma fatura. O guia de escolha de modelos para OCR (em inglês) trata dessa decisão; aqui, o foco é a planilha entregue.
Confirme que a interface escolhida aceita PDFs e gera XLSX para download. Uma API que recebe imagens não é automaticamente um endpoint para PDFs. Uma tabela na conversa também não equivale a um anexo Excel. Se a ferramenta aceitar imagens, mas não PDF, exporte cada página como imagem e preserve a ordem. Não descarte silenciosamente a página 2 porque o primeiro upload funcionou.
Defina a estrutura da planilha
Use uma linha por item impresso. As colunas mínimas são invoice_id, sku, description, quantity, unit_price, line_amount, currency, source_file, source_page e review_status. Inclua um identificador estável de linha se o fornecedor não numerar os itens. Não use apenas o SKU para eliminar duplicatas: o mesmo produto pode aparecer legitimamente duas vezes.
Armazene identificadores como texto, quantidades e valores como números, e a moeda em uma coluna separada. Exibir 000101 com valor numérico 101 não é o mesmo que guardar o identificador como texto. Uma formatação personalizada pode fazer a planilha parecer correta, mas os zeros podem se perder em uma exportação posterior para CSV.
Crie InvoiceSummary para subtotal, imposto, total e localização de cada valor. Use Exceptions para campos ilegíveis, diferenças aritméticas e possíveis duplicatas. Uma aba vazia de exceções só é significativa depois que as verificações foram executadas. Peça a descrição do que foi conferido, não apenas a palavra “validado”.
Envie uma solicitação de extração verificável
Abra uma conversa separada no Ofox Chat e anexe apenas o PDF sintético. Confirme que as duas páginas estão representadas. O prompt abaixo é uma especificação reutilizável; o suporte atual a arquivos e o anexo gerado precisam ser conferidos durante a execução. Mantivemos o prompt original em inglês para permitir a reprodução do teste.
Read the attached synthetic invoice PDF. Extract all printed item rows from
all pages into a downloadable XLSX. Do not browse or use external sources.
Create three sheets:
1. LineItems: invoice_id, sku, description, quantity, unit_price,
line_amount, currency, source_file, source_page, review_status.
2. InvoiceSummary: the printed subtotal, tax, total, tax/rounding wording,
and the source page for each value.
3. Exceptions: unreadable fields, inconsistent amounts and any rows that
require a person to check the image.
Preserve identifiers, including leading zeros, as text. Do not treat repeated
headers, carried-forward amounts, subtotals, tax or totals as item rows.
Do not deduplicate repeated SKUs unless the printed rows are proven duplicates.
For an unreadable value, leave the numeric cell empty and explain why.
Do not infer a missing number just to make the invoice balance.
Compare quantity × unit price with each printed line amount. Reconcile the
item sum with the printed subtotal and the subtotal plus printed tax with
the printed total. Preserve both printed and calculated values when they
conflict. State the page count and item count. Return the actual XLSX file,
not only a Markdown table. Keep the original PDF unchanged.
A instrução separa leitura de cálculo de propósito. Se o assistente alterar um número impresso para fechar o total, o arquivo deixa de ser uma extração fiel. A divergência deve continuar visível mesmo quando o modelo acredita saber qual seria o valor pretendido.
Para documentos privados, use somente cópias com informações que você tem autorização para processar. Remova dados bancários ou pessoais sem relação com a tarefa quando forem desnecessários. O exemplo sintético deste tutorial não estabelece que sua organização permite enviar documentos de fornecedores ao mesmo serviço.
Confira as células baixadas, não só a prévia
Abra o XLSX e examine primeiro LineItems. Devem existir seis linhas: três com origem na página 1 e três na página 2. Localize 000101 e 000108 e confira o valor armazenado ou a barra de fórmulas, não apenas a aparência. Compare cada descrição e número com a página de origem.
Calcule os valores de forma independente. Neste exemplo, o bloco preserva a notação decimal da fonte em inglês:
Page 1: 2 × 19.95 + 3 × 8.50 + 1 × 120.00 = 185.40
Page 2: 4 × 6.25 + 2 × 14.80 + 1 × 49.99 = 104.59
Subtotal: 185.40 + 104.59 = 289.99
Tax: 289.99 × 10%, rounded to cents = 29.00
Total: 289.99 + 29.00 = 318.99
O total correto, sozinho, não basta. Dois erros podem se compensar, e um SKU incorreto não muda a soma. Confira separadamente identidade dos itens, cobertura das páginas e relações numéricas. Em lotes maiores, concilie cada fatura e moeda antes de agregar os dados.
Se houver fórmulas, recalcule o arquivo no Excel ou em outro aplicativo compatível. Um script Python que lê valores em cache pode encontrar resultados ausentes ou antigos. A documentação do openpyxl (em inglês) distingue gravar fórmulas de avaliá-las. Para uma auditoria automática, calcule os resultados esperados com aritmética decimal; uma fórmula armazenada como texto não é uma resposta calculada.
O que a execução real entregou
Em 7 de novembro de 2026, enviamos apenas o PDF sintético de duas páginas ao Ofox Chat, no modo Balanced. O JSON de referência não foi fornecido. A execução produziu um arquivo Excel disponível para inspeção, com as abas LineItems, InvoiceSummary e Exceptions. A execução e a interface estavam em inglês; esta versão localizada não representa um novo teste em português.

Também examinamos o arquivo baixado. Os seis SKUs estavam armazenados como strings, todas as descrições e campos numéricos correspondiam à fonte, e havia três itens de cada página. O cálculo decimal independente reproduziu o subtotal de USD 289,99 e o total de USD 318,99. O valor transportado apareceu no resumo, sem virar item de compra.
A aba Exceptions contém uma linha informativa “No exceptions”; ela não está literalmente vazia. Essa linha não é um item com falha. O resumo preserva valores impressos e calculados separadamente. O resultado sustenta o fluxo neste documento sintético, limpo e em inglês. Não estabelece taxa de acerto de OCR nem desempenho com manuscritos, digitalizações danificadas, outros idiomas ou diferentes fornecedores.
Corrija apenas a parte que falhou
| Sintoma | O que investigar | Próxima ação |
|---|---|---|
| Sete ou oito itens | Valor transportado ou subtotal virou item | Compare a linha extra com sua posição na fonte e remova apenas a linha que comprovadamente corresponde a um subtotal ou total |
| Total correto, SKU errado | Leitura do texto ou tipo da célula | Corrija pela imagem e mantenha a célula como texto |
| Apenas três itens | Segunda página ausente ou processamento parcial | Reenvie a página 2 e acrescente os itens conferidos com sua origem |
| Quantidade × preço não confere | OCR, desconto, conversão de unidade ou erro impresso | Preserve os números impressos e registre a diferença antes de decidir o tratamento |
| Total de USD 504,39 | Possível dupla contagem do valor transportado | Investigue a contribuição extra de USD 185,40; não subtraia sem verificar |
| Não há link da planilha | Falha na entrega do arquivo | Peça XLSX para download; se não houver suporte, use uma importação CSV documentada preservando colunas de texto |
Uma solicitação pontual é mais fácil de verificar do que “tente de novo”. Este é um exemplo de reparo hipotético, não uma falha observada na execução descrita:
Reopen the original invoice page 2. The carry-forward amount 185.40 is not
an item row. Remove that row from LineItems only if its source location
confirms it is the carry-forward. Preserve the six printed item rows,
SKUs and source pages. Recompute the reconciliation and export a new
workbook named invoice-reviewed-v2.xlsx. Describe exactly what changed.
Guarde as duas versões. Quando o problema é ilegibilidade, trocar o prompt pode não ajudar: peça uma digitalização melhor ou confira manualmente. Uma pontuação de confiança produzida pelo modelo não substitui essa revisão.
Transforme a conferência em um processo repetível
Antes de processar uma pasta inteira, teste notas de crédito, várias moedas, números de fatura iguais de fornecedores diferentes, descontos e tabelas em várias páginas. Defina se valores negativos são permitidos e como identificar documentos duplicados. Uma amostra de seis itens em inglês não demonstra desempenho nesses casos nem em documentos japoneses ou russos.
Com a extração conferida, siga o fluxo de análise de Excel (em inglês) para criar resumos e gráficos, ou o tutorial de combinação de planilhas para reunir registros sem perder a origem. Em um processo via API, use a validação de texto para JSON (em inglês) depois do OCR: JSON válido ainda precisa de conciliação específica da fatura.
O resultado útil é uma planilha que outra pessoa consegue rastrear até o documento. Comece com o exemplo no Ofox Chat e aplique as mesmas verificações antes de usar o resultado em um processo real.


