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.

Nordbank Hanse AG
KONTOAUSZUG
Nr. 10/2026 · Blatt 1 von 3
KontoinhaberJonas Weber
IBANDE89 3704 0044 0532 0130 00
Zeitraum01.10.2026 bis 31.10.2026
Alter Kontostand2.184,55 EUR
Summe Gutschriften4.312,00 EUR
Summe Lastschriften3.967,41 EUR
Neuer Kontostand2.592,14 EUR

✓8 champs chargés

!1 à vérifier

Document lu par Holofin et chargé dans Databricks : relevé bancaire. Exemple fictif, tous les noms et les chiffres sont inventés.

Comment ça marche

  1. 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. 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. 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.

holofin.extracted.document_fields
document_idSTRINGIdentifiant Holofin du document, stable d'un chargement à l'autre.
document_typeSTRINGLa classe attribuée au document par Holofin : supplier_invoice, payslip, bank_statement, etc.
fieldSTRINGLe nom du champ, en snake_case, tel que défini dans votre schéma d'extraction.
valueSTRINGLa valeur en texte normalisé : dates ISO, point décimal, IBAN sans espaces.
confidenceFLOATEntre 0 et 1. Le degré de certitude de Holofin sur la valeur.
pageINTEGERLa page du fichier source sur laquelle la valeur a été lue.
bboxARRAY<FLOAT>L'emplacement sur cette page : x, y, largeur, hauteur, en fractions de la page.
needs_reviewBOOLEANVrai quand la confiance est faible ou qu'une règle échoue, par exemple un solde qui ne tombe pas juste.
reviewed_bySTRINGLa personne qui a confirmé ou corrigé la valeur dans Holofin, le cas échéant.
loaded_atTIMESTAMPL'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.

Holofin