Скорость имеет решающее значение для любого приложения сканирования штрих-кодов – сканируете ли вы камерой товары на складе, детали на конвеерной линии или товары на кассе.
VintaSoft Barcode .NET SDK предлагает режим автоматического распознавания штрих-кодов, который используется по умолчанию. Режим автоматического распознавания штрих-кодов сбалансирован в пользу качества распознавания для распознавания штрих-кодов в любых условиях.
Также
VintaSoft Barcode .NET SDK предлагает режим ручного распознавания штрих-кодов, который имеет множество специализированных настроек и позволяет добиться максимальной производительности и/или качества распознавания штрих-кодов в каждой конкретной ситуации.
Ниже мы рассмотрим, как глубокая настройка
VintaSoft Barcode .NET SDK помогает добиться быстрого считывания штрих-кодов в различных условиях.
Шаг 1. Определите основные (общие) настройки сканирования
Данные настройки влияют на скорость распознавания всех типов штрих-кодов.
Задайте типы штрих-кодов
Задайте типы штрих-кодов или типы подмножеств штрих-кодов:
reader.Settings.ScanBarcodeTypes = BarcodeType.QR | BarcodeType.DataMatrix;
reader.Settings.ScanBarcodeSubsets.Add(BarcodeSymbologySubsets.GS1_128);
Задайте ожидаемое количество штрихкодов
Используйте свойство
ReaderSettings.ExpectedBarcodes для задания количества штрих-кодов, которое ожидается на изображении.
Задайте режим распознавания
Режим распознавания вносит самый существенный вклад в скорость распознавания штрих-кодов. VintaSoft Barcode Reader предоставляет четыре режима распознавания используемые в различных ситуациях:
- Автоматический (по умолчанию). Данный режим не требует настройки и жертвует скоростью в пользу качества распознавания. Скорость распознавания будет напрямую зависеть от качества изображения с штрих-кодами. Этот режим подходит когда параметры изображений и штрих-кодов не известны (изменяющееся либо неравномерное освещение, размытие, неизвесный размер штрихкода, и т.д.).
reader.Settings.AutomaticRecognition = true;
- Итеративный. Данный режим используется когда освещение штрихкода меняется. Задайте верхний и нижний пороги бинаризации, количество итераций. Скорость распознавания будет зависть от правильного выбора количества итераций, а также верхнего и нижнего порога бинаризации.
reader.Settings.AutomaticRecognition = false;
reader.Settings.ThresholdMode = ThresholdMode.Iterations;
reader.Settings.ThresholdMin = 100;
reader.Settings.ThresholdMax = 600;
reader.Settings.ThresholdIterations = 6;
- Автоматический пороговый. Данный режим используется когда изменяется освещение штрих-кода, при этом штрих-код имеет нормальную модуляцию (состоит из черного и белого цветов). Скорость распознавания будет фиксированная вне зависимости от качества изображения.
reader.Settings.AutomaticRecognition = false;
reader.Settings.ThresholdMode = ThresholdMode.Automatic;
- Ручной пороговый. Данный режим должен использоваться когда освещение штрих-кода не меняется, например если камера установлена на производственной линии. Задайте порог бинаризации используя свойство [ReaderSettings.Threshold]. Скорость распознавания будет фиксированная вне зависимости от качества изображения.
reader.Settings.AutomaticRecognition = false;
reader.Settings.ThresholdMode = ThresholdMode.Iterations;
reader.Settings.Threshold = 450;
Уточните размер штрих-кода на изображении
Если ваши одномерные штрих-коды имеют хорошее качество и большую высоту, то увеличьте интервал сканирования используя свойство
ReaderSettings.ScanInterval.
Уточните расположение штрих-кода на изображении
Если известно в каком прямоугольнике на изображении может находиться штрих-код, то задайте координаты прямоугольника используя свойство
ReaderSettings.ScanRectangle.
Шаг 2. Расширенные настройки.
VintaSoft идет дальше, предоставляя расширенные возможности контроля над движком распознавания штрих-кодов. Это дает VintaSoft Barcode Reader преимущество в производительности, которое не предлагают другие поставщики, обеспечивая непревзойденную скорость в различных условиях.
Определите размер модулей штрих-кода
Если изображение содержит штрих-код в котором единичный модуль более 6 пикселов – используйте свойство
ReaderSettings.ImageScaleFactor для уменьшения изображения так чтобы размер единичного модуля был в диапазоне от 3 до 6 пикселов. Это существенно ускорит распознавание штрих-кодов.
Многопоточная обработка
VintaSoft Barcode Reader по умолчанию использует многопоточную обработку. Изменить количество используемых потоков можно используя свойство
ReaderSettings.MaximumThreadCount.
Тонкие настройки бинаризации
VintaSoft Barcode Reader предостовляет два режима адаптивной бинаризации:
Fast и
HighQuality (по умолчанию). Если штрих-код на изображениях имеет равномерное освещение, то ипользуйте быстрый режим адаптивной бинаризации:
reader.Settings.AdaptiveBinarizationType = AdaptiveBinarizationType.Fast;
Определите настройки сканирования в зависимости от типа сканируемых штрих-кодов
- Задайте свойство ReaderSettings.MatrixBarcodeMaxCellSize, если известен примерный размер единичного модуля двумерного штрих-кода.
- Если не требуется распознавание отраженных двумерных штрих-кодов, то отключите его используя свойство ReaderSettings.SearchMirrored2DBarcodes.
- QR Code. Уменьшите значение свойства ReaderSettings.QrMaxAxialNonuniformity, если распознаваемые штрих-коды не имеют осевых искажений.
- QR Code. Задайте свойства ReaderSettings.QrMaxSymbolVersion и ReaderSettings.QrMinSymbolVersion, если известен размер матрицы распознаваемого штрих-кода QR Code.
- QR Code. Отключите свойство ReaderSettings.SearchDistortedQRBarcodes, если сканируемые штрих-коды не имеют искажений размеров матрицы штрих-кода (штрихкод является квадратным).
- Data Matrix. Уменьшите значение свойства ReaderSettings.DataMatrixLPatternMaxErasures, если сканируемые штрих-коды DataMatrix не имеют повреждений "L" паттерна.
- Data Matrix. Отключите свойство ReaderSettings.SearchDistortedDataMatrixBarcodes, если сканируемые штрих-коды не имеют искажений размеров матрицы штрих-кода (штрих-код является прямоугольным).
- Data Matrix. Задайте свойство ReaderSettings.DataMatrixMinCellSize, если известен примерный размер единичного модуля штрих-кода.
- Data Matrix. Если штрих-коды имеют высокое качество, то увеличьте значение свойства ReaderSettings.ScanInterval. Для нормального качества штрих-кода DataMatrix рекомендуется задать такой сканирующий интервал, чтобы через штрих-код проходило не менее 4 сканирующих линий.
- DotCode. Задайте свойства ReaderSettings.DotCodeMatrixMaxArea и ReaderSettings.DotCodeMatrixMinArea, если известен размер матрицы распознаваемого штрих-кода Dot Code.
Шаг 3: Дополнительные меры для максимальной скорости
- Для ограничения времени распознавания штрих-кодов используйте свойство ReaderSettings.RecognitionTimeout.
- Создайте один экземпляр класса BarcodeReader для распознавания и используйте его несколько раз. Если распознавание разных изображений ведется в нескольких потоках, то используйте по одному экземпляру класса BarcodeReader для каждого потока.
- Избегайте кодирования/декодирования изображений, если это возможно. Если данные пикселей изображения находятся в памяти (например, получены с камеры), то в качестве источника для распознавания изображений используйте:
- Обратитесь к нашей команде экспертов для получения индивидуальных рекомендаций по настройке VintaSoft Barcode Reader для вашей задачи.
Итог: Быстрое сканирование штрих-кодов в любых условиях
VintaSoft Barcode Reader разработан для быстрой работы даже в сложных условиях — при слабом или неравномерном освещении, размытых изображениях, нагруженных макетах или искаженных изображениях. Благодаря глубоким настройкам конфигурации процесса сканирования штрих-кодов позволяет вашим приложениям:
- Обеспечить мгновенное сканирование для лучшего взаимодействия с пользователем
- Поддерживать стабильное качество распознавания штрих-кодов
- Адаптировать скорость сканирования в соответствии с вашими потребностями
- Снизить нагрузки на оборудование, что актуально для мобильных, встраиваемых или высокопроизводительных систем.