本教程展示了如何创建一个主组形式,认识、表单和流程在c#中使用LEADTOOLS低级形式接口。net核心应用程序。
概述 | |
---|---|
总结 | 本教程介绍了如何识别和处理形式在c#中使用低级形式识别和处理的。net核心控制台应用程序。 |
完成时间 | 30分钟 |
Visual Studio项目 | 下载教程项目(2 KB) |
平台 | c# . net核心控制台应用程序 |
IDE | Visual Studio 2017中,2019年 |
开发许可 | 下载LEADTOOLS |
试试用另一种语言 |
|
熟悉基本的步骤创建一个项目的审查添加引用和设置一个许可证教程,在工作之前手动识别和处理形式——c#。net核心教程。
从项目中创建的副本添加引用和设置一个许可证教程。如果你没有这个项目,按照这个教程中的步骤创建它。
的引用需要取决于项目的目的。可以通过添加引用NuGet包。
本教程需要以下NuGet包:
Leadtools.Document.Sdk
对于一个完整的列表的应用程序所需的DLL文件,请参考文件包含在您的应用程序。
许可解锁项目需要的特性。它必须设置工具箱函数被调用之前。详情,包括教程为不同的平台,请参考设置一个运行时许可。
有两种类型的运行时许可证:
请注意
添加LEADTOOLS NuGet引用和设置许可中会详细介绍添加引用和设置一个许可证教程。
与项目创建、添加引用,许可,可以开始编码。
在解决方案资源管理器,打开Program.cs
。添加以下语句的使用
块的顶部Program.cs
。
使用系统;
使用先;
使用System.Collections.Generic;
使用Leadtools;
使用Leadtools.Codecs;
使用Leadtools.Forms.Common;
使用Leadtools.Ocr;
使用Leadtools.Forms.Recognition;
使用Leadtools.Forms.Recognition.Ocr;
使用Leadtools.Forms.Processing;
添加下面的全局变量程序
类。
私人静态FormRecognitionEngine recognitionEngine;
私人静态RasterCodecs编解码器;
私人静态IOcrEngine formsOCREngine;
私人静态FormProcessingEngine processingEngine;
添加一个新方法程序
类命名InitFormsEngines ()
。调用InitFormsEngines ()
方法在Main ()
以下方法设置许可调用,如下所示。
静态无效主要(字符串[]参数)
{
如果(! SetLicense ())
Console.WriteLine (“错误设置许可证”);
其他的
Console.WriteLine (“许可文件已成功设置”);
InitFormsEngines ();
CreateMasterFormAttributes ();
RecognizeForm ();
}
将下面的代码添加到InitFormsEngines ()
初始化方法FormRecognitionEngine
,FormProcessingEngine
,RasterCodecs
,IOcrEngine
对象。
静态无效InitFormsEngines ()
{
Console.WriteLine (“初始化引擎”);
编解码器=新RasterCodecs ();
recognitionEngine =新FormRecognitionEngine ();
processingEngine =新FormProcessingEngine ();
formsOCREngine = OcrEngineManager.CreateEngine (OcrEngineType.LEAD);
formsOCREngine.Startup(编解码器,零,零,@“C: \ LEADTOOLS21 \ Bin \常见\ OcrLEADRuntime”);
OcrObjectsManager OcrObjectsManager =新OcrObjectsManager (formsOCREngine);
ocrObjectsManager。引擎= formsOCREngine;
recognitionEngine.ObjectsManagers.Add (ocrObjectsManager);
Console.WriteLine (“引擎初始化成功”);
}
在程序
类中添加两个新方法命名CreateMasterFormAttributes ()
和RecognizeForm ()
。这两个新方法将被称为内Main ()
方法,以下InitFormsEngines ()
方法,如上所示。确保CreateMasterFormAttributes ()
以上方法被调用RecognizeForm ()
方法,如主表单的属性之前需要创建表单可以被认可。
将下面的代码添加到CreateMasterFormAttributes ()
方法来创建主表单属性和添加主表单FormsRecognitionEngine
对象。
私人静态无效CreateMasterFormAttributes ()
{
Console.WriteLine (“处理主表单”);
字符串[]masterFileNames = Directory.GetFiles (@ " C: \ LEADTOOLS21 \ \ \ \ 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 ()
方法识别了集合的形式从一个主表单。
私人静态无效RecognizeForm ()
{
Console.WriteLine (“认识形式\ n”);
varGetProjectDirectory = Path.GetDirectoryName (System.Reflection.Assembly.GetExecutingAssembly () .Location);
字符串formToRecognize =@“C: \ LEADTOOLS21 \资源\ \图片形式\形式识别\ 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: \ LEADTOOLS21 \ \ \ \ 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 ");
}
}
请注意
运送和安装LEADTOOLS SDK示例主形成样本集和填充的表单进行识别和处理。本教程使用这些样品。安装在示例文件
< INSTALL_DIR > \ LEADTOOLS21 \ \ \图片形式的资源
。
在程序
类添加一个新方法,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”);
}
在主要
方法,添加formsOCREngine.Shutdown ()
下代码RecognizeForm ()
方法正确地关闭了OCR引擎。的Main (string [] args)
部分现在应该看起来像:
静态无效主要(字符串[]参数)
{
如果(! SetLicense ())
Console.WriteLine (“错误设置许可证”);
其他的
Console.WriteLine (“许可文件已成功设置”);
InitFormsEngines ();
CreateMasterFormAttributes ();
RecognizeForm ();
如果(formsOCREngine ! =零& & formsOCREngine.IsStarted)
formsOCREngine.Shutdown ();
}
按运行项目F5,或通过选择调试- >开始调试。
如果步骤正确,显示控制台和应用公认的形式随着加工领域。对于这个示例,使用W9形式与6填充字段:企业名称、地址,城市,州,邮编,和名称。
本教程展示了如何创建一组属性从主形式FormRecognitionAttributes
类,认识到使用一种形式FormRecognitionEngine
类,和流程表单字段并显示到控制台使用的结果FormProcessingEngine
类。