Detectar texto em imagens

O serviço de reconhecimento óptico de caracteres (OCR) da Vertex AI no Google Distributed Cloud (GDC) isolado detecta texto em imagens usando o método da API BatchAnnotateImages. O serviço aceita arquivos JPEG e PNG para imagens.

Nesta página, mostramos como detectar texto em imagens usando a API OCR no Distributed Cloud.

Antes de começar

Antes de começar a usar a API OCR, é preciso ter um projeto com a API OCR ativada e as credenciais apropriadas. Também é possível instalar bibliotecas de cliente para ajudar você a fazer chamadas para a API. Para mais informações, consulte Configurar um projeto de reconhecimento de caracteres.

Detectar texto de arquivos JPEG e PNG

O método BatchAnnotateImages detecta texto de um lote de arquivos JPEG ou PNG. Você envia o arquivo de onde quer detectar o texto diretamente como conteúdo na solicitação da API. O sistema retorna o texto detectado resultante no formato JSON na resposta da API.

É preciso especificar valores para os campos no corpo JSON da solicitação de API. A tabela a seguir contém uma descrição dos campos do corpo da solicitação que você precisa fornecer ao usar o método da API BatchAnnotateImages para suas solicitações de detecção de texto:

Campos do corpo da solicitação Descrição do campo
content As imagens com texto a ser detectado. Você fornece a representação Base64 (string ASCII) dos dados da imagem binária.
type O tipo de detecção de texto que você precisa da imagem.

Especifique um dos dois recursos de anotação:
  • TEXT_DETECTION detecta e extrai texto de qualquer imagem. A resposta JSON inclui a string extraída, palavras individuais e caixas delimitadoras.
  • DOCUMENT_TEXT_DETECTION também extrai texto de uma imagem, mas o serviço otimiza a resposta para textos e documentos densos. O JSON inclui informações de página, bloco, parágrafo, palavra e quebra de linha.
Para mais informações sobre esses recursos de anotação, consulte Recursos de reconhecimento óptico de caracteres.
language_hints Opcional. Lista de idiomas a serem usados para a detecção de texto.

O sistema interpreta um valor vazio para esse campo como detecção automática de idioma.

Não é necessário definir o campo language_hints para idiomas baseados no alfabeto latino.

Se você souber o idioma do texto na imagem, definir uma dica vai melhorar os resultados.

Para informações sobre a representação JSON completa, consulte AnnotateImageRequest.

Fazer uma solicitação de API

Faça uma solicitação à API pré-treinada de OCR usando o método da API REST. Caso contrário, interaja com a API pré-treinada de OCR usando um script Python para detectar texto em arquivos JPEG ou PNG.

Os exemplos a seguir mostram como detectar texto em uma imagem usando OCR:

REST

Siga estas etapas para detectar texto em imagens usando o método da API REST:

  1. Salve o seguinte arquivo request.json para o corpo da solicitação:

    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
    

    Substitua:

    • BASE64_ENCODED_IMAGE: a representação Base64 (string ASCII) dos dados da imagem binária. Essa string começa com caracteres semelhantes a /9j/4QAYRXhpZgAA...9tAVx/zDQDlGxn//2Q==.
    • FEATURE_TYPE: o tipo de detecção de texto que você precisa da imagem. Os valores permitidos são TEXT_DETECTION ou DOCUMENT_TEXT_DETECTION.
    • LANGUAGE_HINT: as tags de idioma BCP 47 a serem usadas como dicas de idioma para detecção de texto, como en-t-i0-handwrit. Este campo é opcional, e o sistema interpreta um valor vazio como detecção automática de idioma.
  2. Receber um token de autenticação.

  3. Faça a solicitação:

    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
    

    Substitua:

    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
    

    Substitua:

Python

Siga estas etapas para usar o serviço de OCR de um script Python para detectar texto em uma imagem:

  1. Instale a versão mais recente da biblioteca de cliente de OCR.

  2. Defina as variáveis de ambiente necessárias em um script Python.

  3. Autentique sua solicitação de API.

  4. Adicione o seguinte código ao script Python que você criou:

    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)
    

    Substitua:

    • ENDPOINT: o endpoint de OCR que você usa na sua organização. Para mais informações, consulte o status e os endpoints do serviço.
    • BASE64_ENCODED_IMAGE: a representação Base64 (string ASCII) dos dados da imagem binária. Essa string começa com caracteres semelhantes a /9j/4QAYRXhpZgAA...9tAVx/zDQDlGxn//2Q==.
    • FEATURE_TYPE: o tipo de detecção de texto que você precisa da imagem. Os valores permitidos são TEXT_DETECTION ou DOCUMENT_TEXT_DETECTION.
    • PROJECT_ID: o ID do projeto.
  5. Salve o script Python.

  6. Execute o script Python para detectar texto na imagem:

    python SCRIPT_NAME
    

    Substitua SCRIPT_NAME pelo nome que você deu ao script do Python, como vision.py.