Take a live AI-guided product tour with Lando.Launch AI demo
Document type

Extracting data from special inspection reports

Special inspection agencies report on the structural work a building code singles out, such as soil compaction or welding, each agency on its own forms. The engineer of record and the building official receive a report after every inspection, dozens to hundreds per project, as emailed PDFs and permit portal uploads.

Code compliance needs each test's location, measured result, specified minimum and outcome. The engineer of record compares each result with the specification. The building department's permit system holds the final report, which the official needs before issuing a certificate of occupancy.

Page 2 of a sample Special Inspection Report, with extracted values outlined
17,957Markdown characters
534parse blocks
346fields extracted
The problem

What makes special inspection reports hard

Wide tables on scanned pages

A field density report packs many narrow columns under stacked multi-line headers onto a landscape page, often printed and then scanned.

Results cite other pages

Each test row cites a Proctor lab number, and the maximum density it is compared against sits on that lab's summary sheet.

Results as tables and curves

Laboratory sheets set compaction results in small boxed tables beside a moisture-density curve plotted from the same test.

How it works

Parse, extract, verify

1

Parse

Parse turns the document into reading-order Markdown and a hierarchy of blocks (text, tables, figures), and grounds each block to its exact location on the page.

2

Extract

You define the fields in a JSON schema, and Extract returns their values in a consistent, structured format, each linked back to where it appears in the Markdown.

3

Verify

Each value links back to where it appears, down to the character range in the Markdown, and the page and bounding box in the source document, so every result can be verified.

Worked example

One special inspection report, end to end

About this document: A building pad certification package from ProTeX, a special inspection firm, for the mass grading of a subdivision in Oro Valley, Arizona. The town posts it in its public planning records. Its 6 pages hold the engineer's certification letter, a landscape field density table and the scanned Soils Summary lab sheets the table cites. Page 2 is featured. Individuals' names and signatures were replaced with stand-ins.

Processing objective: The objective is to read one compaction test as a complete calculation: where it was taken, the field density measured, the laboratory maximum it is compared against, and the percent compaction and result that follow. Each value grounds to its own cell of the table.

Demonstration fields: Lot tested, Field dry density (lb/ft3), Max dry density (lb/ft3), Percent compaction, Test result

The document

3 of 6 pages
  • Page 1 of the sample Special Inspection ReportPage 1
  • Page 2 of the sample Special Inspection ReportPage 2shown below
  • Page 3 of the sample Special Inspection ReportPage 3

Where each value came from

Page 2 of the sample Special Inspection Report, with every featured field outlined
Lot testedfield_density_report.tests[0].lot
Lot 39
The region of the sample Special Inspection Report containing Lot tested, with the extracted value outlined
extraction_metadata["field_density_report.tests[0].lot"]
{
  "value": "Lot 39",
  "page": 2,
  "range": {
    "end": 3248,
    "start": 3242
  },
  "box": {
    "xmin": 0.25365,
    "ymin": 0.31814,
    "xmax": 0.40521,
    "ymax": 0.34755
  }
}
Field dry density (lb/ft3)field_density_report.tests[0].field_dry_density_pcf
101.9
The region of the sample Special Inspection Report containing Field dry density (lb/ft3), with the extracted value outlined
extraction_metadata["field_density_report.tests[0].field_dry_density_pcf"]
{
  "value": 101.9,
  "page": 2,
  "range": {
    "end": 3289,
    "start": 3284
  },
  "box": {
    "xmin": 0.52614,
    "ymin": 0.31816,
    "xmax": 0.58669,
    "ymax": 0.34755
  }
}
Max dry density (lb/ft3)field_density_report.tests[0].max_dry_density_pcf
104.1
The region of the sample Special Inspection Report containing Max dry density (lb/ft3), with the extracted value outlined
extraction_metadata["field_density_report.tests[0].max_dry_density_pcf"]
{
  "value": 104.1,
  "page": 2,
  "range": {
    "end": 3315,
    "start": 3310
  },
  "box": {
    "xmin": 0.64665,
    "ymin": 0.31817,
    "xmax": 0.70032,
    "ymax": 0.34755
  }
}
Percent compactionfield_density_report.tests[0].percent_compaction
98
The region of the sample Special Inspection Report containing Percent compaction, with the extracted value outlined
extraction_metadata["field_density_report.tests[0].percent_compaction"]
{
  "value": 98,
  "page": 2,
  "range": {
    "end": 3338,
    "start": 3336
  },
  "box": {
    "xmin": 0.75273,
    "ymin": 0.31818,
    "xmax": 0.7909,
    "ymax": 0.34755
  }
}
Test resultfield_density_report.tests[0].result
Pass
The region of the sample Special Inspection Report containing Test result, with the extracted value outlined
extraction_metadata["field_density_report.tests[0].result"]
{
  "value": "Pass",
  "page": 2,
  "range": {
    "end": 3399,
    "start": 3395
  },
  "box": {
    "xmin": 0.93441,
    "ymin": 0.3182,
    "xmax": 0.97271,
    "ymax": 0.34755
  }
}

How to try it yourself

Everything on this page is reproducible. The sample, its schema, and the Parse and Extract API outputs are published. You can repeat the same two calls from whichever surface you already build on.

  • Claude Skilldescribe the job; the agent writes it
  • CLIno code at all
  • MCPexpose ADE docs as an agent tool
  • REST APIany language
  • Pythonlandingai-ade
  • TypeScriptlandingai-ade
Why LandingAI?

Documents into data

Accurate

The best accuracy on the difficult documents other tools get wrong, such as messy scans, complicated tables, checkboxes and handwriting.

Auditable

Every answer cites its sources. Values come back with an audit trail (page, bounding box, character range) so a human can review them.

Agentic

Applies multi-step reasoning, and plans before it acts. Handles documents it has never seen before and adapts to variations.

API-first

Composable APIs that drop into any tech stack and can be called from anywhere. Easy to build on and embed in your pipelines and products.

Affordable

Cost-competitive rates with complete price transparency. Spend controls before you run, and every job reports its exact cost.

Enterprise-grade

Built for production and scale from day one. Fully observable and monitored, running securely in our cloud or yours.

Built for high-volume, high-throughput production

  • Zero data retention
  • Priority rate limits
  • Enhanced support
  • VPC and on-prem deployment

Available on Team and Enterprise plans. VPC and on-prem deployment require an Enterprise plan.

Compare plans
Capabilities

Special Inspection Report processing highlights

Field density test tables
Percent compaction and specs
Pass and fail results
Proctor lab references
Moisture-density curves as data
Plasticity and expansion panels
Nested boxed result panels
Wide landscape tables
Scanned lab sheets
Engineer seals and signatures
Certification letter statements
Bounding box for every value
FAQs

Questions, answered

Yes. Define the tests as an array in your schema. Each row comes back as its own entry with its location, densities, moisture, percent compaction, specification and result, across every column of a wide scanned table.

Yes. Extract the test rows and each lab sheet's maximum dry density, keyed by Proctor lab number. Extraction returns each value as printed on its own page, so a downstream rule can recompute percent compaction and compare.

Yes. Parsing classifies the curve as a chart and transcribes its plotted points as a table. The boxed panels of Proctor results beside it extract as ordinary schema fields.

Yes. Parsing labels each block that carries a seal, stamp or signature with tags such as STAMPED or SIGNED. A schema can then record whether the certification letter is sealed and signed.

A value quoted from the document carries the character range it came from in the parsed Markdown. The Ground API maps that range to a page and a bounding box, so a reviewer sees each result in the table cell that printed it.

Start extracting special inspection report data

Reliable, structured outputs with full traceability in minutes