Analizzare i documenti (ad esempio i PDF) utilizzando l'API Gemini

Puoi chiedere a un Gemini modello di analizzare i file di documenti (come PDF e file di testo normale) che fornisci in linea (codificati in base64) o tramite URL. Quando utilizzi Firebase AI Logic, puoi effettuare questa richiesta direttamente dalla tua app.

Con questa funzionalità, puoi:

  • Analizzare diagrammi, grafici e tabelle all'interno dei documenti
  • Estrarre informazioni in formati di output strutturati
  • Rispondere a domande sui contenuti visivi e di testo nei documenti
  • Riassumere i documenti
  • Trascrivere i contenuti dei documenti (ad esempio in HTML), conservando layout e formattazione, per l'utilizzo in applicazioni downstream (ad esempio nelle pipeline RAG)

Questa guida riguarda la generazione di testo da input di documenti (come PDF), ma puoi anche generare immagini da input di documenti.

Vai agli esempi di codice Vai al codice per le risposte in streaming


Consulta altre guide per ulteriori opzioni per lavorare con i documenti (come i PDF)
Genera output strutturato Chat a più turni

Prima di iniziare

Fai clic sul tuo fornitore Gemini API per visualizzare contenuti specifici del fornitore e codice in questa pagina.

Se non l'hai ancora fatto, completa la guida introduttiva, che descrive come configurare il progetto Firebase, collegare l'app a Firebase, aggiungere l'SDK, inizializzare il servizio di backend per il fornitore Gemini API scelto e creare un'istanza di GenerativeModel.

Per testare e iterare sui prompt, ti consigliamo di utilizzare Google AI Studio.

Modelli che supportano questa funzionalità

Questa guida riguarda la generazione di testo da input di documenti (come PDF) ed è applicabile ai seguenti Gemini modelli:

  • gemini-3.1-pro-preview
  • gemini-3.7-flash (e i modelli precedenti gemini-3.6-flash e gemini-3.5-flash)
  • gemini-3.5-flash-lite (e il modello precedente gemini-3.1-flash-lite)

I modelli Gemini 2.5 di uso generale supportano questa funzionalità, ma sono tutti ritirati.

Genera testo da file PDF (codificati in base64)

Prima di provare questo esempio, completa la sezione Prima di iniziare di questa guida per configurare il progetto e l'app.
In questa sezione, fai clic anche su un pulsante per il Gemini API fornitore dell'API Gemini scelto in modo da visualizzare contenuti specifici del fornitore in questa pagina.

Puoi chiedere a un modello Gemini di generare testo utilizzando prompt con testo e PDF, fornendo il mimeType di ogni file di input e il file stesso. Trova i requisiti e i consigli per i file di input più avanti in questa pagina.

Swift

Puoi chiamare generateContent() per generare testo da input multimodali di testo e PDF.


import FirebaseAILogic

// Initialize the Gemini Developer API backend service.
let ai = FirebaseAI.firebaseAI(backend: .googleAI())

// Create a `GenerativeModel` instance with a model that supports your use case.
let model = ai.generativeModel(modelName: "gemini-3.7-flash")


// Provide the PDF as `Data` with the appropriate MIME type
let pdf = try InlineDataPart(data: Data(contentsOf: pdfURL), mimeType: "application/pdf")

// Provide a text prompt to include with the PDF file
let prompt = "Summarize the important results in this report."

// To generate text output, call `generateContent` with the PDF file and text prompt
let response = try await model.generateContent(pdf, prompt)

// Print the generated text, handling the case where it might be nil
print(response.text ?? "No text in response.")

Kotlin

Puoi chiamare generateContent() per generare testo da input multimodali di testo e PDF.

Per Kotlin, i metodi in questo SDK sono funzioni di sospensione e devono essere chiamati da un ambito di coroutine.

// Initialize the Gemini Developer API backend service.
// Create a `GenerativeModel` instance with a model that supports your use case.
val model = Firebase.ai(backend = GenerativeBackend.googleAI())
                        .generativeModel("gemini-3.7-flash")


val contentResolver = applicationContext.contentResolver

// Provide the URI for the PDF file you want to send to the model
val inputStream = contentResolver.openInputStream(pdfUri)

if (inputStream != null) {  // Check if the PDF file loaded successfully
    inputStream.use { stream ->
        // Provide a prompt that includes the PDF file specified above and text
        val prompt = content {
            inlineData(
                bytes = stream.readBytes(),
                mimeType = "application/pdf" // Specify the appropriate PDF file MIME type
            )
            text("Summarize the important results in this report.")
        }

        // To generate text output, call `generateContent` with the prompt
        val response = model.generateContent(prompt)

        // Log the generated text, handling the case where it might be null
        Log.d(TAG, response.text