Компоненты распознавания и печати штрих-кодов









Комплект программного обеспечения для реализации функций оптического распознавания штрих-кодов различных систем при помощи обычной web-камеры, а также их отображения в печатных формах. Программы могут работать в составе конфигураций, созданных на базе платформ «1С-Предприятие» версий 7.7, 8.2, 8.3. Компонент чтения кодов реализован в виде внешней компоненты 1С с COM-интерфейсом. Компонент отображения создан по стандартной технологии ActiveX для Windows, и может быть встроен в любое приложение, поддерживающее встраивание ActiveX элементов управления, например в документ Word или Excel, или форму VBA.

P.S. Добавлена новая версия программы распознавания. Новые функции: обработка видео в реальном режиме (а не по таймеру, как раньше), добавлена возможность распознавания штрих-кодов из графических файлов JPEG, PNG, GIF, BMP, а также передавать для распознавания картинки из 1С, теперь можно получить в 1С захваченное с камеры или файла изображение, как с выделением мест, содержащих коды, так и без, а также отдельные фрагменты изображений, содержащие код. Добавлены новые свойства и методы для программирования. Обновлена документация.

Работа с камерой реализована с применением технологии DirectX и требует установленного в системе DirectX, а также поддержку web-камерой этой технологии (практически все современные камеры, в том числе бюджетные, поддерживают DirectX).

Комплектация ПО:

  • ActiveX-компонент для печати штрих-кодов
  • Внешняя компонента захвата видео с камеры и распознавания штрих-кодов
  • Инструкция по эксплуатации (с подробным описанием каждого поддерживаемого типа штрих-кодов)
  • Пример внешней обработки для 1С 8.2

 Программа предоставляется в виде программы-установщика, весь процесс установки происходит в мастере установки автоматически, с запросом параметров установки у пользователя. Установка может быть осуществлена как для одного пользователя, так и для всей системы.

 

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

Zint – библиотека отображения штрих-кодов http://sourceforge.net/projects/zint/

Zbar – библиотека распознавания штрих-кодов http://zbar.sourceforge.net/

Fork библиотеки функций Zint для Delphi http://theunknownones.net

 

Использование ActiveX-компонента barcontrol.ocx

 

 

Программа отображения и печати штрих-кодов является элементом управления ActiveX со всеми вытекающими из этого последствиями. Это означает, что Вы можете использовать данный компонент для встраивания в любое приложение, поддерживающее интеграцию ActiveX компонентов, например, Microsoft Word, Microsoft Excel, другие продукты из состава Microsoft Office. Можно встраивать компонент в документ, а также располагать его на формах приложений VBA. Но всё же основное назначение компонента – встраивание в шаблоны печатных форм системы 1С-предприятие версий 7.* и 8.*.

Встраивание в шаблон 1С 7.7

1С 7.7 не поддерживает встраивание элементов управления напрямую из меню конфигуратора. Для того, чтобы встроить элемент управления в макет печатной формы 1С 7.7, вставьте его сначала в Microsoft Word или любое другое приложение, поддерживающее встраивание ActiveX-элементов. Затем выделите элемент кнопкой мыши и скопируйте его в буфер обмена (Ctrl+C). После этого перейдите на форму редактирования макета в конфигураторе 1С и вставьте элемент из буфера в выбранное место (Ctrl+V).

 

Встраивание в шаблон 1С 8.2

Для встраивания элемента в макет табличного документа 1С 8.2 последовательно выберите пункты меню «Таблица/Рисунки/Вставить объект» из главного меню конфигуратора. Щелкните в нужном месте макета указателем мыши, и выделите область, в которой будет располагаться элемент. После того, как Вы закончили выделение, на экране появится стандартное окно вставки объектов системы Windows.  Выберите из списка «CBarGenerator control». После нажатия кнопки «Ok» элемент появится в обозначенной области.

Окно вставки элемента управления 

Настройка свойств объекта из конфигуратора

Выделите указателем мыши элемент «CBarGenerator» в шаблоне печатной формы в конфигураторе, и щелкните правой кнопкой. В появившемся меню выберите пункт «CBarGenerator Control/Properties». В появившемся окне  Вы можете изменять тип штрих-кода, данные, цвет, шрифт текста, отступы и т.д. (значения доступных для изменения свойств описаны в разделе «Программный интерфейс приложения»).

Вкладка основных настроек элемента управления 

 

При изменении какого-либо из пунктов настроек становится доступной кнопка «Применить», с помощью которых Вы можете просмотреть результирующие изменения, не закрывая окна настроек. При нажатии кнопки «Ok» все сделанные изменения применяются к объекту, а окно настроек закрывается.

 

Программное управление свойствами объекта из 1С 7.7

Выделите указателем мыши элемент «CBarGenerator» в шаблоне печатной формы в конфигураторе «1С-Предприятие» 7.7, и щелкните правой кнопкой. В появившемся меню выберите пункт «Свойства».

 

 Настройка свойств в 1С 7.7

 

В поле «Расшифровка» поместите имя функции, которая будет вызываться для события получения расшифровки. При вызове данной функции свойство шаблона «ТекущийОбъект» будет указывать на наш элемент управления, поэтому здесь можно изменять любые свойства, описанные в разделе «Программный интерфейс приложения». Пример программного кода:

 

Процедура ПечатьДокумента()

Таб = СоздатьОбъект("Таблица");

ПечКод = "012345678934";
ПечТип = 34;

Таб.ВывестиСекцию("СекцияШтрихКода");

...

Таб.Показать("Штрих-коды");

КонецПроцедуры

Функция ПолучитьРасшифровку()

