LEADTOOLS 是一个综合工具包的集合,用于将识别、文档、医疗、成像和多媒体技术整合到桌面、服务器、平板电脑、网络和移动解决方案中,是一项企业级文档自动化解决方案,有捕捉,OCR,OMR,表单识别和处理,PDF,打印捕获,归档,注释和显示功能。利用业界领先的图像处理技术,能够智能识别文件,可以用来识别任何类型的扫描或传真形式的图像。
LEADTOOLS 最新下载(qun:731259648)https://www.evget.com/product/782/download
本教程介绍如何在使用 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:\LEADTOOLS22\Resources\Images\leadtools.pdf"; IOcrEngine ocrEngine = InitOcrEngine(); OCRandSaveResults(ocrEngine, file);
将以下代码添加InitOcrEngine()到初始化IOcrEngine.
[C#]
static IOcrEngine InitOcrEngine() { // Initialize OCR engine IOcrEngine ocrEngine = OcrEngineManager.CreateEngine(OcrEngineType.LEAD); ocrEngine.Startup(null, null, null, @"C:\LEADTOOLS22\Bin\Common\OcrLEADRuntime"); 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 object var pageText = page.GetText(); pageText.BuildText(); pageText.BuildWords(); documentPageTexts.Add(pageText); } //Save the recognized words to JSON var 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 document var 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 object var pageText = page.GetText(); pageText.BuildText(); pageText.BuildWords(); documentPageTexts.Add(pageText); } //Save the recognized words to JSON var 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:\LEADTOOLS22\Resources\Images"; }
运行项目
按F5或选择Debug -> Start Debugging运行项目。
如果步骤正确,应用程序将对文档进行 OCR,并创建包含识别结果的 JSON。出于本教程的目的,我们使用位于此处的 PDF 文件:<INSTALL_DIR>\LEADTOOLS22\Resources\Images\leadtools.pdf
在此处下载生成的 JSON 。
以上便是将 OCR 结果导出到 JSON - C# .NET 6 ,如果您还有其他疑问,欢迎咨询我们或者加入我们官方技术交流群。