Descrizione
Estrazione testo da PDF con cascata 2-stage qualità-prima: pdf-parse libreria gratuita (~50ms, zero cost, no API) come tentativo veloce → fallback automatico a Claude Sonnet vision (cost ~$0.003-0.015/PDF, latency 2-5s) quando pdf-parse ritorna testo scarno o gibberish da PDF scannerizzato. La heuristica fallback usa confidence score basato su densità caratteri leggibili + presenza glifi standard latini. Differenza con i sibling: action_pdf_parse = text extraction OUT (PDF → string). Per generare PDF IN partendo da titolo+sezioni+tabella vedi action_pdf_generate (pdfkit, fatture/cataloghi). Per immagini generiche con AI vedi action_vision_extract (Qwen2.5-VL-7B locale, no Claude cost). Modalità configurabili: auto (default — cascata pdf-parse → Claude se low confidence), pdf-parse-only (zero cost, accetta fallimenti su scan), llm-only (massima qualità, sempre Claude — usare quando sai a priori che i PDF sono scan). La modalità auto e\` consigliata: il 70-80% dei PDF moderni hanno text layer estraibile gratis, il fallback Claude paga solo per i casi reali (vecchi scan, ricevute fotografate). Input flessibile: file da disco (path nel sandbox tenant, file-picker UI) OPPURE base64 da nodo upstream (tipico: allegato trigger_imap senza salvare su disco). Max 32 MB hard cap per evitare OOM, 100 pagine cap su modalità Claude per cost control. Use case: (1) ingest fatture PEC ricevute via trigger_imap → estrarre IBAN + importo + scadenza per inserimento contabile automatico, (2) parsing contratti firmati per archiviazione searchable con full-text index, (3) categorizzazione spese da ricevute scannerizzate (Claude vision riconosce anche grafica/logo), (4) corpus PDF per pipeline RAG con embedding BGE-M3. Safety budget: SSRF non applicabile (nessun fetch outbound), file I/O sandboxato su tenant data dir, cost cap configurabile per workflow (max N call Claude/run), audit log con sha256 input + mode used + tokens consumed.
