继续我们的关于使用LEADTOOLS文档成像的端到端电子发现的最新白皮书,这篇文章将介绍一个。net Core控制台应用程序,它在搜索PDF中的给定单词时对给定目录中的每个PDF执行OCR。这个应用程序经过优化,可以同时处理光栅图像和文档,所以可以随意更改代码来搜索pdf以外的文件。如果在目录中的文件中找到用户提交的单词,则包含搜索单词的文件名将注销到控制台。
我们理解您可能正在通过大型目录寻找特定的单词。此应用程序使用平行的。ForEach循环处理的不是多个文档,而是每个文档中的多个页面。的Leadtools OCR SDK和文档类是线程安全的,因此不需要任何额外的编码来允许多个文档和多个页面同时被处理。
这个项目的核心代码可以在下面找到。此应用程序使用LEADTOOLS文档,Formats.Raster.Additional,Formats.Raster.Common,Formats.Raster.Vector,光学字符识别,PDFNuGet包。
public void Start() {var po = new ParallelOptions();var ocrEngine = OcrEngineManager.CreateEngine(OcrEngineType. var ocrEngine = OcrEngineManager.CreateEngine)铅、假);ocrEngine。启动(null, null, null, null, null);//将目录中的所有文件添加到列表中。本例使用PDF文件。getfile (searchDirectory“* . pdf”));平行的。ForEach(files, po, (file, outerState) => { var options = new LoadDocumentOptions(); using (var document = DocumentFactory.LoadFromFile(file, options)) { document.Text.OcrEngine = ocrEngine; //set the extraction mode to auto so it will use SVG if it's available and OCR if not document.Text.TextExtractionMode = DocumentTextExtractionMode.Auto; //iterate over each page of each document Parallel.ForEach(document.Pages, po, (page, state) => { var pageText = page.GetText(); if (pageText != null) { pageText.BuildText(); var text = pageText.Text; if (text.ToLower().Contains(wordToSearch.ToLower())) { OnFileFound(new FileObject(Path.GetFileName(file))); //we don't want to add the same document twice state.Break(); } } }); } }); Console.WriteLine(Environment.NewLine); Console.WriteLine("Finished!"); Console.ReadLine(); }
要使用最新版本的LEADTOOLS NuGet包进行测试,下载免费的30天评估直接从我们的网站。如果您对此有任何评论或问题,请随意评论这篇文章或联系我们的支持部门在support@leadtools.com.
