Domanda

Considera la seguente procedura di scansione in una tipica webapp per la gestione dei documenti:

  • L'utente esegue la scansione di un documento utilizzando uno scanner collegato al proprio computer
  • L'immagine acquisita viene salvata localmente sul computer dell'utente come file BMP / JPG / TIF / PNG
  • L'utente esegue il caricamento di un file " Sfoglia .. " pulsante nell'applicazione web
  • All'utente viene presentata una finestra di dialogo file che utilizza per individuare l'immagine acquisita
  • L'utente preme " Carica immagine " e l'immagine acquisita viene caricata sul server in cui è archiviata

Questo processo è piuttosto complicato e mi piacerebbe ridurre il numero di passaggi per renderlo più user friendly / a prova di errore. In circostanze ideali, i passaggi precedenti sarebbero sostituiti con un solo passaggio in cui la procedura avvia la scansione del documento, la scansione completa del documento e il caricamento dell'immagine risultante viene automaticamente attivato dalla webapp quando si fa clic su "Scansione e caricamento". Purtroppo sembra che lo stato di "integrazione web / scanner" è piuttosto scadente, quindi potrebbe trattarsi di utopia.

Come affronteresti questo problema? Più in particolare, come farebbe per ridurre i passaggi numerici coinvolti nel caso d'uso descritto?

È stato utile?

Soluzione

Se il tuo pubblico di destinazione utilizza Windows e IE e non ti dispiace spendere qualche dollaro, Atalasoft ha alcuni componenti che faranno proprio quello che stai cercando.

Altri suggerimenti

Bene, sono passati due anni, quindi ecco un aggiornamento sullo stato dell'arte per coloro che si stanno appena unendo a noi.

Sia Dynamsoft che Atalasoft dispone di toolkit di scansione web multi-browser compatibili con qualsiasi stack lato server. Entrambi richiedono all'utente di installare un ActiveX (in IE) o un plug-in NPAPI (Chrome, Firefox, ecc.) Per ottenere l'accesso allo scanner tramite l'API TWAIN.

Ovviamente se hai il tempo o un budget limitato, puoi creare il tuo plugin. Consiglio vivamente la framework di plugin FireBreath e qualsiasi libreria TWAIN piuttosto che scrivere il proprio TWAIN codice.

Una volta installato ActiveX o plugin, il resto del lavoro è una combinazione di javascript & amp; HTML sul client e una sorta di gestore sul server per accettare ed elaborare l'immagine in arrivo, che può essere fatta apparire come un modulo multipart inviato con un file allegato.

Consiglio di eseguire il caricamento delle immagini in javascript utilizzando AJAX, perché fa quindi parte della stessa 'sessione' del browser della pagina Web ed eredita le impostazioni proxy del browser, i cookie di sessione e l'autenticazione lato server. Non conosco il controllo di Dynamsoft, il toolkit Atalasoft include tale caricamento AJAX. Le immagini vengono trasferite dal plug-in al javascript come una stringa con codifica base64, quindi non viene effettivamente creato alcun file locale.

Dichiarazione di non responsabilità: lavoro sul toolkit di scansione web WingScan di Atalasoft.

In realtà ho visto qualcuno in banca farlo durante la configurazione del mio account e sono rimasto totalmente sorpreso. Bank in questione utilizzava Windows e IE, presumo che tu sia in un ambiente ugualmente controllato. Penso che la banca abbia usato una combinazione di un driver scanner personalizzato / prevedibile e un controllo ActiveX.

Una pagina caricata che diceva " Apri lo scanner " il membro dello staff ha inserito il documento e ha premuto Scansione sulla pagina Web, quindi la pagina è cambiata per dire Scansione, quindi ha mostrato il documento scansionato sulla pagina Web per l'approvazione del membro dello staff. Posso solo supporre che il driver dello scanner abbia inviato l'immagine in una determinata posizione e che il controllo X attivo stesse eseguendo il polling affinché appaia, una volta apparso ha mostrato l'immagine sullo schermo, una volta che il membro del personale l'ha approvata l'x attivo l'ha caricata in lo sfondo. Aprì la pagina successiva e proseguì con il resto del processo.

Dio sa come hanno fatto funzionare tutta quella tecnologia, ma può essere fatto.

Silverlight 4 uscirà presto. Dovrebbe avere la capacità di interagire con gli oggetti COM sul computer dell'utente (a condizione che eseguano Windows). In teoria, chiami i metodi WIA dalla tua pagina web Silverlight.

Abbiamo implementato una soluzione per implementare il deposito remoto per una banca. Funziona solo in IE. È stata creata una winforms dll che si interfaccia con la dll TWAIN di LeadTools. Leadtools TWAIN dll estrae tutte le minute TWAIN. Questo approccio è leggermente migliore rispetto all'utilizzo di un controllo ActiveX. .NET Framework sarebbe necessario sul client. Le immagini scansionate vengono postate su una variabile nascosta nella pagina e vengono elaborate sul server.

Hmm, ho sempre voluto guardare un file scansionato prima di fare qualcosa con esso, ma suppongo che dipenda dal tuo scanner e da quanta qualità hai bisogno.

