DocuExtract
Extrait automatiquement les données fiscales clés des factures et tickets.
Le Problème
La saisie manuelle des données de facturation pour la comptabilité est lente et sujette aux erreurs humaines, et les entreprises ont besoin d'un flux fiable même quand l'OCR n'est pas sûr du résultat.
La Solution
DocuExtract permet d'importer une facture ou un ticket et utilise l'OCR pour en extraire les données fiscales clés, prêtes pour la comptabilité. Quand la confiance de la reconnaissance est faible, le document passe par un flux de révision humaine plutôt que d'enregistrer des données peu fiables.
Architecture / Engineering
- Conçu le pipeline de traitement (import → OCR/extraction → parsing → persistance) en séparant le traitement côté serveur de l'UI.
- Intégré Tesseract.js (espagnol + anglais) pour l'OCR sur images, et l'extraction de la couche de texte native des PDF avec pdf-parse.
- Construit un système de confiance combinant la fiabilité de l'OCR et les champs fiscaux détectés, qui bascule automatiquement vers une révision humaine en dessous d'un seuil configurable.
- Implémenté des expressions régulières spécialisées pour identifier les identifiants fiscaux (NIT/RIF/CUIT/RFC/RUC), les dates (numériques et en texte) et les montants selon des mots-clés comptables.
- Isolé les données par entreprise avec la Row Level Security de Supabase, et servi les documents originaux via des URL signées de courte durée depuis un bucket de stockage privé.
- Conservé la `service_role key` de Supabase exclusivement dans des Route Handlers côté serveur, jamais exposée au navigateur.
Fonctionnalités Clés
- Import de factures/tickets avec validation du type et de la taille de fichier.
- OCR sur images (Tesseract.js) et extraction du texte natif des PDF.
- Extraction et normalisation des champs fiscaux : identifiant fiscal, dates, montants et lignes de détail.
- Score de confiance avec bascule automatique vers une révision humaine.
- Révision et validation manuelle du document avant de le marquer comme terminé.
- Export des factures au format CSV.
Défis Techniques
- Séparer le traitement côté serveur (OCR, parsing, accès au stockage) de l'UI, pour que la `service_role key` n'atteigne jamais le client.
- Concevoir le calcul de confiance en combinant la fiabilité de l'OCR et le nombre de champs clés détectés, plutôt qu'un seuil arbitraire unique.
- Isoler les données par entreprise avec du RLS pour qu'aucun utilisateur ne puisse lire ou écrire les factures d'une autre entreprise même en connaissant son ID.
Résultat / État Actuel
Déployé sur Vercel. Le flux complet — import, OCR/parsing, persistance et révision humaine — fonctionne de bout en bout sur des images et des PDF avec couche de texte native.
Limitation connue
Les PDF scannés sans couche de texte native ne sont pas rasterisés en image pour leur appliquer l'OCR, car cette conversion nécessite généralement des dépendances natives (poppler-utils) qui compliquent un déploiement serverless. Ces documents sont automatiquement marqués comme en attente de révision manuelle ; l'ajout d'un worker dédié pour les rasteriser est l'amélioration documentée pour une prochaine itération.