Implement deterministic conservative text normalization #14
Labels
No labels
area/deployment
area/governance
area/metadata
area/pipeline
area/search
type/data
type/design
type/implementation
type/testing
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Blocks
Depends on
#15 Implement deterministic chunk generation
Arkive/arkive
#16 Implement the end-to-end pilot processing command
Arkive/arkive
Reference
Arkive/arkive#14
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Goal
Normalize line endings deterministically.
Select and document an appropriate Unicode normalization form.
Apply predictable whitespace cleanup only where it does not alter substantive meaning.
Remove only explicitly identified and tested extraction artifacts.
Preserve page, section, heading, and source-location associations received from adapters.
Record each transformation and its implementation/version in document lineage metadata.
Provide a way to compare pre-normalized and normalized text during review.
Add positive, edge-case, and no-op regression fixtures.
OCR cleanup.
Chunk generation.
Document-specific hand editing hidden inside the normalizer.
Lossy removal of content because it appears unimportant.
#13 — Implement born-digital PDF text extraction
Unchanged input produces stable, deterministic normalized text.
Substantive characters and source meaning are not silently rewritten.
Every transformation is represented in lineage metadata.
Location metadata remains associated with the correct normalized content.
No-op cases remain unchanged under the documented contract.
Regression tests cover each normalization rule and edge case.
Compare before/after fixtures for every normalization rule.
Manually review normalized output from all five pilot documents.
Repeat normalization and compare serialized output.
Verify that no content is silently omitted.
Issue completed by merged PR #61.
Implemented:
arkive.text_normalizationv0.1.0 stage operating on existingProcessingResultoutput.U+000Caggregate page boundaries.Verified:
git diff --checkpassed.python -m pip checkpassed.The intentionally conservative v0.1 implementation does not perform semantic rewriting, PDF cleanup/layout reconstruction, dehyphenation, whitespace collapsing, OCR cleanup, chunk generation, indexing, or orchestration. No schemas, policies, source metadata, originals, adapters, or dependencies were changed.
Issue #15 can now proceed with deterministic chunk generation against the normalized-text contract, and Issue #16 can subsequently integrate normalization into the end-to-end pilot processing workflow.
Closing #14 as completed.