Таб.ТекущийОбъект.BarType = ПечТип;
Таб.ТекущийОбъект.BarData = ПечКод;

КонецФункции

Программное управление свойствами объекта из 1С 8.2

 

Выделите указателем мыши элемент «CBarGenerator» в макете табличного документа в конфигураторе, перейдите во вкладку «Свойства рисунка» и задайте ему имя.

 Задание имени рисунка

Теперь Вы можете обращаться к объекту из программного кода по указанному имени. Предварительно необходимо вывести макет в результирующий табличный документ.  Пример программного кода:

 

Процедура ПечатьДокумента()

ТабДокумент = ЭлементыФормы.ПолеТабличногоДокумента;
ТабДокумент.Очистить();

ТабДокумент.ИмяПараметровПечати = "Параметры_Штрихкодирования";

Макет        = ПолучитьМакет("Макет");
ОбластьШапки = Макет.ПолучитьОбласть("Шапка");

ТабДокумент.Вывести(ОбластьШапки);
ТабДокумент.Рисунки.DBarCode.Объект.BarType = ТипКода;
ТабДокумент.Рисунки.DBarCode.Объект.BarData = СтрокаДанные;

КонецПроцедуры

 

Программный интерфейс приложения

 

Свойства объекта

BackColor

Чтение и запись. Тип – числовой. Установка и получение цвета фона штрих-кода. Устанавливается 24-битным целым числом, в котором каждый из трёх байтов отвечает за свою цветовую составляющую (RGB). Например, $FF0000 (десятичное 16711680) соответствует красному цвету,

 

BarColor

Чтение и запись. Тип – числовой. Установка и получение цвета штрихов штрих-кода. Установка аналогична параметру BackColor.

 

BarData

Чтение и запись. Тип – строковой. Установка и чтение строки данных для преобразования в штрих-код (подробнее в разделе «Формат штрих-кодов»).

 

BarType

Чтение и запись. Тип – числовой (в VBA использовать перечисление Symbology). Установка и чтение типа штрих-кода.  Соответствие типов штрих-кодов числовым кодам приведено в таблице:

 

Наименование типа

Числовое значение

    CODE11

 0

    C25MATRIX

 1

    C25INTER

 2

    C25IATA

 3

    C25LOGIC

 4

    C25IND

 5

    CODE39

 6

    EXCODE39

 7

    EANX

 8

    EAN128

 9

    CODABAR

 10

    CODE128

 11

    DPLEIT

 12

    DPIDENT

 13

    CODE16K

 14

    CODE49

 15

    CODE93

 16

    FLAT

 17

    RSS14

 18

    RSS_LTD

 19

    RSS_EXP

 20

    TELEPEN

 21

    UPCA

 22

    UPCE

 23

    POSTNET

 24

    MSI_PLESSEY

 25

    FIM

 26

    LOGMARS

 27

    PHARMA

 28

    PZN

 29

    PHARMA_TWO

 30

    PDF417

 31

    PDF417TRUNC

 32

    MAXICODE

 33

    QRCODE

 34

    CODE128B

 35

    AUSPOST

 36

    AUSREPLY

 37

    AUSROUTE

 38

    AUSREDIRECT

 39

    ISBNX

 40

    RM4SCC

 41

    DATAMATRIX

 42

    EAN14

 43

    CODABLOCKF

 44

    NVE18

 45

    JAPANPOST

 46

    KOREAPOST

 47

    RSS14STACK

 48

    RSS14STACK_OMNI

 49

    RSS_EXPSTACK

 50

    PLANET

 51

    MICROPDF417

 52

    ONECODE

 53

    PLESSEY

 54

    TELEPEN_NUM

 55

    ITF14

 56

    KIX

 57

    AZTEC

 58

    DAFT

 59

    MICROQR

 60

    HIBC_128

 61

    HIBC_39

 62

    HIBC_DM

 63

    HIBC_QR

 64

    HIBC_PDF

 65

    HIBC_MICPDF

 66

    HIBC_BLOCKF

 67

    HIBC_AZTEC

 68

    AZRUNE

 69

    CODE32

 70

    EANX_CC

 71

    EAN128_CC

 72

    RSS14_CC

 73

    RSS_LTD_CC

 74

    RSS_EXP_CC

 75

    UPCA_CC

 76

    UPCE_CC

 77

    RSS14STACK_CC

 78

    RSS14_OMNI_CC

 79

    RSS_EXPSTACK_CC

 80

    CHANNEL

 81

    CODEONE

 82

    GRIDMATRIX

 83

 

Для уточнения типа штрих-кода в некоторых случаях требуется установка дополнительных параметров Option1, Option2, Option3. Для составных кодов может потребоваться установка свойства Primary.

 

BorderWidth

Чтение и запись. Тип – числовой. Установка и чтение толщины рамки вокруг штрих-кода (0 – рамка не используется).

 

Font

Чтение и запись. Тип – OleFont. В системах «1С-Предприятие» любых версий установка данного параметра невозможна. Установка и получение шрифта человекочитаемой текстовой метки, выводимой вместе с  штрих-кодом.

 

MarginLeft, MarginTop, MarginRight, MarginBottom, PaddingLeft, PaddingRight, PaddingBottom,

SpacingLeft, SpacingTop, SpacingRight, SpacingBottom

Чтение и запись. Тип – числовой. Отвечает за размеры отступов. Соответствие параметров показано на рисунке.

 Значение параметров размеров отступов

Option1, Option2, Option3

Чтение и запись. Тип – числовой. Дополнительные опции, требующиеся для некоторых типов штрих-кодов.

 

Primary

