使用 iTextSharp VS ComPDFKit 在 C# 中从 PDF 中提取文本
在这个信息爆炸的时代,我们利用大量数据来训练人工智能大型语言模型、建立数据库等,旨在筛选有价值的信息。PDF 文档是主要数据源之一,包含大量有价值的信息。对于开发人员来说,从 PDF 中提取文本是有效数据提取的第一步。
你们中的一些人可能会担心如何使用 C# 从 PDF 中提取文本。iTextSharp 一直是 PDF 文本提取的有效解决方案。在本指南中,我们将深入研究如何使用 iTextSharp 在 C# 中进行 PDF 文本提取,涵盖从安装和项目设置到提供代码示例的所有内容。此外,我们将介绍并将其与另一个强大的 C# 库 ComPDFKit 进行比较,以帮助您做出明智的决策。
1. 如何使用 ComPDFKit 在 C# 中从 PDF 中提取文本?
下载用于文本提取的 ComPDFKit C# 库
首先,您需要 在 Nuget 中下载并安装 ComPDFKit C# 库。请确保您已满足下面列出的系统要求。
-
平台: Windows
-
系统要求: Windows 7、8、10 和 11(32 位、64 位)
-
集成开发环境: Visual Studio 2017 或更高版本
-
框架要求: .NET Framework 4.6.1 或更高版本
创建新的 Windows 项目并应用许可证
按照我们文档中关于C#库如何集成的说明 创建一个新项目。之后, 联系我们的销售人员 获取免费试用许可证以初始化 ComPDFKit 转换 SDK。然后,按照以下步骤插入许可证。
string resPath = "***"; string libPath = "***"; string license = "***"; CPDFConverter.InitLibrary(libPath); CPDFConverter.InitResource(resPath); CPDFConverter.LicenseVerify(license);
从 PDF 中提取文本
要使用 ComPDFKit 从 C# 中的 PDF 文档中提取文本,只需按照这些代码示例操作即可。
string inputFilePath = "***"; string outputFolderPath = "***"; string outputFileName = "***"; CPDFConverterJsonText converter = CPDFConvertFactroy.CreateConverter(CPDFConvertType.CPDFConvertTypeJsonText, inputFilePath) as CPDFConverterJsonText; CPDFConvertJsonOptions jsonOptions = new CPDFConvertJsonOptions(); jsonOptions.IsAllowOCR = false; ConvertError error = ConvertError.ERR_UNKNOWN; jsonTextConverter.Convert(outputFolderPath, ref outputFileName, jsonOptions, ref error);
注意
• 禁用OCR(光学字符识别)可能导致无法从图像中的表格中提取文本。
• 当我们使用 CPDFConverterJsonText 类访问 PDF 文档的内容流时,我们经常会遇到零散的数据。例如,假设我们试图从 PDF 文档中提取“这是一个示例句子。”这句话。您可能最终会将其部分检索为单独的内容流,如“这”和“是一个示例句子。”。发生这种情况的原因是 PDF 中的文本对象并不总是整齐地组织成单词、句子或段落。当未启用 OCR 时, CPDFConverterJsonText 类将返回 与 PDF 页面内容流中定义完全相同的文本对象。
2. 如何使用 iTextSharp 从 PDF 中提取文本?
使用 iTextSharp 进行文本提取的步骤与 ComPDFKit 类似。安装 iTextSharp PDF 库并创建项目后。按照以下示例使用 iTextSharp C# 库从 PDF 文件中提取文本。
using System; using System.Text; using iTextSharp.text.pdf; using iTextSharp.text.pdf.parser; namespace PDFApp2 { class Program { static void Main(string[] args) { string filePath = @"C:\Users\buttw\OneDrive\Desktop\highlighted PDF.pdf"; string outPath = @"C:\Users\buttw\OneDrive\Desktop\name.txt"; int pagesToScan = 2; string strText = string.Empty; try { PdfReader reader = new PdfReader(filePath); for (int page = 1; page <= pagesToScan; page++) { ITextExtractionStrategy its = new iTextSharp.text.pdf.parser.LocationTextExtractionStrategy(); strText = PdfTextExtractor.GetTextFromPage(reader, page, its); strText = Encoding.UTF8.GetString(ASCIIEncoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.Default.GetBytes(strText))); string[] lines = strText.Split('\n'); foreach (string line in lines) { using (System.IO.StreamWriter file = new System.IO.StreamWriter(outPath, true)) { file.WriteLine(line); } } } reader.Close(); } catch (Exception ex) { Console.Write(ex); } } } }
文本提取 C# 库比较
毫无疑问,iTextSharp 是一个功能强大的 C# PDF 文本提取库。作为一个开源库,它始终是开发人员将常见 PDF 功能集成到其应用程序中的首选解决方案。与 ComPDFKit 相比,很明显,使用 iTextSharp 需要编写冗长而复杂的代码,而 ComPDFKit 仅需不到 10 行代码即可从 PDF 中提取文本。
使用 iTextSharp,开发人员需要编写自定义代码或逻辑来实现所需的功能,这需要对库和 C# 有深入的了解。幸运的是,ComPDFKit C# 库提供了开箱即用的功能,使文本提取对开发人员来说是一个方便的过程。
因此,在ComPDFKit与iTextSharp在PDF文本提取准确率相近的前提下,ComPDFKit在性能和代码可读性方面更胜一筹。