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
3.3 KiB
3.3 KiB
SRC-10 – Prüfprotokoll: Spracherkennung & OCR-Qualitätsbewertung
Voraussetzung SRC-07 (Fertig).
Umsetzung
mail/internal/ocr/language.go—RecognizeWithLanguageAndConfidence: 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, 0–100, Mittelwert über alle erkannten Wörter) — keine zweite externe Bibliothek nötig.mail/internal/search: neue Felderocr_language/ocr_confidence(Migrationen 0006/0007, gleiches ALTER-Muster wie SRC-05), inDocument/Resultgespiegelt (Akzeptanzkriterium 1: für Anzeige nutzbar). Neue MethodeClient.AttachmentsBelowConfidence(ctx, tenantSlug, threshold)(Akzeptanzkriterium 3: gezielt für manuelle Nachbearbeitung auffindbar) — filtertocr_confidence < threshold, schließt Dokumente ohne OCR-Anhang (ocr_confidencebleibt 0) explizit aus.- Echten Regressionsbug beim eigenen Testlauf gefunden und behoben:
reindex.gosbuildCreateTableSQL(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/savedsearchunverä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).