Interfaçage avec le scanner de l'utilisateur final à partir d'une application Web (intégration Web / scanner)

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

Question

Prenez en compte la procédure de numérisation suivante dans une application Web typique de gestion de documents:

  • L'utilisateur numérise un document à l'aide d'un scanner connecté à son ordinateur
  • L'image numérisée est enregistrée localement sur l'ordinateur de l'utilisateur en tant que fichier BMP / JPG / TIF / PNG
  • L'utilisateur clique sur un téléchargement de fichier " Parcourir .. " bouton dans l'application Web
  • L'utilisateur se voit présenter un dialogue de fichier qu'il utilise pour localiser l'image numérisée
  • L'utilisateur clique sur "Charger une image". et l'image numérisée est téléchargée sur le serveur où elle est stockée

Ce processus est assez compliqué et j'aimerais réduire le nombre d'étapes afin de rendre le processus plus convivial / indéréglable. Dans des circonstances idéales, les étapes ci-dessus seraient remplacées par une seule étape dans laquelle la procédure initie la numérisation de document, la numérisation complète du document et le téléchargement de l'image résultante est automatiquement déclenchée à partir de l'application Web lorsque vous cliquez sur "Numériser et télécharger". Malheureusement, il semble que l’état de " intégration Web / scanner " est assez pauvre, donc cela pourrait être une utopie.

Comment aborderiez-vous ce problème? Plus précisément, comment vous y prendriez-vous pour réduire le nombre d’étapes impliquées dans le cas d’utilisation décrit?

Était-ce utile?

La solution

Si votre public cible utilise Windows et IE, et que cela ne vous gêne pas de dépenser quelques dollars, Atalasoft a des composants qui feront exactement ce que vous cherchez.

Autres conseils

Eh bien, deux ans ont passé, voici donc une mise à jour sur l'état de la technique pour ceux qui viennent de nous rejoindre.

Les deux Dynamsoft et Atalasoft dispose de kits d’analyse Web multi-navigateurs compatibles avec n’importe quelle pile côté serveur. Les deux nécessitent que l'utilisateur installe un ActiveX (dans IE) ou un plugin NPAPI (Chrome, Firefox, etc.) pour accéder au scanner via l'API TWAIN.

Évidemment, si vous avez le temps ou un budget limité, vous pouvez créer votre propre plugin. Je recommande vivement la framework de plug-in FireBreath , et toute bibliothèque TWAIN au lieu d'écrire votre propre bibliothèque TWAIN code.

Une fois l’ActiveX ou le plug-in installé, le reste du travail consiste en une combinaison de javascript & amp; HTML sur le client et une sorte de gestionnaire sur le serveur pour accepter et traiter l'image entrante, ce qui peut ressembler à un formulaire multipart soumis avec un fichier joint.

Je recommande de télécharger l'image en javascript avec AJAX, car elle fait alors partie de la même "session" de navigateur que la page Web et hérite des paramètres de proxy, des cookies de session et de l'authentification côté serveur du navigateur. Je ne connais pas le contrôle de Dynamsoft, la boîte à outils Atalasoft inclut ce type de téléchargement AJAX. Les images sont transmises du plug-in au javascript sous la forme d'une chaîne codée en base64, de sorte qu'aucun fichier local n'est réellement créé.

Clause de non-responsabilité: je travaille sur la boîte à outils d'analyse Web WingScan d'Atalasoft.

En fait, j'ai vu quelqu'un à la banque faire cela lors de la création de mon compte et j'ai été totalement surpris. La banque en question utilisait Windows et IE, je suppose que vous évoluez dans un environnement également contrôlé. Je pense que la banque a utilisé une combinaison d'un pilote de scanner personnalisé / prévisible et d'un contrôle ActiveX.

Une page chargée portant le message "Ouvrir le scanner". le membre du personnel a inséré le document et appuyé sur Numériser sur la page Web, puis la page a été modifiée pour indiquer Numérisation, puis le document numérisé a été affiché sur la page Web pour que le membre du personnel approuve. Je ne peux que supposer que le pilote du scanner envoie l’image à un certain endroit et que le contrôle X actif l’interroge pour qu’elle apparaisse; dès lors qu’elle affiche l’image à l’écran, une fois que le membre du personnel l’a approuvé, le X actif l’a chargée de la télécharger. l'arrière-plan. Elle a ouvert la page suivante et a poursuivi le processus.

Dieu sait comment ils ont fait tout ce travail technique, mais cela peut être fait.

Silverlight 4 sera bientôt disponible. Il est supposé avoir la capacité d'interagir avec les objets COM sur l'ordinateur de l'utilisateur (à condition qu'ils exécutent Windows). En théorie, vous appelez les méthodes WIA à partir de votre page Web Silverlight.

Nous avons mis en place une solution pour implémenter le dépôt à distance pour une banque. Cela ne fonctionne que dans IE. Une dll winforms a été créée et s'interface avec dll LeadTools TWAIN. Leadtools TWAIN dll résume toutes les minutae TWAIN. Cette approche est légèrement meilleure que l’utilisation d’un contrôle ActiveX. .NET Framework serait nécessaire sur le client. Les images numérisées sont renvoyées dans une variable masquée de la page et sont traitées sur le serveur.

Hmm, j'ai toujours voulu examiner un fichier numérisé avant de l'utiliser, mais je suppose que cela dépend de votre scanner et de la qualité dont vous avez besoin.

Si l'objectif est "d'automatiser le processus de numérisation et de téléchargement" " contrairement à "écrire une application Web", j’écrirais un script AutoIt pour contrôler le logiciel de numérisation existant et un simple programme ftp.

