本教程介绍如何在使用 LEADTOOLS SDK 的 C# .NET 6 应用程序中对图像进行 OCR 并将 OCR 结果导出到 JSON 文件。
本教程介绍如何在使用 LEADTOOLS SDK 的 C# .NET 6 应用程序中对图像进行 OCR 并将 OCR 结果导出到 JSON 文件。
概括 | 本教程介绍如何在 C# .NET 6 控制台应用程序中将 OCR 结果保存到 JSON 文件。 |
完成时间 | 30分钟 |
视觉工作室项目 | 下载教程项目 (1 KB) |
平台 | C# .NET 6 控制台应用程序 |
集成开发环境 | 视觉工作室 2022 |
运行时目标 | .NET 6 或更高版本 |
开发许可 | LEADTOOLS |
用另一种语言试试 |
|
所需知识
在学习将 OCR 结果导出到 JSON – C# .NET 6教程之前,通过查看添加引用和设置许可证教程熟悉创建项目的基本步骤。
创建项目并添加 LEADTOOLS 引用
从以下两个主题之一创建的项目副本开始,具体取决于平台:
- 添加引用并为 .NET Framework 设置许可证。
- 添加引用并为 .NET 6 或更高版本设置许可证
如果您没有该项目,请按照相关教程中的步骤创建它。
所需的参考取决于项目的目的。可以通过 NuGet 包添加引用。
本教程需要以下 NuGet 包:
- Leadtools.Document.Sdk
- Newtonsoft.Json
有关您的应用程序需要哪些 DLL 文件的完整列表,请参阅要包含在您的应用程序中的文件。
设置许可证文件
许可证解锁项目所需的功能。它必须在调用任何工具包函数之前设置。有关详细信息,包括针对不同平台的教程,请参阅设置运行时许可证。
有两种类型的运行时许可证:
评估许可证,在下载评估工具包时获得。它允许评估工具包。
部署许可证。如果需要部署许可证文件和开发人员密钥,请参阅获取许可证。
笔记
添加 LEADTOOLS NuGet 引用和设置许可证在添加引用和设置许可证教程 中有更详细的介绍。
初始化 OcrEngine
创建项目、添加参考和设置许可证后,就可以开始编码了。
在解决方案资源管理器中,打开Program.cs。将以下语句添加到using顶部的块中Program.cs。
[C#]
using System;using System.IO;using System.Collections.Generic;using Newtonsoft.Json;using Leadtools;using Leadtools.Ocr;using Leadtools.Document;
添加一个新的调用InitOcrEngine()返回的方法,并在方法调用后在方法IOcrEngine内部调用,如下所示。Main()SetLicense()
[C#]
string file = @"C:LEADTOOLS22ResourcesImagesleadtools.pdf";IOcrEngine ocrEngine = InitOcrEngine();OCRandSaveResults(ocrEngine, file);
将以下代码添加InitOcrEngine()到初始化IOcrEngine.
[C#]
static IOcrEngine InitOcrEngine(){// Initialize OCR engineIOcrEngine ocrEngine = OcrEngineManager.CreateEngine(OcrEngineType.LEAD);ocrEngine.Startup(null, null, null, @"C:LEADTOOLS22BinCommonOcrLEADRuntime");return ocrEngine;}
添加文本识别并导出为 JSON 代码
在名为 Program 的类中创建一个新方法,并在代码行之后的方法中OCRandSaveResults(IOcrEngine ocrEngine, string file)调用它。将下面的代码添加到对PDF文档进行OCR识别并将识别结果导出到JSON文件的方法中。Main()IOcrEngine ocrEngine = InitOcrEngine();OCRandSaveResults()
static void OCRandSaveResults(IOcrEngine ocrEngine, string file){using (var document = DocumentFactory.LoadFromFile(file, new LoadDocumentOptions { FirstPageNumber = 1, LastPageNumber = -1 })){document.Text.OcrEngine = ocrEngine;List<DocumentPageText> documentPageTexts = new List<DocumentPageText>();foreach (var page in document.Pages){//parse the text and build the DocumentPageText objectvar pageText = page.GetText();pageText.BuildText();pageText.BuildWords();documentPageTexts.Add(pageText);}//Save the recognized words to JSONvar json = JsonConvert.SerializeObject(documentPageTexts, Formatting.Indented);var jsonPath = Path.ChangeExtension(file, ".json");File.WriteAllText(jsonPath, json);}}
处理流
或者,您可以使用内存流来处理文档。为此,将以下代码添加到程序中并在方法中调用此Main(string[] args)方法:
static void OCRStreamandSaveResults(IOcrEngine ocrEngine){ // load the specified documentvar fileName = Path.Combine(LEAD_VARS.ImagesDir, "Leadtools.pdf");using (var stream = File.OpenRead(fileName)){var options = new LoadDocumentOptions();using (var document = DocumentFactory.LoadFromStream(stream, options)){document.Text.OcrEngine = ocrEngine;Console.WriteLine("Doc loaded");List<DocumentPageText> documentPageTexts = new List<DocumentPageText>();foreach (var page in document.Pages){//parse the text and build the DocumentPageText objectvar pageText = page.GetText();pageText.BuildText();pageText.BuildWords();documentPageTexts.Add(pageText);}//Save the recognized words to JSONvar json = JsonConvert.SerializeObject(documentPageTexts, Formatting.Indented);var jsonPath = Path.ChangeExtension(fileName, ".json");File.WriteAllText(jsonPath, json);}}}
一定要添加LEAD_VARS类,以便ImagesDir可以访问。
static class LEAD_VARS{public const string ImagesDir = @"C:LEADTOOLS22ResourcesImages";}
运行项目
按F5或选择Debug -> Start Debugging运行项目。
如果步骤正确,应用程序将对文档进行 OCR,并创建包含识别结果的 JSON。出于本教程的目的,我们使用位于此处的 PDF 文件:<INSTALL_DIR>LEADTOOLS22ResourcesImagesleadtools.pdf
在此处下载生成的 JSON 。
以上便是将 OCR 结果导出到 JSON – C# .NET 6,如果您还有其他疑问,欢迎咨询我们或者加入我们官方技术交流群。
欢迎下载|体验更多LEADTOOL产品
您还可以加入产品:
标签:
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!