In questa lezione ci eserciteremo nell'usare Claude per analizzare e comprendere documenti PDF. Sappiamo bene quanto i PDF siano diffusi nel mondo: report finanziari, articoli scientifici, contratti e presentazioni tecniche. La sfida è trasformare questi documenti in conoscenza utile e pronta all’uso. Con Claude possiamo estrarre testo, interpretare grafici e tabelle, ottenere riassunti e persino collegare le informazioni a sezioni precise del documento.
Verifica dei requisiti PDF
Claude funziona con qualsiasi PDF standard. Dobbiamo però assicurarci che la nostra richiesta rispetti i seguenti requisiti quando utilizziamo il supporto PDF:
| Requisito | Limite |
|---|---|
| Dimensione massima della richiesta | 32 MB |
| Numero massimo di pagine per richiesta | 100 |
| Formato | PDF standard (senza password o crittografia) |
Occorre notare che entrambi i limiti si applicano all’intero payload della richiesta, includendo qualsiasi altro contenuto inviato insieme al PDF.
Poiché il supporto PDF si basa sulle capacità di Vision di Claude, che abbiamo già trattato nella prima lezione di questa guida, è soggetto alle stesse limitazioni e considerazioni delle altre attività di tipo visivo.
Come inviare un PDF a Claude
Possiamo fornire i PDF a Claude in tre modalità distinte:
- URL del PDF accessibile pubblicamente.
- Codifica base64 del file inserita nella richiesta.
- Caricamento tramite
file_idcon l’API Files, che ci consente di riutilizzare lo stesso documento più volte.
Gestire PDF accessibili pubblicamente con Claude
Quando lavoriamo con documenti PDF, spesso ci troviamo di fronte alla necessità di estrarre rapidamente le informazioni essenziali senza dover leggere centinaia di pagine. Per affrontare questa problematica, possiamo sfruttare le API di Claude che ci consentono di inviare un documento direttamente al modello e di porre domande specifiche sul suo contenuto. Il frammento di codice che segue mostra un esempio pratico in Python: carichiamo un PDF tramite URL, chiediamo a Claude di individuarne i risultati principali e infine stampiamo la risposta ottenuta.
Analizziamo passo dopo passo come funziona questo processo.
import anthropic
client = anthropic.Anthropic()
message = client.messages.create(
model="claude-opus-4-1-20250805",
max_tokens=1024,
messages=[
{
"role": "user",
"content": [
{
"type": "document",
"source": {
"type": "url",
"url": "https://assets.anthropic.com/m/1cd9d098ac3e6467/original/Claude-3-Model-Card-October-Addendum.pdf"
}
},
{
"type": "text",
"text": "What are the key findings in this document?"
}
]
}
],
)
print(message.content)
Un commento al codice
In questo codice Python per prima cosa importiamo la libreria Anthropic e inizializziamo un oggetto client. Questo client è lo strumento con cui interagiamo con le API di Claude. Normalmente l’autenticazione avviene tramite la nostra API key che viene gestita automaticamente dalla libreria se è stata impostata come variabile di ambiente.
Nella sezione di codice sotto riportato
- model: specifichiamo quale modello usare, in questo caso Claude Opus 4.1.
- max_tokens: indichiamo il limite massimo di token che vogliamo ricevere nella risposta (in questo esempio 1024).
message = client.messages.create(
model="claude-opus-4-1-20250805",
max_tokens=1024,
Poi, nella variabile message definiamo il contenuto della nostra richiesta. Ogni messaggio ha un ruolo (qui user) e un contenuto. Il contenuto è un elenco di blocchi che Claude può elaborare.
{
"type": "document",
"source": {
"type": "url",
"url": "https://assets.anthropic.com/m/1cd9d098ac3e6467/original/Claude-3-Model-Card-October-Addendum.pdf"
}
},
Questo primo blocco è di tipo document.
- Gli diciamo che la fonte è un URL.
- Forniamo un link diretto a un PDF, in questo caso una model card ufficiale di Claude.
In questo modo Claude può caricare e analizzare il contenuto del documento.
{
"type": "text",
"text": "What are the key findings in this document?"
}
Questo secondo blocco è di tipo testo. Qui inseriamo la nostra richiesta in linguaggio naturale: “Quali sono i risultati principali in questo documento?”. Infine in print(message.content) stampiamo il contenuto della risposta generata da Claude. Qui troveremo il riassunto dei risultati chiave tratti dal documento PDF. Questo codice è estremamente utile per estrarre rapidamente informazioni essenziali da documenti complessi senza doverli leggere integralmente.
PDF e request con codifica base64
Quando non disponiamo di un link pubblico a un PDF, oppure quando desideriamo inviare a Claude un documento presente sul nostro sistema locale, possiamo utilizzare la modalità di codifica Base64. In questo modo il contenuto del file viene convertito in testo leggibile dalle API e inviato come parte della richiesta.
Il seguente esempio in Python mostra come caricare un documento PDF, codificarlo in Base64 e trasmetterlo a Claude per l’analisi, accompagnandolo con una domanda specifica.
import anthropic
import base64
import httpx
pdf_data = base64.standard_b64encode(httpx.get(pdf_url).content).decode("utf-8")
with open("document.pdf", "rb") as f:
pdf_data = base64.standard_b64encode(f.read()).decode("utf-8")
client = anthropic.Anthropic()
message = client.messages.create(
model="claude-opus-4-1-20250805",
max_tokens=1024,
messages=[
{
"role": "user",
"content": [
{
"type": "document",
"source": {
"type": "base64",
"media_type": "application/pdf",
"data": pdf_data
}
},
{
"type": "text",
"text": "What are the key findings in this document?"
}
]
}
],
)
print(message.content)
In questo codice, invece di scaricare il PDF da Internet, possiamo leggere un file salvato localmente (ad esempio document.pdf) e codificarlo allo stesso modo. Grazie alla codifica Base64 possiamo inviare facilmente a Claude documenti PDF non pubblicamente accessibili, come file locali o riservati. Questo approccio è estremamente utile in contesti aziendali o di ricerca, dove i documenti non possono essere condivisi tramite URL ma devono essere comunque analizzati in modo automatico ed efficiente.
Caricare il file con Files API
Infine, Files API rappresenta l’approccio migliore quando dobbiamo lavorare ripetutamente sugli stessi documenti PDF. Possiamo caricare il file una sola volta, otteniamo un file_id e lo utilizziamo in quante richieste vogliamo, con un notevole risparmio di tempo e risorse.
from anthropic import Anthropic
client = Anthropic(api_key="LA_NOSTRA_API_KEY")
# Carichiamo un file PDF e otteniamo un file_id
with open("documento.pdf", "rb") as f:
file = client.files.create(file=f, purpose="message")
print("File caricato con ID:", file.id)
Conclusione: gestire PDF con Claude
Il questa lezione abbiamo analizzato il supporto PDF di Claude che ci consente di trasformare documenti complessi in conoscenza utile combinando l’analisi di testo e immagini. Ogni pagina del PDF viene convertita in immagine e il testo viene estratto separatamente con il modulo Vision, consentendo a Claude di comprendere sia i contenuti scritti sia gli elementi visivi come grafici e diagrammi.
Questo approccio permette di ottenere risposte contestualizzate e precise, facendo riferimento sia al testo che alle immagini (quando necessario). Per migliorare ulteriormente le prestazioni, possiamo integrare Claude con tecniche come il caching dei prompt, l’elaborazione batch e l’uso di strumenti specifici per estrarre informazioni mirate dai PDF, rendendo il processo efficiente anche su grandi volumi di documenti.
Se vuoi aggiornamenti su Estrarre informazioni da PDF con Claude AI inserisci la tua email nel box qui sotto: