Files
Christoph Kroczek 6e6cb0dc8d M0: arc42-Konzeptdokument, Gherkin-Anforderungen und OpenAPI-Vertrag
- doc/architecture.md: arc42-Detaildokument mit Mermaid-Diagrammen
  (Bausteinsicht, Klassendiagramm, Statusmodell, 5 Sequenzdiagramme),
  Speicherkonzept, DEC-01..19-Entscheidungen mit Trade-offs
- doc/requirements/: 7 Features als Gherkin-Szenarien (TDD-Grundlage)
  mit Traceability-Tabellen Szenario <-> Stdlib-Testname
- doc/openapi.yaml: API-Vertrag fuer alle 9 Endpunkte (Quelle der Wahrheit)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-13 15:20:48 +02:00

2.7 KiB

Feature: Textextraktion und OCR

Als System möchte ich den Textinhalt jedes Dokuments gewinnen, ohne die Originaldatei jemals zu verändern (DEC-IMMUTABLE-01), damit Suche und Anreicherung auf externem Kontext arbeiten können.

Funktionalität: Textextraktion und OCR

  Szenario: Born-digital-PDF braucht kein OCR
    Angenommen ein PDF mit maschinenlesbarem Textlayer
    Wenn die Extract-Stage läuft
    Dann wird der Text per pdftotext gewonnen
    Und ein Event "TextExtracted" mit needs_ocr=false wird aufgezeichnet
    Und die OCR-Stage wird übersprungen

  Szenario: Gescanntes PDF wird per OCR erschlossen
    Angenommen ein PDF ohne bzw. mit unzureichendem Textlayer
    Wenn die OCR-Stage läuft
    Dann wird der Text per ocrmypdf im Sidecar-Modus gewonnen
    Und ein Event "OCRCompleted" mit engine "ocrmypdf" wird aufgezeichnet
    Und es wird kein Ausgabe-PDF erzeugt

  Szenario: Bilddateien werden immer per OCR erschlossen
    Angenommen ein importiertes JPG-, PNG- oder HEIC-Bild
    Wenn die Verarbeitung läuft
    Dann liefert die Extract-Stage needs_ocr=true
    Und der Text wird per tesseract direkt aus dem Bild gewonnen

  Szenario: HEIC wird nur temporär konvertiert
    Angenommen ein importiertes HEIC-Bild
    Wenn die OCR-Stage läuft
    Dann wird für die Erkennung ein temporäres PNG erzeugt
    Und das temporäre PNG wird nach der Erkennung gelöscht
    Und die archivierte Datei ist das unveränderte HEIC-Original

  Szenario: Originaldatei bleibt byte-identisch
    Angenommen ein Dokument mit bekanntem SHA-256-Hash bei der Aufnahme
    Wenn das Dokument vollständig verarbeitet und abgelegt wurde
    Dann ist der SHA-256-Hash der archivierten Datei identisch mit dem Hash bei der Aufnahme

  Szenario: Korrupte oder passwortgeschützte Datei schlägt endgültig fehl
    Angenommen eine nicht lesbare oder passwortgeschützte PDF-Datei
    Wenn Extraktion und OCR fehlschlagen
    Dann wird ein Event "ProcessingFailed" mit retryable=false aufgezeichnet
    Und das Dokument hat den Status "failed" mit gesetzter failed_stage

Traceability

Szenario Go-Test (Pakete internal/pdf, internal/ocr, internal/pipeline)
Born-digital-PDF braucht kein OCR TestExtractStage_TextPDFSkipsOCR
Gescanntes PDF wird per OCR erschlossen TestOCRStage_ScannedPDFUsesSidecarOnly
Bilddateien werden immer per OCR erschlossen TestExtractStage_ImageAlwaysNeedsOCR
HEIC wird nur temporär konvertiert TestOCR_HEICTempConversionIsCleanedUp
Originaldatei bleibt byte-identisch TestPipeline_OriginalHashUnchangedAfterProcessing
Korrupte oder passwortgeschützte Datei schlägt endgültig fehl TestPipeline_CorruptPDFFailsNonRetryable