多线程OCR与自动识别管理器-控制台c#

本教程展示了如何使用LEADTOOLS SDK在c# Window控制台应用程序中多线程化OCR引擎进行并行处理。

概述
总结 方法使OCR引擎多线程化IOcrAutoRecognizeManager在c# Windows控制台应用程序中。
完成时间 30分钟
Visual Studio项目 下载教程项目(3kb)
平台 c# Windows控制台应用程序
IDE Visual Studio 2017, 2019
开发许可 下载LEADTOOLS

所需的知识

在开始之前多线程OCR与自动识别管理器-控制台c#本教程中,通过回顾添加引用和设置License教程。

创建项目并添加LEADTOOLS引用

中创建的项目的副本开始添加引用和设置License教程。如果您没有该项目,请按照该教程中的步骤创建它。

所需要的参考资料取决于项目的目的。引用可以通过以下两种方法中的一种添加(但不能同时添加)。

如果使用NuGet引用,本教程需要以下NuGet包:

如果使用本地DLL引用,则需要以下DLL。

dll位于< INSTALL_DIR > \ LEADTOOLS21 \ Bin \ Dotnet4 \ x64

有关应用程序需要哪些DLL文件的完整列表,请参阅你的申请中包含的文件

设置License文件

许可证解锁项目所需的特性。它必须在调用任何工具箱函数之前设置。有关包括针对不同平台的教程的详细信息,请参阅设置运行时License

有两种类型的运行时许可证:

请注意

如何正确添加LEADTOOLS NuGet和本地引用涵盖在添加引用和设置License教程。

添加多线程OCR代码

随着项目的创建、引用的添加和许可的设置,编码就可以开始了。

解决方案资源管理器,打开Program.cs.将下列语句添加到使用块的顶部Program.cs

c#
//在顶部使用块使用系统;使用先;使用Leadtools;使用Leadtools.Ocr;使用Leadtools.Document.Writer;使用System.Diagnostics;使用System.Threading.Tasks;

IOcrAutoRecognizeManager接口支持在处理作业时使用多个线程。线程的数量可以使用MaximumThreadsPerJob财产。

也可以在自己的线程中执行每个作业,这在下面的代码中使用平行的。ForEach

控件中添加一个新方法程序类,命名OCR ().方法中的新方法Main ()方法的下面调用SetLicense.将下面的代码添加到OCR ()方法来测试顺序和并行处理的四种不同组合。

c#
静态无效OCR ()使用(IOcrEngine ocrEngine = OcrEngineManager.CreateEngine(ocrengintype . lead))字符串inputDirectory =@"文件路径到输入目录"字符串outputDirectory =@"输出目录的文件路径"秒表=秒表();ocrEngine。启动();控制台。WriteLine (“OCR引擎启动”);Console.WriteLine ();IOcrAutoRecognizeManager manager = ocreengine . autorecognizemanager;varfiles =目录。EnumerateFiles (inputDirectory“* .tif”);经理。MaximumThreadsPerJob = 1;//每个任务1个线程控制台。WriteLine (“按顺序处理一切……”);stopwatch.Reset ();stopwatch.Start ();控制台。写($“已处理文件”);foreachvar文件文件)Guid id = Guid. newguid ();//创建新的文件名经理。运行(file, outputDirectory + id.ToString() +. pdf”DocumentFormat.Pdf,);控制台。写($“{Path.GetFileName(文件)}. .”);stopwatch.Stop ();控制台。WriteLine (“处理”。);控制台。WriteLine ($“总时间:{秒表。ElapsedMilliseconds} ms(所有顺序)");Console.WriteLine ();//设置当前机器的最大CPU /内核数。经理。MaximumThreadsPerJob = 0;控制台。WriteLine (“并行处理页面,按顺序处理目录……”);stopwatch.Reset ();stopwatch.Start ();控制台。写($“已处理文件”);foreachvar文件文件)Guid id = Guid. newguid ();//创建新的文件名经理。运行(file, outputDirectory + id.ToString() +. pdf”DocumentFormat.Pdf,);控制台。写($“{Path.GetFileName(文件)}. .”);stopwatch.Stop ();控制台。WriteLine (“处理”。);控制台。WriteLine ($“总时间:{秒表。ElapsedMilliseconds} ms(并行页面,目录顺序)");Console.WriteLine ();控制台。WriteLine (“并行处理一切……”);stopwatch.Reset ();stopwatch.Start ();控制台。写($“已处理文件”);平行的。ForEach(文件s, (file) =>Guid id = Guid. newguid ();//创建新的文件名经理。运行(file, outputDirectory + id.ToString() +. pdf”DocumentFormat.Pdf,);控制台。写($“{Path.GetFileName(文件)}. .”);});stopwatch.Stop ();控制台。WriteLine (“处理”。);控制台。WriteLine ($“总时间:{秒表。ElapsedMilliseconds} ms(一切并行)");Console.WriteLine ();经理。MaximumThreadsPerJob = 1;//每个任务1个线程控制台。WriteLine (“按顺序处理页面,并行处理目录……”);stopwatch.Reset ();stopwatch.Start ();控制台。写($“已处理文件”);平行的。ForEach(文件s, (file) =>Guid id = Guid. newguid ();//创建新的文件名经理。运行(file, outputDirectory + id.ToString() +. pdf”DocumentFormat.Pdf,);控制台。写($“{Path.GetFileName(文件)}. .”);});stopwatch.Stop ();控制台。WriteLine (“处理”。);控制台。WriteLine ($“总时间:{秒表。ElapsedMilliseconds} ms(页面顺序,目录并行)");Console.WriteLine ();控制台。WriteLine (“按任意键…”);Console.ReadKey ();

请注意

中设置适当的文件夹名称inputDirectory而且outputDirectory变量。输入目录必须包含TIFF文件(* .tif)由本教程中创建的应用程序处理。

运行项目

按下运行项目F5,或选择Debug ->开始调试

如果正确地执行了这些步骤,将出现控制台,应用程序将TIFF图像转换为PDF格式,并将它们保存到指定的位置。使用顺序处理和并行处理的不同组合,重复执行四次。

应用程序显示OCR进度

重要提示

在图片所示的测试中,顺序处理页面和并行处理目录的效果最好。然而,情况并非总是如此,使用不同的图像集或使用具有不同CPU核数的不同计算机时,不同的组合可以产生更好的结果。因此,在应用程序将要使用的实际硬件上,使用代表用例的实际图像进行测试是很重要的。

总结

本教程展示了如何创建一个基于控制台的OCR应用程序,该应用程序使用LEAD OCR引擎来比较使用不同的顺序处理和并行处理技术时的性能。

另请参阅

net
iOS
188金宝搏的网址客服|支持|联系我们|知识产权公告
©1991 - 2021领德科技有限公司版权所有。