Читание баркодов является распространенным требованием во многих приложениях, таких как управление инвентаризацией и проверка билетов. Этот урок показывает, как читать бар-коды с помощью C# с Aspose.BarCode для .NET.

Введение

Этот руководство предоставляет шаг за шагом инструкции по чтению баркодов с использованием C#. Следуя шагам, указанным ниже, вы можете разработать robust barcode reader application, которая поддерживает несколько типов баркоидов.

Преимущества чтения баркодов

  • Эффективность: быстрый доступ к зашифрованной информации в цифровом формате.
  • Версальность: может быть интегрирована в различные приложения, включая управление запасами и проверку билетов.
  • Легкость использования: упрощает процесс ввода данных через быстрые сканирования.

Преимущества: Подготовка к окружающей среде

  • Настройка Visual Studio или любой совместимый .NET IDE.
  • Инсталляция Aspose.BarCode из NuGet Package Manager.
Install-Package Aspose.BarCode

Шаг за шагом Руководство для чтения баркода

Шаг 1: Включение необходимых номенклатур

Добавьте ссылки на требуемые именные пространства в вашем коде.

using Aspose.BarCode;
using Aspose.BarCode.BarCodeRecognition;

Шаг 2: Загрузите изображение баркода

Создайте пример для BarCodeReader Класс и загрузка файла изображения баркода.

Шаг 3: Настройка типов баркода

Определите типы баркода, которые вы хотите прочитать, используя DecodeType и перечисления.

barcodeReader = new BarCodeReader("multiple_codes.png", DecodeType.Pdf417, DecodeType.DataMatrix, DecodeType.QR, DecodeType.Code39Extended, DecodeType.Code128, DecodeType.RM4SCC);

Шаг 4: Итерат через результаты

Вытягивайте информацию о баркоде и напечатайте ее на консоль.

foreach (BarCodeResult codeResult in barcodeReader.ReadBarCodes())
{
    Console.WriteLine("{0}: {1}", codeResult.CodeTypeName, codeResult.CodeText);
}

Полный пример кода для чтения баркода

Вот полный пример, демонстрирующий, как читать баркоды с изображения:

using (BarCodeReader barcodeReader = new BarCodeReader("multiple_codes.png", DecodeType.Pdf417, DecodeType.DataMatrix, DecodeType.QR, DecodeType.Code39Extended, DecodeType.Code128, DecodeType.RM4SCC))
{
    Console.WriteLine("ReadSimpleExample:");
    foreach (BarCodeResult codeResult in barcodeReader.ReadBarCodes())
    {
        Console.WriteLine("{0}: {1}", codeResult.CodeTypeName, codeResult.CodeText);
    }
}

Дополнительная информация

  • Библиотека Aspose.BarCode поддерживает разнообразный формат баркода, что позволяет легко читать несколько типов кодов.
  • Рассмотрим внедрение дополнительной обработки ошибок для сценариев с отсутствующими или нечитаемыми баркодами.

Заключение

Этот урок направляет вас по процессу чтения баркодов в C# с помощью Aspose.BarCode. С несколькими линиями кода, вы можете эффективно извлечь информацию из изображений баркодов. Для дополнительных функций генерирования баркодов и манипуляции, обратитесь к более подробным учебникам и руководствам, доступным для продуктов Aspose.

Расширенные возможности распознавания

Чтение из потока памяти

В реальных проектах изображения часто поступают не из файловой системы, а из потоков (например, из веб‑запроса). Для такой ситуации используется конструктор BarCodeReader, принимающий Stream. Ниже показан пример, где изображение загружается в MemoryStream и передаётся читателю:

byte[] imageBytes = File.ReadAllBytes("barcode_from_web.png");
using (MemoryStream ms = new MemoryStream(imageBytes))
using (BarCodeReader reader = new BarCodeReader(ms, DecodeType.QR, DecodeType.Code128))
{
    foreach (BarCodeResult result in reader.ReadBarCodes())
    {
        Console.WriteLine($"Тип: {result.CodeTypeName}, Текст: {result.CodeText}");
    }
}

