Come funziona l'analisi degli scontrini: Dentro il pipeline OCR di Yomio (AWS + Azure)

Un'analisi tecnica approfondita del pipeline OCR per scontrini di Yomio — come AWS Textract e Azure Document Intelligence estraggono, normalizzano e categorizzano i dati degli scontrini su larga scala.

Alex Chen

Alex Chen

Product Manager & Personal Finance Advocate

Updated
11 min read
IA e tecnologiaGuide alle funzionalità#Elaborazione scontrini OCR#estrazione dati scontrini#pipeline OCR#AWS Textract#Azure Document Intelligence#analisi scontrini#tecnologia OCR
Come funziona l'analisi degli scontrini: Dentro il pipeline OCR di Yomio (AWS + Azure)

Come funziona l'analisi degli scontrini: Dentro il pipeline OCR di Yomio (AWS + Azure)

Quando scansioni uno scontrino in Yomio, succede molto tra la pressione del pulsante di scatto e la visualizzazione della transazione categorizzata nella tua dashboard. La foto del tuo scontrino viaggia attraverso un pipeline OCR a più fasi che estrae, normalizza e arricchisce il testo grezzo in dati finanziari strutturati.

Questo articolo analizza cosa succede all'interno di quel pipeline. È tecnico — ma è anche utile per capire perché alcuni scontrini vengono scansionati perfettamente e altri necessitano di correzioni, e come stiamo lavorando per colmare questo divario.

Punti chiave

  • Yomio utilizza sia AWS Textract che Azure Document Intelligence — architettura a doppio fornitore per ridondanza e precisione
  • Il pipeline ha 5 fasi: ingestione, estrazione OCR, normalizzazione, categorizzazione, arricchimento
  • L'estrazione delle voci è il problema più difficile — gli scontrini non hanno un formato standard
  • Il punteggio di confidenza segnala i campi a bassa confidenza per la revisione umana
  • Supporto multimodale — riceve immagini, PDF e dati strutturati
  • Precisione attuale: 94,7% estrazione voci, 99,3% acquisizione totale
  • Tempo di elaborazione: 2–6 secondi per scontrino dalla scansione all'iscrizione categorizzata

Panoramica del pipeline

Il pipeline OCR ha cinque fasi:

  1. Ingestione — preelaborazione dell'immagine e validazione del formato
  2. Estrazione OCR — estrazione di testo e struttura tramite AWS Textract / Azure Document Intelligence
  3. Normalizzazione — corrispondenza del nome del commerciante, formattazione della data, rilevamento della valuta
  4. Categorizzazione — assegnazione della categoria a livello di voce e totale
  5. Arricchimento — ricerca codice a barre, dati prodotto, collegamento account utente

Ogni fase ha fallback integrati. Se una fase produce output a bassa confidenza, il pipeline lo segnala invece di propagare dati errati.

Fase 1: Ingestione — Preelaborazione dell'immagine

Prima che i motori OCR tocchino lo scontrino, l'immagine passa attraverso la preelaborazione:

Normalizzazione del formato:

  • Le foto vengono ridimensionate a un massimo di 2048px sul bordo più lungo
  • Viene applicata la compressione JPEG (qualità 85%) per l'efficienza di archiviazione
  • Le pagine PDF vengono renderizzate come immagini a 300 DPI

Controlli di qualità:

  • Rilevamento sfocatura — se l'immagine è troppo sfocata (varianza Laplaciana sotto la soglia), viene chiesto all'utente di rifare la foto
  • Rilevamento inclinazione — gli scontrini fotografati ad angoli estremi vengono corretti tramite trasformazione prospettica
  • Normalizzazione del contrasto — gli scontrini a basso contrasto (carta termica sbiadita) ricevono equalizzazione adattiva dell'istogramma

Supporto multipagina:

  • Gli scontrini più lunghi di una pagina vengono rilevati automaticamente (marcatori di interruzione di pagina, bordi piegati)
  • Gli scontrini multipagina vengono uniti in un unico documento per l'elaborazione

Informazione

Le foto grezze degli scontrini sono sorprendentemente variabili. L'illuminazione scura dei ristoranti, gli scontrini in carta termica sgualciti dei supermercati e gli scontrini con linee di piegatura sono comuni. La preelaborazione li normalizza in un formato coerente che entrambi i motori OCR gestiscono bene. I controlli di qualità in questa fase prevengono il 3–5% delle scansioni che altrimenti produrrebbero risultati inutilizzabili.

