本教程展示了如何创建一个主组形式,认识和处理表单使用LEADTOOLS低级形式的界面。
在SDK可以利用的任何功能之前,一个有效的运行许可证必须设置。说明如何获得运行许可证是指获得许可证。
| 概述 | |
|---|---|
| 总结 | 本教程介绍了如何识别和处理c#控制台应用程序的一种形式。 |
| 完成时间 | 30分钟 |
| Visual Studio项目 | 下载教程项目(4 KB) |
| 平台 | Windows c#控制台应用程序 |
| IDE | Visual Studio 2017中,2019年 |
| 开发许可 | 下载LEADTOOLS |
| 试试用另一种语言 |
熟悉基本的步骤创建一个项目的审查添加引用和设置一个许可证教程,在工作之前手动识别和处理形式——c#控制台教程。
从项目中创建的副本添加引用和设置一个许可证教程。如果你没有这个项目,按照这个教程中的步骤创建它。
的引用需要取决于项目的目的。引用可以通过添加一个或另一个下面的两种方法(但不是全部)。对于这个项目,还需要以下引用:
如果使用NuGet引用,本教程需要以下NuGet包:
Leadtools.Document.Sdk如果使用本地DLL的引用,下面的DLL是必要的。dll位于< INSTALL_DIR > \ LEADTOOLS22 \ Bin \ Dotnet4 \ x64:
Leadtools.Codecs.dllLeadtools.Codecs.Tif.dllLeadtools.Codecs.Fax.dllLeadtools.dllLeadtools.Document.dllLeadtools.Document.Writer.dllLeadtools.Forms.Common.dllLeadtools.Forms.Processing.dllLeadtools.Forms.Recognition.dllLeadtools.Forms.Recognition.Ocr.dllLeadtools.Ocr.dllLeadtools.Ocr.LEADEngine.dll对于一个完整的列表的应用程序所需的DLL文件,请参考文件包含在您的应用程序。
许可解锁项目需要的特性。它必须设置工具箱函数被调用之前。详情,包括教程为不同的平台,请参考设置一个运行时许可。
有两种类型的运行时许可证:
请注意
添加LEADTOOLS NuGet和本地引用设置许可中会详细介绍添加引用和设置一个许可证教程。
与项目创建、添加引用,许可,可以开始编码。
在解决方案资源管理器,打开Program.cs。添加以下语句使用块顶部。
/ /使用块使用系统;使用先;使用System.Collections.Generic;使用Leadtools;使用Leadtools.Codecs;使用Leadtools.Forms.Common;使用Leadtools.Ocr;使用Leadtools.Forms.Recognition;使用Leadtools.Forms.Recognition.Ocr;使用Leadtools.Forms.Processing;
添加一个新方法InitFormsEngines ()然后在调用它主要方法。添加以下代码来初始化FormRecognitionEngine, RasterCodes, IOcrEngine FormProcessingEngine。
/ /添加这些全球成员的类私人静态FormRecognitionEngine recognitionEngine;私人静态RasterCodecs编解码器;私人静态IOcrEngine formsOCREngine;私人静态FormProcessingEngine processingEngine;
静态无效主要(字符串[]参数){SetLicense ();InitFormsEngines ();}
静态无效InitFormsEngines (){Console.WriteLine (“初始化引擎”);编解码器=新RasterCodecs ();recognitionEngine =新FormRecognitionEngine ();processingEngine =新FormProcessingEngine ();formsOCREngine = OcrEngineManager.CreateEngine (OcrEngineType.LEAD);formsOCREngine.Startup(编解码器,零,零,@“C: \ LEADTOOLS22 \ Bin \常见\ OcrLEADRuntime”);OcrObjectsManager OcrObjectsManager =新OcrObjectsManager (formsOCREngine);ocrObjectsManager。引擎= formsOCREngine;recognitionEngine.ObjectsManagers.Add (ocrObjectsManager);Console.WriteLine (“引擎初始化成功”);}
程序类中添加两个新方法CreateMasterFormAttributes ()和RecognizeForm ()。
私人静态无效CreateMasterFormAttributes (){Console.WriteLine (“处理主表单”);字符串[]masterFileNames = Directory.GetFiles (@ " C: \ LEADTOOLS22 \ \ \ \ MasterForm集形式\ OCR图像资源”,“* .tif”,SearchOption.AllDirectories);foreach(字符串masterFileName在masterFileNames){字符串formName = Path.GetFileNameWithoutExtension (masterFileName);使用(RasterImage图像=编解码器。加载(masterFileName 0 CodecsLoadByteOrder。BgrOrGray 1,1)){FormRecognitionAttributes masterFormAttributes = recognitionEngine。CreateMasterForm (formName Guid.Empty,零);为(int我= 0;我< image.PageCount;我+ +){的形象。页面= i + 1;recognitionEngine。AddMasterFormPage (masterFormAttributes形象,零);}recognitionEngine.CloseMasterForm (masterFormAttributes);文件。WriteAllBytes (formName +“。斌”masterFormAttributes.GetData ());}}Console.WriteLine (“主表单处理完成”);Console.WriteLine (“= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = ");}
私人静态无效RecognizeForm (){Console.WriteLine (“认识形式\ n”);varGetProjectDirectory = Path.GetDirectoryName (System.Reflection.Assembly.GetExecutingAssembly () .Location);字符串formToRecognize =@“C: \ LEADTOOLS22 \资源\ \图片形式\形式识别\ OCR \ W9_OCR_Filled.tif”;使用(RasterImage图像=编解码器。加载(formToRecognize 0 CodecsLoadByteOrder。BgrOrGray 1,1)){FormRecognitionAttributes filledFormAttributes = recognitionEngine.CreateForm (零);为(int我= 0;我< image.PageCount;我+ +){的形象。页面= i + 1;recognitionEngine。AddFormPage (filledFormAttributes形象,零);}recognitionEngine.CloseForm (filledFormAttributes);字符串resultMessage =“表单不能认可”;字符串[]masterFileNames = Directory.GetFiles (GetProjectDirectory,“*。斌”);foreach(字符串masterFileName在masterFileNames){字符串fieldsfName = Path.GetFileNameWithoutExtension (masterFileName) +“xml”;字符串fieldsfullPath = Path.Combine (@ " C: \ LEADTOOLS22 \ \ \ \ MasterForm集形式\ OCR图像资源”,fieldsfName);processingEngine.LoadFields (fieldsfullPath);FormRecognitionAttributes masterFormAttributes =新FormRecognitionAttributes ();masterFormAttributes.SetData (File.ReadAllBytes (masterFileName));FormRecognitionResult recognitionResult = recognitionEngine。CompareForm (masterFormAttributes filledFormAttributes,零);如果(recognitionResult。信心> = 80){列出< PageAlignment >对齐=新列表< PageAlignment > ();为(intk = 0;k < recognitionResult.PageResults.Count;k + +)alignment.Add (recognitionResult.PageResults [k] .Alignment);resultMessage = $“这种形式被认为是一个{Path.GetFileNameWithoutExtension (masterFileName)}”;ProcessForm(图片、对齐方式);打破;}}Console.WriteLine (resultMessage“识别结果”);Console.WriteLine (“= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = \ n ");}}
这两种方法后的主要方法InitFormsEngines ()方法。
/ /调用这些在Main()后InitFormsEngines ();CreateMasterFormAttributes ();RecognizeForm ();
LEADTOOLS SDK附带的示例主形成样本集和填充的表单进行识别和处理。本教程将使用这些示例。安装后的示例文件可以在这里找到:< INSTALL_DIR > \ LEADTOOLS22 \ \ \图片形式的资源
程序类中添加一个新的方法,ProcessForm (RasterImage形象,列表< PageAlignment >对齐)。调用此方法RecognizeForm ()从上一步。
私人静态无效ProcessForm (RasterImage形象,列表< PageAlignment >对齐){processingEngine。OcrEngine = formsOCREngine;字符串resultsMessage =字符串空虚;processingEngine。过程(图像对齐);foreach(FormPage FormPage在processingEngine.Pages)foreach(FormField字段在formPage)如果(字段! =零)resultsMessage = $“{resultsMessage}{字段。}={(字段名称。结果TextFormFieldResult)。text} \ n”;如果(字符串.IsNullOrEmpty (resultsMessage))Console.WriteLine (“没有加工领域”,“FieldProcessing结果”);其他的Console.WriteLine (resultsMessage”字段ProcessingResults”);}
在主方法下添加以下代码RecognizeForm ()方法正确关闭OCR引擎和处置IOcrEngine。
如果(formsOCREngine ! =零& & formsOCREngine.IsStarted)formsOCREngine.Shutdown ();
按运行项目F5,或通过选择调试- >开始调试。
如果是正确的步骤,应用程序运行并显示公认的形式。
对于这个示例,使用W9形式与6填充字段:企业名称、地址,城市,州,邮编,和名称。所有这些字段是正确检测和标记,以及形式被正确识别。
本教程演示了如何从主表单与创建一组属性FormRecognitionAttributes类和识别使用的一种形式FormRecognitionEngine类。