LEADTOOLS教程:如何使用智能捕獲LEADTOOLS從掃描文檔中提取條形碼數(shù)據(jù)
LEADTOOLS (Lead Technology)由Moe Daher and Rich Little創(chuàng)建于1990年,其總部設(shè)在北卡羅來納州夏洛特。LEAD的建立是為了使Daher先生在數(shù)碼圖象與壓縮技術(shù)領(lǐng)域的發(fā)明面向市場(chǎng)。在29年的發(fā)展歷程中,LEAD以其在全世界主要國家中占有的市場(chǎng)領(lǐng)導(dǎo)地位,在數(shù)碼圖象開發(fā)工具領(lǐng)域中已成為既定的全球領(lǐng)導(dǎo)者。LEADTOOLS開發(fā)與發(fā)布的LEAD是屢獲殊榮的開發(fā)工具包。
LEADTOOLS Barcode Pro包含了開發(fā)人員需要檢測(cè)、讀取和寫入超過100種不同的1D和2D條形碼類型和子類型,如UPC、EAN、Code 128、QR Code、Data Matrix和PDF417等等。相比于市場(chǎng)上其他同類型的條形碼成像技術(shù),LEADTOOLS Barcode Pro無疑是最好的。
點(diǎn)擊下載LEADTOOLS Barcode Pro免費(fèi)版
智能捕獲可以指從圖像或文檔捕獲數(shù)據(jù)的幾種不同方式。在這篇文章中,將討論如何智能地從掃描的文件中捕獲條形碼。LEADTOOLS TWAIN SDK和條碼SDK是開發(fā)人員可以輕松地使用它來創(chuàng)建物理文檔的掃描應(yīng)用程序,同時(shí)捕捉和提取發(fā)現(xiàn)的任何條形碼數(shù)據(jù)庫。
AIIM 最近的一項(xiàng)調(diào)查表明,32%的受訪公司使用智能捕獲技術(shù)從PDF和其他數(shù)字文檔中提取條形碼。說到這里,讓我們創(chuàng)建一個(gè).NET桌面應(yīng)用程序,它將識(shí)別掃描圖像中的條形碼。對(duì)于找到的每個(gè)條形碼,我們將提取數(shù)據(jù),然后將該數(shù)據(jù)保存到文本文件,同時(shí)將掃描的文檔另存為PDF。
這個(gè)應(yīng)用程序?qū)⒅皇褂萌齻€(gè)按鈕。一個(gè)用于選擇將保存PDF和TXT的輸出目錄,一個(gè)用于選擇要掃描的掃描儀,另一個(gè)用于執(zhí)行掃描并識(shí)別條形碼。
SelectDir_Click
// Change the output directory using (FolderBrowserDialog dlg = new FolderBrowserDialog()) { dlg.ShowNewFolderButton = true; if (dlg.ShowDialog(this) == DialogResult.OK) _outputDirectory = System.IO.Path.GetFullPath(dlg.SelectedPath); }
ScannerSelect_Click
// Select the scanner to use _twainSession.SelectSource(null);
Scan_Read_Click
// Scan the new page(s) _twainSession.Acquire(TwainUserInterfaceFlags.Show);
現(xiàn)在添加以下變量。
private static BarcodeEngine engine = new BarcodeEngine(); private static BarcodeReader reader = engine.Reader; // The Twain session private static TwainSession _twainSession; // The output directory for saving PDF files private static string _outputDirectory; // The image processing commands we are going to use to clean the scanned image private static List<RasterCommand> _imageProcessingCommands; private static int _scanCount; private static StringBuilder sb;
在Form1_Load中,添加用于設(shè)置許可證的代碼、初始化新的Twain會(huì)話、訂閱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中,結(jié)束TWAIN會(huì)話。
// 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); } }
想要購買LEADTOOLS產(chǎn)品正版授權(quán),或了解更多產(chǎn)品信息請(qǐng)點(diǎn)擊“咨詢?cè)诰€客服”
掃描關(guān)注慧聚IT微信公眾號(hào),及時(shí)獲取最新動(dòng)態(tài)及最新資訊