Взаимодействие со сканером конечного пользователя из веб-приложения (интеграция веб/ сканера)
-
05-07-2019 - |
Вопрос
Рассмотрим следующую процедуру сканирования в типичном веб-приложении для обработки документов:
- Пользователь сканирует документ с помощью сканера, подключенного к его /ее компьютеру
- Отсканированное изображение сохраняется локально на компьютере пользователя в виде файла BMP / JPG /TIF /PNG
- Пользователь нажимает на кнопку загрузки файла "Обзор.." в веб-приложении
- Пользователю открывается диалоговое окно файла, которое он / она использует для поиска отсканированного изображения
- Пользователь нажимает "Загрузить изображение", и отсканированное изображение загружается на сервер, где оно хранится
Этот процесс довольно сложный, и я хотел бы сократить количество шагов, чтобы сделать процесс более удобным для пользователя / защищенным от ошибок.В идеальных обстоятельствах вышеуказанные шаги были бы заменены только одним шагом, на котором процедура инициирования сканирования документа, завершения сканирования документа и загрузки результирующего изображения автоматически запускается из веб-приложения при нажатии кнопки "Сканировать и загрузить".К сожалению, кажется, что состояние "интеграции веб-интерфейса со сканером" довольно плохое, так что это может быть утопией.
Как бы вы справились с этой проблемой?Более конкретно, как бы вы поступили по поводу сокращения количества шагов, связанных с описанным вариантом использования?
Решение
Если ваша целевая аудитория работает под управлением Windows и IE, и вы не возражаете потратить несколько $ $, Atalasoft ( Аталасофт ) имеет несколько компонентов, которые будут делать именно то, что вы ищете.
Другие советы
Что ж, прошло два года, так что вот обновленная информация о состоянии дел для тех, кто только присоединился к нам.
И то, и другое Динамсофт и Atalasoft ( Аталасофт ) имейте наборы инструментов для веб-сканирования с несколькими браузерами, которые совместимы с любым серверным стеком.Оба требуют, чтобы пользователь установил ActiveX (в IE) или плагин NPAPI (Chrome, Firefox и т.д.), Чтобы получить доступ к сканеру через TWAIN API.
Очевидно, что если у вас есть время или ограниченный бюджет, вы можете создать свой собственный плагин.Я от всей души рекомендую Фреймворк плагина FireBreath, и Любой Библиотека TWAIN вместо того, чтобы писать свой собственный код TWAIN.
Как только ActiveX или плагин установлен, остальная часть работы представляет собой комбинацию javascript и HTML на клиенте и какого-то обработчика на сервере для приема и обработки входящего изображения, которое может выглядеть точно так же, как составная форма отправки с прикрепленным файлом.
Я рекомендую выполнять загрузку изображения на javascript с использованием AJAX, потому что в этом случае оно является частью того же "сеанса" браузера, что и веб-страница, и наследует настройки прокси-сервера браузера, сеансовые файлы cookie и аутентификацию на стороне сервера.Я не знаю о контроле Dynamsoft, инструментарий Atalasoft включает в себя такую загрузку AJAX.Изображения передаются из плагина в javascript в виде строки в кодировке base64, поэтому локальный файл фактически не создается.
Отказ от ответственности:Я работаю с набором инструментов веб-сканирования WingScan от Atalasoft.
Я действительно видел, как кто-то в банке делал это, когда открывал мой счет, и я был совершенно поражен.Банк, о котором идет речь, использовал Windows и IE, я предполагаю, что ваш находился в одинаково контролируемой среде.Я думаю, что банк использовал комбинацию пользовательского / предсказуемого драйвера сканера и элемента управления ActiveX.
Загружалась страница с надписью "Откройте сканер", сотрудник вставлял документ и нажимал "Сканировать" на веб-странице, затем страница менялась на "Сканировать", затем на веб-странице показывался отсканированный документ для утверждения сотрудником.Я могу только предположить, что драйвер сканера отправил изображение в определенное место, и элемент управления active X запрашивал его появление, как только он появился, он показал изображение на экране, как только сотрудник одобрил его, active x загрузил его в фоновом режиме.Она открыла следующую страницу и продолжила с остальной частью процесса.
Одному богу известно, как они заставили все эти технологии работать, но это можно сделать.
Скоро выходит Silverlight 4.Предполагается, что он должен иметь возможность взаимодействовать с COM-объектами на компьютере пользователя (при условии, что они работают под управлением Windows).Теоретически вы вызываете методы WIA со своей веб-страницы Silverlight.
Мы внедрили решение для внедрения дистанционного пополнения счета в банке.Это работает только в IE.A библиотека dll winforms был создан, который взаимодействует с LeadTools TWAIN dll.Leadtools TWAIN dll абстрагирует все протоколы TWAIN.Такой подход немного лучше, чем использование элемента управления ActiveX.На клиенте потребуется .NET Framework.Отсканированные изображения отправляются обратно в скрытую переменную на странице и обрабатываются на сервере.
Хм, я всегда хотел взглянуть на отсканированный файл, прежде чем что-либо с ним делать, но, полагаю, это зависит от вашего сканера и того, какое качество вам нужно.
Если цель состоит в том, чтобы "автоматизировать процесс сканирования и загрузки", а не "написать веб-приложение", я бы написал скрипт AutoIt для управления существующим программным обеспечением сканера и простой ftp-программой.
Наиболее вероятным вариантом удаления большинства шагов, вероятно, было бы написание настраиваемой утилиты сканирования, которую пользователь загрузил бы и запустил на своем локальном компьютере.
СЭЙН или ТВЕН справились бы с получением отсканированного изображения.cURL мог бы справиться с загрузкой изображения в ваше веб-приложение.Чтобы сделать работу еще проще для конечного пользователя, я бы использовал что-то вроде подключения Comet для обновления веб-страницы, когда файл был доступен.
Если это невозможно, вы могли бы посмотреть, какие возможности, скорее всего, будут у ваших пользователей при использовании их программного обеспечения для сканеров.Я полагаю, что многие программы сейчас поддерживают сканирование по электронной почте или ftp.
Решение, которое я использовал для приложения для интрасети с использованием многофункционального сканера / копировальных аппаратов, заключалось в сканировании общего ресурса SMB, к которому имел доступ веб-сервер.Пользователь просто переходит к копировальным сканированиям в общий доступ, а когда он возвращается к своему рабочему столу, он переходит на страницу новых сканирований, на которой отображается список всех новых необработанных файлов.
Поскольку ваша аудитория является контролируемой средой, вы можете написать собственное расширение для браузера / программу на основе WIA / TWAIN, которая выполняет сканирование.Если вы выбираете расширения браузера, такие как BHO /ActiveX / XPCOM и т.д., вам необходимо получить разрешение пользователя на установку вашего расширения.Если вы решите написать программу, вам могут потребоваться технологии веб-развертывания, такие как ClickOnce или Java Web Start, для запуска из Интернета.
Сопряжение TWAIN - это заноза в Windows.Помимо сложности, вы должны отобразить некоторый графический интерфейс, написанный разными разработчиками драйверов сканера.Возможно, это единственный способ поддерживать старые сканеры или функции, недоступные через другие интерфейсы, такие как полноскоростное многостраничное сканирование с устройства подачи документов.
WIA от Microsoft значительно упрощает взаимодействие со сканером с помощью объектной модели scripting, однако функции, специфичные для сканера, недоступны, а некоторые старые сканеры не поддерживают интерфейс.
После сканирования вы можете вызвать веб-службу для уведомления сервера, и веб-страница может периодически обновляться для проверки новых изображений.
Мы уже делали нечто подобное.мы использовали программу TWAIN из командной строки (http://www.burrotech.com/quickscan.php). $$ $49
1) Мы разработали небольшое .Сетевое приложение для запуска программы QuickScan в виде команды командной строки.
2) Команда была назначена кнопке Сканирования.
3) Как только пользователь нажмет на кнопку сканирования, появится запрос на ввод имени файла.Пользователь сохраняет идентификатор транзакции в качестве имени файла.
4) Другой .Сетевое приложение (или, возможно, то же самое, что упоминалось ранее) прочитает этот файл и загрузит его в базу данных, учитывая, что имя файла является идентификатором транзакции.
Сработал, как теплый нож в масле!
Вы можете попробовать отобразить идентификатор транзакции в IE, пользователь для выбора идентификатора затем нажимает Сканировать.Ваше приложение прочитает ВЫДЕЛЕННЫЙ текст и сохранит файл, используя ВЫДЕЛЕННЫЙ текст в качестве имени файла.Мы еще не пробовали это, но это должно сработать.
Это только утопия, если вы думаете, что веб-приложения ограничены веб-браузерами, на самом деле веб-приложения могут включать в себя множество различных технологий, помимо HTML и Javascript.
Отличный способ решения этой проблемы - фактически, я уже использовал его для некоторых устройств usbserial - это реализовать ваше приложение с использованием SOAP + XMPP.Вы можете сделать это в Perl, используя XML::CompileX::Transport::SOAPXMPP, Catalyst::Engine::XMPP2, Catalyst::Controller::SOAP и Catalyst::Model::SOAP .
Интересной особенностью использования XMPP является то, что это упрощает управление адресацией, поскольку вы используете JID (Jabber ID) для поиска программного агента, а не какой-либо схемы адресации хост + порт.Вторая интересная часть использования XMPP заключается в более простой поддержке сервера, передающего информацию клиенту.
Но если вы не хотите обрабатывать XMPP, вы все равно можете сделать то же самое с облегченным встроенным http-сервером - HTTP::Server::Simple на Perl - и каким-то образом зарегистрировать текущий адрес сканера на сервере, чтобы он мог выполнить обратный вызов.
И последний вариант, который не так хорош, - заставить программный агент опрашивать сервер, чтобы узнать, есть ли заказ "отсканировать документ и загрузить" для этой конкретной машины, и реализовать эту операцию, когда она присутствует.
Подводя итог, наличие локального программного агента для взаимодействия с локальным оборудованием не делает ваше веб-приложение менее "вебовым", пока вы используете веб-стандарты - такие как XML, SOAP и другие - для выполнения этого взаимодействия.
Вы можете разместить Java-апплет на своем веб-сайте.Это позволяет получить доступ к сканеру и отправить данные через REST на ваш веб-сервер.