Building Custom Barcode Scanner Plugin with AI-Powered Recognition and Real-Time Processing
Parcel crews used to read labels by eye, then key the digits into a spreadsheet. Slow, and wrong about 4% of the time. This barcode scanner app development project put two AI models on the same camera feed instead: one locates the code, the second reads it.
- → 97% recognition accuracy across 15 barcode types
- → ~180 ms from camera frame to stored record
- → 65% less processing time per intake batch
- → 72% smaller detection model after INT8 quantization
- → 4 live camera streams per workstation, no GPU required

Project Details
The case is relevant for logistics teams, warehouse managers, retail and supply-chain operators, and technology decision-makers evaluating software that can replace manual barcode entry with faster, more accurate capture.








Business Challenge: Automating Barcode Data Capture Across Formats and Conditions
Every parcel arriving at an intake bench had to be logged by hand. A worker read the label, typed the code into a spreadsheet, and pushed the box down the line. At roughly 1,200 parcels a day per site, that adds up fast.
Two people per shift did nothing except key in serial numbers. Internal audits put the error rate near 4%, and one mistyped digit meant a package no system could find. Retail back rooms serve customers directly, so a parcel nobody can locate turns into a refund conversation within the hour. The client had already bought handheld units for part of the job. Those work when someone points a device at the label and waits for the beep, which leaves damaged, tilted, and shrink-wrapped barcode labels going back to manual entry anyway.

Accurate Recognition Across 15 Barcode Formats
Suppliers ship UPC, EAN, Code 128, ITF-14, and QR code labels inside the same pallet. ITF-14 is the awkward example, carrying a different digit count and printing at a different density than the rest. One reader had to handle all those barcode types without a per-vendor rule set behind it.

Real-Time Speed Under Poor Conditions
Intake lighting is uneven, boxes sit at an angle, and plastic wrap throws glare across the print. Recognition had to survive blurred frames and still return a result before the next parcel hit the bench.

Deployment Beyond Mobile
Phone-based scanning covered field staff, not fixed benches. The same models needed to run inside a desktop C++ application on hardware the client already owned, next to whatever handheld devices stayed in service, with no GPU and no cloud round trip.
Our Barcode Scanning Solution
One question shaped the architecture: where does the barcode actually sit in the frame? Running OCR across a full 1080p image spends most of the compute budget on cardboard. So the pipeline splits in two.
Stage one is object detection. A lightweight detector scans each sampled frame and returns bounding boxes around anything shaped like a code, including multiple barcodes caught in a single shot. Stage two crops those boxes and hands them to the OCR model, which reads the digits printed under the bars rather than decoding the bar pattern itself.
Both models were trained on PaddlePaddle, using roughly 28,000 labeled images pulled from the client’s own camera footage instead of stock photography. Evaluation ran against a held-out set of about 6,200 frames the models never saw during training. Full-code accuracy landed at 97%, with character-level accuracy near 99%.
Model size was the deployment problem. The first detector weighed about 48 MB, far too heavy to load inside a plugin that shares a process with video decoding. INT8 quantization cut it to roughly 13 MB and cost less than a point of accuracy. Both models export to ONNX and run on CPU through ONNX Runtime.
The C++ layer is where this stops resembling a generic barcode scanner SDK. Nx Witness expects plugins to honor its metadata contract, so the Nx Witness integration wraps the inference pipeline in the Nx Meta SDK and publishes every read as a metadata event on the stream. Easy integration mattered more than raw feature count here, because the client’s WMS team had two weeks of capacity in total.
AI-Powered Barcode Detection
A detection model locates every code in the frame before anything gets read, so a pallet with several labels in view produces one box per code. Tilt and glare get handled at this stage, along with labels partly hidden behind strapping.
OCR-Based Data Extraction
Optical Character Recognition technology reads the digits printed under the bars. A scuffed or partly torn label still returns usable serial numbers, as long as the printed characters survive the damage.
Real-Time Scanning Pipeline
The desktop C++ application samples every fifth frame from the live stream and finishes a read in about 180 ms. Results reach the operator's screen and the database before the next parcel is on the bench.
Batch Processing Workflow
Users create a job by dropping up to 500 stored images or clips into a queue, then walk away. The app works through the lot and exports scanned data to CSV for a spreadsheet, or pushes it straight into the inventory system.
Mobile and Web Extensions
A React Native build ships the same barcode scanning app to iOS and Android, so dock staff scan barcodes from the smart devices already in their pockets. Mobile apps and the web page both mirror the desktop history view, and any user with a browser can search past reads.
Offline Scanning Capabilities
Inference runs on the local device. Once offline mode is enabled, a warehouse with patchy connectivity keeps scanning; no upload has to finish first, and no label images leave the client's own network.
Scrum Methodology
Project Journey
The project ran across eight two-week sprints following a two-week discovery phase that confirmed barcode types, their frequency, Nx Witness plugin constraints, and the lack of an on-site GPU, which shaped the model budget. The first demo shipped after sprint three but mistakenly detected a printed measuring strip as a barcode, an issue resolved with two days of relabeling.
How the Barcode Scanner App Works
- Point the plugin at an Nx Witness channel or a phone camera. Users configure the sampling rate and the target barcode types once, per site.
- A parcel crosses the bench. The app grabs every fifth frame, so nothing waits on a worker aiming a device at the label.
- Object detection returns one bounding box per code, even when several labels sit inside a single frame.
- The cropped region goes to the OCR model, which reads the printed digits and returns the code with a confidence score.
- The code appears over the live tile and writes to the database alongside a timestamp, camera ID, and the source frame.
- Reads flow onward as Nx metadata events or a REST call into the client's WMS. A CSV export covers everyone else.
Scrum Process Flow
AI development rarely benefits from a big-bang release, and computer vision work benefits least of all. Accuracy only becomes real once a model meets the client’s own lighting and label stock. Two-week sprints meant the team pushed a build to one live bench every fortnight, then read the confusion matrix on Monday morning.

