Bibliothèque de numérisation .Net

Isaac Kleinman

Bibliothèque de numérisation .Net


J’ai été affecté à un projet qui implique l’utilisation d’une API de numérisation de documents pour obtenir des documents utilisateur.L’application sera écrite C#et cible le framework .NET s’exécutant sur le bureau Windows.

D’après ce que j’ai rassemblé, le choix judicieux est d’utiliser une bibliothèque TWAIN. Cependant, je ne sais pas s’il faut aller avec des bibliothèques open source telles que dotnettwain et (la plus récemment mise à jour) NTwain , ou des options commerciales telles que dynamsoft et Atalasoft .

Je ne suis pas concerné par la comparaison des fonctionnalités car mes exigences sont probablement très basiques. Ma principale préoccupation est le temps de développement, et je suis perplexe par le readme de Ntwain qui déclare

Pour utiliser correctement cette bibliothèque, vous devez être raisonnablement familier avec la spécification TWAIN et comprendre comment elle fonctionne en général.

et

Il n’y a pas de fonctions avancées de numérisation d’une page pour moi

D’un autre côté, les solutions commerciales mentionnées semblent fonctionner avec les anciennes versions de la spécification TWAIN et ne semblent pas être développées très activement.

Réponses


 Berto10

Si vous recherchez une bibliothèque commerciale offrant une numérisation de haut niveau au format PDF, je vous recommande de jeter un œil au SDK TWAIN LEADTOOLS . Ce SDK est compatible avec les versions 1.X et 2.X de TWAIN. La numérisation d’une image au format PDF serait aussi simple que ce qui suit:

  twnSession = new TwainSession();
  twnSession.Startup(this.Handle, "", "", "", "", TwainStartupFlags.None);
  twnSession.SelectSource(string.Empty);
  twnSession.AcquirePage += new EventHandler<TwainAcquirePageEventArgs>(twnSession_AcquirePage);

Cela démarre une session double et invite une boîte de dialogue pour choisir le périphérique de numérisation (vous pouvez spécifier le scanner par programme si vous ne voulez pas de boîte de dialogue). Pour chaque page numérisée et chaque événement est déclenché, et dans cet événement, vous pouvez l’enregistrer sous forme de fichier PDF.

Voici un exemple de code sur la façon d’enregistrer l’image au format PDF:

 private void twnSession_AcquirePage(object sender, TwainAcquirePageEventArgs e)
  {
      using(RasterCodecs codecs = new RasterCodecs())
      {
          codecs.Save(e.Image, @"Test.PDF", RasterImageFormat.RasPdf, 0, 1, -1,1, CodecsSavePageMode.Append)
       }
  }

Veuillez noter que je suis un employé de cet outil.


 Jogai

D’un rapide coup d’œil aux produits, les bibliothèques open source tentent d’implémenter la spécification twain tandis que les produits commerciaux vous permettent d’appeler le pilote twain.

Ce dernier vous est plus utile je suppose. Voici un projet plus à jour qui prend en charge la spécification TWAIN 1.x / 2.x: https://sarafftwain.codeplex.com/


 Assistance Asprise

64bit Apps Access Pilotes TWAIN 32bit

La partie délicate est que la plupart des fournisseurs ne fournissent que des pilotes TWAIN 32 bits. Si vous développez des applications 64 bits, pensez à utiliser le SDK de numérisation Asprise C # VB.NET qui vous permet d’accéder correctement aux scanneurs TWAIN à partir d’applications x64 – Il offre également des fonctionnalités telles que la numérisation en bloc ADF en PDF multi-pages et la reconnaissance de lecture de codes à barres.

Vous n’avez pas besoin de comprendre la spécification TWAIN

Je ne suis pas concerné par la comparaison des fonctionnalités car mes exigences sont probablement très basiques. Ma principale préoccupation est le temps des développeurs

Ci-dessous, le code vous invite à sélectionner le périphérique et à effectuer des numérisations TWAIN et à enregistrer dans un fichier PDF de plusieurs pages:

using asprise_imaging_api;

Result result = new AspriseImaging().Scan(new Request()
    .SetTwainCap(TwainConstants.ICAP_PIXELTYPE, TwainConstants.TWPT_RGB)
    .SetPromptScanMore(true) // prompt to scan more pages
    .AddOutputItem(new RequestOutputItem(AspriseImaging.OUTPUT_SAVE, AspriseImaging.FORMAT_PDF)
      .SetSavePath(".${TMS}${EXT}")), // Environment variables in path will be expanded
  "select", true, true); // "select" prompts device selection dialog.

List<string> files = result == null ? null : result.GetImageFiles();
Console.WriteLine("Scanned: " + string.Join(", ", files == null ? new string[0] : files.ToArray()));

Vous pouvez également utiliser le DSL de numérisation TWAIN C # VB.NET:

Result result = new AspriseImaging().Scan("{" +
    "  "twain_cap_setting" : {" +
    "    "ICAP_PIXEXELTYPE" : "TWPT_RGB"" +
    "  }," +
    "  "prompt_scan_more" : true," +
    "  "output_settings" : [ {" +
    "    "type" : "save"," +
    "    "format" : "pdf"," +
    "    "save_path" : ".\${TMS}${EXT}"" +
    "  } ]" +
    "}", "select", true, true);

Si vous décidez de créer votre propre bibliothèque, c’est un bon point de départ: github.com/tmyroadctfig/twaindotnet

 

.NET, #de, bibliothèque, numérisation

 

elle.fr

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *