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:
Para os idiomas listados em Suporte à linguagem do Azure AI Vision, a API de leitura é usada.
Para o cirílico grego e sérvio, o OCR herdado na API da versão 3.2 é usado.
A habilidade OCR extrai texto de arquivos de imagem e imagens incorporadas. Os formatos de ficheiro suportados incluem:
- . JPEG
- .JPG
- .PNG
- .BMP
- . TIFF
As fontes de dados com suporte para OCR e análise de imagem são blobs no Armazenamento de Blobs do Azure e no Azure Data Lake Storage (ADLS) Gen2 e conteúdo de imagem no OneLake. As imagens podem ser ficheiros autónomos ou imagens incorporadas num PDF ou noutros ficheiros.
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"
}
}
}