Intégration data warehouse
Vos documents en tables Delta dans Databricks
Holofin lit PDF et scans et écrit chaque champ dans une table Delta gouvernée par Unity Catalog, à côté du reste de votre 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 champs chargés
!1 à vérifier
Comment ça marche
- 1
Connectez Databricks une seule fois
Créez un rôle avec des droits d'insertion sur un seul schéma et collez ses identifiants dans Holofin. Holofin crée la table au premier chargement ; il ne voit rien d'autre dans Databricks.
- 2
Envoyez vos documents comme d'habitude
Dépôt dans l'application, transfert par e-mail ou appel à l'API. Holofin classe chaque fichier, découpe les liasses en documents et lit les champs propres à chaque type.
- 3
Interrogez les lignes
Chaque champ arrive sous forme d'une ligne, avec sa confiance, la page dont il provient et un indicateur needs_review. Joignez-le à vos propres tables dans Databricks comme n'importe quelle autre source.
Comment le connecteur Databricks écrit les données
Holofin écrit dans une table Delta de Unity Catalog via un SQL warehouse, en se connectant comme service principal avec des identifiants OAuth machine-to-machine. Les droits portent sur un seul schéma, et Unity Catalog conserve le lignage et le journal d'audit de chaque écriture.
Le seul droit dont Holofin a besoin :
-- 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 table écrite par Holofin
Une ligne par champ : un nouveau type de document ne modifie jamais la table. Les colonnes sont identiques d'une plateforme à l'autre ; les types suivent la nomenclature de Databricks.
| document_id | STRING | Identifiant Holofin du document, stable d'un chargement à l'autre. |
|---|---|---|
| document_type | STRING | La classe attribuée au document par Holofin : supplier_invoice, payslip, bank_statement, etc. |
| field | STRING | Le nom du champ, en snake_case, tel que défini dans votre schéma d'extraction. |
| value | STRING | La valeur en texte normalisé : dates ISO, point décimal, IBAN sans espaces. |
| confidence | FLOAT | Entre 0 et 1. Le degré de certitude de Holofin sur la valeur. |
| page | INTEGER | La page du fichier source sur laquelle la valeur a été lue. |
| bbox | ARRAY<FLOAT> | L'emplacement sur cette page : x, y, largeur, hauteur, en fractions de la page. |
| needs_review | BOOLEAN | Vrai quand la confiance est faible ou qu'une règle échoue, par exemple un solde qui ne tombe pas juste. |
| reviewed_by | STRING | La personne qui a confirmé ou corrigé la valeur dans Holofin, le cas échéant. |
| loaded_at | TIMESTAMP | L'heure d'écriture de la ligne. Une correction écrit une nouvelle ligne ; la plus récente fait foi. |
Interroger les données dans Databricks
Compter, semaine par semaine, les relevés dont les soldes ne tombent pas juste, avec FILTER et 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
Sécurité
- Les documents sont traités en Europe, sur des serveurs OVHcloud situés en France et certifiés ISO 27001.
- Holofin écrit uniquement dans le schéma que vous lui ouvrez. Il ne peut pas lire vos autres tables.
- La durée de conservation des fichiers sources dans Holofin se règle par organisation, de zéro rétention des données à une conservation illimitée. Les lignes de votre entrepôt suivent vos propres règles.
- RGPD : Holofin agit en tant que sous-traitant. Aucun document ne quitte l'Union européenne.
Questions fréquentes
Puis-je lire la table depuis un notebook ?
Oui. C'est une table Delta classique : lisez-la avec Spark, SQL ou pandas depuis n'importe quel notebook ou job disposant du droit SELECT sur le schéma.
Pourquoi un solde de clôture est-il signalé sur un relevé bancaire ?
Holofin recalcule le solde de clôture à partir du solde d'ouverture et des opérations lues. En cas d'écart, la valeur est chargée avec needs_review à true, quelle que soit sa confiance.
En combien de temps les champs apparaissent-ils dans Databricks ?
Quelques secondes après la lecture du document. La plupart des documents sont lus en moins d'une minute : un fichier envoyé par e-mail est en général interrogeable dans Databricks une minute plus tard.
Que se passe-t-il quand un relecteur corrige une valeur ?
Holofin écrit une nouvelle ligne pour ce champ avec la valeur corrigée, needs_review à false et reviewed_by renseigné. Gardez la dernière ligne par document et par champ pour obtenir l'état courant, ou conservez toutes les lignes pour une piste d'audit complète.
Puis-je choisir les champs chargés ?
Oui. Chaque type de document a son schéma d'extraction dans Holofin. Ajoutez, renommez ou supprimez des champs : les documents suivants arrivent avec les nouveaux noms. La structure de la table ne change pas.
Quels documents Holofin sait-il lire ?
Tout document d'entreprise envoyé en PDF, en scan ou en photo : factures, bulletins de paie, relevés bancaires, avis d'imposition, extraits Kbis, pièces d'identité, attestations. Holofin vérifie aussi que chaque fichier n'a pas été falsifié et peut signaler un document suspect avant qu'on se fie à ses champs.
Testez Holofin sur vos propres documents.
Chaque valeur reliée à sa position sur la page, chaque PDF analysé pour détecter les falsifications, des règles appliquées à l'ensemble du dossier.