Чтение и запись. Тип – строковой. Дополнительные данные для составных штрих-кодов. Подробнее в разделе  «Формат штрих-кодов».

 

ShowText

Чтение и запись. Тип – булево (в 1С 7.7 – целое число ).  Флаг отображения человекочитаемой метки, выводимой вместе с некоторыми типами штрих-кодов.  Значение True (1) – выводить текст, False (0) – скрыть текст.

 

TextColor

Чтение и запись. Тип – числовой. Установка и получение цвета шрифта человекочитаемой текстовой метки, выводимой вместе с  штрих-кодом. Установка аналогична параметру BackColor.

 

Работа с компонентом распознавания

 Компонент распознавания штрих-кодов реализован с использованием DirectX для захвата видеопотока с камеры. Поток разбивается на отдельные кадры, которые затем анализируются на предмет наличия одного или нескольких изображений символов штрих-кодов. При обнаружении символов, они выделяются в окне сканирования яркой линией, а информация о распознанных символах, такая, как расшифрованные данные, тип штрих-кодирования, угол, при повороте на который было произведено успешное распознавание, передается при помощи внешнего события в систему «1С-Предприятие».

Использование в программах 1С 7.7, 8.2

Компонент распознавания оформлен в виде внешней компоненты для систем 1С, и может быть встроен в программу стандартным для 1С способом:

В глобальном модуле:

Перем СканерОбъект Экспорт;
Процедура ПриНачалеРаботыСистемы()
СканерОбъект = Null;
Попытка
ПодключитьВнешнююКомпоненту("AddIn.OBRScannerVK");
СканерОбъект = Новый("AddIn.OBRScannerVK");
Исключение
Сообщить("Не удалось загрузить компоненту!", СтатусСообщения.Важное);
Сообщить("1. Проверьте, все ли файлы компоненты скопированы в каталог " + КаталогПрограммы(), СтатусСообщения.Внимание);
Сообщить("2. Проверьте, не установлен ли на компьютере Firewall, блокирующий загрузку компоненты!", СтатусСообщения.Внимание);
Сообщить(ОписаниеОшибки(), СтатусСообщения.Внимание);
КонецПопытки;
КонецПроцедуры

 

 Для вызова окна сканирования и запуска процедуры сканирования служит функция «ПоказатьОкноСканирования()»:

 

Процедура КнопкаВыполнитьНажатие(Кнопка)
Если СканерОбъект <> Null Тогда
СканерОбъект.ПоказатьОкноСканирования();
КонецЕсли;
КонецПроцедуры

После того, как программа распознала штрих-код, она отправляет в 1С строку, в которой зашифрованы распознанные данные, тип штрих-кода, доп. опции, угол поворота, при котором произошло распознавание. Строка данных закодирована алгоритмом Base64. Для раскодирования воспользуйтесь функцией компоненты»ДекодироватьBase64″ (англ. «DecodeBase64»).

 

Процедура ВнешнееСобытие(Источник, Событие, Данные)

СтрокаДанные = "";
Токены = СтрЗаменить(Данные,";", Символы.ПС);
ТипКода = 1;
Угол = 0;

Для Сч=1 По СтрЧислоСтрок(Токены) Цикл
СтрТокен = СтрПолучитьСтроку(Токены, Сч);
Индекс = Найти(СтрТокен,":");
Если Индекс > 1 Тогда
ИмяТокена  = Лев(СтрТокен, Индекс-1);
ЗначТокена = Сред(СтрТокен, Индекс+1);
Если ИмяТокена = "data" Тогда
СтрокаДанные = СканерОбъект.ДекодироватьBase64(ЗначТокена);
ИначеЕсли ИмяТокена = "angle" Тогда
Угол = Число(ЗначТокена);
ИначеЕсли ИмяТокена = "symbol" Тогда
СтрТипБарКод = НРег(ЗначТокена);
Если СтрТипБарКод = "ean-13" Тогда
ТипКода = 21;
ИначеЕсли СтрТипБарКод = "ean-8" Тогда
ТипКода = 21;
ИначеЕсли СтрТипБарКод = "upc-e" Тогда
ТипКода = 23;
ИначеЕсли СтрТипБарКод = "upc-a" Тогда
ТипКода = 22;
ИначеЕсли СтрТипБарКод = "isbn-13" Тогда
ТипКода = 40;
ИначеЕсли СтрТипБарКод = "i2/5" Тогда
ТипКода = 2;
ИначеЕсли СтрТипБарКод = "code-39" Тогда
ТипКода = 7;
ИначеЕсли СтрТипБарКод = "code-128" Тогда
ТипКода = 11;
ИначеЕсли СтрТипБарКод = "pdf417" Тогда
ТипКода = 31;
ИначеЕсли СтрТипБарКод = "qr-code" Тогда
ТипКода = 34;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры

Настройка параметров распознавания в системе 1С

После загрузки компоненты в системе 1С в панели настроек появляется новая вкладка, на которой Вы можете настроить следующие параметры:

Окно настройки сканирования

  • Устройство захвата видео — позволяет выбрать используемое для считывания видеоустройство, если их в системе несколько.
  • Вращать изображение — позволяет добиться более точного качества распознавания на достаточно мощных компьютерах, вращая изображение по 15%  до 90% до тех пор, пока символ штрих-кода не найден на снимке.
  • Типы бар-кодов — выбор типов бар-кодов, наличие которых на снимке будет пытаться определить программа. Программа может распознавать следующие типы бар-кодов: EAN-8, EAN-13, UPC-A, UPC-E, ISBN-10, ISBN-13, Code-39, PDF-417, Qr-Code, Code 128, Interleaved 2 of 5.
  • Разрешение камеры — настройка точности распознавания;
  • Проверять корректность данных — проверять соответствие стандарту распознанных данных для определённого типа кода;
  • Останавливать сканирование после распознавания — после распознавания символа остановить процесс сканирования;
  • Закрывать окно после распознавания — закрыть окно сканирования после распознавания символа.

 