L'option la plus susceptible de supprimer la plupart des étapes serait probablement d'écrire un utilitaire d'analyse personnalisé que l'utilisateur téléchargerait et exécuterait sur son ordinateur local.

SANE ou TWAIN gèrent l’obtention de l’image numérisée. cURL pourrait ensuite gérer le téléchargement de l’image sur votre application Web. Pour rendre les choses encore plus simples pour l'utilisateur final, j'utilisais quelque chose comme une connexion Comet pour mettre à jour la page Web lorsque le fichier était disponible.

Si ce n’est pas une option, vous voudrez peut-être connaître les options que vos utilisateurs auront probablement avec leur logiciel de numérisation. Je crois que de nombreux programmes prennent désormais en charge la numérisation vers courrier électronique ou FTP.

La solution que j'ai utilisée pour une application intranet, à l'aide d'un scanner / copieur multifonction, consistait à numériser vers un partage SMB auquel le serveur Web avait accès. L’utilisateur accède simplement aux copies numérisées vers le partage et, une fois de retour à son bureau, il affiche la nouvelle page de numérisation qui affiche la liste de tous les nouveaux fichiers non traités.

Étant donné que votre public est un environnement contrôlé, vous pouvez écrire votre propre extension / programme de navigateur basé sur WIA / TWAIN qui effectue le balayage. Si vous choisissez des extensions de navigateur telles que BHO / ActiveX / XPCOM, etc., vous devez obtenir l'autorisation de l'utilisateur pour installer votre extension. Si vous choisissez d'écrire un programme, vous aurez peut-être besoin de technologies de déploiement Web telles que ClickOnce ou Java Web Start pour pouvoir être lancées à partir du Web.

L’interface TWAIN est un problème pour Windows. La complexité mise à part, vous devez afficher une interface graphique écrite par différents développeurs de pilotes de scanner. C’est peut-être le seul moyen de prendre en charge les anciens scanners ou les fonctions non exposées via d’autres interfaces, telles que les numérisations à plusieurs vitesses à partir d’un chargeur de documents.

Le WIA de Microsoft facilite beaucoup l’interfaçage avec le scanner avec un modèle d’objet de script, mais les fonctionnalités spécifiques au scanner ne sont pas disponibles et certains anciens scanners ne prennent pas en charge l’interface.

Après la numérisation, vous pouvez appeler un service Web pour avertir le serveur et la page Web peut être actualisée régulièrement pour vérifier les nouvelles images.

Nous avons fait quelque chose de similaire. nous avons utilisé un programme TWAIN en ligne de commande ( http://www.burrotech.com/quickscan.php). $$ 49 $

1) Nous avons développé une petite application .Net pour exécuter le programme QuickScan en tant que commande shell.
2) La commande a été attribuée au bouton Scan.
3) Une fois que l'utilisateur a appuyé sur le bouton de numérisation, une invite apparaît pour entrer le nom du fichier. L'utilisateur enregistre l'ID de transaction sous le nom du fichier.
4) Une autre application .Net (ou peut-être la même que celle mentionnée précédemment) lira ce fichier et l’enverra dans la base de données en considérant que le nom du fichier est l’ID de la transaction.

Travaillé comme un couteau chaud au beurre!



Vous pouvez essayer d’afficher l’ID de transaction dans IE. L’utilisateur peut sélectionner l’ID puis appuyer sur Scan. Votre application lira le texte sélectionné et enregistrera le fichier en utilisant le texte sélectionné comme nom de fichier. Nous n’avons pas essayé, mais cela devrait fonctionner.

Ce n’est qu’une utopie que de penser que les applications Web se limitent aux navigateurs Web. En fait, les applications Web peuvent inclure de nombreuses technologies différentes, en plus du HTML et du Javascript.

La façon la plus simple de résoudre ce problème - en fait, je l’avais déjà utilisée pour certains périphériques USB - consiste à implémenter votre application avec SOAP + XMPP. Vous pouvez le faire en Perl en utilisant XML :: CompileX :: Transport :: SOAPXMPP, Catalyst :: Engine :: XMPP2, Catalyst :: Controller :: SOAP et Catalyst :: Model :: SOAP.

L'intérêt de l'utilisation de XMPP est qu'il simplifie la gestion de l'adressage, car vous utilisez le JID (Jabber ID) pour rechercher l'agent logiciel, et non un schéma d'adressage hôte + port. Le deuxième aspect intéressant de l’utilisation de XMPP consiste à prendre en charge plus facilement les informations de transfert de données du serveur vers le client.

Mais si vous ne voulez pas gérer XMPP, vous pouvez toujours faire la même chose avec un serveur http intégré léger - HTTP :: Server :: Simple, en Perl - et en quelque sorte enregistrer l'adresse actuelle du scanner sur le serveur. afin qu'il puisse rappeler.

Et une dernière option, qui n’est pas si mignonne, consiste à demander à l’agent logiciel d’interroger le serveur pour savoir s’il existe un "document numérisé et un téléchargement". commandez pour cette machine spécifique et réalisez cette opération lorsque celle-ci est présente.

En résumé, le fait d’avoir un agent logiciel local pour interagir avec le matériel local ne rend pas votre application Web moins "Web", tant que vous utilisez des normes Web - telles que XML, SOAP et autres - pour effectuer cette communication. .

Vous pouvez insérer une applet Java sur votre site Web. Cela peut accéder au scanner et envoyer les données via REST à votre serveur Web.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top