IronOCR 操作指南 可搜索的 PDFs 使用 IronOCR 在 C# 中保存可搜索 PDF。 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 使 C# 开发人员能够使用 OCR 技术将扫描的文档和图像转换为可搜索的 PDF,只需几行代码即可支持以文件、字节或流的形式输出。 可搜索的 PDF,通常被称为 OCR(光学字符识别)PDF,是一种包含扫描图像和机器可读文本的 PDF 文档。 这些 PDF 文件是通过对扫描的纸质文档或图像执行 OCR 功能创建的,它可以识别图像中的文本,并将其转换为可选择和可搜索的文本。 IronOCR 提供了一种解决方案,可以对文档执行光学字符识别,并将结果导出为可搜索的 PDF 文件。 它支持将可搜索的 PDF 导出为文件、字节和流。 这种能力在处理 扫描文件、纸质档案数字化或使遗留 PDF 文件可搜索以改善文件管理时尤其有用。 快速入门:一行导出可搜索的 PDF <! -- 待办事项:在此处添加图片 --> <! -- --> <!--说明:说明代码概念的图表或截图 --> 设置 RenderSearchablePdf = true,在您的输入上运行 Read(...) 并调用 SaveAsSearchablePdf(...) - 这就是使用 IronOCR 生成完全可搜索 PDF 的全部过程。 立即开始使用 NuGet 创建 PDF 文件: 使用 NuGet 包管理器安装 IronOCR PM > Install-Package IronOcr 复制并运行这段代码。 new IronOcr.IronTesseract { Configuration = { RenderSearchablePdf = true } } .Read(new IronOcr.OcrImageInput("file.jpg")).SaveAsSearchablePdf("searchable.pdf"); 部署到您的生产环境中进行测试 立即开始在您的项目中使用 IronOCR,免费试用! 免费试用30天 最小工作流程(5 个步骤) 下载一个 C# 库,用于将结果保存为可搜索的 PDF 文件。 为OCR准备图像和PDF文档 将 RenderSearchablePdf 属性设置为 true 使用SaveAsSearchablePdf方法输出可搜索的 PDF 文件 将可搜索的 PDF 导出为字节流 如何将 OCR 结果导出为可搜索的 PDF? --> <!--说明:显示代码执行输出或结果的截图 --> 以下是如何使用 IronOCR 将结果导出为可搜索的 PDF 文件。 您必须首先将`Configuration.RenderSearchablePdf`属性设置为`true` 。 通过`Read`方法获取 OCR 结果对象后,使用`SaveAsSearchablePdf`方法指定输出文件路径。 以下代码演示了如何使用示例 TIFF 文件。 ```csharp :path=/static-assets/ocr/content-code-examples/how-to/searchable-pdf-searchable-pdf.cs ``` 在处理 [ 多页 TIFF 文件](https://ironsoftware.com/csharp/ocr/examples/csharp-tesseract-multipage-tiff/)或复杂文档时,IronOCR 会自动处理所有页面,并将其包含在可搜索的 PDF 输出中。 该库可自动处理页面排序和文本叠加定位,确保文本到图像的映射准确无误。 下面显示的是示例 TIFF 文件的屏幕截图以及嵌入的可搜索 PDF 文件。 尝试选中 PDF 中的文本,以确认其可搜索性。 选择功能还意味着可以在 PDF 查看器中搜索文本。 IronOCR 使用特定的字体在图像文件上叠加文字,这可能会导致文字大小上的一些差异。 TIFF 文件 可搜索的 PDF ### 处理多页文档 在处理多页文档上的 [PDF OCR 操作](https://ironsoftware.com/csharp/ocr/examples/csharp-pdf-ocr/)时,IronOCR 会按顺序处理每一页,并保持原始文档结构。 以下是将多页扫描 PDF 转换为可搜索 PDF 的示例: ```csharp using IronOcr; // Initialize IronTesseract with configuration var ocrTesseract = new IronTesseract { Configuration = { RenderSearchablePdf = true, PageSegmentationMode = TesseractPageSegmentationMode.Auto } }; // Load a multi-page PDF using var pdfInput = new OcrPdfInput("multi-page-scan.pdf"); // Optionally specify page range (e.g., pages 1-10) pdfInput.SelectPages(1, 10); // Perform OCR with progress tracking OcrResult result = ocrTesseract.Read(pdfInput); // Save as searchable PDF result.SaveAsSearchablePdf("searchable-multi-page.pdf"); // Display total pages processed Console.WriteLine($"Processed {result.Pages.Length} pages"); ``` 在创建可搜索 PDF 时如何应用过滤器? `SaveAsSearchablePdf`还接受一个布尔标志作为第二个参数,允许您对可搜索的 PDF 应用过滤器或不应用过滤器,从而为开发人员提供选择的灵活性。 使用[图像优化过滤器](https://ironsoftware.com/csharp/ocr/examples/ocr-image-filters-for-net-tesseract/)可以显著提高 OCR 的准确性,尤其是在处理[低质量扫描](https://ironsoftware.com/csharp/ocr/examples/ocr-low-quality-scans-tesseract/)时。 下面是一个应用灰度过滤器的示例,然后通过在 `SaveAsSearchablePdf` 的第二个参数中输入 `true` 保存带有过滤器的 PDF。 ```cs :path=/static-assets/ocr/content-code-examples/how-to/image-quality-correction-searchable-pdf.cs ``` 为获得最佳效果,请考虑使用 [Filter Wizard](https://ironsoftware.com/csharp/ocr/examples/filter-wizard/) 自动确定特定文档类型的最佳过滤器组合。 该工具会分析您的输入,并建议适当的预处理步骤。 如何将可搜索的 PDF 导出为字节或数据流? 也可以分别使用`SaveAsSearchablePdfBytes`和`SaveAsSearchablePdfStream`方法将可搜索 PDF 的输出作为字节或流进行处理。 下面的代码示例展示了如何使用这些方法。 ```csharp :path=/static-assets/ocr/content-code-examples/how-to/searchable-pdf-searchable-pdf-byte-stream.cs ``` 这些输出选项在与云存储服务、数据库或网络应用程序集成时特别有用,因为文件系统访问可能会受到限制。 下面是一个展示实际应用的扩展示例: ```csharp using IronOcr; using System.IO; public class SearchablePdfExporter { public async Task ProcessAndUploadPdf(string inputPath) { var ocr = new IronTesseract { Configuration = { RenderSearchablePdf = true } }; // Process the input using var input = new OcrImageInput(inputPath); var result = ocr.Read(input); // Option 1: Save to database as byte array byte[] pdfBytes = result.SaveAsSearchablePdfBytes(); // Store pdfBytes in database BLOB field // Option 2: Upload to cloud storage using stream using (Stream pdfStream = result.SaveAsSearchablePdfStream()) { // Upload stream to Azure Blob Storage, AWS S3, etc. await UploadToCloudStorage(pdfStream, "searchable-output.pdf"); } // Option 3: Return as web response // return File(pdfBytes, "application/pdf", "searchable.pdf"); } private async Task UploadToCloudStorage(Stream stream, string fileName) { // Cloud upload implementation } } ``` ### 性能考虑 在处理大量文件时,请考虑实施[多线程 OCR 操作](https://ironsoftware.com/csharp/ocr/examples/csharp-tesseract-multithreading-for-speed/)以提高吞吐量。 IronOCR 支持并发处理,允许您同时处理多个文档: ```csharp using IronOcr; using System.Threading.Tasks; using System.Collections.Concurrent; public class BatchPdfProcessor { private readonly IronTesseract _ocr; public BatchPdfProcessor() { _ocr = new IronTesseract { Configuration = { RenderSearchablePdf = true, // Configure for optimal performance Language = OcrLanguage.English } }; } public async Task ProcessBatchAsync(string[] filePaths) { var results = new ConcurrentBag<(string source, string output)>(); await Parallel.ForEachAsync(filePaths, async (filePath, ct) => { using var input = new OcrImageInput(filePath); var result = _ocr.Read(input); string outputPath = Path.ChangeExtension(filePath, ".searchable.pdf"); result.SaveAsSearchablePdf(outputPath); results.Add((filePath, outputPath)); }); Console.WriteLine($"Processed {results.Count} files"); } } ``` ### 高级配置选项 对于更高级的应用场景,您可以利用[详细的 Tesseract 配置](https://ironsoftware.com/csharp/ocr/examples/csharp-configure-setup-tesseract/),针对特定文档类型或语言对 OCR 引擎进行微调: ```csharp var advancedOcr = new IronTesseract { Configuration = { RenderSearchablePdf = true, TesseractVariables = new Dictionary { { "preserve_interword_spaces", 1 }, { "tessedit_char_whitelist", "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" } }, PageSegmentationMode = TesseractPageSegmentationMode.SingleColumn }, Language = OcrLanguage.EnglishBest }; ``` ## 摘要 使用 IronOCR 创建可搜索 PDF 既简单又灵活。 无论您需要处理单个图像、多页文档还是批量操作,该库都能提供强大的方法来生成各种格式的可搜索 PDF。 以文件、字节或流的形式导出的功能使其能够适应从桌面应用程序到基于云的服务等任何应用程序架构。 如需了解更高级的 OCR 场景,请浏览 [ 综合代码示例](https://ironsoftware.com/csharp/ocr/examples/),或参考 [API 文档](https://ironsoftware.com/csharp/ocr/object-reference/api/),了解详细的方法签名和选项。 常见问题解答 如何用 C# 从扫描图像创建可搜索的 PDF? IronOCR 使从扫描图像创建可搜索 PDF 变得非常简单。只需在配置中将 RenderSearchablePdf 设为 true,在输入图像上使用 Read() 方法,然后调用 SaveAsSearchablePdf() 并指定所需的输出路径即可。IronOcr 将对图像执行 OCR,并生成在原始图像上叠加了可选择、可搜索文本的 PDF。 哪些文件格式可以转换为可搜索的 PDF? IronOCR 可以将各种图像格式(包括 JPG、PNG、TIFF 和现有 PDF 文档)转换为可搜索的 PDF。该库既支持单页图像,也支持 TIFF 文件等多页文档,能自动处理所有页面,并在输出的可搜索 PDF 中保持正确的页面顺序。 能否将可搜索的 PDF 导出为字节数组或流,而不是文件? 是的,IronOCR 支持导出多种格式的可搜索 PDF。除了使用 SaveAsSearchablePdf() 直接保存到文件外,您还可以将 OCR 结果导出为字节数组或流,从而轻松与网络应用程序、云存储或数据库系统集成,而无需创建临时文件。 创建可搜索 PDF 至少需要多少代码? 使用 IronOCR 创建可搜索 PDF 只需一行代码即可完成: new IronOcr.IronTesseract { Configuration = { RenderSearchablePdf = true }.}.Read(new IronOcr.OcrImageInput("file.jpg")).SaveAsSearchablePdf("searchable.pdf").这展示了 IronOCR 简化的 API 设计。 可搜索 PDF 中的文本叠加是如何工作的? IronOCR 可自动处理识别文本的定位,将其作为 PDF 中原始图像顶部的不可见覆盖层。这确保了文本到图像的精确映射,使用户可以选择和搜索文本,同时保持原始文档的视觉外观。该库使用专门的字体和定位算法来实现这一目标。 Chaknith Bin 立即与工程团队聊天 软件工程师 Chaknith 在 IronXL 和 IronBarcode 工作。他在 C# 和 .NET 方面有着深厚的专业知识,帮助改进软件并支持客户。他从用户互动中获得的见解有助于更好的产品、文档和整体体验。 审核者 Jeffrey T. Fritz 首席项目经理 - .NET 社区团队 Jeff 也是 .NET 和 Visual Studio 团队的首席项目经理。他是 .NET Conf 虚拟会议系列的执行制片人,并主持“Fritz and Friends”直播节目,每周两次与观众一起谈论技术并编写代码。Jeff 撰写研讨会、演示文稿并计划包括 Microsoft Build、Microsoft Ignite、.NET Conf 和 Microsoft MVP 峰会在内的最大型微软开发者活动的内容。 准备开始了吗? Nuget 下载 5,246,844 | 版本: 2025.12 刚刚发布 免费 NuGet 下载 总下载量:5,246,844 查看许可证