Detectar texto (OCR)

Reconhecimento óptico de caracteres (OCR)

A API Vision detecta e extrai texto de imagens. Há dois recursos de anotação compatíveis com o reconhecimento óptico de caracteres:

  • TEXT_DETECTION detecta e extrai texto de qualquer imagem. Por exemplo, uma foto pode ter uma placa de rua ou de trânsito. O JSON inclui toda a string extraída, bem como cada palavra e caixas delimitadoras.

  • DOCUMENT_TEXT_DETECTION também extrai texto de uma imagem, mas a resposta é otimizada para textos e documentos densos. O JSON inclui informações de página, bloco, parágrafo, palavra e quebra de linha.

Amostras de código

Para ver exemplos em diversas linguagens de programação, consulte:

Solicitações de detecção de texto

Configurar seu projeto e autenticação do GCP

Detectar texto

Comando curl

Para fazer uma solicitação de detecção de rótulo usando o comando curl a partir da linha de comandos do Linux ou MacOS, faça uma solicitação POST para o ponto de extremidade https://vision.googleapis.com/v1/images:annotate e especifique TEXT_DETECTION como valor de features.type, conforme mostrado no exemplo a seguir:

curl -X POST \
     -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
     -H "Content-Type: application/json; charset=utf-8" \
     --data "{
      'requests': [
        {
          'image': {
            'source': {
              'imageUri': 'gs://bucket-name-123/abbey_road.jpg'
            }
          },
          'features': [
            {
              'type': 'TEXT_DETECTION'
            }
          ]
        }
      ]
    }" "https://vision.googleapis.com/v1/images:annotate"

Para detectar texto de documento, substitua "type": "DOCUMENT_TEXT_DETECTION" na solicitação acima.

É possível transmitir as imagens de uma destas três maneiras: como uma string codificada em Base64 (mostrada acima), como URI do Google Cloud Storage ou da Web. Consulte Como fazer solicitações para saber mais.

Para mais informações sobre como configurar o corpo da solicitação, consulte a documentação de referência de AnnotateImageRequest.

COMANDO GCLOUD

Para realizar a análise de entidade, use o comando gcloud ml vision detect-text, conforme mostrado no exemplo a seguir:

gcloud ml vision detect-text "gs://bucket-name-123/abbey_road.jpg"

PowerShell

Para realizar uma solicitação de detecção de rótulo usando o Windows PowerShell, faça uma solicitação POST para o endpoint https://vision.googleapis.com/v1/images:annotate e especifique TEXT_DETECTION como o valor de features.type, conforme mostrado no exemplo a seguir:

$cred = gcloud auth application-default print-access-token
$headers = @{ Authorization = "Bearer $cred" }

Invoke-WebRequest `
  -Method Post `
  -Headers $headers `
  -ContentType: "application/json; charset=utf-8" `
  -Body "{
      'requests': [
        {
          'image': {
            'source': {
              'imageUri': 'gs://bucket-name-123/abbey_road.jpg'
            }
          },
          'features': [
            {
              'type': 'TEXT_DETECTION'
            }
          ]
        }
      ]
    }" `
  -Uri "https://vision.googleapis.com/v1/images:annotate" | Select-Object -Expand Content

Para detectar texto de documentos, substitua "type": "DOCUMENT_TEXT_DETECTION" na solicitação acima.

É possível transmitir as imagens de uma destas três maneiras: como uma string codificada em Base64, como URI do Google Cloud Storage ou como URL HTTPS ou HTTP com acesso público. Consulte Como fazer solicitações para saber mais.

Para mais informações sobre como configurar o corpo da solicitação, consulte a documentação de referência de AnnotateImageRequest.

Respostas de detecção de texto

Quando a solicitação é bem-sucedida, o servidor retorna um código de status HTTP 200 OK e a resposta no formato JSON.

Uma resposta de TEXT_DETECTION inclui a frase detectada e cada palavra dela, todas com caixas delimitadoras:

{
  "responses": [
    {
      "textAnnotations": [
        {
          "locale": "en",
          "description": "ABBEY\nROAD NW8\nCITY OF WESTMINSTER\n",
          "boundingPoly": {
            "vertices": [
              {
                "x": 45,
                "y": 43
              },
              {
                "x": 269,
                "y": 43
              },
              {
                "x": 269,
                "y": 178
              },
              {
                "x": 45,
                "y": 178
              }
            ]
          }
        },
        {
          "description": "ABBEY",
          "boundingPoly": {
            "vertices": [
              {
                "x": 45,
                "y": 50
              },
              {
                "x": 181,
                "y": 43
              },
              {
                "x": 183,
                "y": 80
              },
              {
                "x": 47,
                "y": 87
              }
            ]
          }
        },
        {
          "description": "ROAD",
          "boundingPoly": {
            "vertices": [
              {
                "x": 48,
                "y": 96
              },
              {
                "x": 155,
                "y": 96
              },
              {
                "x": 155,
                "y": 132
              },
              {
                "x": 48,
                "y": 132
              }
            ]
          }
        },
        {
          "description": "NW8",
          "boundingPoly": {
            "vertices": [
              {
                "x": 182,
                "y": 95
              },
              {
                "x": 269,
                "y": 95
              },
              {
                "x": 269,
                "y": 130
              },
              {
                "x": 182,
                "y": 130
              }
            ]
          }
        },
        {
          "description": "CITY",
          "boundingPoly": {
            "vertices": [
              {
                "x": 51,
                "y": 162
              },
              {
                "x": 85,
                "y": 161
              },
              {
                "x": 85,
                "y": 177
              },
              {
                "x": 51,
                "y": 178
              }
            ]
          }
        },
        {
          "description": "OF",
          "boundingPoly": {
            "vertices": [
              {
                "x": 95,
                "y": 162
              },
              {
                "x": 111,
                "y": 162
              },
              {
                "x": 111,
                "y": 176
              },
              {
                "x": 95,
                "y": 176
              }
            ]
          }
        },
        {
          "description": "WESTMINSTER",
          "boundingPoly": {
            "vertices": [
              {
                "x": 124,
                "y": 162
              },
              {
                "x": 249,
                "y": 160
              },
              {
                "x": 249,
                "y": 174
              },
              {
                "x": 124,
                "y": 176
              }
            ]
          }
        }
      ]
    }
  ]
}

Como especificar o idioma (opcional)

Ambos os tipos de solicitação do OCR são compatíveis com um ou mais languageHints, com que é especificado o idioma de qualquer texto na imagem. No entanto, na maioria dos casos, um valor vazio produz os melhores resultados, já que ele possibilita a detecção automática do idioma. Não é necessário configurar languageHints para idiomas baseados no alfabeto latino. Em alguns casos, quando o idioma do texto na imagem é conhecido, você recebe resultados melhores definindo uma dica. No entanto, isso pode se tornar um incômodo se você defini-la errado. A detecção de texto retornará um erro se um ou mais dos idiomas especificados não for compatível.

Testar

Tente as opções de detecção de texto e de texto em documentos abaixo. Para usar a imagem já especificada (gs://bucket-name-123/abbey_road.jpg), clique em Executar. Como alternativa, você pode especificar sua própria imagem.

Para testar a detecção de texto em documentos, atualize o valor de type para DOCUMENT_TEXT_DETECTION.

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Documentação da API Cloud Vision
Precisa de ajuda? Acesse nossa página de suporte.