如何浏览PDF以确定元素是否为文本?

时间:2011-06-28 20:21:46

标签: c# pdf .net-4.0

我有PDF并希望提取其中包含的文字。我尝试了几个不同的PDF库,它们都返回了基本相同的结果。当从具有数百个单词的两页文档中提取文本时,只返回标题中的十几个单词。

有没有办法判断我之后的文字是文本还是文本的光栅图像?我正在考虑Firebug的“Inspect Element”,但在这一点上我会采取任何解决方案来说明我真正关注的内容。

这个项目确实无法尝试使用OCR。而且,虽然是一个简单的解决方案,但由于文件的生成器是第三方,因此使用PDF中的字段不是一种选择。

3 个答案:

答案 0 :(得分:1)

如果Acrobat / Reader可以选择文本,那么它就是文本。

您的图书馆可能无法找到相关文字的原因:

  1. 复杂/错误的字体或编码。 Adobe可以非常宽容垃圾,以某种方式设法获得Good Info。
  2. 文本可以是注释而不是页面内容。如果您需要查看annot数组,那么解析内容流的程序无关紧要。
  3. 您没有命名特定的库,因此您正在使用的库可能无法查看XObject Forms。即使是远程成熟的API也不太可能,但是发生了一些奇怪的事情。
  4. 如果您可以从Reader中获取副本/意大利面,那么就走这条路。

答案 1 :(得分:1)

你试过Amyuni PDF Creator .Net吗?它允许您枚举页面的指定矩形区域中的所有组件,并从预定义的类型列表中检查它们的类型。您可以使用试用版和以下代码示例进行快速测试以进行文本提取:

// open a PDF file
axPDFCreactiveX1.Open(System.IO.Directory.GetCurrentDirectory()+"\\sampleBookmarks.pdf", "");
axPDFCreactiveX1.Refresh ();
String text = axPDFCreactiveX1.GetRawPageText (1);
MessageBox.Show (text);

此外,如果您需要,它会提供Tesseract OCR integration

免责声明:我是该产品开发团队的成员。

答案 2 :(得分:0)

检查此网站。它可能包含一些有用的代码片段。 http://www.codeproject.com/KB/cs/PDFToText.aspx