Сканирование штрих-кодов и QR-кодов через веб-камеру

Оборудование - Сканер штрих-кода

Не так давно возникла потребность сканирования QR-кодов из 1С. Аппаратные сканеры, распознающие QR-коды, стоят бешенных денег, поэтому было решено использовать веб-камеру, которая сейчас есть в каждом ноутбуке. А если даже и нет, то докупить внешнюю USB-вебку не сложно, стоит она копейки (по сравнению со сканерами). Начал искать софт для этих целей, к моему удивлению готовых решений для этих целей оказалось не так-то много. Самым адекватным в использовании оказался ZBar, но он почему-то слишком долго инициализировался при запуске (порядка 10-20 секунд), а после 5-10 минут простоя просто зависал. Пришлось лезть в Visual Studio и самому делать нужный инструмент.

За основу был взят проект с сайта Codeproject и переделан под свои нужды. Сделано всё на основе библиотеки Ozeki Camera SDKКак пользоваться библиотекой написано здесьПо заявлению авторов библиотеки сканируются и распознаются следующие форматы кодов:

1D: CODABAR, CODE 39, CODE 93, CODE 128, EAN 8, EAN 13, ITF, MSI, PLESSEY, RSS 14, RSS EXPANDED, UPC-A, UPC-E,
2D: AZTEC, DATA MATRIX, MAXI CODE, PDF417, QR CODE

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

Как пользоваться:

Вариант 1: Если программу просто запустить, она будет просто сканировать коды и отображать результат в своем окне.

Вариант 2Если при запуске в качестве параметра указать имя файла результата (например так: "QRWebCam.exe result.txt"), она распознает код, автоматически закроется, а результат запишет в указанный файл. Но к сожалению 1С-ная функция ЗапуститьПриложение() не умеет запускать программы с параметрами (можно конечно через bat-файл, но лично меня смущает появляющееся черное консольное окно), поэтому был придуман вариант 3.

Вариант 3В каталоге программы можно создать одноименный ini-файл (QRWebCam.ini) и прописать в нём путь и имя выходного файла - будет работать аналогично варианту 2, но запускать можно без параметров, результат сканирования будет помещен в прописанный файл. Пример содержимого ini-файла:

d:\QRWebcam\result.txt

Для использования в 1С можно написать такой код:

ЗапуститьПриложение("d:\QRWebcam\QRWebCam.exe", "d:\QRWebcam\", Истина);

Т = Новый ТекстовыйДокумент;
Т.Прочитать("d:\QRWebcam\result.txt",КодировкаТекста.UTF8);

QRКод = Т.ПолучитьСтроку(1);

Если вдруг кто захочет перекомпилить под себя, исходник прилагается.

Скачать файлы

Наименование Файл Версия Размер
Исходник
.zip 63,19Kb
08.10.15
36
.zip 63,19Kb 36 Скачать
QRWebcam
.zip 26,85Mb
08.10.15
67
.zip 26,85Mb 67 Скачать

См. также

Комментарии
1. Сергей Галюк (dj_serega) 250 25.05.15 16:15 Сейчас в теме
Крутяк. Нужно будет запомнить и опробовать :)
2. Антон А (plutonii) 27.05.15 12:29 Сейчас в теме
Здравствуйте.
Приведите пример QRWebCam.ini?
Mihailniri; +1 Ответить 1
3. Dave Nikolsky (dave2000) 86 27.05.15 14:20 Сейчас в теме
(2) plutonii, структуры, как таковой, нет. Это обычный текстовый файл, первая строчка которого - это путь и имя файла результата. Например: d:\QRWebcam\result.txt

расширение "ini" придумал просто так - первое, что в голову взбрело :)

Добавил скриншот.
4. Антон А (plutonii) 27.05.15 15:37 Сейчас в теме
Благодарю, на выхах пощупаю эту тему)
user624210_danilk_1995; +1 Ответить
5. SagaKrasava 4 26.03.16 20:23 Сейчас в теме
Классная обработка. Можно опробовать данную обработку в программе лояльности клиентов. А именно вместо депозитных, дисконтных (скидочных) карточек. Но тогда нужно еще и мобильное приложение с привязкой к базе клиента. Многие заведения общепита работают на мобильных терминалах (наладонники). Можно было бы сканировать QR код с экрана телефона клиента не отходя от столика.
user624210_danilk_1995; +1 Ответить
6. Александр Кох (1с_Phil) 19.09.16 15:55 Сейчас в теме
Благодарю, а то мой кирпич, под названием "телефон" умеет только звонить. Теперь не надо постоянно дёргать товарищей.
user624210_danilk_1995; +1 Ответить
7. Юрий П (nano1c) 130 23.09.16 11:06 Сейчас в теме
Скачал только исходник и вот сразу:
"Не удалось найти имя типа или пространства имен "Ozeki" (пропущена директива using или ссылка на сборку?)"

Скачал демки с озеки - они нормально компилятся (но при этом не видят камеру в ноуте), в чем может быть дело?