Fase 2: Estrazione OCR — AWS Textract e Azure Document Intelligence

Questo è il cuore del pipeline. Yomio utilizza due fornitori OCR:

AWS Textract:

  • Fornitore principale per scontrini standard
  • Il migliore della categoria per l'estrazione di testo stampato
  • API scontrini (Expense) specificamente addestrata sui layout degli scontrini
  • Rileva: nome del commerciante, data della transazione, totale, subtotale, tasse, voci, metodo di pagamento

Azure Document Intelligence (Form Recognizer):

  • Fornitore secondario per scontrini con layout complessi
  • Migliore nel rilevare strutture tabellari all'interno degli scontrini
  • Utilizzato come fallback quando i punteggi di confidenza di Textract sono sotto la soglia
  • Migliore rilevamento della scrittura a mano per scontrini scritti a mano

Logica di selezione del fornitore:

  1. Tentativo principale: AWS Textract
  2. Se la confidenza di Textract < 70% sui campi chiave: esegui anche Azure Document Intelligence
  3. Confronta gli output — scegli il risultato con maggiore confidenza per ogni campo
  4. Se entrambi sotto la soglia: segnala lo scontrino per revisione manuale

Questa architettura a doppio fornitore significa che se un fornitore ha un punto cieco per un formato di scontrino specifico (comune con scontrini non inglesi o layout insoliti), l'altro fornitore può compensare.

Cosa estrae ogni fornitore

Entrambi i fornitori estraggono campi simili, ma con punti di forza diversi:

FieldTextract StrengthAzure Doc Intel Strength
Merchant nameHigh (standard)High (standard)
Transaction dateHighHigh
Total amountVery highVery high
Line itemsHigh (simple layouts)High (table layouts)
Tax amountMediumHigh
DiscountsMediumHigh (item-level)
Currency detectionHighHigh
HandwritingLowMedium

Fase 3: Normalizzazione — Rendere i dati coerenti

L'output OCR grezzo è accurato ma disordinato. "Starbucks Coffee #4521" e "Starbucks" devono essere riconosciuti come lo stesso commerciante. "05/08/2026" e "8 maggio 2026" devono essere la stessa data. Questa fase gestisce queste trasformazioni.

Normalizzazione del commerciante:

  • Corrispondenza fuzzy di stringhe contro un database di commercianti (oltre 50.000 commercianti)
  • Raggruppamento a livello di marca: "Starbucks Coffee #4521" → "Starbucks"
  • Identificazione della catena: franchising locali mappati al loro marchio madre
  • Alias definiti dall'utente: se rinomini un commerciante una volta, il sistema lo impara

Normalizzazione della data:

  • Rileva il formato della data dallo scontrino (US: MM/GG/AAAA, EU: GG/MM/AAAA, ISO: AAAA-MM-GG)
  • Risolve l'ambiguità usando il contesto (uno scontrino di un commerciante britannico il 03/04/2026 → 3 aprile 2026)
  • Rilevamento del fuso orario dalla posizione del commerciante

Normalizzazione della valuta:

  • Rilevamento dei simboli di valuta ($, €, £, ¥, ecc.)
  • Rilevamento del codice a tre lettere (USD, EUR, GBP)
  • Risoluzione dell'ambiguità ($ potrebbe essere USD, CAD, AUD, MXN — risolto tramite la posizione del commerciante)

Validazione dell'importo:

  • Controlli incrociati: subtotale + tasse = totale? Verificato contro la somma delle voci
  • Rilevamento sconti: se la somma delle voci meno il totale > soglia, è stato applicato uno sconto
  • Rilevamento mance (scontrini di ristoranti): differenza tra subtotale e totale quando esiste una riga per la mancia

Fase 4: Categorizzazione — Tagging intelligente

Le voci estratte devono essere assegnate a categorie di budget. Questo avviene attraverso un sistema a due livelli:

Livello 1: Regole basate sul commerciante

  • I commercianti noti hanno mappature di categoria predefinite
  • "Kroger" → Alimentari (predefinito), "Shell" → Trasporti (predefinito), "Netflix" → Intrattenimento (predefinito)
  • Gli utenti possono sovrascrivere per commerciante: "Voglio che Shell sia categorizzato come Trasporti"

