Interface com digitalizador do usuário final a partir de um webapp (web / integração scanner)

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

Pergunta

Considere o seguinte procedimento de varredura em um documento típico manipulação webapp:

  • O usuário digitaliza um documento usando um scanner conectado ao seu / sua computador
  • A imagem digitalizada for salvo localmente no computador do usuário como um arquivo BMP / JPG / TIF / PNG
  • O usuário aperta um upload de arquivo "Browse .." botão no aplicativo web
  • O usuário é apresentado com um diálogo de arquivo que ele / ela usa para localizar a imagem digitalizada
  • Os acessos de usuários "Carregar imagem" e a imagem digitalizada é enviado para o servidor onde está armazenado

Este processo é bastante complicado e eu gostaria de reduzir o número de etapas, a fim de tornar o processo mais user prova amigável / tolo. Sob circunstâncias ideais os passos acima seria substituído com apenas um passo em que o procedimento de iniciar a digitalização de documentos, digitalização de documentos completos e fazer upload de imagem resultante é automaticamente desencadeado a partir da webapp ao clicar digamos "Scan e fazer o upload". Unfortunely parece que o estado de "integração web / scanner" é bastante pobre então isso pode ser utopia.

Como você resolver este problema? Mais especificamente, como você iria sobre reduzir as etapas número envolvem no caso de uso descrito?

Foi útil?

Solução

Se o seu público-alvo está executando o Windows e IE, e você não se importa de passar alguns $$, Atalasoft tem alguns componentes que vai fazer exatamente o que você está procurando.

Outras dicas

Bem, dois anos se passaram, então aqui está uma atualização sobre o estado da arte para aqueles que estão se juntando a nós.

Dynamsoft e Atalasoft têm multi-browser web-digitalizar toolkits que são compatíveis com qualquer pilha do lado do servidor. Ambos exigem que o usuário instalar um ActiveX (no IE) ou um plug-in NPAPI (Chrome, Firefox, etc.) para obter acesso ao scanner por meio da API TWAIN.

Obviamente, se você tem o tempo ou um orçamento limitado, você pode criar seu próprio plugin. Recomendo vivamente a Firebreath plugin do quadro , e qualquer TWAIN biblioteca, em vez de escrever o seu próprio TWAIN código.

Uma vez que o ActiveX ou plug-in estiver instalado, o resto do trabalho é uma combinação de javascript e HTML no cliente, e algum tipo de manipulador no servidor para aceitar e processar a imagem de entrada, o que pode ser feito para olhar apenas como um formulário de várias enviar com um ficheiro anexo.

Eu recomendo fazer o upload de imagens em javascript usando AJAX, porque é então parte do mesmo navegador 'sessão' como a página web, e herda as configurações de proxy, cookies de sessão e de autenticação do lado do servidor do browser. Eu não sei sobre o controle de Dynamsoft, o Atalasoft kit de ferramentas inclui tais upload AJAX. A imagem (s) são entregues a partir do plug-in para o javascript como uma string Base64, arquivo de forma que nenhum local é realmente criado.

Disclaimer:. Eu trabalho em conjunto de ferramentas web-digitalizar WingScan de Atalasoft

Na verdade, eu vi alguém no banco fazer isso ao configurar a minha conta e eu estava totalmente espantado. Banco em questão estava usando o Windows e IE, eu assumo o seu em um ambiente igualmente controlada. Eu acho que o banco usou uma combinação de um driver de scanner custom / previsível e um controle ActiveX.

A página carregada, que disse: "Abrir o scanner", o funcionário bateu o documento em e bateu de digitalização na página web, a página mudado para dizer Scanning, em seguida, ele mostrou o documento digitalizado na página web para o membro do pessoal para Aprovar. Só posso supor que o controlador do scanner enviar a imagem para um determinado local e o controle Active X foi polling para que ele apareça, uma vez que apareceu ele mostrou a imagem na tela, uma vez que o membro da equipe que tinha aprovado o ativo x carregou-o em o fundo. Ela abriu a página seguinte e continuou com o resto do processo.

Deus sabe como eles fizeram todo o trabalho técnico, mas isso pode ser feito.

Silverlight 4 está saindo em breve. Supõe-se para ter a capacidade de interagir com objetos COM no computador do usuário (desde que estejam executando o Windows). Em teoria, você chamar métodos WIA a partir da página web Silverlight.

Nós implementou uma solução para implementar Remota de Depósitos para um banco. Ele funciona apenas no IE. A winforms dll foi criado que interfaces com LeadTools TWAIN dll. LeadTools TWAIN dll resumos todo o minutae TWAIN. Esta abordagem é slighly melhor do que usar um controle ActiveX. .NET Framework seriam necessários no cliente. As imagens digitalizadas são postados de volta para uma variável escondida na página e são processados ??no servidor.

Hmm, eu sempre quis olhar para um arquivo digitalizado antes que eu fiz qualquer coisa com ele, mas eu suponho que depende de seu scanner e quanto a qualidade que você precisa.

