如何使用 Spire.PDF 或任何其他库将 pdf 文件读取为正确格式的文本文件?

问题描述 投票:0回答:4

如何使用 Spire.PDF 读取 pdf 文件并将内容保存到文本文件? 例如:这是一个 pdf 文件,这是该 pdf 中的 所需文本文件

我尝试使用下面的代码来读取文件并将其保存到文本文件

PdfDocument doc = new PdfDocument(); doc.LoadFromFile(@"C:\Users\Tamal\Desktop\101395a.pdf"); StringBuilder buffer = new StringBuilder(); foreach (PdfPageBase page in doc.Pages) { buffer.Append(page.ExtractText()); } doc.Close(); String fileName = @"C:\Users\Tamal\Desktop\101395a.txt"; File.WriteAllText(fileName, buffer.ToString()); System.Diagnostics.Process.Start(fileName);

但是

输出文本文件的格式不正确。它有不必要的空格,一个完整的段落被分成多行等等。

如何获得

所需文本文件中所需的结果?

此外,还可以检测和标记(如添加标签)粗体、斜体或下划线形式的文本吗?对于具有多列文本的页面,事情也会变得更加成问题。

c# pdf ocr
4个回答
4
投票
使用

iText



File inputFile = new File("input.pdf"); PdfDocument pdfDocument = new PdfDocument(new PdfReader(inputFile)); SimpleTextExtractionStrategy stes = new SimpleTextExtractionStrategy(); PdfCanvasProcessor canvasProcessor = new PdfCanvasProcessor(stes); canvasProcessor.processPageContent(pdfDocument.getPage(1)); System.out.println(stes.getResultantText());

这是(如代码所示)基本/简单的文本提取策略。 可以在文档中找到更高级的示例。


4
投票
使用

IronOCR

var Ocr = new IronOcr.AutoOcr(); var Results = Ocr.ReadPdf("E:\Demo.pdf"); File.WriteAllText("E:\Demo.txt", Convert.ToString(Results));

供参考

https://ironsoftware.com/csharp/ocr/

使用它你应该得到格式化的文本输出,但不是你想要的确切的期望输出。

如果您想要精确的预解释输出,那么您应该检查付费 OCR 服务,例如

OmniPage capture SDKAbbyy Finereader SDK


0
投票
尝试 BitMiracle.Docotic.Pdf dll,为您提供一个带有格式的正确 txt 文件..

请参考:

https://bitmiracle.com/pdf-library/


-2
投票
这就是 PDF 的本质。它基本上是说“转到页面上的这个位置并将这个角色放在那里。”我对Spire.PFF一点也不熟悉;我使用 Java 和 PDFBox 库,但任何从 PDF 中提取文本的尝试都是启发式的,因此并不完美。这是一个受到相当多关注的问题,并且某些应用程序比其他应用程序具有更好的结果,因此您可能需要调查所有可用的选项。不过,我认为你必须清理结果。

© www.soinside.com 2019 - 2024. All rights reserved.