Читание баркодов является распространенным требованием во многих приложениях, таких как управление инвентаризацией и проверка билетов. Этот урок показывает, как читать бар-коды с помощью 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}");
}
}
Обработка ошибок и отладка
Типичные ошибки при чтении
BarCodeRecognitionException– возникает, когда формат изображения не поддерживается или файл повреждён.InvalidCodeException– сигнализирует, что баркод найден, но его содержимое не соответствует выбранному типу декодирования.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).
Оптимизация производительности
- Кеширование изображений – если одно и то же изображение читается многократно, храните
byte[]в памяти и переиспользуйтеMemoryStream. - Ограничение типов – передавайте только те
DecodeType, которые действительно нужны, чтобы сократить время сканирования. - Параллельная обработка – при обработке большого количества файлов используйте
Parallel.ForEach, но помните о thread‑safetyBarCodeReader(каждый поток должен иметь свой экземпляр).
Эти рекомендации помогут построить надёжное и масштабируемое решение для массового считывания баркодов.
More in this category
- Aspose.BarCode 2D Barcode Reader в .NET: C# Guide
- Сканирование QR-кодов из изображений с помощью Aspose.BarCode для .NET
- Мулти-баркодное распознавание в .NET с помощью Aspose.BarCode
- GS1 DataBar (RSS-14) Баркод: розничная, свежая пища и здравоохранение
- Настройка генерации баркода в .NET с помощью Aspose.BarCode