Se o objetivo é "automatizar o processo de digitalização e upload" em oposição a "escrever um aplicativo web", eu ia escrever um script AutoIt para controlar o software do scanner existente e um programa de ftp simples.

A opção mais provável para remover o maior número de passos, provavelmente estaria escrevendo um utilitário de digitalização personalizado que o usuário baixar e executar em sua máquina local.

SANE ou TWAIN iria lidar recebendo a imagem digitalizada. cURL poderia de alça upload da imagem para a sua aplicação web. Para tornar as coisas ainda mais fácil para o usuário final, eu usaria algo como uma conexão Comet para atualizar a página web quando o arquivo estava disponível.

Se isso não for uma opção, você pode olhar para ver o que opções os usuários provavelmente vai ter usando seu software scanners. Eu acredito que muitos programas agora suportam a digitalização para e-mail ou FTP.

A solução que eu usei para uma aplicação intranet, utilizando scanner de multifunções / copiadoras era digitalizar para um compartilhamento SMB que o servidor web teve acesso. O usuário só vai para as varreduras de copiadora para o compartilhamento e quando voltar para sua mesa, eles ir para a página novos scans que mostra uma lista de todos os novos arquivos não transformados.

Uma vez que seu público é controlado ambiente, você pode escrever sua própria extensão do navegador / programa baseado em WIA / TWAIN que faz a varredura. Se você escolher as extensões do navegador, como BHO / ActiveX / XPCOM, etc, você precisa obter a permissão do usuário para instalar a sua extensão. Se você optar por escrever um programa que você pode precisar de tecnologias de implantação web como ClickOnce ou Java Web Start para ser iniciado a partir da web.

Interface TWAIN é uma dor no Windows. Complexidade de lado, você tem que mostrar algum GUI escrito por diferentes desenvolvedores de driver scanner. Pode ser a única maneira de apoiar scanners antigos ou não recursos expostos por meio de outras interfaces, como scans de várias full-velocidade de um alimentador de documentos.

WIA da Microsoft faz interface com scanner de muito mais fácil com um modelo de objeto de script, no entanto recursos específicos do scanner não estão disponíveis e alguns scanners antigos não suportam a interface.

Após a verificação, você pode chamar um serviço web para notificar o servidor ea página web pode atualizar periodicamente para verificar novas imagens.

Temos feito algo semelhante. foi utilizado um programa TWAIN de linha de comando ( http://www.burrotech.com/quickscan.php). $$ $ 49

1) Nós desenvolvemos um pequeno aplicativo .NET para executar o programa QuickScan como um comando shell.
2) O comando foi atribuída ao botão Scan.
3) Uma vez que o usuário pressiona no botão Scan, será apresentado um pedido para digitar o nome do arquivo. O usuário salva a transação ID como o nome do arquivo.
4) Outra aplicação .Net (ou talvez o mesmo mencionado antes) irá ler este arquivo e enviá-lo no banco de dados, considerando que o nome do arquivo é o ID da transação.

Trabalhou como uma faca quente na manteiga!


Você pode tentar exibir o ID da transação em IE, o usuário para selecionar o ID, em seguida, pressiona Scan. Sua aplicação vai ler o texto selecionado e salve o arquivo usando o texto selecionado como o nome do arquivo. Nós havne't tentei, mas ele deve funcionar.

É somente utopia se você acha que aplicações web são limitados a navegadores web, na verdade, as aplicações web pode incluir uma série de diferentes tecnologias, além de HTML e Javascript.

A forma legal de resolver esse problema - na verdade, eu já utilizado que para alguns dispositivos usbserial - é implementar o aplicativo usando SOAP + XMPP. Você pode fazer isso em Perl usando XML :: CompileX :: Transporte :: SOAPXMPP, o Catalyst :: Motor :: XMPP2, o Catalyst :: Controller :: SOAP e Catalisador :: Modelo :: SOAP.

A coisa interessante sobre o uso XMPP é que simplifica a gestão de abordar, desde que você use o JID (Jabber ID) para procurar o agente de software, e não um host + porta abordando esquema. A segunda parte interessante de usar XMPP é apoiar mais facilmente o servidor empurrar informações para o cliente.

Mas se você não quer lidar com XMPP você ainda pode fazer a mesma coisa com um leve servidor embutido http - HTTP :: Servidor :: Simple, em Perl - e de algum modo registrar o endereço do scanner atual no servidor para que ele possa chamar de volta.

E a última opção, que não é tão bonito, é ter o agente de software interrogar o servidor para ver quando há um "documento de digitalização e envio" para que essa máquina específica e perceber que a operação quando que está presente.

Em resumo, tendo um agente de software local para interagir com o hardware local não faz o seu webapp menos "web", contanto que você usar padrões web - como XML, SOAP e outros - para realizar essa comunicação.

Você pode colocar um applet Java em seu site. Isso pode acessar o scanner e enviar os dados via REST para o seu servidor web.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top