如何使用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格式不正确。它有不必要的空格,完整的段落分为多行等。
如何在所需文本文件中获得所需结果?
此外,还可以使用粗体,斜体或下划线形式检测和标记(如添加标签)文本?对于具有多列文本的页面,事情也会变得更加棘手。
答案 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中提取文本的尝试都是启发式的,因此不完美。这是一个受到广泛关注的问题,有些应用程序比其他应用程序有更好的结果,因此您可能需要调查所有可用选项。不过,我认为你必须清理结果。