@bhanquier/template-ocr
v0.1.5
Published
OCR providers and Google Cloud Vision REST client for template pipelines
Readme
@bhanquier/template-ocr
OCR mutualisé pour les pipelines templates : abstraction fournisseurs (alignée sur @bhanquier/template-core), client Google Cloud Vision via l’API REST images:annotate (sans SDK), parsing minimal de fullTextAnnotation (blocs + boîtes englobantes).
Extraction depuis Voodoo
| Source Voodoo (non modifiée) | Contenu porté ici |
|----------------------------|-------------------|
| packages/template-ocr/src/index.ts | OcrEngine, StubOcrProvider, OcrRecognizeInput, OcrProvider, unions de fournisseurs alignées sur OcrResult |
| packages/web/lib/ocr/ocr-service.ts | recognizeWithGoogleVision (DOCUMENT_TEXT_DETECTION + TEXT_DETECTION), helpers extractTextFromBlock / verticesToBoundingBox, projection vers OcrResult |
| packages/web/lib/services/pdf-template-analyzer.ts | Non inclus : rendu PDF → PNG (Playwright), heuristiques de blocs métier, branding — à garder côté app ou module séparé ; ce paquet ne dépend pas de Playwright |
Hors périmètre volontaire
packages/database/.../GoogleVisionProvider.ts: autre contrat (IAIProvider, jetons OAuth / service account, orchestration « smart inbox »). Ce paquet cible la clé API REST et le flux « template PDF / image » ; fusionner imposerait une couche d’adaptation produit. À réévaluer si l’on unifie les deux contrats côté TrustAkt.
Configuration
- Clé API : variable d’environnement
GOOGLE_VISION_API_KEY, ou optionapiKey(recommandé en tests et pour éviter la dépendance implicite àprocess.env). - Fetch :
fetchinjectable (options.fetch) pour les tests et environnements non standards.
API principale
recognizeWithGoogleVision(input, options)— image encodée enUint8Array, résultat structuré (blocks,dimensions,confidence, etc.).imagesAnnotate(body, options)— appel bas niveau si vous composez vos propresfeatures(ex.TEXT_DETECTION+LOGO_DETECTIONpour un analyseur type facture).GoogleVisionOcrProvider— implémenteOcrProviderpourOcrEngine(retourneOcrResultagrégé).googleVisionStructuredToOcrResult— passage au typeOcrResultde@bhanquier/template-core.parseFullTextAnnotation/extractTextFromBlock/verticesToBoundingBox— si vous parsez déjà une réponse JSON Vision.
PDF → image
Ce paquet n’embarque pas Playwright ni de rasterisation PDF. Le flux type (comme dans Voodoo pdf-template-analyzer) est :
- Côté application : PDF → PNG/WebP (Playwright,
pdftoppm, service interne, etc.). - Ici : octets image →
recognizeWithGoogleVision({ content }).
Cela évite d’alourdir les consommateurs qui n’ont besoin que de l’OCR sur une image déjà produite.
Lien avec le template-service / SDK
Les produits (Kontrakt, Voodoo) peuvent enchaîner : analyse de fichier → (optionnel) étape PDF → image → ce module → enrichissement canonical / analysis_notes côté service. Le SDK @bhanquier/template-sdk reste agnostique : branchez template-ocr dans votre couche orchestration si vous exposez Vision côté backend.
Limites
- Coût et quotas Google Vision appliqués par Google ; pas de retry intégré.
tablesdans le résultat structuré est toujours[]pour ce flux (identique au comportement historique Voodoo pour Vision).- Confiance agrégée : moyenne des confidences de blocs lorsque présentes, sinon heuristique proche de l’existant (~0,98 si blocs présents).