Программный интерфейс компоненты распознавания

Свойства:

Картинка (Picture) — чтение, запись. Установка картинки для распознавания. Возможно два варианта установки данного свойства:

1:  В качестве значения свойства устанавливается имя файла изображения. При этом компонента пытается загрузить файл изображения с диска по указанному пути, и определить тип его содержимого. Доступные типы графических файлов – JPEG, PNG, GIF, BMP.

2. В качестве значения свойства устанавливается строка,  содержащая закодированные алгоритмом Base64 двоичные данные, полученные из картинки 1С:

СканерОбъект.Картинка = Base64Строка(Картинка.ПолучитьДвоичныеДанные());

 При считывании значения из данного свойства, компонент всегда возвращает двоичные данные текущей картинки, загруженной с диска или захваченной с камеры, закодированные алгоритмом Base64. Получить готовую картинку 1С  можно следующим образом:

 

Картинка1С = Новый Картинка(Base64Значение(Сканер.Картинка));

           

ТипыСимволов (SymbolTypes) – чтение, запись. Установка/считывание доступных для использования типов штрих-кодов. В качестве значения передаётся строка, содержащая символьные наименования типов штрих-кодов, разделённые запятой. Возможные значения следующие:   «ean-13», «ean-8», «upc-e», «upc-a», «isbn-10», «isbn-13», «i2/5», «code-39», «code-128», «pdf417», «qr-code».  

 

ПоворачиватьКартинку (RotateBitmap) – чтение, запись. Содержит логическое значение – истина или ложь. В случае установки значения Истина, для наиболее качественного распознавания изображение будет поворачиваться с приращением 15 градусов, до 90 градусов.

 

ГоризонтальноеРазрешение (DensityX) – чтение, запись. Позволяет задать горизонтальное разрешение камеры, устанавливается число от 1 до 10. Самое мелкое разрешение – 1.

ВертикальноеРазрешение (DensityY) – чтение, запись. Позволяет задать вертикальное разрешение камеры, устанавливается число от 1 до 10. Самое мелкое разрешение – 1.

Методы:

ПоказатьОкноСканирования (ShowScanWindow) – Показать окно сканирования, включить получение данных с видеокамеры и начать процесс распознавания символов штрих-кодов.

ДекодироватьBase64 (DecodeBase64) – Декодирование зашифрованной алгоритмом Base64 строки данных, переданной из внешней компоненты в обработчик внешнего события.

КодироватьBase64(EncodeBase64) – Кодирование строки данных 1С алгоритмом Base64. Для использования в следующих версиях компоненты.

СканироватьРисунок (ScanPicture) – Сканирование рисунка, переданного компоненте в свойстве «Картинка», на предмет наличия штрих-кодов. Декодированные данные возвращаются в программу в виде строки. Расшифровка строки возможна при помощи следующего кода 1С:

 

Функция ПолучитьДанныеИзСтроки(СтрКоды)
МассивДанных = Новый Массив;

Для Ит = 1 По СтрЧислоСтрок(СтрКоды) Цикл
ТипКода = 0;
СтрокаДанные = "";
УголПоворота = 0;
СтрТипБарКод = "";

Данные = СтрПолучитьСтроку(СтрКоды, Ит);
Токены = СтрЗаменить(Данные, ";", Символы.ПС);

Для Сч = 1 По СтрЧислоСтрок(Токены) Цикл
СтрТокен = СтрПолучитьСтроку(Токены, Сч);
Индекс = Найти(СтрТокен,":");
Если Индекс > 1 Тогда
ИмяТокена  = Лев(СтрТокен, Индекс-1);
ЗначТокена = Сред(СтрТокен, Индекс+1);
Если ИмяТокена = "data" Тогда
СтрокаДанные = СканерОбъект.ДекодироватьBase64(ЗначТокена);
ИначеЕсли ИмяТокена = "angle" Тогда
УголПоворота = Число(ЗначТокена);
ИначеЕсли ИмяТокена = "symbol" Тогда
СтрТипБарКод = НРег(ЗначТокена);
КонецЕсли;
КонецЕсли;
КонецЦикла;

СтрРезультат = Новый Структура("ТипКодаСтр,Угол,Данные",                  СтрТипБарКод, УголПоворота, СтрокаДанные);

МассивДанных.Добавить(СтрРезультат);
КонецЦикла;

Возврат МассивДанных;
КонецФункции

ПолучитьФрагмент (GetFragment) – возвращает фрагмент исходного рисунка, содержащий обнаруженный символ штрих-кода. Рисунок возвращается в виде строки, закодированной алгоритмом Base64 (метод расшифровки дан в описании свойства «Картинка»). В качестве параметра в функцию передается порядковый номер обнаруженного символа, первый фрагмент обозначается единицей.

Требования к системе

Для использования комплекта ПО требуется, чтобы на компьютере пользователя была установлена операционная система Windows версии Windows XP и выше. Для работы компоненты распознавания на компьютере обязательно должен быть установлен DirectX версии не ниже 7.0, и видеокамера, поддерживающая интерфейс DirectX.

Условия распространения

Программное обеспечение распространяется в виде двоичных файлов, упакованных в программу — установщик. Код программы в комплект поставки не входит, но может быть предоставлен для собственного использования, но не для коммерческих целей.

