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

时间:2018-05-26 02:27:28

标签: c# pdf ocr

如何使用Spire.PDF读取pdf文件并将内容保存到文本文件? 例如:以下是pdf file,此处是pdf

中的desired text file

我尝试了以下代码来读取文件并将其保存到文本文件

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);

output text file格式不正确。它有不必要的空格,完整的段落分为多行等。

如何在所需文本文件中获得所需结果?

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

3 个答案:

答案 0 :(得分: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());

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

答案 1 :(得分: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 SDK & Abbyy finereader SDK

答案 2 :(得分:-2)

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