
Распознавание DataMatrix с фотографий прямо в 1С
Готовое решение для 1С, позволяющее с высокой точностью распознавать один или несколько штрих-кодов (Data Matrix, QR и др.) напрямую с одной фотографии. Идеально подходит как для идентификации единичного товара, так и для пакетной обработки при инвентаризации или приемке товара. Архив поставки содержит полный программный комплекс для распознавания DataMatrix кодов с фотографий. Включает в себя обработку для 1С и высокопроизводительный C# компонент.
Функциональные возможности и преимущества
Распознавание нескольких кодов
Система способна найти и декодировать все DataMatrix коды на одной фотографии, что идеально подходит для быстрой инвентаризации или приемки нескольких товаров одновременно
Высочайшая точность
Распознает даже размытые, поврежденные и находящиеся под углом коды. В основе лежит Aspose.BarCode — ведущая коммерческая библиотека для работы со штрих-кодами
Работает с плохими фотографиями
Специально заточено под распознавание кодов с фотографий низкого качества, сделанных на телефон. Эффективно справляется с бликами, тенями и искажениями
Полностью локально
Весь процесс распознавания происходит на вашей машине без отправки данных в облако. Для распознавания кодов "Честный ЗНАК" лицензия не требуется
Универсальность
C# компонент можно использовать отдельно в любых проектах, где нужен надежный OCR штрих-кодов
Простая интеграция с 1С
Готовая обработка, которую легко адаптировать под любую конфигурацию 1С:Предприятие
Детальное логирование
C# приложение ведет подробный лог-файл, что упрощает диагностику и отладку процесса распознавания
Пример фотографии с тремя DataMatrix кодами, которые успешно распознаются системой за один раз
Распознано:
0104627131305635215xN-fRd7OK%>Y
0104627147220953215Yq3'P!bFGR&A
0104680146411661215f*L0NDj(W&a:
![]()
Пример работы в самых сложных условиях
На фотографии ниже этикетка снята под экстремальным углом при плохом освещении. Разобрать код человеческим глазом невозможно даже при сильном увеличении.
![]()
Однако алгоритм уверенно справился с задачей. Как видно из лога работы программы, после нескольких неудачных попыток распознать код на оригинальном изображении, система начала автоматически применять различные методы обработки: увеличение, обрезку, выделение частей. Успех был достигнут только на 7-й попытке, после "агрессивной обрезки" и увеличения изображения.
Фрагмент лога, демонстрирующий процесс:
...
[22:21:58.792] U05;A039; 🔍 Шаг 1: Попытка распознавания оригинального изображения
[22:22:02.545] b88;A039; b88;A039; Оригинальное изображение не распознано. Переходим к улучшенной обработке...
[22:22:02.545] U05;A039; 🔍 Шаг 3: Применяю предварительную обработку изображения...
[22:22:02.576] U05;A039; 🔧 Создаю и тестирую: Увеличенное изображение...
[22:22:09.887] U05;A039; 🔧 Создаю и тестирую: Обрезанное изображение...
[22:22:15.998] U05;A039; 🔧 Создаю и тестирую: Центральное изображение...
[22:22:19.963] U05;A039; 🔧 Создаю и тестирую: Левая часть изображение...
[22:22:24.633] U05;A039; 🔧 Создаю и тестирую: Верхняя часть изображение...
[22:22:29.665] U05;A039; 🔧 Создаю и тестирую: Агрессивная обрезка изображение
[22:22:30.139] U05;A039; 🗡A039; Агрессивная обрезка: убрано 137px, размер 686x1006 U94; 2744x4024
[22:22:31.253] c89; c89; Найден GS1DataMatrix: (01)04610331508203(21)5JdJdy/tDcPdd...
[22:22:31.255] c89; 🎉 Код найден в Агрессивная обрезка изображении! Остановка обработки.
...
Именно этот многоступенчатый подход и позволяет добиться результата там, где другие системы пасуют.
Итоговый распознанный код:
0104610331508203215JdJdy/tDcPdd
Программа состоит из 2 частей:
Технические требования
-
Управление торговлей 11.x
-
Бухгалтерия предприятия 3.x
-
ERP Управление предприятием 2.x
-
Розница 2.x, 3.x
-
Любые конфигурации со справочником “ШтрихкодыУпаковокТоваров” или аналогичным.
Пример использования
Кейс: Распознавание DataMatrix-кодов для прямых продаж вне маркетплейсов
Предыстория и задача
Крупная fashion-компания, совмещающая розницу, опт и торговлю на маркетплейсах Ozon и Wildberries, столкнулась с ростом комиссий, которые съедали значительную часть прибыли. Руководство поставило цель — перевести клиентов из маркетплейсов в собственные каналы продаж, получив их контакты для последующих коммуникаций.
Маркетологи предложили оригинальную идею: в каждую упаковку товара, продаваемого через маркетплейс, вкладывать флаер с предложением участвовать в розыгрыше призов. Для участия покупатель отправлял фото этикетки с кодом «Честный ЗНАК» в Telegram-бот. Код позволял системе в 1С определить товар и связать его с клиентом по Telegram-ID.
Проблема
Платформа 1С не умеет напрямую взаимодействовать с современными .NET-библиотеками, включая Aspose.BarCode, что делало невозможным корректное распознавание DataMatrix-кодов с фотографий. При этом требовалось решение, способное работать с некачественными снимками и выполнять распознавание локально, без облачных сервисов.
Решение
Для преодоления ограничений была разработана система Aspose.BarCode + .NET для 1С — комплекс из двух компонентов:
- C#-приложение BarcodeReader.exe — выполняет многопроходное распознавание с помощью Aspose.BarCode и OpenCVSharp.
- Внешняя обработка 1С — управляет процессом через JSON-обмен и интегрируется в бизнес-логику предприятия.
Система применяет интеллектуальную обработку изображений: если код не распознан с первой попытки, программа последовательно обрезает, увеличивает и фильтрует изображение, пока не добьётся успеха. Это позволило достичь почти 100% точности даже на размытых и плохо освещённых фото.
Результаты внедрения
- Теперь компания получает контакты клиентов — Telegram-ID
- Рост клиентской базы и прямых продаж без комиссий маркетплейсов
- Полностью локальная работа без передачи данных в облако
Благодаря этому решению компания построила прямой канал коммуникации с покупателями и значительно повысила маржинальность продаж.
Как ещё можно использовать модуль для автоматизации и маркетинга
🏭 Производство и логистика
- Инвентаризация по фото: распознавание нескольких кодов с одной фотографии.
- Контроль маркировки ОТК: проверка DataMatrix перед отгрузкой.
- Приёмка на 3PL-складах: удалённое распознавание без доступа к базе 1С.
🛍 Розница и маркетинг
- Акции с фотокодом: участие через Telegram-бот по фото упаковки.
- Геймификация: «Собери коды — получи приз» без облачных API.
- Контроль выкладки: проверка акционных товаров по фото-кодам.
📦 E-commerce и маркетплейсы
- Автоопределение товара при возврате: распознавание кода на фото клиента.
- Быстрая проверка поставок: сверка DataMatrix с внутренней базой.
- Валидация серий: контроль уникальности кодов в партиях.
🧾 Документооборот и сервис
- Автопривязка документов: считывание кодов с актов и накладных.
- Идентификация оборудования: быстрый поиск по серийному номеру.
- Распознавание QR-подписей: ускорение внутреннего документооборота.
🔐 Безопасность и контроль
- Проверка подлинности: верификация кодов сертификатов и ярлыков.
- Контроль пропусков: фото-распознавание бейджей и QR-пропусков.
- Антиконтрафакт: сверка DataMatrix с внутренней базой компании.
🧠 Advanced-сценарии
- Распознавание в видеопотоке: контроль упаковки на линии.
- Авторизация по QR: идентификация пользователя на портале 1С.
- Пакетная валидация: регулярная проверка кодов в регламентных заданиях.
Информация для разработчиков
Создайте файл запроса в формате JSON и запустите приложение из командной строки:
C:\Path\To\BarcodeReader\BarcodeReader.exe "C:\temp\my_request.json"
Формат файла запроса (request.json)
{
// Обязательно: Путь к изображению, которое нужно распознать
"ImagePath": "C:\\images\\label.jpg",
// Обязательно: Путь, куда будет сохранен результат
"OutputPath": "C:\\images\\label_result.json",
// Необязательно: Типы кодов для поиска через запятую. По умолчанию "DataMatrix".
// Доступны: DataMatrix, GS1DataMatrix, QR, Code128, EAN13, ALL
"BarcodeTypes": "DataMatrix,GS1DataMatrix",
// Необязательно: Включить режимы высокого качества Aspose. По умолчанию true.
"HighQuality": true,
// Необязательно: Включить предварительную обработку изображения (обрезка, увеличение).
// Очень полезно для "трудных" фото. По умолчанию false. В 1С-обработке включено.
"ProcessImage": true,
// Необязательно: Включить автоматический поиск и вырезание областей с кодами с помощью OpenCV.
// По умолчанию false.
"AutoCrop": true
}
Формат файла результата (result.json)
{
"Success": true,
"Message": "Найдено кодов: 3",
"Codes": [
"(01)04627131305635(21)5xN-fRd7OK%>Y(91)EE10(92)2x/MdxOvMeM2h3RgX***************************Recognized by Aspose Barcode Reader evaluation version. Only Code39Standard can be recognized without restrictions. Please buy license to use Aspose Barcode Reader without watermarks.",
"(01)04627147220953(21)5Yq3'P!bFGR&A(91)EE11(92)jTuBnoj2Vdc1lcSsG***************************Recognized by Aspose Barcode Reader evaluation version. Only Code39Standard can be recognized without restrictions. Please buy license to use Aspose Barcode Reader without watermarks.",
"(01)04680146411661(21)5f*L0NDj(W&a:(91)EE10(92)16AtTRadCTCy3Rf8A***************************Recognized by Aspose Barcode Reader evaluation version. Only Code39Standard can be recognized without restrictions. Please buy license to use Aspose Barcode Reader without watermarks."
],
"ErrorDetails": "",
"ProcessedAt": "2025-06-26T16:50:27.6638221+03:00",
"ProcessingTimeMs": 977
}
Готовая обработка демонстрирует все возможности интеграции. Код из ее модуля можно легко перенести в общий модуль вашей конфигурации и вызывать по мере необходимости:
// В любом модуле 1С:
ВнешняяОбработка = ВнешниеОбработки.Создать("ИдентификацияТовараПоФотоКодаЛокально.epf");
Результат = ВнешняяОбработка.РаспознатьШтрихкодНаСервере("C:\photo.jpg");
Проверено на следующих конфигурациях и релизах:
- 1С:ERP Управление предприятием 2, релизы 2.5.22.70