ps^
добавил референс на озеки.длл, теперь находит пространста имен ozeki.media но вот далее нет:
Имя типа или пространства имен "MediaHandlers" отсутствует в пространстве имен "Ozeki.Media" (пропущена ссылка на сборку?)
user624210_danilk_1995; +1 Ответить 2
8. Dave Nikolsky (dave2000) 86 23.09.16 18:25 Сейчас в теме
(7) nano1c, где-то в настройках проекта нужно указать пути на каталоги Озеки (sdk или библиотеки). Точнее сейчас не подскажу, давно было, но была та же проблема.
user624210_danilk_1995; +1 Ответить
9. Dave Nikolsky (dave2000) 86 23.09.16 18:43 Сейчас в теме
(7) nano1c, в студии меню Проект/Добавить ссылку.../Обзор и добавить туда библиотеки по реальным путям. У меня там добавлены VoIPSDK.dll и NVA.dll.

user624210_danilk_1995; +1 Ответить 1
10. Юрий П (nano1c) 130 24.09.16 11:38 Сейчас в теме
(9) dave2000, а где взять эти компоненты? Да и текущая версия ozeki.dll не содержит те пространства имен что в исходниках - видимо нужна именно та старая версия.
user624210_danilk_1995; +1 Ответить 1
11. Виктор Шишов (vshish) 80 20.12.16 07:57 Сейчас в теме
Вы пишете :
Но к сожалению 1С-ная функция ЗапуститьПриложение() не умеет запускать программы с параметрами (можно конечно через bat-файл, но лично меня смущает появляющееся черное консольное окно), поэтому был придуман вариант 3.

Я проверил все она запускает. Командную строку делаешь с параметрами и все.

Ну и работает. с ини файлом у меня не сработало
12. Виктор Шишов (vshish) 80 22.12.16 02:23 Сейчас в теме
Попробовал на планшете(вин). И получил проблему. В планшете две камеры. И программа видит только переднюю(ну да она же позиционируется как Вэб), а хотелось бы переднюю и как их переключать не понятно. Исходники даже не качал. ибо не владею.
А на стационаре и с усб веб камерой все прошло на ура. Даже в форму вставил поддержку.
Досадно.
13. Dave Nikolsky (dave2000) 86 22.12.16 20:08 Сейчас в теме
(10) Держите (ссылка действительна 14 дней): http://dropmefiles.com/HFyHb
user624210_danilk_1995; +1 Ответить
14. Dave Nikolsky (dave2000) 86 22.12.16 20:17 Сейчас в теме
(11)
Я проверил все она запускает. Командную строку делаешь с параметрами и все.

Ну и работает. с ини файлом у меня не сработало


Уже не помню подробности, но на 8.3.5 у меня не получилось через ЗапуститьПриложение() запустить с параметрами (либо не запускалось, либо кушало параметры). Возможно и я что-то не так делал, не было времени разбираться. А с ини-файлом вы что-то не досмотрели, т.к. исправно работает у многих людей уже долгое время.
user624210_danilk_1995; +1 Ответить
15. Dave Nikolsky (dave2000) 86 22.12.16 20:27 Сейчас в теме
(12) Да, выбора камеры я не предусматривал, не думал прога будет работать и на планшетах, а на ноутах камера обычно одна, поэтому просто брал 1-ю из массива доступных. Если очень критично и актуально, могу на досуге добавить выбор камеры через параметр.
user624210_danilk_1995; +1 Ответить
16. Виктор Шишов (vshish) 80 23.12.16 04:42 Сейчас в теме
Ну если посмотришь было бы здорово.
Мы купили Виндоус планшеты и как заставить его распознать штрихкод без подключения сканера не понятно. Хотя там есть много приложений в магазине, но заставить это приложение распознать первый попавшися ШК и вернуть его содержимое в 1С, не знаю как.
А тут даже работы на интеграцию, было не более 4 часов.
Но на обычном компе, где 1 камера все прошло гладко, а на планшете, не очень.
17. Сергей (Sergik_D) 16 16.01.17 07:46 Сейчас в теме
Выложите пожалуйста библиотеки. Не могу найти nva и voipsdk.
user624210_danilk_1995; nano1c; +2 Ответить 1
18. Dave Nikolsky (dave2000) 86 18.01.17 22:06 Сейчас в теме
(17) Вот архив: http://dropmefiles.com/NXgNN

Ссылка актуальна до 14 дней
user624210_danilk_1995; +1 Ответить 2
19. Данила Колпачков (user624210_danilk_1995) 06.03.17 20:25 Сейчас в теме
Здравствуйте, не могли бы вы выложить еще раз проект на "депоситфайл"?
20. Данила Колпачков (user624210_danilk_1995) 09.03.17 14:05 Сейчас в теме
(18) а можно еще раз библиотеки загрузить на deposit ?
21. Анатолий Лукьянов (KazanKokos) 10 09.03.17 15:03 Сейчас в теме
вебка конечно это жесть.
Совет: Используйте мобильник или планшет(дешевле чем ТСД) + переносной зарядный блок, иначе батарея будет садиться.
Многие программы по работе с ТСД работают на андроидах и WinCE. Например Cleverence и Datamobile.
22. U- JinN (ujinn) 29.06.17 13:14 Сейчас в теме
(18) Dave,
не пробовали использование нескольких камер одновременно ?
и сканирование нескольких штрихкодов с одного захода?
P.S. можете тот выложить файлик еще раз?
23. Dima (ch1mera) 11.08.17 11:05 Сейчас в теме
(20) Добрый день. Выложите исходники с библиотеками еще раз, пожалуйста .
Оставьте свое сообщение