Livello 2: Categorizzazione AI a livello di articolo

  • Per commercianti sconosciuti o scontrini a categorie miste (Target con sia alimentari che elettronica)
  • Ogni voce viene categorizzata separatamente in base a nome prodotto, prezzo e dati storici
  • Le categorie includono: Alimentari, Ristorazione, Trasporti, Shopping, Intrattenimento, Sanità, Utenze, Abitazione, Istruzione, Cura personale e 12+ sottocategorie

Il punteggio di confidenza della categorizzazione determina se l'assegnazione è automatica o suggerita per la revisione. Con confidenza al 90%+, la categoria viene applicata silenziosamente. Al di sotto, viene evidenziata per la conferma dell'utente.

Fase 5: Arricchimento — Connessione al tuo account

La fase finale collega lo scontrino elaborato al tuo account Yomio:

  • Assegnazione utente — lo scontrino viene collegato al tuo account (o gruppo familiare se la condivisione è abilitata)
  • Aggiornamento inventario — le voci corrispondenti a articoli di inventario noti attivano aggiornamenti di quantità (vedi il nostro approfondimento sull'inventario)
  • Rilevamento abbonamenti — i commercianti ricorrenti con importi regolari vengono segnalati come potenziali abbonamenti
  • Risoluzione codice a barre — i codici a barre scansionati vengono confrontati con Open Food Facts e database di prodotti per l'arricchimento
  • Aggiornamento serie — il contatore delle serie giornaliere viene incrementato
  • Ricompensa XP — gli XP di scansione vengono accreditati sul tuo account

Tempo di elaborazione e scalabilità

  • Tempo medio di elaborazione: 2–6 secondi per scontrino
  • Throughput di picco: migliaia di scontrini al minuto (auto-scaling basato su Lambda)
  • Archiviazione: immagini degli scontrini in S3, dati strutturati in PostgreSQL
  • CDN: immagini degli scontrini servite tramite CDN per un recupero rapido

Suggerimento

I fornitori OCR stessi impiegano 1–3 secondi per l'elaborazione dello scontrino. Il tempo rimanente è suddiviso tra preelaborazione (0,5 s), normalizzazione (0,3 s), categorizzazione (0,2 s) e arricchimento (0,5 s). Gli scontrini multipagina richiedono più tempo a causa dell'elaborazione pagina per pagina.

Benchmark di precisione

Misuriamo continuamente la precisione del pipeline contro un set di test curato manualmente di 10.000 scontrini:

MetricCurrent Accuracy
Total amount capture99,3%
Line-item extraction94,7%
Merchant detection98,1%
Date detection99,5%
Category assignment92,4%
Currency detection99,7%

Dove si verificano ancora errori:

  • Scontrini scritti a mano (precisione inferiore del 30% rispetto a quelli stampati)
  • Carta termica gravemente danneggiata (sbiadita, arricciata, strappata)
  • Scontrini con strutture di sconto non standard (BOGO, riscatti di punti fedeltà)
  • Termini e condizioni micro-stampati (l'OCR li ignora intenzionalmente)

Document review aid

Receipt review checklist

Choose the conditions you noticed, then review important extracted fields against the original. This checklist does not estimate OCR accuracy.

Receipt or document type
Image or paper condition
Layout
Tool type you are reviewing
Receipt language or script

Miglioramenti futuri

Il pipeline è attivamente in miglioramento in tre aree:

1. Riconoscimento della scrittura a mano. La precisione attuale della scrittura a mano è il divario più grande. Stiamo addestrando modelli personalizzati sulla scrittura a mano specifica degli scontrini (importi delle mance, nomi di commercianti scritti a mano, note personali sugli scontrini).

2. Copertura dei formati degli scontrini. Gli scontrini internazionali hanno layout, strutture fiscali e lingue diverse. Stiamo espandendo i dati di addestramento dei fornitori per coprire più formati regionali.

3. Suggerimenti di correzione in tempo reale. Invece di richiedere correzioni manuali dopo la scansione, la prossima versione del pipeline suggerirà correzioni durante il flusso di scansione — prima che lo scontrino sia finalizzato.

Prova il pipeline OCR

Scansiona qualsiasi scontrino ora e vedi il pipeline in azione. Dallo scatto all\'iscrizione categorizzata in meno di 10 secondi.

Scansiona uno scontrino gratis

Domande frequenti