Open topic with navigation

# Write a Lua Script for an ESP Engine

All of the ESP engines, except for the "Or" engine, can run a Lua script to determine whether to include a record in the task's output track. Writing a Lua script allows you to specify more complex rules than you can specify using configuration parameters. For example, a Lua script might specify where in an image recognized text must appear. If text appears within this region, then depending on the engine type, the engine includes or excludes this record from its output track.

The Lua script must define a function with the name `pred`. This function takes one or two parameters (depending on the engine type) and must return `true` or `false`. Each parameter is a record object: this is a representation of the record being processed and has the same structure as the record XML.

The `pred` function is called once for each record (or pair of records) that the engine has to consider. The engine's response to the function depends on the engine type.

ESP Engine | Number of record parameters | Engine response if the function returns true
--- | --- | ---
And | 2 | The record pair is included in the engine output track.
AndThen | 2 | The record pair is included in the engine output track.
AndAny | 2 | The record in the first track is included in the output. (Records from the second track are never included in the output).
AndThenAny | 2 | The record in the first track is included in the output. (Records from the second track are never included in the output).
AndNot | 2 | The record in the first track is discarded. (Records from the second track are never included in the output).
AndNotThen | 2 | The record in the first track is discarded. (Records from the second track are never included in the output).
Deduplicate | 2 | The second record is discarded.
Filter | 1 | The record is included in the engine output track.

When the `pred` function takes two parameters, each individual record may feature in many different pairs, so might be processed by the `pred` function any number of times. For example, for the AndNot or AndNotThen engine, a record in the first track might be passed to the function several times, being paired with different records from the second track. The record will only appear in the output track if `pred` returns `false` every time.

The ESP engine cannot modify the record objects passed to the `pred` function. Any effects of the function other than the return value are ignored.

To run a Lua script from an ESP engine, add the `LuaScript` parameter to the task configuration section and set it to the path of the script. For example, `LuaScript=./scripts/breakingnews.lua`.

Example Script

The following is an example script for the Filter ESP engine. The script filters records based on where text, read by an OCR task, appears in the image. The function returns `true` if text appears in the region between `x=100` and `x=300`, and the record is included in the output track. If the text region is outside these coordinates, the record is discarded.

    function pred(rec)
       return rec.OCRResult.region.left > 100 and rec.OCRResult.region.right < 300
    end

© 2016 Hewlett Packard Enterprise Development LP | Send documentation feedback to HPE Close Send Documentation Feedback To open the configured email client on this computer, open an email window. Otherwise, copy the information below to a web mail client, and send this email to AutonomyTPFeedback@hpe.com. We appreciate your feedback! Product: Topic Title: Help Topic: Feedback:

_HP_HTML5_bannerTitle.htm