IronOCR 操作指南 进度跟踪 如何使用 IronOCR 在 C# 中进行进度跟踪。 Chaknith Bin 已更新:一月 10, 2026 下载 IronOCR NuGet 下载 DLL 下载 Windows 安装程序 免费试用 法学硕士副本 法学硕士副本 将页面复制为 Markdown 格式,用于 LLMs 在 ChatGPT 中打开 向 ChatGPT 咨询此页面 在双子座打开 向 Gemini 询问此页面 在 Grok 中打开 向 Grok 询问此页面 打开困惑 向 Perplexity 询问有关此页面的信息 分享 在 Facebook 上分享 分享到 X(Twitter) 在 LinkedIn 上分享 复制链接 电子邮件文章 This article was translated from English: Does it need improvement? Translated View the article in English IronOCR 为 OCR 操作提供了基于事件的进度跟踪系统,允许开发人员通过 OcrProgress 事件监控阅读进度,该事件可实时报告完成百分比、已处理页面和时间指标。 <! -- 待办事项:在此处添加图片 --> <! -- --> <!--说明:说明代码概念的图表或截图 --> 快速入门:订阅 OcrProgress 并阅读 PDF 本示例展示了如何使用 IronOCR 监控 OCR 进度:订阅其内置的 OcrProgress 事件,并在阅读 PDF 时接收即时反馈,包括百分比、已完成页数和总页数。 只需几行即可开始。 立即开始使用 NuGet 创建 PDF 文件: 使用 NuGet 包管理器安装 IronOCR PM > Install-Package IronOcr 复制并运行这段代码。 var ocr = new IronOcr.IronTesseract(); ocr.OcrProgress += (s, e) => Console.WriteLine(e.ProgressPercent + "% (" + e.PagesComplete + "/" + e.TotalPages + ")"); var result = ocr.Read(new IronOcr.OcrInput().LoadPdf("file.pdf")); 部署到您的生产环境中进行测试 立即开始在您的项目中使用 IronOCR,免费试用! 免费试用30天 最小工作流程(5 个步骤) 下载一个用于跟踪阅读进度的 C# 库 订阅OcrProgress活动 利用事件传递的实例获取进度信息 以百分比和总时间获取进度 获取开始时间和结束时间,以及总页数 如何在我的 OCR 应用程序中实施进度跟踪? <!--说明:说明代码概念的图表或截图 --> 在使用 OCR 处理大型文档或批量文件时,进度跟踪至关重要。 订阅`OcrProgress`事件即可接收阅读过程的进度更新。 这对于[PDF OCR 操作](https://ironsoftware.com/csharp/ocr/examples/csharp-pdf-ocr/)和处理[多页 TIFF 文件](https://ironsoftware.com/csharp/ocr/examples/csharp-tesseract-multipage-tiff/)尤其有用。 该事件传递一个包含 OCR 作业进度信息的实例,如开始时间、总页数、进度百分比、持续时间和结束时间。该功能可与 [async 操作](https://ironsoftware.com/csharp/ocr/how-to/async/)无缝配合,并可与 [multithreading](https://ironsoftware.com/csharp/ocr/examples/csharp-tesseract-multithreading-for-speed/) 结合使用以提高性能。 The following example uses this document as a sample: "Experiences in Biodiversity Research: A Field Course" by Thea B. 盖斯勒,爱荷华州立大学。 ```csharp :path=/static-assets/ocr/content-code-examples/how-to/progress-tracking-progress-tracking.cs ``` 我可以从活动中获取哪些进度信息? OcrProgress 事件提供全面的进度数据,有助于监控和优化[OCR 性能](https://ironsoftware.com/csharp/ocr/examples/progress-tracking/)。 每个属性在跟踪操作中都有特定的用途: - `ProgressPercent`:以已完成页面百分比表示的 OCR 工作进度,范围从 0 到 100。适用于更新 GUI 应用程序中的进度条。 - `TotalPages`:OCR 引擎正在处理的总页数。对于计算预计完成时间至关重要。 - `PagesComplete`:已完全完成 OCR 阅读的页数。 随着页面的处理,翻译量会逐渐增加。 - `持续时间`:OCR 工作的总持续时间,表示完成整个过程所需的时间。 以 TimeSpan 格式测量,每次事件触发时更新。 - <代码>StartTimeUTC代码>:OCR 作业开始的日期和时间,以协调世界时 (UTC) 格式表示。 - <代码>EndTimeUTC代码>:OCR 作业 100% 完成的日期和时间(UTC 格式)。 当 OCR 正在进行时,该属性为空,而一旦该过程结束,该属性就会被填充。 ### 高级进度跟踪实施 对于生产应用程序,实施更复杂的进度跟踪。 本示例包括错误处理和详细日志记录: ```csharp using IronOcr; using System; using System.Diagnostics; public class OcrProgressTracker { private readonly IronTesseract _tesseract; private Stopwatch _stopwatch; private int _lastReportedPercent = 0; public OcrProgressTracker() { _tesseract = new IronTesseract(); // Configure for optimal performance _tesseract.Language = OcrLanguage.EnglishBest; _tesseract.Configuration.ReadBarCodes = false; // Subscribe to progress event _tesseract.OcrProgress += OnOcrProgress; } private void OnOcrProgress(object sender, OcrProgressEventsArgs e) { // Only report significant progress changes (every 10%) if (e.ProgressPercent - _lastReportedPercent >= 10 || e.ProgressPercent == 100) { _lastReportedPercent = e.ProgressPercent; Console.WriteLine($"Progress: {e.ProgressPercent}%"); Console.WriteLine($"Pages: {e.PagesComplete}/{e.TotalPages}"); Console.WriteLine($"Elapsed: {e.Duration.TotalSeconds:F1}s"); // Estimate remaining time if (e.ProgressPercent > 0 && e.ProgressPercent < 100) { var estimatedTotal = e.Duration.TotalSeconds / (e.ProgressPercent / 100.0); var remaining = estimatedTotal - e.Duration.TotalSeconds; Console.WriteLine($"Estimated remaining: {remaining:F1}s"); } Console.WriteLine("---"); } } public OcrResult ProcessDocument(string filePath) { _stopwatch = Stopwatch.StartNew(); using var input = new OcrInput(); input.LoadPdf(filePath); // Apply image filters for better accuracy input.Deskew(); input.DeNoise(); var result = _tesseract.Read(input); _stopwatch.Stop(); Console.WriteLine($"Total processing time: {_stopwatch.Elapsed.TotalSeconds:F1}s"); return result; } } ``` ### 将进度跟踪与 UI 应用程序相结合 在使用 Windows 窗体或 WPF 构建桌面应用程序时,进度跟踪对用户体验至关重要。 进度事件可以安全地更新 UI 元素: ```csharp using System; using System.Windows.Forms; using IronOcr; public partial class OcrForm : Form { private IronTesseract _tesseract; private ProgressBar progressBar; private Label statusLabel; public OcrForm() { InitializeComponent(); _tesseract = new IronTesseract(); _tesseract.OcrProgress += UpdateProgress; } private void UpdateProgress(object sender, OcrProgressEventsArgs e) { // Ensure UI updates happen on the main thread if (InvokeRequired) { BeginInvoke(new Action(() => UpdateProgress(sender, e))); return; } progressBar.Value = e.ProgressPercent; statusLabel.Text = $"Processing page {e.PagesComplete} of {e.TotalPages}"; // Show completion message if (e.ProgressPercent == 100) { MessageBox.Show($"OCR completed in {e.Duration.TotalSeconds:F1} seconds"); } } } ``` ### 处理大型文档和超时 在处理大量文件时,进度跟踪变得更加重要。 将其与[超时设置](https://ironsoftware.com/csharp/ocr/examples/timeouts/)和[中止令牌](https://ironsoftware.com/csharp/ocr/examples/abort-token/)相结合,可实现更好的控制: ```csharp using IronOcr; using System; using System.Threading; public async Task ProcessLargeDocumentWithTimeout() { var cts = new CancellationTokenSource(); var tesseract = new IronTesseract(); // Set a timeout of 5 minutes cts.CancelAfter(TimeSpan.FromMinutes(5)); tesseract.OcrProgress += (s, e) => { Console.WriteLine($"Progress: {e.ProgressPercent}% - Page {e.PagesComplete}/{e.TotalPages}"); // Check if we should cancel based on progress if (e.Duration.TotalMinutes > 4 && e.ProgressPercent < 50) { Console.WriteLine("Processing too slow, cancelling..."); cts.Cancel(); } }; try { using var input = new OcrInput(); input.LoadPdf("large-document.pdf"); var result = await Task.Run(() => tesseract.Read(input, cts.Token), cts.Token); Console.WriteLine("OCR completed successfully"); } catch (OperationCanceledException) { Console.WriteLine("OCR operation was cancelled"); } } ``` ### 进度跟踪的最佳实践 1.**更新频率**:在处理过程中,`OcrProgress` 事件会频繁触发。 考虑过滤更新,以避免 UI 或日志过多。 2.**性能影响**:进度跟踪的性能开销极小,但过多的日志记录或 UI 更新可能会减慢 OCR 进程。 3.**内存管理**:对于[大型 TIFF 文件](https://ironsoftware.com/csharp/ocr/how-to/input-tiff-gif/)或 PDF 文件,应随着进度监控内存使用情况,以确保最佳性能。 4.**错误处理**:始终在进度事件处理程序中包含错误处理,以防止异常干扰 OCR 进程。 5.**线程安全**:从进度事件更新 UI 元素时,请使用 `Invoke` 或 `BeginInvoke` 方法确保正确的线程同步。 ### 结论 IronOCR 中的进度跟踪提供了 OCR 操作的基本可见性,使开发人员能够创建响应式应用程序,让用户随时了解处理状态。 通过有效利用 `OcrProgress` 事件,您可以构建专业的应用程序,自信地处理从单页文档到大量 PDF 文件的所有内容。 如需了解更多高级 OCR 技术,请浏览我们的 [ 图像过滤器](https://ironsoftware.com/csharp/ocr/examples/ocr-image-filters-for-net-tesseract/) 和 [ 结果对象](https://ironsoftware.com/csharp/ocr/examples/results-objects/) 指南,以进一步增强您的 OCR 实现。 常见问题解答 如何实时跟踪 OCR 进度? IronOCR 通过 OcrProgress 事件提供基于事件的进度跟踪系统。只需在您的 IronTesseract 实例上订阅该事件,您就会收到实时更新,包括 OCR 操作期间的完成百分比、已处理页面和时间指标。 OcrProgress 活动提供哪些信息? IronOCR 中的 OcrProgress 事件提供了全面的数据,包括 ProgressPercent(0-100%)、TotalPages 计数、PagesComplete 计数、开始和结束时间以及总持续时间。这些信息对于更新 GUI 应用程序中的进度条和监控 OCR 性能特别有用。 我可以在异步 OCR 操作中使用进度跟踪吗? 是的,IronOCR 的进度跟踪功能可与异步操作无缝配合。您可以将其与异步处理甚至多线程结合起来以提高性能,同时还能通过 OcrProgress 事件接收实时进度更新。 如何为 PDF OCR 实现一个简单的进度跟踪器? 要使用 IronOCR 实现基本的进度跟踪,需要创建一个 IronTesseract 实例,使用 lambda 表达式或事件处理程序订阅 OcrProgress 事件,然后调用 PDF 的 Read 方法。该事件将定期触发,提供完成百分比和已处理页数信息。 进度跟踪对大型文档处理有用吗? 在使用 IronOCR 处理大型文档或批量文件时,进度跟踪至关重要。它对于 PDF OCR 操作和多页 TIFF 文件尤为重要,可以让您监控处理状态、估算完成时间,并在长时间的操作过程中提供用户反馈。 Chaknith Bin 立即与工程团队聊天 软件工程师 Chaknith 在 IronXL 和 IronBarcode 工作。他在 C# 和 .NET 方面有着深厚的专业知识,帮助改进软件并支持客户。他从用户互动中获得的见解有助于更好的产品、文档和整体体验。 准备开始了吗? Nuget 下载 5,246,844 | 版本: 2025.12 刚刚发布 免费 NuGet 下载 总下载量:5,246,844 查看许可证