Skip to main content

openlabel-checker

A validator and quality checker for ASAM OpenLABEL 1.0.0 annotation files.

OpenLABEL is the JSON-based format ASAM standardizes for object, action, event, and context annotations in autonomous-driving and robotics data. ASAM publishes an official Quality Checker framework (MPL-2.0) with checker bundles for OpenDRIVE, OpenSCENARIO XML, OTX, and OpenMATERIAL 3D — but no equivalent exists yet for OpenLABEL. This project fills that gap: it validates a file against the official OpenLABEL JSON Schema and runs a set of structural/semantic checks the schema alone can't express (dangling references, inverted frame intervals, negative bounding box dimensions, and so on).

Install

pip install openlabel-checker

Usage

openlabel-check annotations.json
openlabel-check: annotations.json
  ERROR check_geometry: bbox 'bbox_shape' has negative dimension w=-5.0 [openlabel.objects.1.object_data.bbox[0]]
  WARN  check_frame_intervals: frame_intervals[1] (0-3) overlaps frame_intervals[2] (2-4) [openlabel.objects.1]
summary: 1 error(s), 1 warning(s), 0 info

Exit code is 0 if no error-severity issues were found, 1 otherwise — so it's usable as a CI gate.

Pass --json for a machine-readable report:

openlabel-check annotations.json --json
{
  "file": "annotations.json",
  "checkers": [
    {
      "checker_id": "check_geometry",
      "description": "Checks bbox/rbbox/cuboid values parse and have non-negative dimensions.",
      "status": "completed",
      "issues": [
        {
          "checker_id": "check_geometry",
          "severity": "error",
          "message": "bbox 'bbox_shape' has negative dimension w=-5.0",
          "path": "openlabel.objects.1.object_data.bbox[0]"
        }
      ]
    }
  ],
  "summary": { "error": 1, "warning": 0, "info": 0 }
}

Checkers

Every checker has a stable, check_-prefixed ID and a severity per issue (error / warning / info). check_json_schema validates against the schema; everything else is a structural or semantic check the schema can't express on its own.

Checker ID What it checks
check_json_schema Conformance to the official ASAM OpenLABEL v1.0.0 JSON Schema (draft-07).
check_frame_intervals Frame intervals aren't inverted or negative, don't overlap within one element, and are consistent with the frames actually declared in openlabel.frames.
check_element_references Objects/actions/events/contexts referenced by a frame, or by a relation's rdf_subjects/rdf_objects, are declared at the top level.
check_geometry bbox, rbbox, and cuboid values parse as numbers, have the right length, and have non-negative width/height/dimensions.
check_timestamps_monotonic frame_properties.timestamp, and any per-stream timestamp override, is non-decreasing across ascending frame numbers.
check_coordinate_systems coordinate_system references (on objects and their geometric data) and coordinate_systems[*].parent/children point at declared coordinate systems; frame-level stream references point at declared streams.
check_element_data_pointers An object's object_data_pointers agree with the object_data actually present in its declared frame intervals, in both directions.
check_duplicate_uids No UID (or frame number) is written twice in the same JSON object — a case json parsers silently collapse by keeping the last value, hiding real data loss.

Design notes

  • The vendored schema is the official file ASAM serves at https://openlabel.asam.net/V1-0-0/schema/openlabel_json_schema.json (see src/openlabel_checker/schema_data/PROVENANCE.md). No local modifications.
  • The Issue model (checker_id, severity, message, path) deliberately mirrors the ASAM qc-framework's CheckerBundle → Checker → Issue result model, so this tool's output can be re-serialized into that framework's .xqar result format later without a redesign — the goal is that this project could eventually become the framework's qc-openlabel bundle. That serializer (an --format asam-qc flag) is out of scope for this first version; only the internal model is shaped to make it a straightforward follow-up.

Development

pip install -e ".[dev]"
pytest

Contributing

Issues and PRs welcome. Checkers live one-per-file under src/openlabel_checker/checkers/; each is a plain function from the parsed document to a CheckerOutcome, with fixtures in tests/fixtures/ that trip it. Keep new checkers narrowly scoped and add a fixture alongside them.

License

MPL-2.0. See LICENSE.

Metadata

Release files for openlabel-checker 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for openlabel-checker 0.1.0
File Size Uploaded
openlabel_checker-0.1.0.tar.gz 33.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for openlabel-checker 0.1.0
File Interpreter ABI Platform
openlabel_checker-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 70.8 kB

Release files / openlabel_checker-0.1.0.tar.gz

Download URL openlabel_checker-0.1.0.tar.gz
Size 33.0 kB
Tags Source
SHA-256 checksum
How to use checksums
0b8ed798caf3db08e335fb4c2e76b8549279f1753c11c16b946092a07f2a1407
BLAKE2b-256 checksum
How to use checksums
f191d3953128a8fb3d50d3bdd66f373ed72fed58ab2165672ac1ecbb2647810f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / openlabel_checker-0.1.0-py3-none-any.whl

Download URL openlabel_checker-0.1.0-py3-none-any.whl
Size 37.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
809c48ad5f2bcf0ced534b8a4b90293b10475cee9a2e5090c9bf5c97ca2a7658
BLAKE2b-256 checksum
How to use checksums
800c8efa091fff47526648ec89b2540aaa4a6c64cd232a819a8b93f2ac63ce6b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page