Intersection

Extracts a target line at the intersection of a horizontal line defined by an anchor, and a vertical line defined by a second anchor:

Click to enlarge

For example, the Intersection method is an alternative to the Row method when a table contains optionally empty cells. A row's tiebreaker can return lines from unintended columns if cells are unpredictably populated.

Parameters
Examples

Parameters

Note: For the full list of parameters available for this method, see Global parameters for methods. The following table shows parameters most relevant to or specific to this method.

keyvaluedescription
id (required)intersection
verticalAnchor (required)Anchor objectAn anchor object that defines a vertical line that bisects that anchor. Sensible extracts the line that's at the intersection of this vertical line and the horizontal line defined by the field's anchor. The Vertical Anchor can be on a different page from the anchor.
offsetXnumber in inches. default: 0Offsets the vertical line that bisects the vertical anchor. Positive values offset to the right, negative values offset to the left.
offsetYnumber in inches. default: 0Offsets the horizontal line that bisects the anchor. Positive values offset down the page, negative values offset up the page.
heightnumber in inches. default: 0Specifies to create a rectangular region centered at the intersection point. Sensible extracts lines contained in the region. For the full definition of "contained," see the Region method.
If you don't specify this parameter, Sensible extracts lines that overlap to any extent with the intersection point.
widthnumber in inches. default: 0Specifies to create a rectangular region centered at the intersection point. Sensible extracts lines contained in the region. For the full definition of "contained," see the Region method.
If you don't specify this parameter, Sensible extracts lines that overlap to any extent with the intersection point.
percentOverlapXnumber. default: 0.9If you use the Width or Height parameters to extract lines contained in a region, then you can configure the strictness of the criteria by which a region "contains" a line using this parameter. For information about the criteria, see the Region method.
Configures the percent by which a region and line's x-extant must overlap in order for Sensible to determine that the region "contains" the line. For example, if you set this parameter to 0.5, then Sensible determines that a region contains a line if their boundary boxes overlap by more than 50% of the smaller of the two's width.
percentOverlapYnumber. default: 0.8If you use the Width or Height parameters to extract lines contained in a region, then you can configure the strictness of the criteria by which a region "contains" a line using this parameter. For information about the criteria, see the Region method.
Configures the percent by which a region and line's y-extant must overlap in order for Sensible to determine that the region "contains" the line. For example, if you set this parameter to 0.4, then Sensible determines that a region contains a line if their boundary boxes overlap by more than 40% of the smaller of the two's height.

Examples

Empty cells in tables

The following example shows using the Intersection method to extract a cell from a table that has empty cells.

Config

{
  "fields": [
    {
      "id": "col_3_cell",
      "anchor": "item 1b",
      "method": {
        "id": "intersection",
        "verticalAnchor": "col3",
        "width": 1.2,
        "height": 0.4
      }
    }
  ]
}

Example document

The following image shows the example document used with this example config:

Click to enlarge

Example documentDownload link

Output

{
  "col_3_cell": {
    "type": "string",
    "value": "Item 3b"
  }
}

Variable text positions

The following example shows extracting variably positioned lines by relaxing the criteria by which Sensible determines that a region at the intersection point "contains" lines.

Config

{
  "fields": [
    {
      "id": "a_insurers",
      /* extract text at the intersection of "insurer a"
         and the vertical anchor ("naic") */
      "anchor": "insurer a",
      "match": "all",
      "method": {
        "id": "intersection",
        "verticalAnchor": "naic",
        /* create a zero-height, 1"-wide rectangle at the
           intersection point and extract all lines that overlap
           with the rectangle  */
        "width": 1,
        "height": 0,
        /* Sets the percent by which 
           the rectangle's and the
           line's widths must overlap in order to 
           extract the line. 
           To extract variably positioned lines,
           this config specifies a lower percent
           than the default */
        "percentOverlapX": 0.5
      }
    }
  ]
}

Example document
The following image shows the example document used with this example config:

Click to enlarge

Example documentDownload link

Output

{
  "a_insurers": [
    {
      "type": "string",
      "value": "39993"
    },
    {
      "type": "string",
      "value": "16535"
    },
    {
      "type": "string",
      "value": "72222"
    }
  ]
}