使用 C# 提取 PDF 文件中的所有文字(支持 .NET Core)

Posted dotNET跨平台

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用 C# 提取 PDF 文件中的所有文字(支持 .NET Core)相关的知识,希望对你有一定的参考价值。

PDF 是 Portable Document Format 的简称,意为“可携带文档格式”,是由 Adobe Systems 用于与应用程序、操作系统、硬件无关的方式进行文件交换所发展出的文件格式。PDF 文件以 PostScript 语言图象模型为基础,无论在哪种打印机上都可保证精确的颜色和准确的打印效果,即 PDF 会忠实地再现原稿的每一个字符、颜色以及图象。

鉴于 PDF 文件格式比较复杂,一般通过第三方组件来对 PDF 进行操作,本文使用的是 itext7 。

官网:https://itextpdf.com/

NuGet:https://www.nuget.org/packages/itext7/

通过 NuGet 引入 itext7 组件之后,可以使用以下代码提取 PDF 文件中的文字:

using System.Collections.Generic;
using iText.Kernel.Pdf;
using iText.Kernel.Pdf.Canvas.Parser;
using iText.Kernel.Pdf.Canvas.Parser.Listener;
public static class PdfHelper

    public static IEnumerable<string> ExtractText(string filename)
    
        using (var r = new PdfReader(filename))
        using (var doc = new PdfDocument(r))
        
            for (int i = 1; i < doc.GetNumberOfPages(); i++)
            
                ITextExtractionStrategy strategy = new LocationTextExtractionStrategy();
                string text = PdfTextExtractor.GetTextFromPage(doc.GetPage(i), strategy);
                yield return text;
            
        
    

示例代码:

var lines = PdfHelper.ExtractText("PDF文件路径").ToList();

需要注意的是:如果你的 PDF 文件是基于图片的扫描版,那么本文的代码是无法提取到文字的,你需要的是 OCR 技术。

以上是关于使用 C# 提取 PDF 文件中的所有文字(支持 .NET Core)的主要内容,如果未能解决你的问题,请参考以下文章

求助!批量识别PDF中特定字段,并用该字段重新命名该PDF文件?

为啥qq提取文字识别失败

怎么提取pdf文件中的图片

php抓取图片进行内容提取解析,文字性pdf进行内容文字提取解析

提取PDF表格?方法很简单!

迅捷pdf转换器——如何提取pdf中的图片