v1.1.0: headerless mode for audits printed without row/column headings
Sniffs the format on page 1: printed row numbers -> gridded mode (unchanged); UUID-keyed rows -> new headerless mode, which anchors rows on per-record UUIDs and takes the column map from the page-1 header labels. Handles fused cells (ID+Name+Org+networks), mid-value line wraps, two-timestamp Time Frame ranges, wrapped header labels, and per-export schema drift. Validated against three monthly JC PD audits: 120/120 cross-engine spot checks, 0 anomalies, field-identical to the standalone converter it replaces. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012bQ28wRBiQYcSR9FzV9U7c
This commit is contained in:
1 parent
74b06be742
commit
c9c90920cc
6 files changed
+394
-65
No files matched your search
+6
-5
@@ -5,10 +5,11 @@ measures the PDF before it reads it -- page size, column widths, column and
|
||||
row counts are all derived from the file -- rebuilds every row, detects
|
||||
blacked-out cells, and then checks its own working.
|
||||
|
||||
MAP: page.py - reading what the PDF drew on a page
|
||||
measure.py - measuring the layout
|
||||
convert.py - rebuilding the rows
|
||||
cli.py - run it, then check our own working
|
||||
MAP: page.py - reading what the PDF drew on a page
|
||||
measure.py - measuring the gridded layout
|
||||
convert.py - rebuilding gridded rows
|
||||
headerless.py - the no-headings variant (UUID + header anchors)
|
||||
cli.py - sniff the format, run it, check our own working
|
||||
"""
|
||||
|
||||
__version__ = "1.0.0"
|
||||
__version__ = "1.1.0"
|
||||
Reference in new issue
Block a user