Interfaz con el escáner del usuario final desde una aplicación web (integración web / escáner)

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

Pregunta

Considere el siguiente procedimiento de escaneo en una aplicación web típica de manejo de documentos:

  • El usuario escanea un documento utilizando un escáner conectado a su computadora
  • La imagen escaneada se guarda localmente en la computadora del usuario como un archivo BMP / JPG / TIF / PNG
  • El usuario golpea un archivo cargado " Examinar ... " botón en la aplicación web
  • Al usuario se le presenta un cuadro de diálogo de archivo que utiliza para localizar la imagen escaneada
  • El usuario golpea " Subir imagen " y la imagen escaneada se carga en el servidor donde se almacena

Este proceso es bastante complicado y me gustaría reducir el número de pasos para que el proceso sea más fácil de usar / a prueba de tontos. En circunstancias ideales, los pasos anteriores se reemplazarían con solo un paso en el que el procedimiento inicia el escaneo de documentos, completa el escaneo de documentos y carga la imagen resultante se activa automáticamente desde la aplicación web al hacer clic en "Escanear y cargar". Lamentablemente, parece que el estado de la integración de web / escáner " es bastante pobre, así que esto podría ser una utopía.

¿Cómo abordaría este problema? Más específicamente, ¿cómo reduciría el número de pasos en el caso de uso descrito?

¿Fue útil?

Solución

Si su público objetivo está ejecutando Windows e IE, y no le importa gastar unos pocos $$, Atalasoft tiene algunos componentes que harán exactamente lo que estás buscando.

Otros consejos

Bueno, han pasado dos años, así que aquí hay una actualización sobre el estado del arte para aquellos que se unen a nosotros.

Ambos Dynamsoft y Atalasoft tiene kits de herramientas de exploración web de múltiples navegadores que son compatibles con cualquier pila del lado del servidor. Ambos requieren que el usuario instale un ActiveX (en IE) o un complemento NPAPI (Chrome, Firefox, etc.) para acceder al escáner a través de la API de TWAIN.

Obviamente, si tiene el tiempo o un presupuesto limitado, puede crear su propio complemento. Recomiendo de todo corazón el marco del complemento FireBreath , y cualquier biblioteca TWAIN en lugar de escribir tu propio TWAIN código.

Una vez que se instaló el ActiveX o el complemento, el resto del trabajo es una combinación de javascript y amp; HTML en el cliente y algún tipo de controlador en el servidor para aceptar y procesar la imagen entrante, que se puede ver como un formulario multiparte con un archivo adjunto.

Recomiendo que subas la imagen en javascript con AJAX, ya que forma parte de la misma 'sesión' del navegador que la página web y hereda la configuración de proxy del navegador, las cookies de sesión y la autenticación del lado del servidor. No sé sobre el control de Dynamsoft, el kit de herramientas de Atalasoft incluye dicha carga de AJAX. Las imágenes se entregan desde el complemento al javascript como una cadena codificada en base64, por lo que no se crea ningún archivo local.

Descargo de responsabilidad: trabajo en el kit de herramientas de escaneo web WingScan de Atalasoft.

De hecho, vi a alguien en el banco hacer esto mientras configuraba mi cuenta y me sorprendió totalmente. El banco en cuestión estaba usando Windows e IE, supongo que estás en un entorno igualmente controlado. Creo que el banco utilizó una combinación de un controlador de escáner personalizado / predecible y un control ActiveX.

Una página cargada que decía " Abre el escáner " el miembro del personal introdujo el documento y presionó Escanear en la página web, luego la página cambió para decir Escaneo, luego mostró el documento escaneado en la página web para que el miembro del personal lo apruebe. Solo puedo asumir que el controlador del escáner envió la imagen a una determinada ubicación y el control activo de X estaba sondeando para que apareciera, una vez que aparecía mostraba la imagen en la pantalla, una vez que el miembro del personal la había aprobado, la activa x la había subido. el fondo. Abrió la siguiente página y continuó con el resto del proceso.

Dios sabe cómo hicieron que funcionara toda esa tecnología, pero se puede hacer.

Silverlight 4 saldrá pronto. Se supone que tiene la capacidad de interactuar con objetos COM en la computadora del usuario (siempre que estén ejecutando Windows). En teoría, usted llama a los métodos WIA desde su página web de Silverlight.

Implementamos una solución para implementar Depósito Remoto para un banco. Funciona solo en IE. Se creó una winforms dll que interactúa con LeadTools TWAIN dll. Leadtools TWAIN dll abstrae todas las minutas TWAIN. Este enfoque es ligeramente mejor que usar un control ActiveX. .NET Framework sería necesario en el cliente. Las imágenes escaneadas se vuelven a publicar en una variable oculta en la página y se procesan en el servidor.

Hmm, siempre he querido mirar un archivo escaneado antes de hacer algo con él, pero supongo que eso depende de su escáner y de la calidad que necesite.

