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

C# 如何浏览PDF以确定元素是否为文本?,c#,pdf,.net-4.0,C#,Pdf,.net 4.0,我有一个PDF,想提取其中包含的文本。我尝试了几个不同的PDF库,它们返回的结果基本相同。当从一个有数百个单词的两页文档中提取文本时,只返回标题中的十几个单词 有没有办法判断我要找的文本是文本还是文本的光栅图像?我想的是Firebug的“Inspect元素”,但在这一点上,我将采用任何能说明我真正在看什么的解决方案 这个项目确实没有理由尝试使用OCR。而且,尽管这是一个简单的解决方案,但在PDF中使用字段不是一个选项,因为文件的生成器是第三方。请查看此网站。它可能包含一些有用的代码片段 如果Ac

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

有没有办法判断我要找的文本是文本还是文本的光栅图像?我想的是Firebug的“Inspect元素”,但在这一点上,我将采用任何能说明我真正在看什么的解决方案


这个项目确实没有理由尝试使用OCR。而且,尽管这是一个简单的解决方案,但在PDF中使用字段不是一个选项,因为文件的生成器是第三方。

请查看此网站。它可能包含一些有用的代码片段

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

您的库可能无法找到相关文本的原因:

  • 复杂/错误的字体或编码。Adobe可以非常宽容垃圾的存在,以某种方式设法获得好的信息
  • 文本可以位于批注中,而不是页面内容中。如果您需要查看annot数组,那么由哪个程序解析内容流并不重要
  • 您没有命名特定的库,因此您正在使用的库可能没有查看XObject表单内部。即使在一个非常成熟的API中,这也不太可能,但奇怪的事情已经发生了
  • 若你们能从读者那个里得到副本/通心粉,那个么就走这条路。

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

    // open a PDF file
    axPDFCreactiveX1.Open(System.IO.Directory.GetCurrentDirectory()+"\\sampleBookmarks.pdf", "");
    axPDFCreactiveX1.Refresh ();
    String text = axPDFCreactiveX1.GetRawPageText (1);
    MessageBox.Show (text);
    
    此外,它还提供了一些功能,以备您需要


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

    您是否收到来自第三方的锁定PDF?@DJ Quimby-不,它不是锁定的PDF。您可以通过在acrobat reader中打开它来判断,您可以复制并粘贴文本吗?如果不是,则不是文本。或者你是说你是如何通过编程来完成的?我可以在Reader中选择并复制文本。此步骤不需要通过代码完成。我只是想知道元素是什么,为什么我不能通过代码用PDF库提取它。谢谢你的建议。我得到了相同的结果-只是页脚文本。