LEADTOOLSは(技術をリード)シャーロット、ノースカロライナ州に本社で、1990年に萌えDaherとリッチ・リトルによって作成されました。LEADは、指向発明の分野におけるデジタル画像圧縮技術の市場で氏Daherを確立することです。29年間の開発の過程では、主要国で保有鉛デジタル画像開発ツールの分野で世界的な市場でのリーダーシップを確立し世界的リーダーとなっています。LEADTOOLSのLEADの開発およびリリースは、受賞歴の開発キットです。
LEADTOOLSバーコードProは、検出される現像剤を収容する、ように読み取りおよび書き込み例えばUPC、EAN、コード128、QRコード、データマトリックス及びPDF417などの1Dおよび2Dバーコードおよびサブタイプの100以上の異なる種類の、そして。市場に出回っているバーコードイメージング技術の他の類似のタイプに比べて、LEADTOOLSバーコードProは最高です。
インテリジェント・キャプチャは、画像や文書からデータを取得するには、いくつかの異なる方法を意味することができます。この記事では、我々は、インテリジェントにスキャンした文書からバーコードをキャプチャする方法について説明します。LEADTOOLS TWAIN SDK及びバーコードSDK、開発者が容易に物理的原稿読取アプリケーションを作成するために使用することができ、同様にキャプチャし、データベース内で見つかったバーコードを抽出します。
AIIM A最近の調査では、回答者の32%は、PDFや他のデジタル文書からバーコードを抽出するために、スマートキャプチャー技術を使用することを示しました。のは、.NETデスクトップアプリケーションを作成してみましょう、と言った、それはバーコードのスキャン画像を認識します。見つかった各バーコードのために、私たちは、その後、データを抽出しますテキストファイルにデータを保存しますが、PDFとしてスキャンした文書。
このアプリケーションは、唯一の3つのボタンが使用されます。別のスキャンを実行するために、スキャンしたバーコードを認識するためのスキャナを選択するために、出力ディレクトリを選択し、TXTのためにPDFを保存します。
SelectDir_Click
出力ディレクトリを変更// 使用(FolderBrowserDialog DLG =新しいFolderBrowserDialog()) { dlg.ShowNewFolderButton = TRUE。 (dlg.ShowDialog(本)== DialogResult.OK)場合 _outputDirectory = System.IO.Path.GetFullPath(dlg.SelectedPath)。 }
ScannerSelect_Click
//使用するスキャナを選択し _twainSession.SelectSource(null)を、
Scan_Read_Click
//新しいページ(複数可)をスキャン _twainSession.Acquire(TwainUserInterfaceFlags.Showを)。
ここで、次の変数を追加します。
プライベート静的BarcodeEngineエンジン=新しいBarcodeEngine(); プライベート静的BarcodeReaderリーダー= engine.Reader。 //トウェインセッション プライベート静的TwainSession _twainSession。 PDFファイルに保存する//出力ディレクトリ プライベート静的な文字列を_outputDirectory。 //私たちは、スキャンした画像きれいに使用しようとしている画像処理コマンド プライベート静的リスト<RasterCommand> _imageProcessingCommands。 プライベート静的int型_scanCount。 プライベート静的のStringBuilder SB;
Form1_Loadでは、ライセンスを設定し、新しいセッショントウェインを初期化し、TwainSession.Acquireイベントをサブスクライブして、任意の画像処理コマンドを初期化するコードを追加します。
RasterSupport.SetLicense(@"", ""); _twainSession = new TwainSession(); _twainSession.Startup(this.Handle, "My Company", "My Product", "My Version", "My Application", TwainStartupFlags.None); _twainSession.AcquirePage += new EventHandler<TwainAcquirePageEventArgs>(_twainSession_AcquirePage); // Add as many as you like, here we will add Deskew and Despeckle _imageProcessingCommands = new List<RasterCommand>(); _imageProcessingCommands.Add(new DeskewCommand()); _imageProcessingCommands.Add(new DespeckleCommand());
在Form1_FormClosed中,结束TWAIN会话。
// End the twain session _twainSession.Shutdown();
最后添加Twain获取句柄的代码。
private void _twainSession_AcquirePage(object sender, TwainAcquirePageEventArgs e) { _scanCount++; // We have a page RasterImage image = e.Image; // First, run the image processing commands on it foreach (RasterCommand command in _imageProcessingCommands) { command.Run(image); } // Read all the barcodes in this image BarcodeData[] barcodes = reader.ReadBarcodes(e.Image, LeadRect.Empty, 0, null); // Print out the barcodes we found sb = new StringBuilder(); sb.AppendLine($"Contains {barcodes.Length} barcodes"); for (int i = 0; i < barcodes.Length; i++) { BarcodeData barcode = barcodes[i]; sb.AppendLine($" {i + 1} - {barcode.Symbology} - {barcode.Value}"); } // Save string builder to a text file System.IO.File.WriteAllText($@"{_outputDirectory}\barcodes{_scanCount}.txt", sb.ToString()); // Save image as PDF using (RasterCodecs codecs = new RasterCodecs()) { codecs.Save(e.Image, $@"{_outputDirectory}\ScannedImage{_scanCount}.pdf", RasterImageFormat.RasPdf, 0); } }