Rilevamento del testo nelle immagini

Il servizio di riconoscimento ottico dei caratteri (OCR) di Vertex AI su Google Distributed Cloud (GDC) air-gapped rileva il testo nelle immagini utilizzando il metodo API BatchAnnotateImages. Il servizio supporta i file JPEG e PNG per le immagini.

Questa pagina mostra come rilevare il testo delle immagini utilizzando l'API OCR su Distributed Cloud.

Prima di iniziare

Prima di poter iniziare a utilizzare l'API OCR, devi disporre di un progetto con l'API OCR abilitata e delle credenziali appropriate. Puoi anche installare librerie client per facilitare le chiamate all'API. Per maggiori informazioni, consulta Configurare un progetto di riconoscimento dei caratteri.

Rilevare il testo dai file JPEG e PNG

Il metodo BatchAnnotateImages rileva il testo da un batch di file JPEG o PNG. Invii il file da cui vuoi rilevare il testo direttamente come contenuto nella richiesta API. Il sistema restituisce il testo rilevato risultante in formato JSON nella risposta dell'API.

Devi specificare i valori per i campi nel corpo JSON della richiesta API. La tabella seguente contiene una descrizione dei campi del corpo della richiesta che devi fornire quando utilizzi il metodo API BatchAnnotateImages per le richieste di rilevamento del testo:

Campi del corpo della richiesta Descrizione del campo
content Le immagini con il testo da rilevare. Fornisci la rappresentazione Base64 (stringa ASCII) dei dati immagine binari.
type Il tipo di rilevamento del testo che ti serve dall'immagine.

Specifica una delle due funzionalità di annotazione:
  • TEXT_DETECTION rileva ed estrae il testo da qualsiasi immagine. La risposta JSON include la stringa estratta, le singole parole e i relativi rettangoli di selezione.
  • DOCUMENT_TEXT_DETECTION estrae anche il testo da un'immagine, ma il servizio ottimizza la risposta per testo e documenti densi. Il formato JSON include informazioni su pagina, blocco, paragrafo, parola e interruzione.
Per saperne di più su queste funzionalità di annotazione, consulta Funzionalità di riconoscimento ottico dei caratteri.
language_hints Facoltativo. Elenco delle lingue da utilizzare per il rilevamento del testo.

Il sistema interpreta un valore vuoto per questo campo come rilevamento automatico della lingua.

Non è necessario impostare il campo language_hints per le lingue basate sull'alfabeto latino.

Se conosci la lingua del testo nell'immagine, l'impostazione di un suggerimento migliora i risultati.

Per informazioni sulla rappresentazione JSON completa, consulta AnnotateImageRequest.

Esegui una richiesta API

Invia una richiesta all'API preaddestrata OCR utilizzando il metodo dell'API REST. In caso contrario, interagisci con l'API preaddestrata OCR da uno script Python per rilevare il testo da file JPEG o PNG.

Gli esempi riportati di seguito mostrano come rilevare il testo in un'immagine utilizzando l'OCR:

REST