Настройка качества распознавания

Для сложных изображений (низкое разрешение, шум, искажения) полезно изменить параметры BarcodeReader. Класс BarCodeReader предоставляет свойства ReadQuality и Timeout. Увеличив ReadQuality, вы позволяете библиотеке выполнять более тщательный поиск, хотя это может замедлить работу.

using (BarCodeReader reader = new BarCodeReader("noisy_image.png", DecodeType.DataMatrix))
{
    reader.ReadQuality = 0.8f; // значение от 0 до 1, где 1 — максимальное качество
    foreach (BarCodeResult result in reader.ReadBarCodes())
    {
        Console.WriteLine(result.CodeText);
    }
}

Распознавание нескольких областей изображения

Если на одном изображении находятся несколько баркодов, можно воспользоваться свойством Region и методом ReadBarCodes без параметров. Библиотека автоматически определит отдельные зоны и вернёт результаты для каждой.

using (BarCodeReader reader = new BarCodeReader("multiple_regions.png", DecodeType.AllSupportedTypes))
{
    foreach (BarCodeResult result in reader.ReadBarCodes())
    {
        Console.WriteLine($"Область: {result.Region.X},{result.Region.Y} — {result.CodeText}");
    }
}

Обработка ошибок и отладка

Типичные ошибки при чтении

  1. BarCodeRecognitionException – возникает, когда формат изображения не поддерживается или файл повреждён.
  2. InvalidCodeException – сигнализирует, что баркод найден, но его содержимое не соответствует выбранному типу декодирования.
  3. BarCodeException – общее исключение библиотеки, часто связано с лицензией.

Пример безопасного чтения

try
{
    using (BarCodeReader reader = new BarCodeReader("unknown.png", DecodeType.AllSupportedTypes))
    {
        foreach (BarCodeResult result in reader.ReadBarCodes())
        {
            Console.WriteLine($"{result.CodeTypeName}: {result.CodeText}");
        }
    }
}
catch (BarCodeRecognitionException ex)
{
    Console.WriteLine($"Ошибка распознавания: {ex.Message}");
}
catch (BarCodeException ex)
{
    Console.WriteLine($"Общая ошибка Aspose.BarCode: {ex.Message}");
}

Логирование и отладка

Для отладки удобно включить подробный журнал, используя класс Metered. Он позволяет вывести количество обработанных страниц и время выполнения. Это особенно полезно в серверных сервисах, где важно контролировать нагрузку.

Metered metered = new Metered();
Console.WriteLine($"Обработано изображений: {metered.TotalImagesProcessed}");

Часто задаваемые вопросы (FAQ)

  • Можно ли распознавать баркоды из PDF‑документов? Да, BarCodeReader умеет принимать поток PDF и извлекать изображения страниц автоматически.
  • Какой тип лицензии нужен для коммерческого использования? Для производства требуется полная лицензия Aspose.BarCode, которую можно получить через официального партнёра.
  • Поддерживает ли библиотека 2‑D коды с пользовательскими параметрами? Да, типы Aztec, DataMatrix и QR позволяют задавать параметры через соответствующие классы параметров (например, AztecParameters).

Оптимизация производительности

  1. Кеширование изображений – если одно и то же изображение читается многократно, храните byte[] в памяти и переиспользуйте MemoryStream.
  2. Ограничение типов – передавайте только те DecodeType, которые действительно нужны, чтобы сократить время сканирования.
  3. Параллельная обработка – при обработке большого количества файлов используйте Parallel.ForEach, но помните о thread‑safety BarCodeReader (каждый поток должен иметь свой экземпляр).

Эти рекомендации помогут построить надёжное и масштабируемое решение для массового считывания баркодов.

More in this category