Si el objetivo es "automatizar el proceso de escaneo y carga" en lugar de "escribir una aplicación web", escribiría un script AutoIt para controlar el software del escáner existente y un simple programa ftp.

La opción con la mayor probabilidad de eliminar la mayoría de los pasos, probablemente sería escribir una utilidad de escaneo personalizada que el usuario descargaría y ejecutaría en su máquina local.

SANE o TWAIN se encargarían de obtener la imagen escaneada. cURL podría manejar cargar la imagen a su aplicación web. Para hacer las cosas aún más fáciles para el usuario final, usaría algo como una conexión Comet para actualizar la página web cuando el archivo estuviera disponible.

Si esa no es una opción, puede buscar ver qué opciones probablemente tendrán sus usuarios utilizando el software de sus escáneres. Creo que muchos programas ahora admiten escaneo a correo electrónico o ftp.

La solución que utilicé para una aplicación de intranet, utilizando escáneres / copiadoras multifunción fue escanear a un recurso SMB al que tenía acceso el servidor web. El usuario solo va a la copiadora escanea el recurso compartido y cuando vuelve a su escritorio, accede a la nueva página de escaneo que muestra una lista de todos los archivos nuevos sin procesar.

Dado que su audiencia es un entorno controlado, puede escribir su propia extensión / programa de navegador basado en WIA / TWAIN que realiza el escaneo. Si elige extensiones de navegador como BHO / ActiveX / XPCOM, etc., necesita obtener el permiso del usuario para instalar su extensión. Si elige escribir un programa, es posible que necesite tecnologías de implementación web como ClickOnce o Java Web Start para iniciarse desde la web.

La interfaz TWAIN es una molestia en Windows. Dejando de lado la complejidad, debe mostrar una GUI escrita por diferentes desarrolladores de controladores de escáner. Puede que sea la única forma de admitir escáneres antiguos o funciones no expuestas a través de otras interfaces, como el escaneo de varias páginas a velocidad máxima desde un alimentador de documentos.

El WIA de Microsoft hace que la interfaz con el escáner sea mucho más fácil con un modelo de objetos de secuencias de comandos, sin embargo, las funciones específicas del escáner no están disponibles y algunos escáneres antiguos no admiten la interfaz.

Después de escanear, puede llamar a un servicio web para notificar al servidor y la página web se puede actualizar periódicamente para comprobar nuevas imágenes.

Hemos hecho algo similar. utilizamos un programa TWAIN de línea de comandos ( http://www.burrotech.com/quickscan.php). $$ $ 49

1) Desarrollamos una pequeña aplicación .Net para ejecutar el programa QuickScan como un comando de shell.
2) El comando fue asignado al botón Escanear.
3) Una vez que el usuario presiona el botón de escaneo, aparecerá un mensaje para ingresar el nombre del archivo. El usuario guarda el ID de la transacción como el nombre del archivo.
4) Otra aplicación .Net (o tal vez la mencionada anteriormente) leerá este archivo y lo cargará en la base de datos considerando que el nombre del archivo es el ID de la transacción.

¡Funcionó como un cuchillo caliente en mantequilla!



Puede intentar mostrar la ID de la transacción en IE, el usuario selecciona la ID y luego presiona Escanear. Su aplicación leerá el texto SELECCIONADO y guardará el archivo usando el texto SELECCIONADO como el nombre del archivo. No lo hemos intentado pero debería funcionar.

Solo es una utopía si cree que las aplicaciones web se limitan a los navegadores web, de hecho, las aplicaciones web pueden incluir muchas tecnologías diferentes, además de HTML y Javascript.

La forma genial de resolver ese problema, de hecho, ya lo usé para algunos dispositivos usberiales, es implementar su aplicación usando SOAP + XMPP. Puede hacerlo en Perl utilizando XML :: CompileX :: Transport :: SOAPXMPP, Catalyst :: Engine :: XMPP2, Catalyst :: Controller :: SOAP y Catalyst :: Model :: SOAP.

Lo interesante de usar XMPP es que simplifica la administración del direccionamiento, ya que utiliza el JID (ID de Jabber) para buscar el agente de software, no un esquema de direccionamiento de host + puerto. La segunda parte interesante del uso de XMPP es admitir más fácilmente el servidor que envía información al cliente.

Pero si no desea manejar XMPP, puede hacer lo mismo con un servidor http incrustado ligero - HTTP :: Server :: Simple, en Perl - y de alguna manera registrar la dirección del escáner actual en el servidor para que pueda volver a llamar.

Y una última opción, que no es tan linda, es hacer que el agente de software interrogue al servidor para ver cuándo hay un documento de escaneo y cargarlo. ordene para esa máquina específica y realice esa operación cuando esté presente.

En resumen, tener un agente de software local para interactuar con el hardware local no hace que su aplicación web sea menos `` web '', siempre y cuando utilice estándares web, como XML, SOAP y otros, para realizar esa comunicación .

Puedes poner un applet de Java en tu sitio web. Esto puede acceder al escáner y enviar los datos a través de REST a su servidor web.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top