OCR habilidade cognitiva

A habilidade de reconhecimento ótico de caracteres (OCR) reconhece texto impresso e manuscrito em arquivos de imagem. Este artigo é a documentação de referência para a habilidade OCR. Consulte Extrair texto de imagens para obter instruções de uso.

Uma habilidade de OCR usa os modelos de aprendizado de máquina fornecidos pela API de Visão de IA do Azure v3.2 nos serviços de IA do Azure. A habilidade OCR é mapeada para a seguinte funcionalidade:

A habilidade OCR extrai texto de arquivos de imagem. Os formatos de ficheiro suportados incluem:

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

Nota

Essa habilidade está vinculada aos serviços de IA do Azure e requer um recurso faturável para transações que excedam 20 documentos por indexador por dia. A execução de habilidades internas é cobrada pelo preço pré-pago dos serviços de IA do Azure existentes.

Além disso, a extração de imagens é faturável pelo Azure AI Search.

Parâmetros de habilidade

Os parâmetros diferenciam maiúsculas de minúsculas.

Nome do parâmetro Description
detectOrientation Deteta a orientação da imagem. Os valores válidos são true ou false.

Este parâmetro só se aplica se a API OCR versão 3.2 herdada for usada.
defaultLanguageCode Código linguístico do texto de entrada. Os idiomas suportados incluem todos os idiomas geralmente disponíveis do Azure AI Vision. Você também pode especificar unk (Desconhecido).

Se o código do idioma não for especificado ou nulo, o idioma será definido como inglês. Se o idioma estiver explicitamente definido como unk, todos os idiomas encontrados serão detetados automaticamente e retornados.
lineEnding O valor a ser usado como separador de linha. Valores possíveis: "Space", "CarriageReturn", "LineFeed". O padrão é "Espaço".

Em versões anteriores, havia um parâmetro chamado "textExtractionAlgorithm" para especificar a extração de texto "impresso" ou "manuscrito". Esse parâmetro foi preterido porque o algoritmo atual da API de leitura extrai os dois tipos de texto de uma só vez. Se sua habilidade incluir esse parâmetro, você não precisará removê-lo, mas ele não será usado durante a execução da habilidade.

Contributos para as competências

Nome de entrada Description
image Tipo complexo. Atualmente, só funciona com o campo "/document/normalized_images", produzido pelo indexador de Blob do Azure quando imageAction definido como um valor diferente de none.

Resultados em termos de competências

Nome da saída Description
text Texto simples extraído da imagem.
layoutText Tipo complexo que descreve o texto extraído e o local onde o texto foi encontrado.

Se você chamar OCR em imagens incorporadas em PDFs ou outros arquivos de aplicativos, a saída OCR estará localizada na parte inferior da página, após qualquer texto que foi extraído e processado.

Definição da amostra

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

Exemplo de texto e layoutSaída de texto

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

Exemplo: Mesclando texto extraído de imagens incorporadas com o conteúdo do documento

A quebra de documentos, o primeiro passo na execução do conjunto de habilidades, separa o conteúdo de texto e imagem. Um caso de uso comum para fusão de texto é mesclar a representação textual de imagens (texto de uma habilidade OCR ou a legenda de uma imagem) no campo de conteúdo de um documento. Isso ocorre para cenários em que o documento de origem é um documento PDF ou Word que combina texto com imagens incorporadas.

O conjunto de habilidades de exemplo a seguir cria um campo merged_text . Este campo contém o conteúdo textual do documento e o texto OCRed de cada uma das imagens incorporadas nesse documento.

Sintaxe do Corpo do Pedido

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

O exemplo de conjunto de habilidades acima pressupõe que existe um campo de imagens normalizadas. Para gerar esse campo, defina a configuração imageAction na definição do indexador para generateNormalizedImages, conforme mostrado abaixo:

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

Consulte também