Техническая поддержка

Возможно приобретение платной технической поддержки.

Достоинства

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

90 Comments

  1. sournk

    Можно распознать штрих-коды в jpg файлах?

    Как работает с несколькими штрих-кодами в кадре или на листе?

    Reply
  2. igorberezhnov

    (1) sournk,

    1. Планирую в следующей версии добавить;

    2. Распознаёт все штрих-коды на листе, последовательно отправляет в 1С.

    Reply
  3. igorberezhnov

    (1) sournk, как и обещал, добавил распознавание из файлов JPEG, GIF, PNG, BMP, а также из родных картинок 1С (тип «Картинка»). Возможно считывать распознанные фрагменты изображения в 1С (см. видео).

    Reply
  4. serg1983

    какая скорость распознания штрих кода. В сравнении с обычным сканером

    Reply
  5. igorberezhnov

    (4) serg1983, Что значит «какая скорость»? Любой сканер распознаёт штрих-код моментально, в момент попадания его в фокус. Другое дело — качество распознавания. Но тогда нет такого понятия, как «обычный сканер», — у каждого может быть своё качество распознавания тех или иных штрих-кодов. Во многих аппаратных сканерах, насколько мне известно, страдает качество распознавания двумерных штрих-кодов, здесь оно на высоте (для QR-кодов). Обычные штрих-коды тоже распознаются прекрасно. Единственная ложка дёгтя — PDF417 практически не распознаётся. Это связано с особенностями библиотеки ZBar, надеюсь, в обозримом будущем разработчики поправят код.

    Reply
  6. VyacheslavKuznetsov

    Устанавливаю галку «Закрывать окно после сканирования». Сканирую QR-код и окно камеры остается висеть активным. Как от него избавиться?

    Reply
  7. igorberezhnov

    (6) VyacheslavKuznetsov, попробуйте после установки флажка «Закрывать окно…» полностью закрыть программу, чтобы значение настроек сохранилось, а потом заново запустить. Возможно, какой-то глюк произошел в процессе сохранения. В следующей версии добавлю программное управление настройками.

    Reply
  8. igorberezhnov

    (6) VyacheslavKuznetsov, действительно, это ошибка в программе. Куда скинуть исправленный файл?

    Reply
  9. igorberezhnov

    В связи с исправлением ошибки, выявленной VyacheslavKuznetsov, перезалил дистрибутив с новой версией.

    Reply
  10. pupkinSana

    Чет пробую сканировать файл — не распознает. Может у него алгоритмы проверок есть какие-то, как отключить?

    А помимо распознания штрихкодов возможно распознание текста по шаблону? Например искать в картинке текст «накладная».

    Цель — написать обработку группового распознания сканов из папки и привязки к базе.

    Reply
  11. igorberezhnov

    (10) pupkinSana,

    1. Можно попробовать отключить галочку «Проверять корректность данных». Проверьте в настройках, включен ли нужный тип штрих-кода. EAN-13 распознается без проблем, но на рисунке по-моему 12 символов?

    2. текст не распознается, только штрих-код.

    Reply
  12. igorberezhnov

    (10) pupkinSana, проверил, второй код распознается без проблем, показывает тип upc-a. .

    Reply
  13. pupkinSana

    Чет не то.. Вот еще пример 13 длина четче картинки уже некуда. Если к камере распечатать подставлять то только последние 4 символа берет а впереди свои откуда-то. А если с картинки то вообще не видит ничего.

    Reply
  14. igorberezhnov

    (13) pupkinSana, Что это за код? Вроде EAN-13 с 0 не должен начинаться?

    Reply
  15. Saipl

    Подскажите как художник — художнику …

    Обращаюсь как к специалисту по штрихкодированию, после инвентаризации в файлах выгрузки ТСД стали попадаться штрхикоды товаров которые фактически числятся в других складах.

    Вопрос может ли ТСД считать неверно штрихкод с повреждениями (затерся, поцарапался, плохо распечатался и т.д.) , технические проблемы ТСД или это исключено ?

    Reply
  16. igorberezhnov

    (15) Saipl, К сожалению, опыт работы с ТСД не такой богатый, как хотелось бы. Но теоретически могу предположить, что ошибки чтения могут быть, при считывании сканером бывают, ТСД аппаратно мало отличается в части устройства считывания..

    Reply
  17. avestadv

    при открытии окна сканирования (СканерОбъект.ПоказатьОкноСканирования();) выдаёт ошибку:

    interface not supported

    открывает окно без изображения.

    Что может быть??

    Reply
  18. kozorez

    Ошибка в Windows7x64

    Reply
  19. kozorez

    на другой камере ошибки нет.

    не читает PDF417…

    Возможно-ли обновление библиотеки zbar, или замена на библиотеку читающую PDF47?

    Reply
  20. igorberezhnov

    (18) kozorez, Возможно, неправильно зарегистрирован компонент. — может прав каких-то не хватает. Попробуйте зарегистрировать при помощи regsvr32 /i obrscanner.dll

    Reply
  21. igorberezhnov

    (19) kozorez, Здесь: http://infostart.ru/public/157814/ автор утверждает, что PDF417 поддерживается. Если разработчики библиотеки zbar сподобятся обновить её с целью улучшения обработки кода PDF417, можно будет просто заменить файл библиотеки в каталоге с компонентой

    Reply
  22. kozorez

    (20) компоненту регистрировал, не работает с камерой HD качества, возможно камера не поддерживает directX. PDF417 ни один не определил, возможно ли подключение библиотеки ZXing?

    Reply
  23. igorberezhnov

    (22) kozorez, 1. Наименование камеры в списке выбора в окне настроек отображается?

    2. ZXing — это Java-библиотека, есть порт для .Net. Я же писал на Delphi, поэтому вряд ли, если кто нибудь не возьмется портировать библиотеку. Попытки есть, но пока распознается всего 3 типа кодов.

    Reply
  24. asuktty

    Мы применили этот компонент для распознавания штрихкода, напечатанного в печатной форме документа в стандарте code-128, из отсканированного в формате JPG файла. Всё классно и замечательно. НО! Выявилась та ложка дёгтя, которая делает эту технологию неприменимой. А именно. Как выяснилось, при распознавании штрихкодов из серии файлов (потоковое распознавание) при обращении к функции компоненты СканерОбъект.СканироватьРисунок() происходит, похоже, в ней утечка памяти. Предполагаем, что из оперативной памяти не убираются результаты обработки предыдущего акта распознавания, и память стремительно (например, на моём компьютере её 8 Гб) исчерпывается и происходит останов из-за её дефицита. Нигде в документации к компоненте не сказано о этом или о каких либо настройках. Поэтому сейчас ищем что-либо подобное. А жаль…

    Reply
  25. igorberezhnov

    (24) asuktty, Пришлите мне в код 1С, каким образом Вы загружаете файл изображения в компоненту, постараюсь воспроизвести ситуацию и исправить ошибку, если таковая будет выявлена.

    Reply
  26. igorberezhnov

    (24) asuktty, Нашел место, где возможно была утечка памяти. Отправил Вам в личку исправленный файл для тестирования. По возможности отпишитесь по результатам.

    Reply
  27. igorberezhnov

    (24) asuktty, Проверил сканирование на 1000 файлов — утечек нет

    Reply
  28. igorberezhnov

    Выложена обновленная версия дистрибутива программы с исправлением обнаруженных ошибок.

    Reply
  29. asuktty

    Спасибо!!! Проблема устранилась заменой obrscanner.dll. А обращение ко всем возможностям компоненты взято из статьи и руководства, т.е. совершенно штатно. Ещё раз спасибо!!

    Reply
  30. likalim

    На платформе 8.3 1С вылетает в dump на строке СканерОбъект.Картинка = Путь; и при этом даже, если в качестве пути указывать пустую строку всё равно точно такое же поведение. Проверила на платформе 8.2 тоже самое.

    Reply
  31. igorberezhnov

    (30) likalim, ошибку исправил, отправил исправленный файл в личном сообщении. Дистрибутив на сайте обновил.

    Reply
  32. dronprog

    На счет ошибки, когда при присваивании

    СканерОбъект.Картинка = Путь;

    вылетает в dump. Скачивал файл 13.07.2016, после того, как якобы обновлялся файл после исправления. Ничего не изменилось.

    Так же вылетает в том случае, если по указанному пути нет файла или нет доступа к файлу. Обходится легко, проверкой перед этим на существование файла.

    Другой вопрос, это добавить параметр в СканерОбъект, чтобы убрать все всплывающие окна во время распознания, для того, чтобы можно было автоматизировать поток файлов. Сможете сделать?

    Reply
  33. igorberezhnov

    (32) dronprog, Та проблема была в другом, там была попытка удаления неициализированного указателя. Проверку на существование файла добавлю. Что за всплывающие окна надо убрать?

    Reply
  34. user595111_kovalenkovj

    Добрый день!

    Столкнулись с проблемой при печати макета из 1С с областью ШК QR кода: визуально на дисплее все нормально — вся площадь отведенная под QR код заполнена правильно, а при выводе на принтер размер области ШК QR существенно уменьшается и распознавание с печатного документа становится невозможным. Подскажите пожалуйста в чем может быть причина не соответствия размеров области ШК QR (возможно Ваш объект настраивается на разрешение принтера?).

    С уважением Виктор Коваленко.

    Reply
  35. igorberezhnov

    (34) user595111_kovalenkovj, проверил, действительно есть такое поведение, связано с ошибкой отрисовки в шаблоне ActiveX-компонента Delphi. В ближайшее время постараюсь исправить.

    Reply
  36. ture

    (0) 27 звёздочек за такой труд? одно написание статьи чего стоит!

    В общем, я знаю как работать с Zbar и компоненту могу настрогать, которая ШК гадает. Но! Нарисовалась проблемка.

    Задача:

    Найти ШК на скане (фигня вопрос с Zbar), повернуть изображение на нужное количество градусов (14, 95, 100 и т.п.), чтоб текст на скане стал горизонтальным и читался не вверх ногами (фиг знает как это сделать), скан запихать в в pdf (фигня вопрос) и положить в базу на основе ШК.

    Вот за такое тебе звезд навтыкают, т.к. это функционал системы документооборота.

    На слабо брать не буду.

    Reply
  37. igorberezhnov

    (36) Не понимаю, для чего нужна подобная функция. Ведь можно отсканировать не вверх ногами, и не под углом 45 градусов, а нормально. И не нужно будет переворачивать. По поводу улучшения качества изображения перед сканированием — смотри другую мою компоненту для массового распознавания штрих-кодов в документах, она больше похожа на компоненту из документооборота (http://infostart.ru/public/542683/).

    Reply
  38. igorberezhnov

    (36) Что касается требуемого функционала — нет проблем. Пишите в личку, договоримся.

    Reply
  39. ture

    (38) нужен поворот изображения по тексту (остальное не проблема). Знаешь как, скажи. Система OpenCV не подходит (вопрос «почему», мне не нужно задавать. я просто программист на проекте).

    Reply
  40. igorberezhnov

    (39) 1. Выделяем строку целиком путем пробегания по ней квадратом с размером по горизонтали в полтора раза больше чем самый длинный символ и по высоте на 7-10% меньше высоты строчного символа. Если сверху /снизу этого квадрата есть явный проблеск, то смещаемся в противоположную сторону. И закрашиваем эту строку чисто черным или проводим прямую 30% от высоты символов.

    2. Дальше применяем преобразование Хафа и считаем параметрическое уравнение прямой.

    3. Из него выделяем угол наклона прямой.

    4. Другой вариант — сначала применяем сглаживание ко всему изображению, затем применяем фильтр резкости, чтобы строки превратились в прямые, и опять же — преобразование Хафа.

    Про поиск прямых линий методом преобразования Хафа:

    http://www.graphicon.ru/html/2006/fr11_35_Volegov_Gusev_Yurin.pdf

    Reply
  41. ralexv

    (34) столкнулся с такой же проблемой, подскажите, пожалуйста, не исправили уже этот баг? или как вышли из положения?

    Reply
  42. popusta

    Столкнулся с проблемой использования компоненты распознавания в 1С:7.7.

    Загружается компонента вроде бы нормально (никаких сообщений не выдается).

    Но при попытке запустить распознавание с помощью СканерОбъект.ПоказатьОкноСканирования() вылетает ошибка «1C:V7 starter program (multi-user)».

    При этом окно сканирования на экране появляется.

    Пробовал на своей конфигурации и типовой торговле, локально и в терминале.

    На локальном компьютере установлена WindowsXP, релиз платформы — 1С:7.70.027.

    Reply
  43. aragonzp

    Нужно читать ISSN + 2 Цифры.Реально доработать?

    Reply
  44. igorberezhnov

    Вообще-то такой код должен читаться, сейчас нет возможности проверить.

    Reply
  45. check2

    Коллега, добрый день! Для управляемых форм есть пример? Или только для обычных?

    Reply
  46. igorberezhnov

    Добрый день! Эта компонента работает с использованием технологии COM, поэтому для управляемых форм не подходит, так как там используется NativeAPI. Для этих целей подойдет другая моя разработка: http://infostart.ru/public/542683/

    Reply
  47. check2

    (46) Игорь, спасибо за ответ.

    Reply
  48. sf002

    Здравствуйте. Установил на windows server 2003 r2 sp2 + Office 2003. В ворде и екселе объект не появился в списке для добавления. Может нужны еще библиотеки или несовместимо с моим п/о ?

    Reply
  49. igorberezhnov

    (48) Установку необходимо запускать от имени администратора, иначе компонент может не зарегистрироваться. Список добавления открывается при нажатии кнопки «Вставить элемент ActiveX» в ленте «Разработчик» в Office 2016, 2003-го офиса у меня нет, но там тоже что-то похожее должно быть.

    Reply
  50. Pawlick

    Доброго времени суток.

    Упорно не читает некоторые штрихкоды (их очень мало, но все же). Визуально они выглядят так же как и читаемые.

    Вопрос:

    нет ли метода, возвращающего принципиальное наличие картинки штрихкода на странице? Можно без цифр, прото: есть/нет.

    Либо обрывки цифр, если хоть что то прочитано?

    Reply
  51. igorberezhnov

    добрый вечер. такого спосба нет, код может быть распознан, может даже с ошибками, или не распознан. какой тип кода не распознается?

    Reply
  52. zaoproxy

    Добрый день. скачал разработку. запускал и с 8.3 и с 8.2. При показе окна сканирования оно просто чёрное((( т.е. картинка с камеры не идёт. винда семёрка.

    Подскажите в какую сторону копать.

    Reply
  53. igorberezhnov

    Добрый день. Смотрите в окно настроек компоненты (1С -> Сервис / Параметры / Вкладка настроек компоненты) . Если в списке выбора камеры не присутствует наименование Вашей камеры, значит она не поддерживает DirectX и компонента с ней работать не будет.

    Reply
  54. zaoproxy

    (53)она там присутствует, но так и не работает(

    Reply
  55. igorberezhnov

    В окне сканирования нажмите кнопку настроек камеры и пришлите мне скриншот окна.

    Reply
  56. zaoproxy

    вот скриншот

    Reply
  57. igorberezhnov

    (56) Скорее всего, у Вас какой-то еще процесс использует веб-камеру. Это можно понять по надписи сверху. Так как камера — это ресурс, который может использоваться только монопольно, компонента не может получить к ней доступ. Посмотрите, где в вашей конфигурации используется камера, и попробуйте отключить.

    Reply
  58. zaoproxy

    (57)надпись с верху от касперского: указывает что приложение использует камеру. других приложений которые могли бы использовать камеру в момент тестирования не используется. Индикатор на камере загорается в момент открытия окна сканирования и после его закрытия тухнет. Делаю вывод что камера используется только компонентой.

    Может ещё есть какие варианты куда копануть?

    Reply
  59. zaoproxy

    (58)кстати, касперского отключал: ситуация не изменилась

    Reply
  60. igorberezhnov

    (58) Может яркость попробовать отрегулировать?

    Reply
  61. igorberezhnov

    (58) А в скайпе камера нормально работает?

    Reply
  62. zaoproxy

    (60)пробовал

    Reply
  63. zaoproxy

    (61)абсолютно нормально

    Reply
  64. kozorez

    Какая операционная система? Win10?

    Reply
  65. igorberezhnov

    К сообщению прикреплена програмка для проверки режимов работы камеры. По очереди выбирайте режимы сверху вниз и пробуйте нажимать кнопку «Start». Сообщите, появилось ли в каком либо режиме изображение в окошке захвата.

    Reply
  66. zaoproxy

    (64)win 7 pro

    Reply
  67. zaoproxy

    (65)при выборе первого же режима, всё заработало.

    Reply
  68. igorberezhnov

    Первый это какой? Какое разрешение, глубина цвета, режим?

    Reply
  69. zaoproxy

    (68)

    Reply
  70. igorberezhnov

    Ну в таком случае буду на Вас отлаживать данную ситуацию, так как у меня такой камеры нет:). Добавил в панель настроек выбор рабочего режима, как в этой программе. Переустановите программу (дистрибутив выслал) и попробуйте выбрать нужный режим в настройках, сканирование должно заработать.

    Reply
  71. hakerxp

    (46), здравствуйте. Сама компонента прекрасно работает, если зарегистрирована заранее, на тонком клиенте на УФ, как обычном, так в асинхронном режиме.НО! Только на клиенте. На сервере пока не завел.

    Reply
  72. hakerxp

    (30), путь нужно указывать относительно клиента и в общедоступные папки. проверил на 8.3.13. Все ок. Распознает.

    Reply
  73. serko8547

    Автору: подскажите пожалуйста:

    с обычной компонентой Barcode намучился, из за того, что при масштабировании изменяется рисунок, и как следствие сканером мелкие штрих кода не распознаются, а здесь, этот штрихкод, лишен этой проблемы?

    потому что реально 1с-овский генератор ШК просто достал, своей нечитаемостью!

    тут есть EAN-13? (генерация ШК)

    Reply
  74. igorberezhnov

    EAN-13 есть, данная версия тоже формирует растровый рисунок, разрешение можно настроить изменением размера картинки, помещая в поле документа меньшего размера. Если Вам требуется векторное изображение высокого качества, смотрите другую мою компоненту: https://infostart.ru/public/542683/

    Там таких проблем точно нет.

    Reply
  75. user1192565

    Уважаемый Игорь,

    Меня зовут Антон, сориентируйте пожалуйста каким способ можно с Вами связаться?

    Интересует данное ПО, для реализации, мы Казахстанская компания, работаем в сфере автоматизации.

    Спасибо.

    (74)

    Reply
  76. igorberezhnov

    (75)Добрый день, Антон. Написал Вам в личку.

    Reply
  77. user631889

    Добрый день. Не нашел возможность развернуть картинку штрих-кода по вертикали… Мне нужен EAN128, расположенный на этикетке 65*100 вертикально вдоль длинной стороны. Как это сделать?

    Reply
  78. 1c-kt

    Добрый день! Можно ли Ваши механизмы приспособить для потокового распознавания отсканированных документов из папки для 8.2? Надо чтобы в папке перебирались картинки, на которых есть штриходы и далее понимать что это за штрихкод и решать что делать с файлом.

    Reply
  79. igorberezhnov

    (78)Добрый день! Можно, для этого они и разработаны

    Reply
  80. 1c-kt

    (79) Пример работы с 8.2 (толстый клиент) прилагаются?

    Reply
  81. igorberezhnov

    (80)Да. Демонстрационная конфигурация именно для толстого клиента.

    Reply
  82. 1c-kt

    (81) Добрый день! Скачал конфигурацию тестовую. В ней тестировал на некоторых штрихкодах, из четырех считался только один. Какие требования к картинкам, чтобы Ваш механизм отрабатывал?

    Reply
  83. igorberezhnov

    (82)

    ) Добрый день! Скачал конфигурацию тестовую. В ней тестировал на некоторых штрихкодах, из четырех считался только один. Какие требования к картинкам, чтобы Ваш механизм отрабатывал?

    Все требования перечислены в документации. Какие типы кодов пытаетесь считывать и каким образом?

    Reply
  84. 1c-kt

    Reply
  85. 1c-kt

    Добрый день!

    Использовал Вашу компоненту. При запуске руками всё хорошо. А при работе из регламентного задания ругается, что «Удалось загрузить компоненту AddIn.OBRScannerVK». Права у usr1cv82 полные. Под ним заходил на сервер БД и там ручками всё запускается и работает. Может быть у Вас есть какие-то идеи?

    Reply
  86. igorberezhnov

    (85)Эта программа стыкуется с 1С с помощью COM-технологии, она поддерживается на клиенте 7.7 и 8.*, но сервер 1С 8.* к сожалению умеет работать только с Native-компонентами. Рагламентные задания запускает сервер, поэтому эта компонента не подходит. Специально для работы на сервере разработана другая, более мощная компонента: https://infostart.ru/public/542683/.

    Reply
  87. user604533_stall2706

    А где можно скачать Демо ?

    Reply
  88. oleg-x

    Здравствуйте. Скачал программу, запустил тестовую обработку и скормил ей накладную (картинку в формате jpeg). Но штрих код не распознала. Не распознавала, пока не обрезал все и не остался только сам штрих код, только тогда смогла распознать. Она вообще может найти на листе штрих код или нужно конкретную область передавать?

    UPD Вроде разобрался. Плохо распознает если штрих код повернут на 90 градусов. Как только перевернул изображение сразу распознал.

    Reply
  89. igorberezhnov

    (88) В настройках есть галочка «Вращать изображение». Работает медленнее, но при этом программа сама поворачивает изображение на самый удачный для распознавания угол.

    Reply
  90. oleg-x

    (89) Добавил параметр СканерОбъект.ПоворачиватьКартинку = true;

    Но не помогло, разницы по времени не заметил.

    Проверил на QR- там распознает в любом положение, но это видимо из-за особенностей QR.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *