Estrazione e Strutturazione Dati da PDF
Skill operativa per l'analisi e l'estrazione intelligente di contenuto da documenti PDF, con particolare focus su documenti aziendali, tecnici, finanziari e legali tipici delle PMI italiane.
Distinzione Fondamentale: PDF Digitale vs Scansionato
PDF Digitale (testo selezionabile)
- Il testo è estratto direttamente e con alta fedeltà
- Le tabelle mantengono la struttura originale se ben formate
- I metadati (autore, data creazione, titolo) sono accessibili
- Velocità di elaborazione: alta
- Affidabilità: 95%+
PDF Scansionato (immagine)
- Richiede OCR (Optical Character Recognition) per estrarre il testo
- Qualità dipende da risoluzione scansione (minimo 200 DPI, ottimale 300 DPI)
- Tabelle spesso non riconoscibili come struttura — necessaria ricostruzione manuale
- Firma e timbri: riconoscibili come immagini, non come testo
- Affidabilità: 70-90% in base alla qualità
- Azione: segnalare all'utente se si tratta di scansione e il livello di confidenza
Workflow di Estrazione
Step 1: Analisi Preliminare del Documento
Prima di estrarre, identificare:
- Tipo documento: bilancio, contratto, relazione tecnica, fattura, perizia, offerta, verbale, certificato
- Lingua: italiano (prevalente), inglese, misto
- Struttura: ha indice? sezioni numerate? tabelle? allegati?
- Qualità: PDF nativo o scansione? qualità immagini?
- Lunghezza: numero pagine, densità informativa
Comunicare all'utente il tipo rilevato e chiedere conferma dell'obiettivo di estrazione se non è esplicito.
Step 2: Identificazione Sezioni Rilevanti
Elementi Strutturali da Riconoscere
- Intestazione documento: titolo, numero protocollo, data, versione/revisione
- Intestazione pagina (header): logo, ragione sociale, codice documento
- Piè di pagina (footer): numerazione pagine, data, versione
- Indice/Sommario: struttura gerarchica capitoli
- Firme e timbri: posizione, nome firmatario, data
- Note a piè di pagina: numerazione, testo
Pattern di Riconoscimento per Tipo Documento
Bilancio / Documento Finanziario:
- Cercare: "Stato Patrimoniale", "Conto Economico", "Nota Integrativa", "Rendiconto Finanziario"
- Voci tipiche attivo: immobilizzazioni, crediti, disponibilità
- Voci tipiche passivo: patrimonio netto, TFR, debiti
- Anni di confronto in colonne parallele
- Totali e subtotali da verificare aritmeticamente
Contratto / Accordo Legale:
- Cercare: "Parti", "Premesse/Whereas", "Oggetto", "Durata", "Corrispettivo/Prezzo", "Penali", "Risoluzione", "Foro competente"
- Date: data firma, data decorrenza, date scadenza
- Importi: con e senza IVA, modalità pagamento
- Clausole di riservatezza (NDA), esclusiva, non concorrenza
Relazione Tecnica / Perizia:
- Cercare: "Premessa", "Oggetto", "Metodologia", "Risultati", "Conclusioni"
- Dati tecnici nelle tabelle: numeri con unità di misura
- Normative citate: DM, UNI, EN, ISO con anno
- Valori di calcolo, misure, verifiche
Fattura / Documento Fiscale:
- Cedente e cessionario (P.IVA, CF, indirizzo)
- Numero e data fattura
- Descrizione beni/servizi, quantità, prezzo unitario
- Imponibile, aliquota IVA, importo IVA, totale
- Codice destinatario SDI / PEC (fattura elettronica)
Step 3: Estrazione Tabelle
Le tabelle sono l'elemento più critico. Seguire questo approccio:
- Identifica i confini: dove inizia e finisce la tabella?
- Intestazione: la prima riga è intestazione? è su più righe?
- Righe aggregate / subtotali: identificare e marcare
- Celle unite (merge): ricostruire la struttura originale
- Tabelle multi-pagina: verificare se la tabella continua nella pagina successiva
- Unità di misura: sono nell'intestazione colonna o nelle celle?
Output formato tabella:
| Voce | Anno 2023 | Anno 2022 | Variazione % |
|------|-----------|-----------|--------------|
| Ricavi | 1.250.000 | 1.100.000 | +13,6% |
| EBITDA | 187.500 | 154.000 | +21,8% |
Step 4: Normalizzazione Dati Estratti
Numeri e Valori
- Rimuovere separatori di migliaia ambigui (punto/spazio) e standardizzare
- Formato output: usare la virgola come separatore decimale italiano
- Valori tra parentesi = negativi: "(125.000)" → -125.000
- Valori con asterisco o nota: preservare il riferimento alla nota
- Percentuali: verificare che sommino correttamente (es. quote di mercato)
Date
- Normalizzare al formato ISO esteso italiano: "15 marzo 2024" o "15/03/2024"
- Attenzione a formati ambigui: "04/05/24" → chiedere conferma mese/giorno
- Date in testo narrativo: estrarre e strutturare separatamente
Entità Nominali
- Ragioni sociali: preservare la forma esatta inclusa la forma giuridica (S.r.l., S.p.A., S.a.s.)
- P.IVA e CF: validare il formato (P.IVA: 11 cifre; CF: 16 caratteri alfanumerici)
- IBAN: formato IT + 2 cifre check + 1 lettera + 22 caratteri
- Codici normativi: preservare esattamente (DM 17/01/2018 ≠ DM 17/1/18)
Step 5: Estrazione KPI Finanziari da Bilanci
Per bilanci PMI, estrarre sistematicamente:
Conto Economico:
- Ricavi delle vendite (A1)
- Valore della produzione (A totale)
- Costi della produzione (B totale)
- EBITDA (A - B + ammortamenti)
- EBIT (A - B)
- Proventi/oneri finanziari (C)
- Risultato prima delle imposte
- Imposte
- Utile/perdita netto
Stato Patrimoniale:
- Immobilizzazioni (materiali, immateriali, finanziarie)
- Attivo circolante (magazzino, crediti, liquidità)
- Patrimonio netto
- Fondi rischi e TFR
- Debiti finanziari (a breve e lungo)
- Debiti commerciali
Calcolare e riportare:
- Totale attivo (= totale passivo + PN)
- CCN (Capitale Circolante Netto) = Attivo corrente - Passivo corrente
- PFN (Posizione Finanziaria Netta) = Debiti finanziari - Liquidità
Step 6: Output Strutturato
L'output dell'estrazione deve essere sempre strutturato in JSON o tabella markdown, mai solo testo narrativo:
{
"tipo_documento": "bilancio_civilistico",
"societa": "Rossi S.r.l.",
"partita_iva": "01234567890",
"anno_riferimento": 2023,
"data_approvazione": "2024-04-30",
"conto_economico": {
"ricavi": 1250000,
"ebitda": 187500,
"ebit": 125000,
"utile_netto": 78000
},
"stato_patrimoniale": {
"totale_attivo": 890000,
"patrimonio_netto": 320000,
"pfn": 210000
},
"confidenza_estrazione": "alta",
"note": ["Bilancio PDF nativo", "Anno comparativo 2022 presente"]
}
Gestione Errori e Incertezze
Segnalare Sempre
- Testo illeggibile o di bassa qualità OCR → indicare la sezione e il livello di confidenza
- Valori che non tornano aritmeticamente → segnalare la discrepanza
- Tabelle troncate o tagliate → chiedere la pagina mancante
- Contraddizioni interne al documento → evidenziare entrambi i valori
Mai Inventare
- Non completare valori mancanti con stime senza dichiararlo esplicitamente
- Non assumere un anno se non è dichiarato nel documento
- Non tradurre termini giuridici o tecnici se ambigui — preservare l'originale
Skill Correlate
| Skill |
Quando invocarla |
technical-writing |
Per rielaborare il contenuto estratto in un documento strutturato |
template-generation |
Per compilare un template con i dati estratti |
analisi-bilancio-pmi |
Per analizzare i dati finanziari estratti |
review-contract |
Per analizzare clausole estratte da contratti |
docx |
Per produrre il documento finale rielaborato |
1---2name: pdf-extraction3description: Estrazione, strutturazione e normalizzazione di dati da documenti PDF per PMI italiane. Gestisce sia PDF digitali (testo selezionabile) che PDF scansionati (immagine), identificando sezioni rilevanti come intestazioni, tabelle, firme, date, KPI finanziari, clausole contrattuali e metadati documento. Usa questa skill ogni volta che l'utente fornisce un PDF da cui estrarre dati strutturati, informazioni specifiche o contenuti da rielaborare in report, analisi o template.4---56# Estrazione e Strutturazione Dati da PDF78Skill operativa per l'analisi e l'estrazione intelligente di contenuto da documenti PDF, con particolare focus su documenti aziendali, tecnici, finanziari e legali tipici delle PMI italiane.910## Distinzione Fondamentale: PDF Digitale vs Scansionato1112### PDF Digitale (testo selezionabile)13- Il testo è estratto direttamente e con alta fedeltà14- Le tabelle mantengono la struttura originale se ben formate15- I metadati (autore, data creazione, titolo) sono accessibili16- Velocità di elaborazione: alta17- Affidabilità: 95%+1819### PDF Scansionato (immagine)20- Richiede OCR (Optical Character Recognition) per estrarre il testo21- Qualità dipende da risoluzione scansione (minimo 200 DPI, ottimale 300 DPI)22- Tabelle spesso non riconoscibili come struttura — necessaria ricostruzione manuale23- Firma e timbri: riconoscibili come immagini, non come testo24- Affidabilità: 70-90% in base alla qualità25- **Azione**: segnalare all'utente se si tratta di scansione e il livello di confidenza2627## Workflow di Estrazione2829### Step 1: Analisi Preliminare del Documento3031Prima di estrarre, identificare:321. **Tipo documento**: bilancio, contratto, relazione tecnica, fattura, perizia, offerta, verbale, certificato332. **Lingua**: italiano (prevalente), inglese, misto343. **Struttura**: ha indice? sezioni numerate? tabelle? allegati?354. **Qualità**: PDF nativo o scansione? qualità immagini?365. **Lunghezza**: numero pagine, densità informativa3738Comunicare all'utente il tipo rilevato e chiedere conferma dell'obiettivo di estrazione se non è esplicito.3940### Step 2: Identificazione Sezioni Rilevanti4142#### Elementi Strutturali da Riconoscere43- **Intestazione documento**: titolo, numero protocollo, data, versione/revisione44- **Intestazione pagina (header)**: logo, ragione sociale, codice documento45- **Piè di pagina (footer)**: numerazione pagine, data, versione46- **Indice/Sommario**: struttura gerarchica capitoli47- **Firme e timbri**: posizione, nome firmatario, data48- **Note a piè di pagina**: numerazione, testo4950#### Pattern di Riconoscimento per Tipo Documento5152**Bilancio / Documento Finanziario**:53- Cercare: "Stato Patrimoniale", "Conto Economico", "Nota Integrativa", "Rendiconto Finanziario"54- Voci tipiche attivo: immobilizzazioni, crediti, disponibilità55- Voci tipiche passivo: patrimonio netto, TFR, debiti56- Anni di confronto in colonne parallele57- Totali e subtotali da verificare aritmeticamente5859**Contratto / Accordo Legale**:60- Cercare: "Parti", "Premesse/Whereas", "Oggetto", "Durata", "Corrispettivo/Prezzo", "Penali", "Risoluzione", "Foro competente"61- Date: data firma, data decorrenza, date scadenza62- Importi: con e senza IVA, modalità pagamento63- Clausole di riservatezza (NDA), esclusiva, non concorrenza6465**Relazione Tecnica / Perizia**:66- Cercare: "Premessa", "Oggetto", "Metodologia", "Risultati", "Conclusioni"67- Dati tecnici nelle tabelle: numeri con unità di misura68- Normative citate: DM, UNI, EN, ISO con anno69- Valori di calcolo, misure, verifiche7071**Fattura / Documento Fiscale**:72- Cedente e cessionario (P.IVA, CF, indirizzo)73- Numero e data fattura74- Descrizione beni/servizi, quantità, prezzo unitario75- Imponibile, aliquota IVA, importo IVA, totale76- Codice destinatario SDI / PEC (fattura elettronica)7778### Step 3: Estrazione Tabelle7980Le tabelle sono l'elemento più critico. Seguire questo approccio:81821. **Identifica i confini**: dove inizia e finisce la tabella?832. **Intestazione**: la prima riga è intestazione? è su più righe?843. **Righe aggregate / subtotali**: identificare e marcare854. **Celle unite (merge)**: ricostruire la struttura originale865. **Tabelle multi-pagina**: verificare se la tabella continua nella pagina successiva876. **Unità di misura**: sono nell'intestazione colonna o nelle celle?8889**Output formato tabella**:90```91| Voce | Anno 2023 | Anno 2022 | Variazione % |92|------|-----------|-----------|--------------|93| Ricavi | 1.250.000 | 1.100.000 | +13,6% |94| EBITDA | 187.500 | 154.000 | +21,8% |95```9697### Step 4: Normalizzazione Dati Estratti9899#### Numeri e Valori100- Rimuovere separatori di migliaia ambigui (punto/spazio) e standardizzare101- Formato output: usare la virgola come separatore decimale italiano102- Valori tra parentesi = negativi: "(125.000)" → -125.000103- Valori con asterisco o nota: preservare il riferimento alla nota104- Percentuali: verificare che sommino correttamente (es. quote di mercato)105106#### Date107- Normalizzare al formato ISO esteso italiano: "15 marzo 2024" o "15/03/2024"108- Attenzione a formati ambigui: "04/05/24" → chiedere conferma mese/giorno109- Date in testo narrativo: estrarre e strutturare separatamente110111#### Entità Nominali112- Ragioni sociali: preservare la forma esatta inclusa la forma giuridica (S.r.l., S.p.A., S.a.s.)113- P.IVA e CF: validare il formato (P.IVA: 11 cifre; CF: 16 caratteri alfanumerici)114- IBAN: formato IT + 2 cifre check + 1 lettera + 22 caratteri115- Codici normativi: preservare esattamente (DM 17/01/2018 ≠ DM 17/1/18)116117### Step 5: Estrazione KPI Finanziari da Bilanci118119Per bilanci PMI, estrarre sistematicamente:120121**Conto Economico**:122- Ricavi delle vendite (A1)123- Valore della produzione (A totale)124- Costi della produzione (B totale)125- EBITDA (A - B + ammortamenti)126- EBIT (A - B)127- Proventi/oneri finanziari (C)128- Risultato prima delle imposte129- Imposte130- Utile/perdita netto131132**Stato Patrimoniale**:133- Immobilizzazioni (materiali, immateriali, finanziarie)134- Attivo circolante (magazzino, crediti, liquidità)135- Patrimonio netto136- Fondi rischi e TFR137- Debiti finanziari (a breve e lungo)138- Debiti commerciali139140**Calcolare e riportare**:141- Totale attivo (= totale passivo + PN)142- CCN (Capitale Circolante Netto) = Attivo corrente - Passivo corrente143- PFN (Posizione Finanziaria Netta) = Debiti finanziari - Liquidità144145### Step 6: Output Strutturato146147L'output dell'estrazione deve essere sempre strutturato in JSON o tabella markdown, mai solo testo narrativo:148149```json150{151 "tipo_documento": "bilancio_civilistico",152 "societa": "Rossi S.r.l.",153 "partita_iva": "01234567890",154 "anno_riferimento": 2023,155 "data_approvazione": "2024-04-30",156 "conto_economico": {157 "ricavi": 1250000,158 "ebitda": 187500,159 "ebit": 125000,160 "utile_netto": 78000161 },162 "stato_patrimoniale": {163 "totale_attivo": 890000,164 "patrimonio_netto": 320000,165 "pfn": 210000166 },167 "confidenza_estrazione": "alta",168 "note": ["Bilancio PDF nativo", "Anno comparativo 2022 presente"]169}170```171172## Gestione Errori e Incertezze173174### Segnalare Sempre175- Testo illeggibile o di bassa qualità OCR → indicare la sezione e il livello di confidenza176- Valori che non tornano aritmeticamente → segnalare la discrepanza177- Tabelle troncate o tagliate → chiedere la pagina mancante178- Contraddizioni interne al documento → evidenziare entrambi i valori179180### Mai Inventare181- Non completare valori mancanti con stime senza dichiararlo esplicitamente182- Non assumere un anno se non è dichiarato nel documento183- Non tradurre termini giuridici o tecnici se ambigui — preservare l'originale184185## Skill Correlate186187| Skill | Quando invocarla |188|-------|-----------------|189| `technical-writing` | Per rielaborare il contenuto estratto in un documento strutturato |190| `template-generation` | Per compilare un template con i dati estratti |191| `analisi-bilancio-pmi` | Per analizzare i dati finanziari estratti |192| `review-contract` | Per analizzare clausole estratte da contratti |193| `docx` | Per produrre il documento finale rielaborato |