Задача считывания штрихкодов из PDF-файлов — нетривиальная, но вполне решаемая. Часто она возникает при работе с документами от поставщиков, файлами из системы "Честный ЗНАК" или при потоковой обработке сканированных документов. Рассмотрим основные подходы и инструменты, которые помогут автоматизировать этот процесс в среде 1С.
Основная сложность заключается в том, что 1С напрямую не умеет работать со структурой PDF и распознавать графические образы. Поэтому решение всегда состоит из нескольких этапов и часто требует использования внешних инструментов. Проанализируем весь процесс по шагам.
Прежде чем что-то распознать, нужно это "что-то" получить в виде, понятном для распознающих библиотек. Большинство из них работают с растровыми изображениями (PNG, JPEG, BMP), а не с PDF-документами напрямую.
Важный момент: штрихкод в PDF не всегда является простой картинкой. Возможны два варианта:
В обоих случаях надежный способ — это рендеринг (преобразование) всей страницы или ее части из PDF в графический файл. Для этого можно использовать внешние утилиты, вызываемые из 1С:
При конвертации крайне важно задать достаточно высокое разрешение (DPI), например, 300 DPI или выше. От качества полученного изображения напрямую зависит успех распознавания.
Если вы работаете со сканами документов низкого качества, выцветшими чеками или просто с "зашумленными" файлами, процент успешного распознавания может быть низким. В этом случае перед отправкой в библиотеку распознавания изображение стоит подготовить.
Для этого можно использовать библиотеки компьютерного зрения, такие как OpenCV, или тот же ImageMagick. Основные операции предобработки:
Современный подход — использование нейронных сетей (ИИ) для интеллектуальной предобработки и автоматического подбора нужных фильтров для улучшения качества картинки.
Это ключевой этап, на котором обработанное изображение передается в специализированный инструмент. Рассмотрим несколько вариантов.
Это наиболее простой в интеграции путь, который не требует развертывания собственного ПО, но может быть платным и требует доступа в интернет.
1С:Распознавание документов: Встроенный сервис от фирмы "1С", предназначенный для обработки различных документов. Он умеет извлекать данные по заранее настроенным шаблонам и способен распознавать штрихкоды. Это самый нативный для 1С вариант.
Сторонние API:
Принцип работы: вы отправляете изображение (или PDF) через HTTPЗапрос и получаете в ответ JSON со распознанными данными. Это удобно и не требует разработки внешних компонент.
Этот путь дает больше контроля, не зависит от интернета и чаще всего бесплатен. Однако он требует больше технических навыков для интеграции с 1С, так как напрямую эти библиотеки из 1С не вызвать.
Популярные библиотеки:
ZXing.net (для C#), gozxing (для Go), Pyzbar (обертка для Python над библиотекой ZBar, которая использует тот же движок).Как это интегрировать с 1С?
ZXing.net) и предоставлять простые методы для вызова из 1С.Pyzbar и выводит результат в консоль. Из 1С этот скрипт можно запустить командой ЗапуститьПриложение() и прочитать его вывод.gozxing), который будет принимать картинки по HTTP и возвращать результат. Это делает архитектуру более гибкой.Примерный алгоритм работы "на постоянку":
ЗапуститьПриложение() вызывается утилита ImageMagick для конвертации PDF в PNG с высоким разрешением.Прежде чем писать свое решение с нуля, стоит поискать готовые. На портале Инфостарт существуют разработки, которые уже решают похожие задачи. Например, обработки для извлечения кодов маркировки из PDF-файлов, полученных из "Честного ЗНАКА". Часто они используют описанные выше подходы (внешние утилиты + библиотеки) и могут стать отличной основой для вашего решения.
Наконец, стоит задать вопрос: а нужно ли вообще решать эту задачу "в лоб"? Возможно, можно договориться с контрагентами о предоставлении документов в других форматах, где данные штрихкодов передаются в текстовом виде (например, через ЭДО, в файлах XML или CSV). Это самый надежный способ, который полностью исключает ошибки распознавания и сложности технической реализации.
В итоге, выбор решения зависит от масштаба задачи. Для разовых операций подойдут готовые обработки или онлайн-сервисы. Для постоянной потоковой обработки документов лучше выстроить надежный конвейер с использованием внешних утилит и библиотек, создав для этого собственную внешнюю компоненту или микросервис.