Rilevare ed estrarre testo dalle immagini

Riconoscimento ottico dei caratteri (OCR)

L'API Cloud Vision ti consente di utilizzare le funzionalità di riconoscimento ottico dei caratteri (OCR) per il rilevamento del testo dalle immagini. Ciò significa che puoi utilizzare Cloud Vision per attività di visione artificiale come l'analisi delle immagini e il rilevamento di testo denso nei documenti, inclusa l'estrazione della scrittura a mano.

L'API Cloud Vision fornisce due funzionalità di annotazione che supportano il riconoscimento ottico dei caratteri (OCR):

  • TEXT_DETECTION rileva ed estrae il testo da qualsiasi immagine. Ad esempio, una fotografia potrebbe contenere un cartello stradale o un segnale stradale. Il JSON include l'intera stringa estratta, nonché le singole parole e i relativi rettangoli di selezione.

    Segnale stradale con testo.

  • DOCUMENT_TEXT_DETECTION estrae anche il testo da un'immagine, ma la risposta è ottimizzata per testo e documenti densi. Il JSON include informazioni su pagina, blocco, paragrafo, parola e interruzione.

    Documento con testo evidenziato.

    Scopri di più su DOCUMENT_TEXT_DETECTION per l'estrazione della scrittura a mano libera e l'estrazione del testo dai file (PDF o TIFF).

Provalo

Se non conosci Google Cloud, crea un account per valutare le prestazioni di Cloud Vision in scenari reali. I nuovi clienti ricevono anche 300 $di crediti senza costi per l'esecuzione, il test e il deployment dei workload.

Prova Cloud Vision senza costi

Richieste di rilevamento testo

Configura il progetto Google Cloud e l'autenticazione

Rilevamento del testo in un'immagine locale

Puoi utilizzare l'API Vision per eseguire il rilevamento delle funzionalità su un file immagine locale.

Per le richieste REST, invia i contenuti del file immagine come stringa codificata in base64 nel corpo della richiesta.

Per le richieste gcloud e delle librerie client, specifica il percorso di un'immagine locale nella tua richiesta.

gcloud

Per eseguire il rilevamento del testo, utilizza il comando gcloud ml vision detect-text:

gcloud ml vision detect-text ./path/to/local/file.jpg

REST

Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:

  • BASE64_ENCODED_IMAGE: La rappresentazione in base64 (stringa ASCII) dei dati dell'immagine binaria. Questa stringa dovrebbe essere simile alla seguente:
    • /9j/4QAYRXhpZgAA...9tAVx/zDQDlGxn//2Q==
    Per ulteriori informazioni, consulta l'argomento Codifica in base64.
  • PROJECT_ID: l'ID progetto Google Cloud .

Metodo HTTP e URL:

POST https://vision.googleapis.com/v1/images:annotate

Corpo JSON della richiesta:

{
  "requests": [
    {
      "image": {
        "content": "BASE64_ENCODED_IMAGE"
      },
      "features": [
        {
          "type": "TEXT_DETECTION"
        }
      ]
    }
  ]
}

Per inviare la richiesta, scegli una di queste opzioni:

curl

Salva il corpo della richiesta in un file denominato request.json, quindi esegui il comando seguente:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: PROJECT_ID" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://vision.googleapis.com/v1/images:annotate"

PowerShell

Salva il corpo della richiesta in un file denominato request.json, quindi esegui il comando seguente:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "PROJECT_ID" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://vision.googleapis.com/v1/images:annotate" | Select-Object -Expand Content

Se la richiesta riesce, il server restituisce un codice di stato HTTP 200 OK e la risposta in formato JSON.

Una risposta TEXT_DETECTION include la frase rilevata, il relativo riquadro di delimitazione e le singole parole con i relativi riquadri di delimitazione.

Go

Prima di provare questo esempio, segui le istruzioni di configurazione di Go nella guida rapida di Vision per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Vision Go.

Per eseguire l'autenticazione in Vision, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.


// detectText gets text from the Vision API for an image at the given file path.
func detectText(w io.Writer, file string) error {
	ctx := context.Background()

	client, err := vision.NewImageAnnotatorClient(ctx)
	if err != nil {
		return err
	}

	f, err := os.Open(file)
	if err != nil {
		return err
	}
	defer f.Close()

	image, err := vision.NewImageFromReader(f)
	if err != nil {
		return err
	}
	annotations, err := client.DetectTexts(ctx, image, nil, 10)
	if err != nil {
		return err
	}

	if len(annotations) == 0 {
		fmt.Fprintln(w, "No text found.")
	} else {
		fmt.Fprintln(w, "Text:")
		for _, annotation := range annotations {
			fmt.Fprintf(w, "%q\n", annotation.Description)
		}
	}

	return nil
}

Java

Prima di provare questo esempio, segui le istruzioni di configurazione di Java nella guida rapida dell'API Vision che utilizza le librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API Vision per Java.


import com.google.cloud.vision.v1.AnnotateImageRequest;
import com.google.cloud.vision.v1.AnnotateImageResponse;
import com.google.cloud.vision.v1.BatchAnnotateImagesResponse;
import com.google.cloud.vision.v1.EntityAnnotation;
import com.google.cloud.vision.v1.Feature;
import com.google.cloud.vision.v1.Image;
import com.google.cloud.vision.v1.ImageAnnotatorClient;
import com.google.protobuf.ByteString;
import java.io.FileInputStream;
import