本教程展示如何多线程并行处理的OCR引擎c#控制台应用程序窗口使用LEADTOOLS SDK。
概述 | |
---|---|
总结 | 本教程介绍了如何多线程OCR引擎使用IOcrAutoRecognizeManager 在c# Windows控制台应用程序。 |
完成时间 | 30分钟 |
Visual Studio项目 | 下载教程项目(3 KB) |
平台 | c# Windows控制台应用程序 |
IDE | Visual Studio 2017中,2019年 |
开发许可 | 下载LEADTOOLS |
试试用另一种语言 |
|
在工作之前多线程与汽车OCR识别经理- c#控制台教程中,熟悉的基本步骤,创建一个项目通过审查添加引用和设置一个许可证教程。
从项目中创建的副本添加引用和设置一个许可证教程。如果你没有这个项目,按照这个教程中的步骤创建它。
的引用需要取决于项目的目的。引用可以通过添加一个或另一个下面的两种方法(但不是全部)。
如果使用NuGet引用,本教程需要以下NuGet包:
Leadtools.Ocr
如果使用本地DLL的引用,下面的DLL是必要的。
dll位于< INSTALL_DIR > \ LEADTOOLS22 \ Bin \ Dotnet4 \ x64
:
Leadtools.dll
Leadtools.Codecs.dll
Leadtools.Document.Writer.dll
Leadtools.Ocr.dll
Leadtools.Ocr.LEADEngine.dll
对于一个完整的列表的应用程序所需的DLL文件,请参考文件包含在您的应用程序。
许可解锁项目需要的特性。它必须设置工具箱函数被调用之前。细节包括教程不同的平台,请参考设置一个运行时许可。
有两种类型的运行时许可证:
请注意
如何正确添加LEADTOOLS NuGet和本地引用的吗添加引用和设置一个许可证教程。
与项目创建、添加引用,许可,可以开始编码。
在解决方案资源管理器,打开Program.cs
。添加以下语句的使用
块的顶部Program.cs
:
/ /使用块
使用系统;
使用先;
使用Leadtools;
使用Leadtools.Ocr;
使用Leadtools.Document.Writer;
使用System.Diagnostics;
使用System.Threading.Tasks;
的IOcrAutoRecognizeManager
接口支持使用多个线程在处理工作。线程的数量可以控制使用MaximumThreadsPerJob
财产。
也可以在自己的线程中执行每个作业,在下面的代码中使用Parallel.ForEach
。
添加一个新方法程序
类,命名OCR ()
。调用内部的新方法Main ()
方法,在调用SetLicense
。将下面的代码添加到OCR ()
测试方法的四种不同的组合顺序和并行处理。
静态无效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 ();
}
}
请注意
一定要设置适当的文件夹的名称
inputDirectory
和outputDirectory
变量。输入目录必须包含TIFF文件(* .tif)
本教程中创建的应用程序要处理的。
按运行项目F5,或通过选择调试- >开始调试。
如果步骤正确,控制台出现和应用程序将TIFF图像转换为PDF格式并保存到指定位置。这是四次重复使用不同的组合顺序和并行处理。
本教程展示了如何创建一个基于控制台的OCR应用程序使用铅OCR引擎比较性能时使用不同的顺序和并行处理技术。