OCR-Spike — Google ML Kit Text Recognition v2 (on-device, German handwriting) #423

Closed
opened 2026-05-28 16:03:36 +02:00 by pm-bot · 0 comments
Collaborator

Kontext

Vorgänger: #421 (TrOCR-handwritten on-device) → verworfen. Test mit handschriftlichem „Oregano" lieferte „consequences" — Total-Halluzination wegen IAM-English-Cursive Vokabular-Bias. CER ≈ 1.0 statt der zu Beginn formulierten Decision-Schwelle CER ≤ 0.30. PR #422 wird nicht gemerged.

Alternativen-Analyse (Stakeholder-Frage 28.5.):

  • A) TrOCR-base-handwritten — gleiche IAM-Bias, gleiche Failure-Mode → verworfen
  • B) Cloud-VLM — nicht on-device, Datenschutz/Cost-Implikationen
  • C) Google ML Kit Text Recognition v2 — on-device, Latin-Script-Modell sprachunabhängig, ~20 MB Play-Services-Modul
  • D) PaddleOCR PP-OCRv4 — multilingual ONNX, schwächer auf Schreibschrift
  • E) Tesseract LSTM deu_best — Druckschrift gut, Handschrift historisch schwach

Entscheidung: C zuerst.

Why ML Kit

  • On-device (kein Daten-Versand an Google; Modell-Download einmalig via Play Services)
  • Sprach-agnostisches Latin-Skript-Modell — kein englischer Vokabular-Prior wie bei TrOCR
  • Native Android-API, gratis, ~20 MB Bundle-Impact (Play Services Modul, nicht im APK)
  • 2h Integrationsaufwand geschätzt (Drop-in für ocr-service)

Acceptance Criteria

  • @react-native-ml-kit/text-recognition integriert via dev-client EAS-Build
  • Spike-Screen /ocr-spike ruft ML Kit API auf, zeigt Output + Latenz
  • Drei Input-Modi: Sample (committed JPG), Galerie, Kamera
  • Realer Test: handschriftliches „Oregano" → Output enthält „Oregano" oder zumindest deutsche Buchstaben (CER ≤ 0.30 auf 5-10 Sample-Wörtern)

Definition-of-Done

Wenn ML Kit das „Oregano"-Sample sauber liest → Pivot zu produktiver Image-Preview-Integration in einer Folge-Story. Falls nicht → Fallback PaddleOCR (D) oder Cloud-VLM (B).

Verwandt

## Kontext **Vorgänger:** #421 (TrOCR-handwritten on-device) → verworfen. Test mit handschriftlichem „Oregano" lieferte „consequences" — Total-Halluzination wegen IAM-English-Cursive Vokabular-Bias. CER ≈ 1.0 statt der zu Beginn formulierten Decision-Schwelle CER ≤ 0.30. PR #422 wird nicht gemerged. **Alternativen-Analyse (Stakeholder-Frage 28.5.):** - A) TrOCR-base-handwritten — gleiche IAM-Bias, gleiche Failure-Mode → verworfen - B) Cloud-VLM — nicht on-device, Datenschutz/Cost-Implikationen - C) **Google ML Kit Text Recognition v2** — on-device, Latin-Script-Modell sprachunabhängig, ~20 MB Play-Services-Modul - D) PaddleOCR PP-OCRv4 — multilingual ONNX, schwächer auf Schreibschrift - E) Tesseract LSTM `deu_best` — Druckschrift gut, Handschrift historisch schwach Entscheidung: C zuerst. ## Why ML Kit - **On-device** (kein Daten-Versand an Google; Modell-Download einmalig via Play Services) - **Sprach-agnostisches Latin-Skript-Modell** — kein englischer Vokabular-Prior wie bei TrOCR - **Native Android-API**, gratis, ~20 MB Bundle-Impact (Play Services Modul, nicht im APK) - **2h Integrationsaufwand** geschätzt (Drop-in für ocr-service) ## Acceptance Criteria - [ ] `@react-native-ml-kit/text-recognition` integriert via dev-client EAS-Build - [ ] Spike-Screen `/ocr-spike` ruft ML Kit API auf, zeigt Output + Latenz - [ ] Drei Input-Modi: Sample (committed JPG), Galerie, Kamera - [ ] Realer Test: handschriftliches „Oregano" → Output enthält „Oregano" oder zumindest deutsche Buchstaben (CER ≤ 0.30 auf 5-10 Sample-Wörtern) ## Definition-of-Done Wenn ML Kit das „Oregano"-Sample sauber liest → Pivot zu produktiver Image-Preview-Integration in einer Folge-Story. Falls nicht → Fallback PaddleOCR (D) oder Cloud-VLM (B). ## Verwandt - Verworfen: #421, PR #422 - Vorlauf: Spike #77
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
admin-mrrm/mrrmlabapp#423
No description provided.