pdftract/crates/pdftract-cli/src
jedarden 8798501d8c feat(pdftract-4k1x4): complete Phase 4 Text Assembly and Layout
All 7 sub-phases (4.1-4.7) are now fully implemented:
- 4.1 Glyph to Span Merging: grouping consecutive glyphs into spans
- 4.2 Line Formation: baseline clustering and direction detection
- 4.3 Column Detection: histogram-based gap analysis
- 4.4 Block Formation: paragraph/heading/list/table/caption/figure/code classification
- 4.5 Reading Order: XY-cut algorithm with Docstrum fallback
- 4.6 Output Serialization: plain text projection with configurable filters
- 4.7 Text Readability: composite scoring and correction pipeline

Closes pdftract-4k1x4. Verification: notes/pdftract-4k1x4.md.

Changes:
- extract.rs: integrate Phase 4 modules into main pipeline
- layout/correction.rs: expand correction pipeline with 2048 lines of tests
- layout/readability.rs: five-signal scoring with char-weighted median
- text.rs: plain text serialization with page breaks and filters
- span/mod.rs: Span struct with flags and confidence tracking
- layout/columns.rs: column assignment to lines and spans

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-08 09:09:37 -04:00
..
bin fix(bf-4mkhv): clean up unused imports in hash.rs 2026-06-01 09:43:48 -04:00
doctor feat(pdftract-3s2i): implement Phase 5.5.2 validation filter 2026-05-24 04:57:17 -04:00
grep fix(pyo3): correct extract_text_fn call in extract_markdown stub 2026-05-28 20:28:25 -04:00
inspect test(pdftract-39gey): fix test assertions for string escaping and hyper API updates 2026-06-07 14:59:43 -04:00
mcp fix(bf-1avnz): remove .code field access on String diagnostics in serve.rs 2026-06-01 04:14:05 -04:00
middleware fix(pyo3): correct extract_text_fn call in extract_markdown stub 2026-05-28 20:28:25 -04:00
cache_cmd.rs feat(pdftract-3s2i): implement Phase 5.5.2 validation filter 2026-05-24 04:57:17 -04:00
classify.rs fix: resolve compilation errors across codebase 2026-05-25 08:38:04 -04:00
cli.rs fix(bf-4mkhv): clean up unused imports in hash.rs 2026-06-01 09:43:48 -04:00
codegen.rs feat(pdftract-3s2i): implement Phase 5.5.2 validation filter 2026-05-24 04:57:17 -04:00
hash.rs fix(bf-4mkhv): clean up unused imports in hash.rs 2026-06-01 09:43:48 -04:00
header.rs chore(pdftract-36glh): remove unused JpxDecoder import and add verification note 2026-05-28 05:23:13 -04:00
lib.rs fix(bf-4mkhv): clean up unused imports in hash.rs 2026-06-01 09:43:48 -04:00
main.rs feat(pdftract-4k1x4): complete Phase 4 Text Assembly and Layout 2026-06-08 09:09:37 -04:00
migrate.rs fix(bf-1avnz): remove .code field access on String diagnostics in serve.rs 2026-06-01 04:14:05 -04:00
output.rs fix(pdftract-63ka2): AES-128 test buffer allocation for PKCS#7 padding 2026-05-28 01:30:33 -04:00
pages.rs fix(pdftract-25igv): fix emit! macro usage in codespace parser 2026-05-28 07:29:33 -04:00
panic_hook.rs fix(bf-1avnz): remove .code field access on String diagnostics in serve.rs 2026-06-01 04:14:05 -04:00
password.rs feat(pdftract-3s2i): implement Phase 5.5.2 validation filter 2026-05-24 04:57:17 -04:00
profiles_cmd.rs feat(profiles): add profile infrastructure and initial fixtures 2026-05-31 15:10:51 -04:00
serve.rs test(pdftract-39gey): fix test assertions for string escaping and hyper API updates 2026-06-07 14:59:43 -04:00
serve.rs.bak feat(pdftract-1t5sj): implement book_chapter profile with fixtures and tests 2026-05-27 22:30:09 -04:00
url.rs fix(bf-1avnz): remove .code field access on String diagnostics in serve.rs 2026-06-01 04:14:05 -04:00
validate.rs fix(bf-4mkhv): clean up unused imports in hash.rs 2026-06-01 09:43:48 -04:00
verify_receipt.rs feat(pdftract-3s2i): implement Phase 5.5.2 validation filter 2026-05-24 04:57:17 -04:00