Commit Graph
17 Commits
Author SHA1 Message Date
Alex-GilbertandClaude Opus 4.6 696b0165ef feat: width table module with kerning-aware font metrics
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-15 22:00:12 -06:00
Alex-GilbertandClaude Opus 4.6 fe70bcaa6c docs: constraint solver design for redaction gap enumeration
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-15 21:44:50 -06:00
Alex-GilbertandClaude Opus 4.6 b9df273521 Add interactive font tuning UI with split-panel layout
Replace static overlay with client-side canvas rendering. Left panel
shows clickable OCR lines with font controls (dropdown + size slider).
Right panel renders green text overlay on the document via canvas.
Fonts loaded from backend TTF files using the FontFace API.

New endpoints: GET /api/fonts, GET /api/font/{id}

Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-15 20:17:57 -06:00
Alex-GilbertandClaude Opus 4.6 9b23ad827b Add .worktrees/ to .gitignore
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-15 19:41:08 -06:00
Alex-GilbertandClaude Opus 4.6 d2b149f1ba feat: per-line font detection with prior bias
Instead of detecting one font per page, detect the font for each line
independently. The previous line's font is used as a prior — if it
scores within 15% of the best candidate, it's kept for consistency.
This handles documents with mixed fonts (bold headers, regular body,
different sections).

Also: redirect / to the static UI, fix data endpoint to return
per-line font info.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-15 19:24:48 -06:00
Alex-GilbertandClaude Opus 4.6 605729209b fix: render overlay line-by-line, not word-by-word
Word-by-word rendering hides font detection errors by repositioning
each word at the OCR'd spot. Line-by-line rendering lets the font's
own character spacing determine where each character falls — any
drift reveals that the font/size is wrong. The drift IS the feedback
mechanism.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-15 19:15:34 -06:00
Alex-Gilbert a9c394151d test: end-to-end smoke test with visual output 2026-02-15 19:06:24 -06:00
Alex-GilbertandClaude Opus 4.6 8d82054b5d feat: overlay calibration with word-by-word rendering
- Render each word at its OCR'd position instead of whole lines,
  so word spacing matches the original document exactly
- Add y-offset correction using glyph bounding box
- Add fine-grained font size search (±3 around coarse best, step 1)
- Add alignment quality test (48.9% hit rate, >30% threshold)
- Add scipy to dev dependencies

Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-15 19:04:40 -06:00
Alex-GilbertandClaude Opus 4.6 3da043046c feat: web UI with document viewer and overlay toggle
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-15 18:56:51 -06:00
Alex-GilbertandClaude Opus 4.6 c95b6cb9d7 feat: FastAPI backend with upload, overlay, and data endpoints
Adds POST /api/upload (runs full pipeline: rasterize, OCR, font detect,
overlay), GET endpoints for original/overlay images and OCR data JSON.
Also adds python-multipart, anyio, and pytest-anyio dependencies.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-15 18:53:48 -06:00
Alex-GilbertandClaude Opus 4.6 73320365a3 feat: green text overlay renderer
Add render_overlay() that composites semi-transparent green text on
the original document image using the detected font. This is the
visual proof mechanism for font detection accuracy. Also adds numpy
to project dependencies for test pixel analysis.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-15 18:49:39 -06:00
Alex-GilbertandClaude Opus 4.6 2a3a0f2076 feat: font detection by comparing rendered vs OCR'd word widths
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-15 18:46:07 -06:00
Alex-GilbertandClaude Opus 4.6 b79ca81965 feat: OCR module with character-level bounding boxes
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-15 18:41:05 -06:00
Alex-GilbertandClaude Opus 4.6 420e20a8cf feat: PDF rasterization module
Add rasterize_pdf() that converts PDF pages to PIL images using
pdf2image. Supports configurable DPI and page range selection.
Includes tests verifying multi-page output, high-DPI dimensions,
and single-page extraction.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-15 18:38:50 -06:00
Alex-GilbertandClaude Opus 4.6 94877952db feat: project scaffolding with dependencies
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-15 18:36:10 -06:00
Alex-GilbertandClaude Opus 4.6 75834d4a85 Add Stage 1 implementation plan: font matching overlay
9 tasks covering: project scaffolding, PDF rasterization, OCR with
character bounding boxes, font detection, green overlay renderer,
FastAPI backend, web UI, alignment calibration, and E2E smoke test.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-15 18:31:26 -06:00
Alex-GilbertandClaude Opus 4.6 3431ea1d30 Add initial design doc for unredact tool
AI-powered redaction analysis tool for Epstein case files.
Image-first pipeline: OCR, font detection, redaction detection,
constraint solving, and Claude API guessing with visual overlay
verification.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-15 18:27:29 -06:00