Technical guide for configuring and using RealityExtract for automated data capture.
RealityExtract is an Android application for automated optical character recognition (OCR) of tagged displays and instruments. It uses hashtag markers (e.g., #1#, #2#) to identify measurement points and continuously captures their numeric values.
A project represents a specific setup or measurement configuration. Each project stores:
A session is a single capture run within a project. Each session contains:
Calibration is the process of detecting tag markers and determining where to read values from. It consists of several phases:
The app scans the camera feed for hashtag markers. Each tag must be detected in multiple consecutive frames to be confirmed. The tag's bounding box is averaged across detections for stability.
If auto-correction is enabled, the app tests different preprocessing settings for each tag to find the optimal configuration. See the Auto-Correction section for details.
Calibration is complete. The app stores the tag positions and value regions, and is ready to start capture.
For each detected tag, the app determines where the numeric value is located. This can happen in two ways:
Auto-correction automatically finds the best preprocessing settings for each tag's value region. This is particularly useful when different displays require different image processing to be read reliably.
Auto-Correction can be enabled/disabled per project in the capture settings (gear icon). It is enabled by default.
The app first tries with no preprocessing (default), then cycles through these presets in order. LED/inverted presets are tested first since they're most effective for digital displays:
| # | Preset Name | Description |
|---|---|---|
| 0 | default | No preprocessing (baseline) |
| 1 | led_basic | LED mode + binary + invert |
| 2 | inverted_only | Binary + invert (no LED mode) |
| 3 | led_clahe | LED mode + CLAHE + binary + invert |
| 4 | inverted_clahe | CLAHE + binary + invert |
| 5 | light_clahe | CLAHE with clip limit 2.0 |
| 6 | medium_clahe | CLAHE with clip limit 4.0 |
| 7 | strong_clahe | CLAHE with clip limit 6.0 |
| 8 | binary_only | Binary thresholding only |
| 9 | clahe_binary | CLAHE + binary thresholding |
| 10 | maximum | Full enhancement (all options) |
You can optionally set minimum and maximum expected values for each tag. Values outside this range are rejected both during capture and during calibration validation.
Note: Tags without min/max constraints accept any numeric value. Combine with LED Display Format for best results on LED/LCD displays.
Important: Auto-correction evaluates presets by running the on-device OCR engine against each preprocessing configuration to measure recognition success rate.
Preprocessing uses OpenCV to enhance images before OCR. All preprocessing happens on-device.
Enhances local contrast in images. The clip limit controls how much contrast enhancement is applied (higher = more enhancement, but may amplify noise).
Settings: claheEnabled, claheClipLimit (1.0-8.0)
Converts the image to black and white using adaptive thresholding. Useful for high-contrast displays or when removing background noise.
Setting: binaryThresholdEnabled
Optimized processing for LED/LCD displays. Extracts bright pixels on dark backgrounds and applies specialized filtering for segment-style displays.
Setting: ledModeEnabled
Inverts black and white after thresholding. Used for displays with light text on dark backgrounds (common in LED displays).
Setting: invertForLed
When preprocessing is enabled, the following steps are applied in order:
The app uses a deep learning-based recognition engine that runs entirely on-device, with specialized preprocessing for different display types.
General-purpose OCR that works well with most printed text and digital displays. Uses a deep learning model trained on diverse text styles. The engine includes:
For LED and LCD displays (digital scales, meters, industrial equipment), use the LED mode preprocessing option. This extracts bright pixels on dark backgrounds and applies specialized filtering for segment-style displays.
Tip: Enable Auto-Correction in capture settings (gear icon) to automatically find the best preprocessing settings for each tag, including LED mode when appropriate.
When enabled, debug data capture collects diagnostic information to help troubleshoot OCR issues. This data is uploaded to the cloud and can be viewed in the admin dashboard.
Debug sessions can be viewed in the admin dashboard at /admin/debug. Each session shows:
Privacy note: Debug data includes camera images and is stored in Firebase Storage associated with your user account. Only enable debug capture when troubleshooting, and delete sessions when no longer needed.
The auto-stop timer lets you set a maximum duration for a capture session. When the timer expires, the capture stops automatically. This is useful for unattended recordings or when you know exactly how long you need to capture data.
If you pause a timed capture, the remaining time is preserved. When you resume, the timer continues from where it left off rather than restarting.
Note: The auto-stop duration is saved per project. You can change it before each session without affecting other project settings.
The web dashboard at realityextract.com provides tools for viewing and analyzing captured data. Sign in with your account to access your projects and sessions.
Each session page displays captured readings with interactive chart and table views. The following features are available:
Filter displayed data by preset time windows (last 5/15/30 minutes, last hour) or define a custom date range. Useful for focusing on specific periods during long capture sessions.
View calculated statistics for each data column including minimum, maximum, mean, standard deviation, count, and null count. Statistics update automatically when time range changes.
Click on legend items to show or hide individual data series. Hidden series appear with strikethrough text in the legend. Useful when comparing specific columns.
Configure minimum and maximum threshold values per column. Thresholds appear as dashed horizontal lines on the chart, making it easy to identify values outside expected ranges.
Overlay data from another session in the same project. Comparison data appears as dashed lines with lighter colors. Sessions are aligned by start time for easy comparison.
Add timestamped notes to mark important events or observations. Annotations appear as green markers on the chart. Click a marker or annotation in the panel to highlight it.
Drag the brush control below the chart to zoom into a specific data range. Use the Reset Zoom button to return to the full view.
Export data as CSV (raw or processed) or save the current chart view as a PNG image for reports and presentations.
The processing panel provides algorithms to clean and smooth captured data:
Note: Processing configurations are saved per session and automatically reapplied when you return.
RealityExtract offers a free tier and a Pro subscription to fit different usage needs.
1 hour of capture time per month. Ideal for trying the app and occasional use.
60 hours of capture time per month, plus priority support. Designed for regular professional use.
Pro subscribers can purchase additional capture hours in top-up packs. Top-up hours never expire and stack on top of the monthly allowance.
Note: Your subscription and capture time are synced across the app and web dashboard. Usage resets on the first of each month.
RealityExtract Documentation v2.5