Взаимодействие со сканером конечного пользователя из веб-приложения (интеграция веб/ сканера)

StackOverflow https://stackoverflow.com/questions/1601648

Вопрос

Рассмотрим следующую процедуру сканирования в типичном веб-приложении для обработки документов:

  • Пользователь сканирует документ с помощью сканера, подключенного к его /ее компьютеру
  • Отсканированное изображение сохраняется локально на компьютере пользователя в виде файла 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 на ваш веб-сервер.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top