Text Merge cognitive skill

The Text Merge skill consolidates text from an array of strings into a single field.

Note

This skill isn't bound to Azure AI services. It is non-billable and has no Azure AI services key requirement.

@odata.type

Microsoft.Skills.Text.MergeSkill

Skill parameters

Parameters are case-sensitive.

Parameter name Description
insertPreTag String to be included before every insertion. The default value is " ". To omit the space, set the value to "".
insertPostTag String to be included after every insertion. The default value is " ". To omit the space, set the value to "".

Skill inputs

Input name Description
itemsToInsert Array of strings to be merged.
text (optional) Main text body to be inserted into. If text is not provided, elements of itemsToInsert will be concatencated.
offsets (optional) Array of positions within text where itemsToInsert should be inserted. If provided, the number of elements of text must equal the number of elements of textToInsert. Otherwise all items will be appended at the end of text.

Skill outputs

Output name Description
mergedText The resulting merged text.
mergedOffsets Array of positions within mergedText where elements of itemsToInsert were inserted.

Sample input

A JSON document providing usable input for this skill could be:

{
  "values": [
    {
      "recordId": "1",
      "data":
      {
        "text": "The brown fox jumps over the dog",
        "itemsToInsert": ["quick", "lazy"],
        "offsets": [3, 28]
      }
    }
  ]
}

Sample output

This example shows the output of the previous input, assuming that the insertPreTag is set to " ", and insertPostTag is set to "".

{
  "values": [
    {
      "recordId": "1",
      "data":
      {
        "mergedText": "The quick brown fox jumps over the lazy dog"
      }
    }
  ]
}

Extended sample skillset definition

A common scenario for using Text Merge is to merge the textual representation of images (text from an OCR skill, or the caption of an image) into the content field of a document.

The following example skillset uses the OCR skill to extract text from images embedded in the document. Next, it creates a merged_text field to contain both original and OCRed text from each image. You can learn more about the OCR skill here.

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

The example above assumes that a normalized-images field exists. To get normalized-images field, set the imageAction configuration in your indexer definition to generateNormalizedImages as shown below:

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

See also