bidlint v0.2.2
bidlint v0.2.2
Released: 2026-08-20
v0.2.2 hardens deterministic vendor-datasheet parsing for advanced but explicitly evidenced table layouts. The release expands document coverage without changing the core rule: ambiguous layout evidence is skipped instead of guessed.
Highlights
Coordinate-aligned sparse rows
Recognized tables can now recover rows whose intermediate cells are visually blank when the parameter and offered values align closely with explicit header anchors.
- blank intermediate cells no longer shift the offered value into the wrong semantic column
- blank
Unitcells remain unitless - fragments near column boundaries are rejected rather than assigned by proximity alone
Explicit merged-cell geometry
The positioned-text pass also captures explicit axis-aligned PDF rectangle (re) geometry.
- merged intermediate cells can be recognized when
ParameterandOfferedremain distinct cell boxes - text inside an intermediate merged cell is not split into fabricated
Unit/Requiredvalues - merges touching
ParameterorOfferedare rejected - rotated/skewed rectangles and arbitrary line grids remain unsupported
Repeated explicit header groups
Side-by-side technical tables can now be parsed when each visual group repeats its own parameter-like and offered/value headers.
Parameter Unit Offered Parameter Unit Offered
Motor power kW 11 Flow rate m3/h 125
Each complete row produces one fact per explicit group. Incomplete repeated rows are skipped as a whole rather than partially reconstructed.
Safer Item / Description tables
When a header contains both Item and Description before the offered/value column, Description is preferred as the parameter field because it is the nearest parameter-like header to the offered evidence.
Safety boundary
v0.2.2 still does not:
- OCR scanned/image-only PDFs
- infer arbitrary line-segment grids as table cells
- split semantic values out of merged intermediate cells
- guess multi-column group boundaries when explicit repeated headers are absent
- accept coordinate fragments that fall too close to a column boundary
Validation
All changes are covered by synthetic positioned/boxed PDF regressions and the project CI matrix on Python 3.11, 3.12 and 3.13 with Ruff and pytest.