cd ../projects
JWC Line Monitoring System — Production Data from the Screen
A field-validated line monitoring system that uses OCR on a Raspberry Pi 5 to read the screens of production machines with no data output: 6/6 fields at 99%+ confidence, and a 90-second stoppage measured at 88 seconds.
- Client
- Adapha Yapay Zeka Ar-Ge (Samsun Teknopark) — internship
- Period
- 2026
- Stack
- Raspberry Pi 5 · GStreamer · RapidOCR · ONNX Runtime · FastAPI · SQLAlchemy · WebSocket
Architecture
Problem
The factory's machines showed their production counters only on the operator screen; there was no PLC output, database, or report file. Nobody knew how many minutes of downtime had occurred by the end of a shift.
Solution
- Field device: HDMI → USB capture → Raspberry Pi 5. A GStreamer
teesplits the video in two: one branch goes uninterrupted to the operator screen, the other to OCR. Only the extracted values go over the network, not frames (a few hundred bytes per second). - OCR engine chosen by measurement: Cloud OCR (Mistral) was ruled out due to latency, cost, and data privacy. PaddleOCR and RapidOCR use the same model; RapidOCR (ONNX) was chosen because it installed cleanly on ARM. The small model matches the medium model's accuracy and is 3.7× faster.
- Event engine: A state machine turns raw readings into events: stoppage, model changeover, counter reset, quality alert, and signal loss. Stoppages are backdated to the moment the counter last incremented, and OEE is calculated from the output.
- Validation: The quality rate read from the screen is checked against the good/total calculation; readings that don't match are rejected.
Field results
| Validated capability | Result |
|---|---|
| OCR reading of 6 fields | 6/6 correct, 99%+ confidence score |
| Stoppage detection | Actual 90 s → measured 88 s |
| Outage resilience | 38 pending readings restored from disk |
| Model changeover / counter reset | Caught in both directions |