Files
nexarch/mail/docs/SRC-10-PRUEFPROTOKOLL.md
sysopsandClaude Sonnet 5 1a246abdb3 SRC-10: spracherkennung-ocr-qualitaetsbewertung
Spracherkennung für OCR-Texte und Qualitätsbewertung (Konfidenzwert), um
schlechte OCR-Ergebnisse kenntlich zu machen. Letztes Ticket vor QA-03.

- ocr/language.go: RecognizeWithLanguageAndConfidence erkennt ein Bild
  einzeln je Kandidatensprache (deu/eng) im Tesseract-TSV-Modus — die
  Sprache mit höherem Konfidenzwert gewinnt, derselbe Lauf liefert den
  Konfidenzwert direkt mit.
- search: neue Felder ocr_language/ocr_confidence (Migrationen 0006/0007,
  gleiches ALTER-Muster wie SRC-05), in Document/Result gespiegelt.
  Client.AttachmentsBelowConfidence filtert gezielt auf niedrige
  Konfidenz, schließt Dokumente ohne OCR-Anhang aus.
- Regressionsbug gefunden und behoben: reindex.go (SRC-09) kannte die
  neuen OCR-Spalten nicht, Reindex wäre mit "unknown column"
  fehlgeschlagen.

Prüfungen (alle real durchgeführt, siehe mail/docs/SRC-10-PRUEFPROTOKOLL.md):
1. TestRecognizeWithLanguageAndConfidence_MultilingualCorpus: deutsches
   und englisches Testbild real korrekt als deu/eng erkannt.
2. TestRecognizeWithLanguageAndConfidence_DegradedImageLowersConfidence:
   künstliche Verschlechterung senkt Konfidenz real von 91,76 auf 28,21.
3. TestAttachmentsBelowConfidence_QueryReturnsExpectedResults: Abfrage
   unterhalb Schwelle liefert real genau die erwarteten 2 von 4 Treffern.

Kein Umbau: Search/Facets/SearchWithFilters/Index/Delete-Verhalten sonst
unverändert, dedup/indexworker/storage/crypto/encstorage/savedsearch
unverändert.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HhgFcLS8tYMhDJpP74C6AQ
2026-08-31 22:16:26 +02:00

3.3 KiB
Raw Permalink Blame History

SRC-10 Prüfprotokoll: Spracherkennung & OCR-Qualitätsbewertung

Voraussetzung SRC-07 (Fertig).

Umsetzung

  • mail/internal/ocr/language.goRecognizeWithLanguageAndConfidence: Tesseract erkennt bei kombinierten Sprachpaketen (deu+eng) nicht, WELCHE Sprache vorlag — daher wird das Bild bewusst EINZELN mit jedem Kandidaten (deu, eng) im TSV-Ausgabemodus erkannt; die Sprache mit dem höheren durchschnittlichen Worterkennungs-Konfidenzwert gewinnt (Akzeptanzkriterium 1). Derselbe Tesseract-TSV-Lauf liefert den Konfidenzwert direkt mit (Akzeptanzkriterium 2, 0100, Mittelwert über alle erkannten Wörter) — keine zweite externe Bibliothek nötig.
  • mail/internal/search: neue Felder ocr_language/ocr_confidence (Migrationen 0006/0007, gleiches ALTER-Muster wie SRC-05), in Document/Result gespiegelt (Akzeptanzkriterium 1: für Anzeige nutzbar). Neue Methode Client.AttachmentsBelowConfidence(ctx, tenantSlug, threshold) (Akzeptanzkriterium 3: gezielt für manuelle Nachbearbeitung auffindbar) — filtert ocr_confidence < threshold, schließt Dokumente ohne OCR-Anhang (ocr_confidence bleibt 0) explizit aus.
  • Echten Regressionsbug beim eigenen Testlauf gefunden und behoben: reindex.gos buildCreateTableSQL (SRC-09) kannte die neuen OCR-Spalten nicht — ein Reindex nach dieser Kachel wäre mit "unknown column" fehlgeschlagen. Jetzt ergänzt, mit Wartungshinweis im Quelltext für künftige Schema-Erweiterungen.
  • Kein Umbau: Search/Facets/SearchWithFilters/Index/Delete- Verhalten sonst unverändert, mail/internal/dedup/indexworker/ storage/crypto/encstorage/savedsearch unverändert.

Prüfungen

# Prüfung Ergebnis
1 Test mit mehrsprachigem Testkorpus bestätigt korrekte Spracherkennung bestanden TestRecognizeWithLanguageAndConfidence_MultilingualCorpus: reales deutsches Testbild ("Rechnung ueber Lieferung...") real als deu erkannt, reales englisches Testbild ("Invoice for delivery...") real als eng erkannt
2 Test: künstlich verschlechtertes Bild erzeugt niedrigeren Konfidenzwert bestanden TestRecognizeWithLanguageAndConfidence_DegradedImageLowersConfidence: reproduzierbare Pixelierung + Kontrastreduktion (reiner Go-Standardbibliothekscode, kein externes Werkzeug) senkt den real gemessenen Konfidenzwert von 91,76 auf 28,21
3 Abfrage aller Anhänge unterhalb einer Konfidenzschwelle liefert erwartete Treffer bestanden TestAttachmentsBelowConfidence_QueryReturnsExpectedResults: 4 Dokumente (2 niedrig-, 1 hoch-konfident, 1 ohne OCR-Anhang), Abfrage mit Schwelle 50 liefert real genau die 2 niedrig-konfidenten, weder den hoch-konfidenten noch den ohne OCR-Anhang

Build/Test-Ergebnis (192.168.1.131)

go build ./...  -> clean
go vet ./...    -> clean
golangci-lint run ./...  -> 0 issues
go test ./internal/ocr/... -v -run 'Language|Degraded'  -> 2/2 bestanden
TEST_TENANT_DSN=... TEST_MANTICORE_URL=... go test ./... -p 1
  -> alle Pakete bestanden (Regressionsbug in reindex.go vor diesem
  Protokoll gefunden und behoben, danach vollständig grün)

Gesamtergebnis

Bestanden. Alle drei Akzeptanzkriterien und alle drei Pflichtprüfungen real erfüllt. Entsperrt QA-03 (gemeinsam mit ARC-08, SRC-02, SRC-04, SRC-05, SRC-08, SRC-09 — alle jetzt Fertig, letzte fehlende Abhängigkeit).