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

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

  • Пользователь сканирует документ с помощью сканера, подключенного к его / ее компьютеру.
  • Отсканированное изображение сохраняется локально на компьютере пользователя как файл BMP / JPG / TIF / PNG.
  • Пользователь нажимает кнопку загрузки файла "Обзор ..." в веб-приложении.
  • Пользователю предоставляется диалоговое окно с файлом, которое он / она использует для поиска отсканированного изображения.
  • Пользователь нажимает «Загрузить изображение», и отсканированное изображение загружается на сервер, где оно хранится.

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

Как бы вы справились с этой проблемой? В частности, как бы вы снизили количество шагов в описанном сценарии использования?


person knorv    schedule 21.10.2009    source источник
comment
это во многом будет зависеть от рассматриваемого сканера (ов), не так ли? И почему нынешний процесс плох?   -  person warren    schedule 28.10.2009
comment
Уоррен: У каждого пользователя свой сканер. Текущий процесс плох, потому что он включает в себя множество шагов, некоторые из которых технически избыточны.   -  person knorv    schedule 28.10.2009
comment
У DCU есть Java-апплет, предназначенный для этого для их системы сканирования домашних чеков PC Deposit. Похоже, он не поддерживает мой сканер, но, возможно, стоит проверить.   -  person NickAldwin    schedule 30.10.2009


Ответы (11)


Если ваша целевая аудитория использует Windows и IE, и вы не против потратить несколько долларов, у Atalasoft есть компоненты, которые будут делать именно то, что вы ищете.

person SqlACID    schedule 26.10.2009
comment
Я из Atalasoft. На следующей неделе мы публикуем проект CodeProject по этой конкретной проблеме - с радостью пришлем вам документ, если вы напишите мне: lou -dot- franco -at- atalasoft.com (замените -dot- и -at-). - person Lou Franco; 28.10.2009
comment
Для кросс-платформенной поддержки в Windows и Mac OS X вы также можете рассмотреть возможность использования Dynamic Web TWAIN. - person flysakura; 29.03.2012

Что ж, прошло два года, так что вот обновленная информация о состоянии дел для тех, кто только что присоединился к нам.

Как Dynamsoft, так и Atalasoft содержат наборы инструментов для веб-сканирования с несколькими браузерами, которые совместимы с любым стеком на стороне сервера. Оба требуют, чтобы пользователь установил ActiveX (в IE) или плагин NPAPI (Chrome, Firefox и т. Д.), Чтобы получить доступ к сканеру через TWAIN API.

Очевидно, что если у вас есть время или ограниченный бюджет, вы можете создать свой собственный плагин. Я от всей души рекомендую структуру плагинов FireBreath и любую библиотеку TWAIN вместо написания собственного TWAIN. код.

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

Я рекомендую загружать изображения в javascript с помощью AJAX, потому что в этом случае он является частью того же сеанса браузера, что и веб-страница, и наследует настройки прокси-сервера браузера, файлы cookie сеанса и аутентификацию на стороне сервера. Насчет управления Dynamsoft я не знаю, инструментарий Atalasoft включает такую ​​загрузку AJAX. Изображение (я) передается из плагина в javascript в виде строки в кодировке base64, поэтому локальный файл фактически не создается.

Отказ от ответственности: я работаю над набором инструментов для веб-сканирования WingScan от Atalasoft.

person Spike0xff    schedule 24.09.2012

Я действительно видел, как кто-то в банке делал это, открывая мой счет, и был полностью поражен. Рассматриваемый банк использовал Windows и IE, я полагаю, ваш в одинаково контролируемой среде. Я думаю, что банк использовал комбинацию настраиваемого / предсказуемого драйвера сканера и элемента управления ActiveX.

Загруженная страница с надписью «Откройте сканер», сотрудник вытащил документ и нажал «Сканировать» на веб-странице, затем страница изменилась на «Сканирование», затем отсканированный документ был показан на веб-странице, чтобы сотрудник мог утвердить. Я могу только предположить, что драйвер сканера отправляет изображение в определенное место, и активный элемент управления X опрашивал его, чтобы оно появилось, как только оно появилось, оно показало изображение на экране, как только сотрудник одобрил его, активный x загрузил его в фон. Она открыла следующую страницу и продолжила остальную часть процесса.

Бог знает, как они заставили всю эту технику работать, но это можно сделать.

person Tom    schedule 28.10.2009

Silverlight 4 скоро выйдет. Предполагается, что он может взаимодействовать с COM-объектами на компьютере пользователя (при условии, что они работают под управлением Windows). Теоретически вы вызываете методы WIA со своей веб-страницы Silverlight.

person Community    schedule 28.11.2009

Мы реализовали решение по внедрению Удаленного депозита для банка. Работает только в IE. Была создана winforms dll, которая взаимодействует с библиотекой LeadTools TWAIN. Leadtools TWAIN dll извлекает все подробности TWAIN. Этот подход немного лучше, чем использование элемента управления ActiveX. На клиенте потребуется .NET Framework. Отсканированные изображения отправляются обратно в скрытую переменную на странице и обрабатываются на сервере.

