Tutorial: Fabric di Daniel Miessler per l'estrazione strutturata da documenti

Fabric usato in uno studio professionale per applicare pattern riusabili a PDF di bandi e contratti. Installazione del binario Go, configurazione con provider locale, estrazione di scadenze, importi, clausole.

Open SourceAITutorial Open SourceAIAgenticTutorialFabricPatternsStudiDocumenti

Note preliminari

Contenuto fornito “as-is”. Prima di applicarlo a documenti reali di clienti:

  • Provate su documenti pubblici o fittizi.
  • Backup della cartella documenti prima di ogni sessione: Fabric non modifica i PDF, ma uno script che li muove o li rinomina sì.
  • Non trasmettete documenti contenenti dati personali o coperti da segreto professionale a endpoint cloud. Per uso reale, Fabric va configurato contro un modello locale (Ollama).
  • Ogni pattern è un prompt: leggetelo prima di usarlo. Il repo upstream include pattern scritti da terzi che possono non riflettere la vostra metodologia.
  • Per output che entreranno in un atto professionale (parere, relazione, offerta) resta necessaria la revisione umana completa, come per qualsiasi bozza prodotta da un collaboratore.

Cosa è Fabric

Fabric (github.com/danielmiessler/fabric) è un framework open source di Daniel Miessler per applicare “pattern” — prompt riusabili e versionati — al testo di input. Il repository pubblico risale al 3 gennaio 2024; nell’agosto 2024 il progetto viene riscritto da Python a Go e distribuito come binario singolo. Licenza MIT.

La filosofia di Fabric è diversa da quella di un agente generale: non negozia, non pianifica, non esegue codice. È una collezione di trasformazioni input → output con un catalogo di pattern (extract_wisdom, summarize, extract_insights, analyze_claims, ecc.) in ~/.config/fabric/patterns/. L’utente ne aggiunge di proprie, le tiene in git, le condivide nel team.

Per uno studio professionale, questa struttura corrisponde alla pratica consolidata delle check-list e degli schemi di lavoro: Fabric le formalizza in prompt riapplicabili.

Caso d’uso: estrazione scheda sintetica da bandi pubblici

Scenario: uno studio di consulenza segue partecipazioni a bandi. Ogni settimana arrivano 10–15 PDF (bandi regionali, europei, di fondazioni). Serve per ciascuno una scheda: titolo, ente, scadenza, beneficiari ammessi, importo massimo, requisiti formali, criteri di valutazione.

1. Installazione

# Binario ufficiale (Go):
go install github.com/danielmiessler/fabric@latest
# oppure scaricare la release binaria dal repo

fabric --setup
# Inserire o confermare i provider. Per uso locale, puntare a Ollama:
#   OpenAI API endpoint: http://127.0.0.1:11434/v1
#   API key: ollama

Dopo il setup, fabric --listmodels mostra i modelli disponibili. fabric --listpatterns elenca i pattern scaricati.

2. Pattern custom per la scheda bando

I pattern vivono in ~/.config/fabric/patterns/<nome>/system.md. Ne creiamo uno nuovo:

mkdir -p ~/.config/fabric/patterns/scheda_bando
cat > ~/.config/fabric/patterns/scheda_bando/system.md <<'EOF'
# IDENTITY

Sei un consulente che prepara schede sintetiche su bandi pubblici
per un'impresa italiana di dimensioni medie.

# GOAL

Estrai dal testo del bando fornito i campi elencati sotto. Se un campo
non è presente nel testo, scrivi "non indicato". Non inventare valori.
Non inserire informazioni che non siano letteralmente desumibili dal testo.

# STEPS

1. Leggi il testo del bando.
2. Compila i campi della scheda.
3. Se più interpretazioni sono possibili, scegli la più conservativa
   e segnalala in nota.

# OUTPUT FORMAT

- Titolo:
- Ente promotore:
- Scadenza (data):
- Beneficiari ammessi:
- Importo massimo:
- Cofinanziamento richiesto:
- Requisiti formali:
- Criteri di valutazione (sintesi):
- Riferimenti normativi:
- Note dell'estrazione:
EOF

3. Estrazione del testo dal PDF

Fabric non gestisce PDF direttamente: riceve testo. Per la conversione:

# pdftotext fa parte di poppler-utils ed è presente su gran parte delle distro Linux:
pdftotext -layout bando-regione-2024.pdf bando-regione-2024.txt

# Per PDF scansionati (solo immagini) serve OCR:
ocrmypdf --skip-text bando-scan.pdf bando-scan-ocr.pdf
pdftotext -layout bando-scan-ocr.pdf bando-scan.txt

4. Applicazione del pattern

cat bando-regione-2024.txt \
  | fabric -sp scheda_bando \
  > schede/bando-regione-2024.md

-sp seleziona il pattern in modalità stream. L’output è markdown: archiviabile in git, apribile in qualunque editor, pubblicabile come allegato interno.

5. Applicazione a lotti

mkdir -p schede
for f in bandi-in/*.txt; do
  base=$(basename "$f" .txt)
  cat "$f" | fabric -sp scheda_bando > "schede/${base}.md"
done

Pochi secondi per bando (con modello locale 7B–14B), un file schedabile per ciascun PDF. L’output resta una bozza: va controllato da un operatore prima di diventare documento di lavoro.

Limiti e avvertenze

  • Allucinazioni su valori numerici: gli LLM sbagliano date, importi, percentuali con più facilità di quanto sbaglino la sintesi testuale. Per campi critici come scadenza e importo massimo, richiedete sempre una verifica umana sul documento originale.
  • OCR imperfetto: PDF con scansioni scadenti producono testo sporco; il modello “corregge” creativamente e rischia di reinventare numeri. Non accettate lo schema senza riaprire il PDF.
  • Pattern pubblici ≠ pattern giusti: il catalogo Fabric upstream è ricco ma eterogeneo. Prima di adottare un pattern per lavoro professionale, leggetelo come leggereste una lettera modello: deve essere coerente con la vostra metodologia.
  • Gestione dei pattern come codice: tenete i pattern dello studio in un repo git interno con review peer, tag e CHANGELOG.md. Un pattern modificato senza tracciamento è un errore che si propaga su decine di pratiche.

Link: github.com/danielmiessler/fabric


Stefano Noferi — Founder e CEO/CTO di noze
Tech Entrepreneur — AI Governance & Security Architect

Vuoi supporto? Sei sotto attacco? Stato dei servizi
Vuoi supporto? Sei sotto attacco? Stato dei servizi