Se l'obiettivo è "automatizzare il processo di scansione e caricamento" al contrario di "scrivere un'app Web", scriverei uno script AutoIt per controllare il software dello scanner esistente e un semplice programma ftp.

L'opzione che più probabilmente rimuoverà il maggior numero di passaggi, probabilmente sarebbe scrivere un'utilità di scansione personalizzata che l'utente scaricherà ed eseguirà sul proprio computer locale.

SANE o TWAIN gestiranno l'acquisizione dell'immagine digitalizzata. cURL potrebbe non gestire il caricamento dell'immagine sulla tua app web. Per rendere le cose ancora più facili per l'utente finale, userei qualcosa come una connessione Comet per aggiornare la pagina Web quando il file era disponibile.

Se questa non è un'opzione, potresti vedere quali opzioni i tuoi utenti avranno probabilmente usando il loro software scanner. Credo che molti programmi ora supportino la scansione su e-mail o ftp.

La soluzione che ho usato per un'app Intranet, utilizzando scanner / fotocopiatrici multifunzione, era di eseguire la scansione su una condivisione SMB a cui il server Web aveva accesso. L'utente accede alla fotocopiatrice esegue la scansione della condivisione e quando torna alla propria scrivania, passa alla nuova pagina di scansione che mostra un elenco di tutti i nuovi file non elaborati.

Poiché il tuo pubblico è un ambiente controllato, puoi scrivere l'estensione / il programma del tuo browser basato su WIA / TWAIN che esegue la scansione. Se si scelgono estensioni del browser come BHO / ActiveX / XPCOM, ecc., È necessario ottenere l'autorizzazione dell'utente per installare l'estensione. Se scegli di scrivere un programma, potresti aver bisogno di tecnologie di distribuzione web come ClickOnce o Java Web Start per essere lanciate dal web.

L'interfaccia di TWAIN è un problema per Windows. Complessità a parte, è necessario visualizzare alcune GUI scritte da diversi sviluppatori di driver dello scanner. Potrebbe essere l'unico modo per supportare vecchi scanner o funzionalità non esposte tramite altre interfacce come scansioni multipagina ad alta velocità da un alimentatore di documenti.

La WIA di Microsoft rende l'interfaccia con lo scanner molto più semplice con un modello a oggetti di scripting, tuttavia le funzionalità specifiche dello scanner non sono disponibili e alcuni vecchi scanner non supportano l'interfaccia.

Dopo la scansione è possibile chiamare un servizio Web per avvisare il server e la pagina Web può essere periodicamente aggiornata per controllare nuove immagini.

Abbiamo fatto qualcosa di simile. abbiamo utilizzato un programma TWAIN da riga di comando ( http://www.burrotech.com/quickscan.php). $ $ 49

1) Abbiamo sviluppato una piccola applicazione .Net per eseguire il programma QuickScan come comando shell.
2) Il comando è stato assegnato al pulsante Scan.
3) Una volta che l'utente preme il pulsante di scansione, verrà visualizzato un messaggio per inserire il nome del file. L'utente salva l'ID transazione come nome del file.
4) Un'altra applicazione .Net (o forse la stessa menzionata in precedenza) leggerà questo file e lo caricherà nel database considerando che il nome file è l'ID della transazione.

Ha funzionato come un coltello caldo nel burro!


Puoi provare a visualizzare l'ID transazione in IE, l'utente per selezionare l'ID quindi premere Scansione. L'applicazione leggerà il testo SELEZIONATO e salverà il file utilizzando il testo SELEZIONATO come nome del file. Non l'abbiamo provato ma dovrebbe funzionare.

È solo utopia se pensi che le applicazioni web siano limitate ai browser web, infatti, le applicazioni web possono includere molte tecnologie diverse, oltre a HTML e Javascript.

Il modo migliore per risolvere quel problema - in effetti, l'ho già usato per alcuni dispositivi Web - è implementare la tua applicazione usando SOAP + XMPP. Puoi farlo in Perl usando XML :: CompileX :: Transport :: SOAPXMPP, Catalyst :: Engine :: XMPP2, Catalyst :: Controller :: SOAP e Catalyst :: Model :: SOAP.

La cosa interessante dell'utilizzo di XMPP è che semplifica la gestione degli indirizzi, poiché si utilizza JID (Jabber ID) per cercare l'agente software, non alcuni schemi di indirizzamento porte + host. La seconda parte interessante dell'utilizzo di XMPP è supportare più facilmente il server che invia informazioni al client.

Ma se non vuoi gestire XMPP puoi comunque fare la stessa cosa con un server http incorporato leggero - HTTP :: Server :: Simple, in Perl - e in qualche modo registrare l'attuale indirizzo dello scanner nel server così può richiamare.

E un'ultima opzione, che non è così carina, è quella di fare in modo che l'agente software esegua il polling del server per vedere quando c'è un documento "scansiona e carica" ordina per quella macchina specifica e realizza quell'operazione quando è presente.

In breve, avere un agente software locale per interagire con l'hardware locale non rende la tua webapp meno "web", purché utilizzi standard web - come XML, SOAP e altri - per eseguire quella comunicazione .

È possibile inserire un'applet Java nel proprio sito Web. Questo può accedere allo scanner e inviare i dati tramite REST al tuo server web.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top