6

我有一个相当简单的任务:我需要读取一个 PDF 文件并写出它的图像内容,同时忽略它的文本内容。所以本质上我需要做“另存为文本”的补充。

理想情况下,我宁愿避免对图像内容进行任何形式的重新压缩,但如果不可能,也可以。

是怎么做的例子吗?

谢谢!

4

3 回答 3

5

使用 PDFsharp 从 PDF 文件中提取文本并非易事。

最近在此线程中进行了讨论: https ://stackoverflow.com/a/9161732/162529

于 2012-03-07T15:22:45.117 回答
4

使用 PdfSharp 从 PDF 中提取文本实际上非常容易,具体取决于文档类型和您打算使用它做什么。如果文本在文档中是文本而不是图像,并且您不关心位置或格式,那么它很简单。此代码获取我正在使用的 PDF 中第一页的所有文本:

var doc = PdfReader.Open(docPath);
string pageText = doc.Pages[0].Contents.Elements.GetDictionary(0).Stream.ToString();

doc.Pages.Count为您提供总页数,您可以通过doc.Pages带有索引的数组访问每一页。我不建议foreach在这里使用和 Linq,因为接口没有很好地实现。传入的索引GetDictionary是针对哪个 PDF 文档元素 - 这可能因文档的生成方式而异。如果您没有得到您要查找的文本,请尝试遍历所有元素。

这产生的文本将充满各种 PDF 格式代码。但是,如果您需要做的只是提取字符串,则可以使用 Regex 或任何其他适当的字符串搜索代码找到您想要的字符串。如果您需要对格式或定位做任何事情,那么祝您好运 - 据我所知,您将需要它。

于 2016-02-23T16:44:10.510 回答
0

PDFSharp 库从 .pdf 文件中提取图像的示例:

关联

图书馆

编辑:

然后,如果您想从图像中提取文本,则必须使用 OCR 库。

有两个很好的 OCR tessnet和 MODI
Link to thread on stack
但我完全可以推荐我现在使用的MODI 。一些示例@codeproject

编辑 2:

如果您不想从提取的图像中读取文本,您应该编写新的 PDF 文档并将它们全部放入其中。为了编写 PDF,我使用MigraDoc。使用那个库并不难。

于 2012-03-06T21:16:37.583 回答