person silverArc    schedule 21.12.2009

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

Если цель состоит в том, чтобы «автоматизировать процесс сканирования и загрузки», а не «написать веб-приложение», я бы написал сценарий AutoIt для управления существующим программным обеспечением сканера и простую программу ftp.

person Jeanne Pindar    schedule 21.10.2009
comment
Я боюсь, что потребовать от пользователя установить и использовать AutoIt, вероятно, сложнее, чем оставить процедуру в том виде, в каком она есть сейчас. - person knorv; 21.10.2009
comment
Скрипты AutoIt компилируются в exe, поэтому устанавливать нечего, кроме копирования или загрузки exe на свой компьютер. Использовать его можно так же просто, как просто щелкнуть файл (или ярлык к нему). - person Jeanne Pindar; 21.10.2009

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

SANE или TWAIN справятся с получением отсканированного изображения. cURL может обрабатывать загрузку изображения в ваше веб-приложение. Чтобы упростить задачу для конечного пользователя, я бы использовал что-то вроде соединения Comet для обновления веб-страницы, когда файл был доступен.

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

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

person Philip Tinney    schedule 21.10.2009

Поскольку ваша аудитория является контролируемой средой, вы можете написать собственное расширение / программу браузера на основе WIA / TWAIN, которая выполняет сканирование. Если вы выбираете расширения браузера, такие как BHO / ActiveX / XPCOM и т. Д., Вам необходимо получить разрешение пользователя на установку вашего расширения. Если вы решите написать программу, вам могут потребоваться технологии веб-развертывания, такие как ClickOnce или Java Web Start, для запуска из Интернета.

Интерфейс TWAIN является проблемой для Windows. Помимо сложности, вы должны отображать некоторый графический интерфейс, написанный разными разработчиками драйверов сканера. Это может быть единственный способ поддержать старые сканеры или функции, недоступные через другие интерфейсы, такие как полноскоростное многостраничное сканирование из устройства подачи документов.

WIA от Microsoft значительно упрощает взаимодействие со сканером с помощью объектной модели сценариев, однако специфические для сканера функции недоступны, а некоторые старые сканеры не поддерживают интерфейс.

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

person Sheng Jiang 蒋晟    schedule 31.10.2009

Мы сделали нечто подобное. мы использовали программу TWAIN из командной строки (http://www.burrotech.com/quickscan.php). $ 49

1) Мы разработали небольшое приложение .Net для запуска программы QuickScan в качестве команды оболочки.
2) Команда была назначена кнопке сканирования.
3) После того, как пользователь нажмет на кнопку сканирования, появится запрос появляются, чтобы ввести имя файла. Пользователь сохраняет идентификатор транзакции в качестве имени файла.
4) Другое приложение .Net (или, может быть, то же, что упоминалось ранее) будет читать этот файл и загружать его в базу данных, учитывая, что имя файла является идентификатором транзакции.
< br>

Работал как теплый нож в масле!



Вы можете попробовать отобразить идентификатор транзакции в IE, пользователь выбирает идентификатор и нажимает «Сканировать». Ваше приложение прочитает ВЫБРАННЫЙ текст и сохранит файл, используя ВЫБРАННЫЙ текст в качестве имени файла. Мы не пробовали, но должно работать.

person whiz    schedule 14.06.2010

Это только утопия, если вы думаете, что веб-приложения ограничены веб-браузерами, на самом деле веб-приложения могут включать в себя множество различных технологий, помимо 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 и другие, для выполнения этого взаимодействия.

person Daniel Ruoso    schedule 21.10.2009
comment
Дэниел, я не уверен, что правильно понимаю ваше предложение. Должен ли конечный пользователь установить приложение Perl на свой локальный компьютер и заставить его опрашивать веб-сервер на предмет заданий сканирования? - person knorv; 21.10.2009
comment
Да, я предлагаю конечному пользователю установить приложение (Perl был здесь просто примером) и использовать одно из следующих действий: 1) использовать XMPP для получения запроса от сервера 2) оставить небольшой http-сервер открытым и зарегистрироваться сам на сервере, чтобы получить обратный вызов http. 3) продолжайте опрашивать сервер, чтобы узнать, есть ли порядок сканирования, специфичный для этого сканера. - person Daniel Ruoso; 23.10.2009

Вы можете разместить на своем веб-сайте Java-апплет. Это может получить доступ к сканеру и отправить данные через REST на ваш веб-сервер.

person Christian    schedule 25.10.2009
comment
Уточните, пожалуйста, какой API будет использовать Java-апплет? Действительно ли ненадежный апплет имеет доступ к сканеру? - person knorv; 25.10.2009
comment
Аплету следует доверять. Невозможно сделать это в браузере без принятия пользователем какого-либо повышения доверия. - person Lou Franco; 28.10.2009