Warum ich die OCR-Engine durch Messen ausgewählt habe
Um den Bildschirm einer Produktionsmaschine ohne Datenschnittstelle auszulesen, habe ich drei OCR-Optionen nach Genauigkeit, Latenz und Kosten verglichen. Gewonnen hat nicht die „stärkste“, sondern die, die am besten zum Einsatzort passt.
Das Problem: Die Daten gibt es nur auf dem Bildschirm
Die Maschinen, mit denen ich während meines Praktikums im Samsun Teknopark zu tun hatte, zeigten ihre Produktionszähler nur auf dem Bedienerbildschirm an. Es gab weder einen SPS-Ausgang noch eine Datenbank oder Berichtsdatei; wie viele Minuten Stillstand eine Schicht hatte, wusste am Ende niemand.
Die Lösungsidee war einfach: das Bildschirmbild erfassen, die relevanten Felder per OCR auslesen und die Messwerte in Ereignisse übersetzen. Die eigentliche Entscheidung war, welche OCR-Engine im Feld zuverlässig funktionieren würde.
Drei Kandidaten
- Mistral OCR – cloudbasiert.
- PaddleOCR – Open Source, läuft lokal.
- RapidOCR – führt dieselben Modelle wie PaddleOCR auf ONNX Runtime aus.
Warum die Cloud ausschied
Cloud-OCR schied aus drei Gründen aus: Latenz, Kosten und Datenschutz. Bei einem System, das mehrere Messungen pro Sekunde durchführt, ist es langsam und teuer, jedes Frame in die Cloud zu schicken – und der Fabrikbildschirm zeigt obendrein Daten, die das Werk nicht verlassen sollten.
PaddleOCR oder RapidOCR?
Da beide dasselbe Modell verwenden, erwartete ich keinen Unterschied in der Genauigkeit. Der Unterschied zeigte sich bei der Installation: Das Feldgerät ist ein Raspberry Pi 5, also ARM. RapidOCR (ONNX) ließ sich auf ARM problemlos installieren – danach fiel die Wahl.
Auch die Modellgröße habe ich gemessen: Das small-Modell erreichte dieselbe Genauigkeit wie medium und war 3,7-mal schneller. Ein größeres Modell hätte hier nichts gebracht.
Die richtige Engine reicht nicht: Validierung
Keine OCR liest jedes Frame korrekt. Deshalb habe ich die Messwerte gegeneinander geprüft: Die auf dem Bildschirm angezeigte Qualitätsquote wird aus der Zahl der Gutteile und der Gesamtstückzahl neu berechnet und mit dem ausgelesenen Wert verglichen. Werte, die nicht übereinstimmen, werden verworfen. Einen fehlerhaften Wert zu speichern ist schlimmer, als gar keinen zu lesen.
Ergebnis
| Validiert | Ergebnis |
|---|---|
| Auslesen von 6 Feldern | 6/6 korrekt, Konfidenz 99 %+ |
| Stillstandserkennung | real 90 s → gemessen 88 s |
| Ausfallsicherheit | 38 ausstehende Messwerte vom Datenträger wiederhergestellt |
Die Lehre: Es gibt nicht „das beste Modell“, sondern das Modell, das am besten zu diesem Einsatzort passt – und das findet man nur durch Messen.