多线程与汽车OCR识别经理- c#控制台

本教程展示如何多线程并行处理的OCR引擎c#控制台应用程序窗口使用LEADTOOLS SDK。

概述
总结 本教程介绍了如何多线程OCR引擎使用IOcrAutoRecognizeManager在c# Windows控制台应用程序。
完成时间 30分钟
Visual Studio项目 下载教程项目(3 KB)
平台 c# Windows控制台应用程序
IDE Visual Studio 2017中,2019年
开发许可 下载LEADTOOLS
试试用另一种语言

所需的知识

在工作之前多线程与汽车OCR识别经理- c#控制台教程中,熟悉的基本步骤,创建一个项目通过审查添加引用和设置一个许可证教程。

创建项目并添加LEADTOOLS引用

从项目中创建的副本添加引用和设置一个许可证教程。如果你没有这个项目,按照这个教程中的步骤创建它。

的引用需要取决于项目的目的。引用可以通过添加一个或另一个下面的两种方法(但不是全部)。

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

如果使用本地DLL的引用,下面的DLL是必要的。

dll位于< INSTALL_DIR > \ LEADTOOLS22 \ Bin \ Dotnet4 \ x64:

对于一个完整的列表的应用程序所需的DLL文件,请参考文件包含在您的应用程序

设置许可文件

许可解锁项目需要的特性。它必须设置工具箱函数被调用之前。细节包括教程不同的平台,请参考设置一个运行时许可

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

请注意

如何正确添加LEADTOOLS NuGet和本地引用的吗添加引用和设置一个许可证教程。

添加多线程OCR代码

与项目创建、添加引用,许可,可以开始编码。

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

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

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

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

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

c#
静态无效OCR (){使用(IOcrEngine ocrEngine = OcrEngineManager.CreateEngine (OcrEngineType.LEAD)){字符串inputDirectory =@“文件路径输入目录”;字符串outputDirectory =@“输出目录文件路径”;秒表秒表=秒表();ocrEngine.Startup (,,,@“C: \ LEADTOOLS22 \ Bin \常见\ OcrLEADRuntime”);Console.WriteLine (“OCR引擎开始”);Console.WriteLine ();IOcrAutoRecognizeManager经理= ocrEngine.AutoRecognizeManager;var文件= Directory.EnumerateFiles (inputDirectory,“* .tif”);经理。MaximumThreadsPerJob = 1;/ / 1线/工作Console.WriteLine (“按顺序处理一切……”);stopwatch.Reset ();stopwatch.Start ();Console.Write ($“文件处理”);foreach(var文件文件){Guid id = Guid.NewGuid ();/ /创建新的文件名经理。运行(文件,outputDirectory + id.ToString () +. pdf”DocumentFormat.Pdf,,);Console.Write ($“{Path.GetFileName(文件)}. .”);}stopwatch.Stop ();Console.WriteLine (“处理”。);Console.WriteLine ($“总时间:{秒表。ElapsedMilliseconds}女士(顺序)”);Console.WriteLine ();/ /设置为使用最大CPU /当前机器的核心。经理。MaximumThreadsPerJob = 0;Console.WriteLine (“并行处理页,目录顺序……”);stopwatch.Reset ();stopwatch.Start ();Console.Write ($“文件处理”);foreach(var文件文件){Guid id = Guid.NewGuid ();/ /创建新的文件名经理。运行(文件,outputDirectory + id.ToString () +. pdf”DocumentFormat.Pdf,,);Console.Write ($“{Path.GetFileName(文件)}. .”);}stopwatch.Stop ();Console.WriteLine (“处理”。);Console.WriteLine ($“总时间:{秒表。并行ElapsedMilliseconds}女士(页面、目录顺序)”);Console.WriteLine ();Console.WriteLine (“并行处理一切……”);stopwatch.Reset ();stopwatch.Start ();Console.Write ($“文件处理”);Parallel.ForEach(文件s, (file) =>{Guid id = Guid.NewGuid ();/ /创建新的文件名经理。运行(文件,outputDirectory + id.ToString () +. pdf”DocumentFormat.Pdf,,);Console.Write ($“{Path.GetFileName(文件)}. .”);});stopwatch.Stop ();Console.WriteLine (“处理”。);Console.WriteLine ($“总时间:{秒表。ElapsedMilliseconds}女士(并行)的一切”);Console.WriteLine ();经理。MaximumThreadsPerJob = 1;/ / 1线/工作Console.WriteLine (“处理页面顺序和并行的目录……”);stopwatch.Reset ();stopwatch.Start ();Console.Write ($“文件处理”);Parallel.ForEach(文件s, (file) =>{Guid id = Guid.NewGuid ();/ /创建新的文件名经理。运行(文件,outputDirectory + id.ToString () +. pdf”DocumentFormat.Pdf,,);Console.Write ($“{Path.GetFileName(文件)}. .”);});stopwatch.Stop ();Console.WriteLine (“处理”。);Console.WriteLine ($“总时间:{秒表。ElapsedMilliseconds}女士(页面顺序、并行目录)”);Console.WriteLine ();Console.WriteLine (“按任意键……”);Console.ReadKey ();}}

请注意

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

运行该项目

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

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

这个应用程序显示OCR的进步”></div>
    <blockquote>
     <p><strong>重要提示</strong></p>
     <p>在测试图像所示,最好的结果在处理页面顺序和并行的目录。然而,这并非总是如此,不同的组合可以产生更好的结果,一组不同的图像或当使用不同的计算机使用不同数量的CPU核心。因此,重要的是要与实际图像测试代表用例,在实际硬件将使用应用程序。<spacer></spacer></p>
    </blockquote>
    <p><span id=

总结

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

另请参阅

net
iOS