Segui questi passaggi per rilevare il testo nelle immagini utilizzando il metodo dell'API REST:

  1. Salva il seguente file request.json per il corpo della richiesta:

    cat <<- EOF > request.json
    {
      "requests": [
        {
          "image": {
            "content": BASE64_ENCODED_IMAGE
          },
          "features": [
            {
              "type": "FEATURE_TYPE"
            }
          ],
          "image_context": {
            "language_hints": [
              "LANGUAGE_HINT_1",
              "LANGUAGE_HINT_2",
              ...
            ]
          }
        }
      ]
    }
    EOF
    

    Sostituisci quanto segue:

    • BASE64_ENCODED_IMAGE: la rappresentazione Base64 (stringa ASCII) dei dati binari dell'immagine. Questa stringa inizia con caratteri simili a /9j/4QAYRXhpZgAA...9tAVx/zDQDlGxn//2Q==.
    • FEATURE_TYPE: il tipo di rilevamento del testo che ti serve dall'immagine. I valori consentiti sono TEXT_DETECTION o DOCUMENT_TEXT_DETECTION.
    • LANGUAGE_HINT: i tag di lingua BCP 47 da utilizzare come suggerimenti per la lingua per il rilevamento del testo, ad esempio en-t-i0-handwrit. Questo campo è facoltativo e il sistema interpreta un valore vuoto come rilevamento automatico della lingua.
  2. Ottenere un token di autenticazione.

  3. Effettua la richiesta:

    curl

    curl -X POST \
      -H "Authorization: Bearer TOKEN" \
      -H "x-goog-user-project: projects/PROJECT_ID" \
      -H "Content-Type: application/json; charset=utf-8" \
      -d @request.json \
      https://ENDPOINT/v1/images:annotate
    

    Sostituisci quanto segue:

    PowerShell

    $headers = @{
      "Authorization" = "Bearer TOKEN"
      "x-goog-user-project" = "projects/PROJECT_ID"
    }
    
    Invoke-WebRequest
      -Method POST
      -Headers $headers
      -ContentType: "application/json; charset=utf-8"
      -InFile request.json
      -Uri "ENDPOINT/v1/images:annotate" | Select-Object -Expand Content
    

    Sostituisci quanto segue:

Python

Segui questi passaggi per utilizzare il servizio OCR da uno script Python per rilevare il testo in un'immagine:

  1. Installa l'ultima versione della libreria client OCR.

  2. Imposta le variabili di ambiente richieste in uno script Python.

  3. Autentica la richiesta API.

  4. Aggiungi il seguente codice allo script Python che hai creato:

    from google.cloud import vision
    import google.auth
    from google.auth.transport import requests
    from google.api_core.client_options import ClientOptions
    
    audience = "https://ENDPOINT:443"
    api_endpoint="ENDPOINT:443"
    
    def vision_client(creds):
      opts = ClientOptions(api_endpoint=api_endpoint)
      return vision.ImageAnnotatorClient(credentials=creds, client_options=opts)
    
    def main():
      creds = None
      try:
        creds, project_id = google.auth.default()
        creds = creds.with_gdch_audience(audience)
        req = requests.Request()
        creds.refresh(req)
        print("Got token: ")
        print(creds.token)
      except Exception as e:
        print("Caught exception" + str(e))
        raise e
      return creds
    
    def vision_func(creds):
      vc = vision_client(creds)
      image = {"content": "BASE64_ENCODED_IMAGE"}
      features = [{"type_": vision.Feature.Type.FEATURE_TYPE}]
      # Each requests element corresponds to a single image. To annotate more
      # images, create a request element for each image and add it to
      # the array of requests
      req = {"image": image, "features": features}
    
      metadata = [("x-goog-user-project", "projects/PROJECT_ID")]
    
      resp = vc.annotate_image(req,metadata=metadata)
    
      print(resp)
    
    if __name__=="__main__":
      creds = main()
      vision_func(creds)
    

    Sostituisci quanto segue:

    • ENDPOINT: l'endpoint OCR che utilizzi per la tua organizzazione. Per saperne di più, visualizza lo stato e gli endpoint del servizio.
    • BASE64_ENCODED_IMAGE: la rappresentazione Base64 (stringa ASCII) dei dati binari dell'immagine. Questa stringa inizia con caratteri simili a /9j/4QAYRXhpZgAA...9tAVx/zDQDlGxn//2Q==.
    • FEATURE_TYPE: il tipo di rilevamento del testo che ti serve dall'immagine. I valori consentiti sono TEXT_DETECTION o DOCUMENT_TEXT_DETECTION.
    • PROJECT_ID: il tuo ID progetto.
  5. Salva lo script Python.

  6. Esegui lo script Python per rilevare il testo nell'immagine:

    python SCRIPT_NAME
    

    Sostituisci SCRIPT_NAME con il nome che hai assegnato allo script Python, ad esempio vision.py.