使用 OCR 将图像转换为可搜索的 PDF - WinForms C# .NET 6
本教程演示如何创建一个 Windows WinForms C# .NET 6 应用程序,该应用程序设置 LEAD OCR 引擎来处理 OCR。
| 概述 | |
|---|---|
| 概括 | 本教程介绍了如何在 Windows WinForms C# .NET 6 应用程序中设置 LEAD OCR 引擎。 |
| 完成时间 | 30分钟 |
| Visual Studio 项目 | 下载教程项目(9 KB) |
| 平台 | C# Windows WinForms 应用程序 |
| 集成开发环境 | Visual Studio 2022 |
| 开发许可证 | 下载 LEADTOOLS |
| 尝试用其他语言 |
|
所需知识
在学习“使用 OCR 将图像转换为可搜索的 PDF - WinForms C#”教程之前,请先查看“添加引用”、“设置许可证”和“在图像查看器中显示图像”教程,熟悉创建项目的基本步骤。
创建项目并添加 LEADTOOLS 引用
首先,请使用“在图像查看器中显示图像”教程中创建的项目副本。如果该项目不可用,请按照该教程中的步骤创建它。本教程不需要该教程中将加载的图像保存为 JPEG 格式的代码,因此可以省略。
所需的参考文献取决于项目的目的。可以通过以下两种方法中的一种(但不能同时使用两种方法)添加参考文献。本项目需要以下参考文献:
如果使用 NuGet 引用,本教程需要以下 NuGet 包及其依赖项:
Leadtools.OcrLeadtools.Viewer.Controls.WinForms
如果使用本地 DLL 引用,则需要以下 DLL 文件。这些 DLL 文件位于<INSTALL_DIR>\LEADTOOLS23\Bin\net:
Leadtools.dllLeadtools.Codecs.dllLeadtools.Controls.WinForms.dllLeadtools.Core.dllLeadtools.Document.Writer.dllLeadtools.Ocr.dllLeadtools.Ocr.LEADEngine.dll
有关特定格式所需的编解码器 DLL 的完整列表,请参阅文件格式支持。
设置许可证文件
许可证用于解锁项目所需的功能。必须在调用任何工具包函数之前设置许可证。有关详细信息,包括不同平台的教程,请参阅“设置运行时许可证”。
运行时许可证有两种类型:
- 评估许可证在下载评估工具包时获得。它允许对工具包进行评估。
- 部署许可证。如果需要部署许可证文件和开发者密钥,请参阅“获取许可证”部分。
注意:有关添加 LEADTOOLS NuGet 和本地引用以及设置许可证的更多详细信息,请参阅“添加引用和设置许可证”教程。
初始化 IOcrEngine 代码
在解决方案资源管理器中打开Form1.cs。在设计器中右键单击并选择“查看代码”,或按F7键,以显示窗体背后的代码。确保已添加以下 using 语句和全局变量。
using Leadtools;using Leadtools.Controls;using Leadtools.Codecs;using Leadtools.Ocr;using Leadtools.Document.Writerprivate ImageViewer _viewer;private IOcrEngine _ocrEngine;private IOcrPage _ocrPage;在事件处理程序中添加代码Form1_Load来初始化IOcrEngine,使其如下所示:
private void Form1_Load(object sender, EventArgs e){// Initialize Image Viewer object_viewer = new();_viewer.Dock = DockStyle.Fill;_viewer.BackColor = Color.DarkGray;_viewer.Zoom(ControlSizeMode.FitWidth, 1.0, new LeadPoint());Controls.Add(_viewer);_viewer.BringToFront();// Initialize the OCR engine_ocrEngine = OcrEngineManager.CreateEngine(OcrEngineType.LEAD);// Start up the engine_ocrEngine.Startup(null, null, null, @"C:\LEADTOOLS23\Bin\Common\OcrLEADRuntime");}在事件处理程序中添加代码,以便在查看器中加载图像后OpenToolStripMenuItem_Click进行初始化:IOcrPage
private void OpenToolStripMenuItem_Click(object sender, EventArgs e){try{using (RasterCodecs codecs = new RasterCodecs()){OpenFileDialog dlg = new OpenFileDialog();dlg.InitialDirectory = @"C:\LEADTOOLS23\Resources\Images";if (dlg.ShowDialog(this) == DialogResult.OK){_viewer.Image = codecs.Load(dlg.FileName);}}// Create IOcrPage from loaded image_ocrPage = _ocrEngine.CreatePage(_viewer.Image, OcrImageSharingMode.AutoDispose);}catch (Exception ex){MessageBox.Show(ex.ToString());}}添加“另存为可搜索 PDF”代码
在解决方案资源管理器中,再次打开Form1.cs。在设计器中,向菜单栏的“文件”菜单添加一个新的菜单项。将此新菜单项的文本设置为“另存为可搜索的 PDF”。您可以将新菜单项的名称保留为“” 。SaveAsSearchablePDFToolStripMenuItem
双击Save as Searchable PDF菜单项以编辑其事件处理程序。在其中添加以下代码:
private void SaveAsSearchablePDFToolStripMenuItem_Click(object sender, EventArgs e){try{// Create a documentusing (IOcrDocument ocrDocument = _ocrEngine.DocumentManager.CreateDocument(null, OcrCreateDocumentOptions.AutoDeleteFile)){// Create IOcrPage from loaded image_ocrPage = _ocrEngine.CreatePage(_viewer.Image, OcrImageSharingMode.AutoDispose);// Recognize Text_ocrPage.Recognize(null);// Add the pageocrDocument.Pages.Add(_ocrPage);// Save as PDFSaveFileDialog saveDlg = new SaveFileDialog();saveDlg.InitialDirectory = @"C:\LEADTOOLS23\Resources\Images";saveDlg.Filter = "Adobe Portable Document Format|*.pdf";if (saveDlg.ShowDialog(this) != DialogResult.OK)return;ocrDocument.Save(saveDlg.FileName, DocumentFormat.Pdf, null);MessageBox.Show($"OCR output saved to {saveDlg.FileName}");}}catch (Exception ex){MessageBox.Show(ex.ToString());}}运行项目
按F5运行项目,或者选择“调试”->“开始调试”。
如果步骤正确,应用程序即可运行,并能够加载和显示上述编解码器过滤器支持的任何图像。点击“另存为可搜索 PDF”按钮后,应用程序会识别已加载图像(例如 OCR1.TIF)中的文本,并将其保存到指定位置(保存为可搜索 PDF 文件)。
包起来
本教程演示了如何创建一个简单的 Windows Forms OCR 应用程序,该应用程序初始化 LEAD OCR 引擎,显示指定的输入文件,并将图像输出为可搜索的 PDF。