Compétence cognitive OCR

La compétence de reconnaissance optique de caractères (OCR) reconnaît le texte imprimé et manuscrit dans des fichiers image. Cet article constitue la documentation de référence pour la compétence de reconnaissance optique de caractères (OCR). Consultez Extraire du texte à partir d’images pour obtenir des instructions d’utilisation.

Une compétence OCR utilise les modèles d’apprentissage automatique fournis par l’API Azure AI Visionv.3.2 dans les services Azure AI. La compétence de reconnaissance optique de caractères (OCR) est mappée à la fonctionnalité suivante :

La compétence OCR extrait le texte de fichiers d’image. Les formats de fichiers pris en charge sont les suivants :

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

Remarque

Cette compétence est liée aux services Azure AI et nécessite une ressource facturable pour les transactions qui dépassent 20 documents par indexeur et par jour. L'exécution des compétences intégrées est facturée au prix actuel du paiement à l'utilisation des services Azure AI.

En outre, l’extraction d’images est facturée par Azure AI Search.

Paramètres de la compétence

Les paramètres respectent la casse.

Nom du paramètre Description
detectOrientation Détecte l’orientation de l’image. Les valeurs valides sont true ou false.

Ce paramètre s’applique uniquement si l’API OCR héritée version 3.2 est utilisée.
defaultLanguageCode Code de langue du texte d’entrée. Les langues prises en charge incluent toutes les langues généralement disponibles d’Azure AI Vision. Vous pouvez également spécifier un unk (inconnu).

Si le code langue n’est pas spécifié ou est Null, la langue est définie automatiquement sur l’anglais. Si la langue est définie explicitement sur unk, toutes les langues trouvées sont détectées automatiquement et retournées.
lineEnding Valeur à utiliser comme séparateur de ligne. Valeurs possibles : "Space", "CarriageReturn", "LineFeed". La valeur par défaut est "Space"

Dans les versions précédentes, il existait un paramètre appelé « textExtractionAlgorithm » pour spécifier si l’extraction avait lieu sur un texte « imprimé » ou « manuscrit ». Ce paramètre a été déconseillé, car l’algorithme de l’API Read actuel extrait les deux types de textes en même temps. Si votre compétence inclut ce paramètre, vous n’avez pas besoin de le supprimer, mais il ne sera pas utilisé pendant l’exécution de la compétence.

Entrées de la compétence

Nom de l'entrée Description
image Type complexe. Actuellement, il fonctionne uniquement avec le champ « /document/normalized_images », produit par l’indexeur d’objets blob Azure lorsqu’il imageAction est défini sur une valeur autre que none.

Sorties de la compétence

Nom de sortie Description
text Texte brut extrait de l’image.
layoutText Type complexe qui décrit le texte extrait ainsi que l’emplacement où le texte a été trouvé.

Si vous appelez la reconnaissance optique de caractères sur des images incorporées dans des fichiers PDF ou d’autres fichiers d’application, la sortie OCR se trouve en bas de la page, après tout texte extrait et traité.

Exemple de définition

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

Exemple de sortie text et layoutText

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

Exemple : fusion du texte extrait d’images incorporées avec le contenu du document

Le craquage de document, la première étape de l’exécution de l’ensemble de compétences, sépare le texte et le contenu de l’image. La fusion de texte permet notamment de fusionner la représentation textuelle d’images (texte issu d’une compétence OCR ou légende d’une image) dans le champ de contenu d’un document. Il s’agit de scénarios où le document source est un document PDF ou Word qui combine du texte et des images incorporées.

L’exemple d’ensemble de compétences suivant crée un champ merged_text. Ce champ comprend le contenu textuel de votre document et le texte obtenu par reconnaissance optique de caractères de chacune des images incorporées dans ce document.

Syntaxe du corps de la demande

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

L’exemple d’ensemble de compétences ci-dessus suppose l’existence d’un champ d’images normalisées. Pour générer ce champ, définissez la configuration imageAction dans la définition de l’indexeur sur generateNormalizedImages comme indiqué ci-dessous :

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

Voir aussi