Aptitud cognitiva de OCR

La aptitud de reconocimiento óptico de caracteres (OCR) reconoce texto impreso y manuscrito en archivos de imágenes. Este artículo es la documentación de referencia de la habilidad de OCR. Consulte Extracción de texto de imágenes para obtener instrucciones de uso.

Las aptitudes de OCR utilizan los modelos de Machine Learning proporcionados por la API Visión de Azure AI,versión 3.2, en los servicios de Azure AI. La aptitud de reconocimiento óptico de caracteres se asocia a la siguiente funcionalidad:

La aptitud de OCR extrae texto de los archivos de imagen. Entre otros, estos son los formatos de archivos admitidos:

  • .JPEG
  • .JPG
  • .PNG
  • .BMP
  • .TIFF

Nota:

Esta aptitud está enlazada a los servicios de Azure AI y necesita un recurso facturable para las transacciones que superan los 20 documentos por indexador al día. La ejecución de aptitudes integradas se carga al actual precio de pago por uso de los servicios de Azure AI.

Además, la extracción de imágenes se puede facturar mediante Azure AI Search.

Parámetros de la aptitud

Los parámetros distinguen mayúsculas de minúsculas.

Nombre de parámetro Descripción
detectOrientation Detecta la orientación de la imagen. Los valores válidos son true o false.

Este parámetro solo se aplica si se usa la API de OCR versión 3.2 heredada.
defaultLanguageCode Código de idioma del texto de entrada. Los idiomas admitidos incluyen todos los disponibles con carácter general de Visión de Azure AI. También puede especificar un valor de unk (desconocido).

Si el código de idioma no está especificado o es nulo, el idioma está establecido en"inglés". Si el idioma se establece explícitamente en unk, todos los idiomas encontrados se detectan automáticamente y se devuelven.
lineEnding Valor que se va a usar como separador de línea. Posibles valores: "Space", "CarriageReturn" y "LineFeed". El valor predeterminado es "Space".

En versiones anteriores, había un parámetro denominado "textExtractionAlgorithm" para especificar la extracción de texto "impreso" o "manuscrito". Este parámetro está en desuso porque el algoritmo Read API actual extraer los dos tipos de texto a la vez. Si la aptitud incluye este parámetro, no es necesario quitarlo, pero no se usará durante la ejecución de aptitudes.

Entradas de la aptitud

Nombre de entrada Descripción
image Tipo complejo. Actualmente solo funciona con el campo "/document/normalized_images", generado por el indexador de blobs de Azure cuando imageAction se establece en un valor distinto de none.

Salidas de la aptitud

Nombre de salida Descripción
text Texto sin formato extraído de la imagen.
layoutText Tipo complejo que describe el texto extraído, así como la ubicación donde se encontró.

Si activa el reconocimiento óptico de caracteres en imágenes incrustadas en archivos PDF u otros archivos de aplicación, la salida de OCR se ubicará en la parte inferior de la página, después de cualquier texto extraído y procesado.

Definición de ejemplo

{
  "skills": [
    {
      "description": "Extracts text (plain and structured) from image.",
      "@odata.type": "#Microsoft.Skills.Vision.OcrSkill",
      "context": "/document/normalized_images/*",
      "defaultLanguageCode": null,
      "detectOrientation": true,
      "inputs": [
        {
          "name": "image",
          "source": "/document/normalized_images/*"
        }
      ],
      "outputs": [
        {
          "name": "text",
          "targetName": "myText"
        },
        {
          "name": "layoutText",
          "targetName": "myLayoutText"
        }
      ]
    }
  ]
}

Texto y salida de layoutText de ejemplo

{
  "text": "Hello World. -John",
  "layoutText":
  {
    "language" : "en",
    "text" : "Hello World. -John",
    "lines" : [
      {
        "boundingBox":
        [ {"x":10, "y":10}, {"x":50, "y":10}, {"x":50, "y":30},{"x":10, "y":30}],
        "text":"Hello World."
      },
      {
        "boundingBox": [ {"x":110, "y":10}, {"x":150, "y":10}, {"x":150, "y":30},{"x":110, "y":30}],
        "text":"-John"
      }
    ],
    "words": [
      {
        "boundingBox": [ {"x":110, "y":10}, {"x":150, "y":10}, {"x":150, "y":30},{"x":110, "y":30}],
        "text":"Hello"
      },
      {
        "boundingBox": [ {"x":110, "y":10}, {"x":150, "y":10}, {"x":150, "y":30},{"x":110, "y":30}],
        "text":"World."
      },
      {
        "boundingBox": [ {"x":110, "y":10}, {"x":150, "y":10}, {"x":150, "y":30},{"x":110, "y":30}],
        "text":"-John"
      }
    ]
  }
}

Ejemplo: combinar el texto extraído de imágenes insertadas con el contenido del documento

Descifrado de documentos, el primer paso en la ejecución del conjunto de aptitudes, separa el contenido de texto e imagen. Un caso de uso común a la hora de combinar texto, es la combinación de la representación textual de imágenes (el texto de una aptitud de OCR o la leyenda de una imagen) en el campo de contenido de un documento. Esto es para escenarios en los que el documento de origen es un documento PDF o Word que combina texto con imágenes insertadas.

El siguiente conjunto de aptitudes de ejemplo crea un campo merged_text. Este campo contiene el contenido textual del documento y el texto procesado con OCR de cada una de las imágenes insertadas en ese documento.

Sintaxis del cuerpo de la solicitud

{
  "description": "Extract text from images and merge with content text to produce merged_text",
  "skills":
  [
    {
      "description": "Extract text (plain and structured) from image.",
      "@odata.type": "#Microsoft.Skills.Vision.OcrSkill",
      "context": "/document/normalized_images/*",
      "defaultLanguageCode": "en",
      "detectOrientation": true,
      "inputs": [
        {
          "name": "image",
          "source": "/document/normalized_images/*"
        }
      ],
      "outputs": [
        {
          "name": "text"
        }
      ]
    },
    {
      "@odata.type": "#Microsoft.Skills.Text.MergeSkill",
      "description": "Create merged_text, which includes all the textual representation of each image inserted at the right location in the content field.",
      "context": "/document",
      "insertPreTag": " ",
      "insertPostTag": " ",
      "inputs": [
        {
          "name":"text",
          "source": "/document/content"
        },
        {
          "name": "itemsToInsert", 
          "source": "/document/normalized_images/*/text"
        },
        {
          "name":"offsets", 
          "source": "/document/normalized_images/*/contentOffset"
        }
      ],
      "outputs": [
        {
          "name": "mergedText", 
          "targetName" : "merged_text"
        }
      ]
    }
  ]
}

En el ejemplo del conjunto de aptitudes anterior, se asume que existe un campo de imágenes normalizadas. Para crear este campo, establezca la configuración imageAction en la definición del indexador como generateNormalizedImages, tal como se muestra a continuación:

{
  //...rest of your indexer definition goes here ...
  "parameters": {
    "configuration": {
      "dataToExtract":"contentAndMetadata",
      "imageAction":"generateNormalizedImages"
    }
  }
}

Consulte también