Integrazione con data warehouse
Dai documenti alle tabelle Delta in Databricks
Holofin legge PDF e scansioni e scrive ogni campo in una tabella Delta governata da Unity Catalog, accanto al resto del vostro lakehouse.
| field | value | confidence | page | needs_review | |
|---|---|---|---|---|---|
| 1 | account_holder | Jonas Weber | 0.99 | 1 | false |
| 2 | iban | DE89370400440532013000 | 0.99 | 1 | false |
| 3 | period_start | 2026-10-01 | 0.98 | 1 | false |
| 4 | period_end | 2026-10-31 | 0.98 | 1 | false |
| 5 | opening_balance | 2184.55 | 0.97 | 1 | false |
| 6 | total_credits | 4312.00 | 0.96 | 3 | false |
| 7 | total_debits | 3967.41 | 0.96 | 3 | false |
| 8 | closing_balance | 2592.14 | 0.58 | 3 | true |
✓8 campi caricati
!1 da verificare
Come funziona
- 1
Collegate Databricks una sola volta
Create un ruolo con permessi di inserimento su un solo schema e incollatene le credenziali in Holofin. Holofin crea la tabella al primo caricamento e non vede nient'altro: Databricks gli mostra solo quello schema.
- 2
Inviate i documenti come fate già
Caricamento nell'app, inoltro via email o chiamata API. Holofin classifica ogni file, divide i plichi in singoli documenti e legge i campi di ciascun tipo.
- 3
Interrogate le righe
Ogni campo arriva come una riga, con la sua confidenza, la pagina di provenienza e un flag needs_review. Databricks le tratta come qualsiasi altra sorgente: unitele alle vostre tabelle.
Come scrive il connettore Databricks
Holofin scrive in una tabella Delta in Unity Catalog tramite un SQL warehouse, accedendo come service principal con credenziali OAuth machine-to-machine. I permessi riguardano un solo schema, e Unity Catalog conserva la lineage e l'audit log di ogni scrittura.
L'unico permesso di cui Holofin ha bisogno:
-- Service principal: holofin-loader (OAuth machine-to-machine) GRANT USE CATALOG ON CATALOG holofin TO `holofin-loader`; GRANT USE SCHEMA, CREATE TABLE ON SCHEMA holofin.extracted TO `holofin-loader`; GRANT MODIFY, SELECT ON SCHEMA holofin.extracted TO `holofin-loader`;
La tabella scritta da Holofin
Una riga per campo, così un nuovo tipo di documento non modifica mai la tabella. Le colonne sono le stesse su ogni piattaforma; i tipi sono quelli che usa Databricks.
| document_id | STRING | L'identificativo Holofin del documento, stabile tra un caricamento e l'altro. |
|---|---|---|
| document_type | STRING | La classe assegnata da Holofin al documento: supplier_invoice, payslip, bank_statement e così via. |
| field | STRING | Il nome del campo, in snake_case, come definito nel vostro schema di estrazione. |
| value | STRING | Il valore come testo normalizzato: date ISO, punto come separatore decimale, IBAN senza spazi. |
| confidence | FLOAT | Tra 0 e 1. Quanto Holofin è sicuro del valore. |
| page | INTEGER | La pagina del file di origine su cui è stato letto il valore. |
| bbox | ARRAY<FLOAT> | La posizione su quella pagina: x, y, larghezza, altezza, in frazioni della pagina. |
| needs_review | BOOLEAN | True quando la confidenza è bassa o una regola non è rispettata, per esempio un saldo che non quadra. |
| reviewed_by | STRING | Chi ha confermato o corretto il valore in Holofin, una volta fatto. |
| loaded_at | TIMESTAMP | Quando è stata scritta la riga. Le correzioni scrivono una nuova riga; vale la più recente. |
Interrogare i dati in Databricks
Conteggio settimanale degli estratti conto i cui saldi non quadrano, con FILTER e GROUP BY ALL:
-- Statements whose balances do not add up, by week loaded SELECT date_trunc('WEEK', loaded_at) AS week, count(DISTINCT document_id) AS statements, count(DISTINCT document_id) FILTER ( WHERE field = 'closing_balance' AND needs_review ) AS balance_mismatches FROM holofin.extracted.document_fields WHERE document_type = 'bank_statement' GROUP BY ALL ORDER BY week DESC
Sicurezza
- I documenti sono elaborati in Europa, su server OVHcloud in Francia certificati ISO 27001.
- Holofin scrive solo nello schema che autorizzate. Non può leggere le vostre altre tabelle.
- La conservazione dei file di origine in Holofin si imposta per organizzazione, da zero data retention a conservazione illimitata. Le righe nel vostro data warehouse seguono le vostre policy.
- GDPR: Holofin agisce come vostro responsabile del trattamento. Nessun documento lascia l'Unione europea.
Domande frequenti
Si può leggere la tabella da un notebook?
Sì. È una normale tabella Delta: leggetela con Spark, SQL o pandas da qualsiasi notebook o job con SELECT sullo schema.
Perché un saldo finale viene segnalato su un estratto conto?
Holofin ricalcola il saldo finale a partire dal saldo iniziale e dai movimenti letti. Se i valori non coincidono, il saldo viene caricato con needs_review a true, qualunque sia la sua confidenza.
In quanto tempo i campi compaiono in Databricks?
Pochi secondi dopo la lettura del documento. La maggior parte dei documenti viene letta in meno di un minuto, quindi un file inviato via email è di solito interrogabile in Databricks un minuto dopo.
Cosa succede quando un revisore corregge un valore?
Holofin scrive una nuova riga per quel campo con il valore corretto, needs_review a false e reviewed_by valorizzato. Tenete l'ultima riga per documento e campo per avere lo stato attuale, oppure tutte le righe per un audit trail completo.
Si possono scegliere i campi da caricare?
Sì. Ogni tipo di documento ha uno schema di estrazione in Holofin. Aggiungete, rinominate o rimuovete i campi lì e i documenti successivi verranno caricati con i nuovi nomi. La struttura della tabella non cambia.
Quali documenti legge Holofin?
Qualsiasi documento aziendale inviato come PDF, scansione o foto: fatture, buste paga, estratti conto, avvisi fiscali, visure camerali, documenti d'identità, certificati. Holofin verifica anche che ogni file non sia stato manomesso e può segnalare un documento sospetto prima che ci si fidi dei suoi campi.
Provi Holofin sui Suoi documenti.
Ogni valore collegato alla pagina da cui proviene, ogni PDF controllato contro le manomissioni, regole verificate sull'intera pratica.