Skip to content

Commit bc4d889

Browse files
Martinclaude
andcommitted
fix(text-extraction): correct rotation handling and improve text quality
Fixes viewport transformation for rotated PDFs ensuring natural reading order, adds intelligent word spacing to prevent concatenation, returns extracted text in smart-OCR skip cases, and routes all logs to stderr for MCP compliance. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
1 parent f9376df commit bc4d889

File tree

10 files changed

+894
-374
lines changed

10 files changed

+894
-374
lines changed

CHANGELOG.md

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,36 @@
11
# Changelog
22

3+
## [3.1.0] - 2025-12-25
4+
5+
### 🐛 Fixed
6+
7+
- **Text extraction:** Viewport-Transformationen für korrekte Lesereihenfolge bei rotierten Seiten
8+
- Text erscheint jetzt in natürlicher top-to-bottom Reihenfolge für alle Rotationen (0°, 90°, 180°, 270°)
9+
- Koordinaten werden korrekt durch viewport transform berechnet statt rohe PDF-Koordinaten zu nutzen
10+
- ⚠️ **Breaking Change:** Output-Reihenfolge kann sich für rotierte Seiten ändern (dies ist ein Bugfix - vorher war die Reihenfolge inkorrekt)
11+
12+
- **Word spacing:** Intelligente Leerzeichen-Einfügung verhindert Wort-Zusammenklebung
13+
- Heuristik: Leerzeichen wird eingefügt wenn `gap > fontSize × 0.35`
14+
- Berücksichtigt vorhandene Leerzeichen und Interpunktion
15+
- Verbessert Lesbarkeit für Dokumente mit variablem Textabstand
16+
17+
- **Smart-OCR:** Extrahierten Text zurückgeben statt leerer String bei skip
18+
- `smart_ocr_skip` Responses enthalten jetzt den Text der als ausreichend bewertet wurde
19+
- Beide Pfade (cached und non-cached decisions) geben jetzt Text zurück
20+
- `from_cache` Flag wird korrekt gesetzt
21+
22+
- **MCP compliance:** Alle Logs nach stderr für sauberes JSON-RPC auf stdout
23+
- Logger-Output (inkl. `info` level) geht jetzt nach stderr statt stdout
24+
- Verhindert Korruption des MCP JSON-RPC Protokolls durch Log-Ausgaben
25+
- Behebt intermittierende MCP-Protocol-Fehler durch Dependency-Warnings
26+
27+
### ✨ Added
28+
29+
- `src/pdf/geometry.ts`: Affine Transform-Utilities für Koordinaten-Konversion
30+
- `multiplyTransform()`: 2D Matrix-Multiplikation
31+
- `transformXY()`: Viewport-Transform auf Item-Koordinaten anwenden
32+
- `calculateLineEpsilon()`: Dynamisches Epsilon für Zeilengruppierung
33+
334
## Unreleased
435

536
### ✨ Features

0 commit comments

Comments
 (0)