How We Deliver Your Project
- We define the project goal together, agree on priority features, and set a realistic delivery date and budget.
- We build a ranked list of everything the product needs, starting with what matters most to the business.
- Work is broken into 2-week cycles. At the start of each, we select the next set of features to deliver.
- The team builds, tests, and integrates features throughout the sprint.
- At the end of every sprint, you see working software and give feedback that shapes the next cycle.
- Each sprint produces a shippable piece of the product. We review what worked, adjust, and move forward.
Timeline
How We Delivered the OCR Barcode Detection Project
Discovery & Product Workshop
- Cataloging which barcode types arrive at three pilot sites
- Auditing camera placement, lens, and lighting at each bench
- Confirming the Nx Witness plugin contract and on-site hardware limits
Data & Model Prototyping
- Pulling and labeling ~28,000 frames from the client's own footage
- Benchmarking detector candidates against a held-out 6,200-image set
- Setting the accuracy bar and the per-frame latency budget
Agile Development (Sprints)
- Building the C++ plugin against the Nx Meta SDK
- Quantizing both models to INT8 and exporting to ONNX
- Adding batch mode, CSV export, and the React Native client
QA & Testing
- Replaying recorded shifts against every build to catch regressions
- Testing across 9 workstation configurations and 20+ camera models
- Stress-running four concurrent streams over full 8-hour shifts
Launch & Support
- Rolling the plugin out to intake benches site by site
- Retraining on misreads collected during the first weeks of usage
- Monitoring per-camera accuracy and support tickets from the dashboard
Results
Before
- ✕12–18 seconds to read a barcode label and key it in by hand
- ✕~4% error rate on manually keyed serial numbers
- ✕Two staff per shift assigned to data entry
- ✕Handheld scanners failing on damaged or shrink-wrapped barcode labels
- ✕Camera footage recorded around the clock, never used as a data source
After
- ✔Under 1 second from parcel on the bench to stored record
- ✔97% recognition accuracy across 15 barcode types
- ✔65% less processing time per intake batch
- ✔Under 0.5% error rate, with low-confidence reads routed to review
- ✔Existing cameras now feeding the inventory database directly

Impact of the Barcode Scanner App Development After Deployment
Verified Reviews
Our Reputation on Top Platforms
LITSLINK holds a 4.8 rating on top platforms. Reviewers most often mention technical depth in computer vision and machine learning, plus steady communication across long engagements. Since 2014 the team has delivered 1,540+ software development projects for clients in 82+ countries, pairing US-based project management with senior European engineering.
Have a Computer Vision Recognition Project in Mind?
Planning barcode scanner app development, or a computer vision build that reads something other than a code? Tell us what the camera needs to see and what happens to the data afterwards. An engineer joins the first call, and we reply inside one business day.
















