Detecta texto (OCR)

Reconocimiento óptico de caracteres (OCR)

La API de Vision permite detectar y extraer texto de las imágenes. Existen dos características de anotación que son compatibles con el reconocimiento óptico de caracteres:

  • TEXT_DETECTION detecta y extrae el texto de cualquier imagen. Por ejemplo, una fotografía que contenga una señal de tránsito o de tráfico. JSON incluye toda la string extraída, así como palabras individuales y sus cuadros de límites.

  • DOCUMENT_TEXT_DETECTION también extrae el texto de una imagen, pero la respuesta se optimiza para textos y documentos densos. JSON incluye la información de la página, del bloque, del párrafo, la palabra y la ruptura.

Muestras de código

Para obtener muestras en varios lenguajes de programación, consulta:

Solicitudes de detección de texto

Configura tu proyecto de GCP y la autenticación

Detecta texto

Comando curl

Para realizar una solicitud de detección de etiquetas con curl desde la línea de comandos Linux o MacOS, envía una solicitud POST al extremo https://vision.googleapis.com/v1/images:annotate y especifica TEXT_DETECTION como el valor features.type, como se muestra en el siguiente ejemplo:

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 la detección de texto en documentos, sustituye "type": "DOCUMENT_TEXT_DETECTION" en la solicitud anterior.

Las imágenes se pueden pasar en una de tres maneras: como una string codificada en base64 (como se mostró antes); como un URI web o de Google Cloud Storage. Consulta Realiza solicitudes para obtener más información.

Consulta la documentación de referencia de AnnotateImageRequest para obtener más información sobre cómo configurar el cuerpo de la solicitud.

COMANDO DE GCLOUD

Para realizar el análisis de entidades, usa el comando gcloud ml vision detect-text como se muestra en el siguiente ejemplo:

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

PowerShell

Para realizar una solicitud de detección de etiquetas con Windows PowerShell, envía una solicitud de POST al extremo https://vision.googleapis.com/v1/images:annotate y especifica TEXT_DETECTION como el valor de features.type, como se muestra en el siguiente ejemplo:

$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 la detección de texto en documentos, sustituye "type": "DOCUMENT_TEXT_DETECTION" en la solicitud anterior.

Las imágenes se pueden pasar en una de tres maneras: como una string codificada en base64; como un URI de Google Cloud Storage o como una URL HTTP o HTTPS de acceso público. Consulta Realiza solicitudes para obtener más información.

Consulta la documentación de referencia de AnnotateImageRequest para obtener más información sobre cómo configurar el cuerpo de la solicitud.

Respuestas de detección de texto

Si la solicitud tiene éxito, el servidor muestra un código de estado HTTP 200 OK y la respuesta en formato JSON.

Una respuesta TEXT_DETECTION incluye la frase detectada, su cuadro de límite, palabras individuales y sus cuadros de límites.

{
  "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
              }
            ]
          }
        }
      ]
    }
  ]
}

Especifica el idioma (opcional)

Ambos tipos de solicitudes OCR son compatibles con uno o más languageHints que especifican el idioma de cualquier texto en la imagen. Sin embargo, en la mayoría de los casos, un valor vacío obtiene mejores resultados, ya que permite la detección automática del idioma. Para los idiomas que se basan en el alfabeto latino, no es necesario configurar languageHints. En casos excepcionales, cuando se conoce el idioma del texto en la imagen, establecer una sugerencia ayudará a obtener mejores resultados (aunque será un impedimento importante si la sugerencia no es correcta). La detección de texto muestra un error si uno o más de los idiomas especificados no es uno de los idiomas compatibles.

Pruébala

Prueba la detección de texto y la detección de texto en documentos continuación. Puedes usar la imagen ya especificada (gs://bucket-name-123/abbey_road.jpg) si haces clic en Ejecutar o puedes especificar tu propia imagen en su lugar.

Para probar la detección de texto en documentos, actualiza el valor de type a DOCUMENT_TEXT_DETECTION.

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Documentación de la API de Cloud Vision
Si necesitas ayuda, visita nuestra página de asistencia.