Надежное распознавание DataMatrix кодов Честного знака с фотографий — Aspose.BarCode + .NET
Готовое решение для интеграции в 1С, позволяющее с высокой точностью распознавать один или несколько штрих-кодов (Data Matrix, QR и др.) напрямую с одной фотографии. Идеально подходит как для идентификации единичного товара (например, в рамках акций лояльности), так и для пакетной обработки при инвентаризации или приемке товара. Обработка 1С для распознавания кода маркировки с фото и поиска товара в базе. Не работает без поставляемой .NET-компоненты BarcodeReader.
Архив поставки содержит полный программный комплекс для распознавания DataMatrix кодов с фотографий. Включает в себя обработку для 1С и высокопроизводительный C# компонент.
В решении есть два независимых, но взаимосвязанных компонента:
- Внешняя обработка для 1С (.epf), которая организует весь процесс.
- Standalone (автономное) C# приложение (.exe), которое выполняет основную работу по распознаванию и может использоваться в любых других проектах (Python, PHP, Delphi и др.).
Функциональные возможности и преимущества
Распознавание нескольких кодов
Система способна найти и декодировать все DataMatrix коды на одной фотографии, что идеально подходит для быстрой инвентаризации или приемки нескольких товаров одновременно
Высочайшая точность
Распознает даже размытые, поврежденные и находящиеся под углом коды. В основе лежит Aspose.BarCode — ведущая коммерческая библиотека для работы со штрих-кодами
Работает с плохими фотографиями
Специально заточено под распознавание кодов с фотографий низкого качества, сделанных на телефон. Эффективно справляется с бликами, тенями и искажениями
Полностью локально
Весь процесс распознавания происходит на вашей машине без отправки данных в облако. Для распознавания кодов "Честный ЗНАК" лицензия не требуется
Универсальность
C# компонент можно использовать отдельно в любых проектах, где нужен надежный OCR штрих-кодов
Простая интеграция с 1С
Готовая обработка, которую легко адаптировать под любую конфигурацию 1С:Предприятие
Детальное логирование
C# приложение ведет подробный лог-файл, что упрощает диагностику и отладку процесса распознавания
Предыстория: как появилось это решение
Обратился руководитель отдела автоматизации крупной fashion-компании. Бизнес-модель включала розничные магазины, оптовые продажи и, что ключевое, активную торговлю на маркетплейсах Ozon и Wildberries.
Ключевой проблемой для их бизнеса стали высокие комиссии маркетплейсов, которые съедают значительную часть прибыли. Задача стояла амбициозная: найти способ "увести" покупателей с маркетплейсов в собственный канал прямых продаж, получив их контакты для дальнейшей работы.
Идея была изящной:
- В каждую упаковку товара, продаваемого через маркетплейс, вкладывать флаер с предложением поучаствовать в розыгрыше призов.
- Для участия в акции покупатель должен отправить в специальный Telegram-бот фотографию этикетки с DataMatrix кодом «Честный ЗНАК».
- В момент отправки фото происходит главное:
- Компания получает прямой контакт клиента — его Telegram-ID.
- Распознав код, система в 1С точно определяет, какой товар, какого цвета и размера купил человек.
- На основе этих данных можно с высокой точностью определить профиль клиента: пол, предпочтения в стиле, размерную сетку.
Таким образом, компания получает бесценную базу теплых контактов для построения прямых продаж через целевые рассылки в Telegram, минуя дорогие каналы Ozon и Wildberries и значительно увеличивая свою прибыльность.
Для реализации этой схемы требовался надежный "движок" — система, способная безупречно распознавать коды с любительских фотографий.
Однако возникла ключевая техническая проблема: платформа 1С не может напрямую работать с современными .NET-библиотеками, как Aspose.BarCode, у которых нет COM-интерфейса. Для ее решения и была разработана C# компонента. Она выступает в роли необходимого моста (wrapper), который принимает простые команды от 1С и выполняет всю сложную работу с .NET-библиотекой.
Решив главную задачу интеграции, наделили этот "мост" дополнительным интеллектом для борьбы с "трудными" фотографиями. Если код не распознается с первой попытки, программа автоматически обрезает, увеличивает и модифицирует изображение, пока не добьется успеха. Это позволило достичь почти 100% распознавания и обеспечить бесперебойную работу всей маркетинговой схемы.
Впоследствии функционал был расширен для распознавания сразу нескольких кодов на одном изображении, что значительно ускорило бы, например, процесс инвентаризации.
Пример фотографии с тремя DataMatrix кодами, которые успешно распознаются системой за один раз.
Распознано:
0104627131305635215xN-fRd7OK%>Y
0104627147220953215Yq3'P!bFGR&A
0104680146411661215f*L0NDj(W&a:
Пример работы в самых сложных условиях
На фотографии ниже этикетка снята под экстремальным углом при плохом освещении. Разобрать код человеческим глазом невозможно даже при сильном увеличении.
Однако алгоритм уверенно справился с задачей. Как видно из лога работы программы, после нескольких неудачных попыток распознать код на оригинальном изображении, система начала автоматически применять различные методы обработки: увеличение, обрезку, выделение частей. Успех был достигнут только на 7-й попытке, после "агрессивной обрезки" и увеличения изображения.
Фрагмент лога, демонстрирующий процесс:
R03;
...
[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; 🎉 Код найден в Агрессивная обрезка изображении! Остановка обработки.
...
R03;
Именно этот многоступенчатый подход и позволяет добиться результата там, где другие системы пасуют.
Итоговый распознанный код:
0104610331508203215JdJdy/tDcPdd
Как это работает: Архитектура решения
Процесс построен на взаимодействии 1С и C# приложения через файловый обмен в формате JSON.
- 1С (Обработка): Пользователь выбирает файл с фотографией, на которой может быть один или несколько кодов.
- Запуск .EXE: 1С запускает C# приложение
BarcodeReader.exe
, передавая ему в качестве аргумента путь к JSON-запросу. - C# (BarcodeReader.exe): Универсальная портативная компонента для распознавания штрих-кодов.
- Читает и парсит JSON-запрос.
- Запускает многоступенчатый процесс распознавания, находя все возможные коды на изображении.
- Формирует и сохраняет JSON-ответ, содержащий массив всех найденных кодов.
- 1С (Обработка): Дожидается завершения, читает JSON-ответ, извлекает и очищает каждый код из полученного массива. Результат выводится в специальное поле, как показано на скриншоте.
(Дальнейшая логика — поиск первого кода, всех кодов или вывод списка для выбора — легко настраивается в 1С.)
Результат распознавания в интерфейсе обработки 1С:
Компонент 1: C# приложение “BarcodeReader”
Это сердце системы. Консольное приложение, написанное на C# с использованием библиотек Aspose.BarCode
, OpenCVSharp
и Newtonsoft.Json
.
Технические особенности
- Мульти-декодирование: Может одновременно искать несколько типов кодов (
DataMatrix
,GS1DataMatrix
,QR
,Code128
и др.) на одном изображении. - Умная обработка изображений: Автоматически применяет различные техники улучшения изображения для повышения шансов на распознавание.
- Логирование: Создает файл
BarcodeReader.log
в своей папке, где подробно описывает каждый шаг.
Системные требования
- Платформа: Приложение является
self-contained
, то есть не требует установки .NET на целевой машине. - ОС: Windows 7 и новее (x64/x86).
- Дисковое пространство: ~100 МБ для приложения и его библиотек.
Как использовать отдельно (из командной строки)
Создайте файл запроса в формате 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
}
Компонент 2: Обработка 1С
Внешняя обработка .epf
служит удобным интерфейсом для взаимодействия с C# компонентом и интеграции его в бизнес-логику 1С. Обработка доработана для отображения всех найденных кодов в отдельном поле.
Совместимость
- Управление торговлей 11.x
- Бухгалтерия предприятия 3.x
- ERP Управление предприятием 2.x
- Розница 2.x, 3.x
- Любые конфигурации со справочником “ШтрихкодыУпаковокТоваров” или аналогичным.
Функционал обработки
- Простой интерфейс: Кнопки для выбора файла и запуска распознавания.
- Отображение всех кодов: Результат выводится в специальное поле “Массив очищенных кодов”.
- Серверный вызов: Вся логика выполняется на сервере 1С.
- Парсинг и очистка кода: Содержит функции для извлечения кодов из JSON, удаления “криптохвоста” Aspose и приведения кода “Честный ЗНАК” к стандартному формату.
- Поиск в базе: Пример запроса для поиска штрих-кода в справочнике
ШтрихкодыУпаковокТоваров
. - Пакетная обработка: Содержит экспортную процедуру для регламентных заданий.
Глубокая интеграция и переиспользование кода
Готовая обработка демонстрирует все возможности интеграции. Код из ее модуля можно легко перенести в общий модуль вашей конфигурации и вызывать по мере необходимости:
// В любом модуле 1С:
ВнешняяОбработка = ВнешниеОбработки.Создать("ИдентификацияТовараПоФотоКодаЛокально.epf");
Результат = ВнешняяОбработка.РаспознатьШтрихкодНаСервере("C:\photo.jpg");
Настройка и использование
-
Распакуйте архив
BarcodeReader.rar
. -
Разместите C# приложение в каталоге платформы 1С. Скопируйте папку
BarcodeReader
(со всем её содержимым) в каталогbin
той версии платформы, которую использует ваш сервер 1С. Это важно для корректной работы функцииКаталогПрограммы()
. Пример пути:C:\Program Files\1cv8\8.3.26.1540\bin\BarcodeReader\
. -
Откройте обработку в 1С. Через
Файл -> Открыть
выберите файлИдентификацияТовараПоФотоКодаЛокально.epf
. -
(Важно!) Проверьте путь в коде. Откройте модуль объекта обработки и найдите функцию
РаспознатьDataMatrixКод
. Убедитесь, что используется вариант сКаталогПрограммы()
:// ... Если ПустаяСтрока(ПутьКПриложениюBarcodeReader) Тогда // Этот вариант будет работать, если вы разместили папку BarcodeReader в каталоге bin ПутьКПриложениюBarcodeReader = КаталогПрограммы() + "BarcodeReader\BarcodeReader.exe"; КонецЕсли; // ...
-
Пользуйтесь! Выберите файл с фото этикетки и нажмите “Распознать”.
Состав комплекта поставки
К публикации приложен один архив Комплект поставки.rar
, который содержит всё необходимое для немедленной работы. После скачивания и распаковки вы получите:
-
Папка
BarcodeReader
- Содержит автономное C# приложение-распознаватель, все сопутствующие библиотеки (
.exe
,.dll
) и пример файла запроса. Это "движок" всей системы.
- Содержит автономное C# приложение-распознаватель, все сопутствующие библиотеки (
-
Файл
ИдентификацияТовараПоФотоКодаЛокально Инфостарт.epf
- Готовая внешняя обработка для платформы 1С:Предприятие 8, которая обеспечивает удобный интерфейс и интеграцию с C# компонентом.
Остались вопросы?
Для получения дополнительной информации и помощи в настройке модуля под нужды вашего бизнеса — оставьте заявку

Проверено на следующих конфигурациях и релизах:
- 1С:ERP Управление предприятием 2, релизы 2.5.22.70