Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从PDF文件中提取文本_C#_Java_Pdf - Fatal编程技术网

C# 从PDF文件中提取文本

C# 从PDF文件中提取文本,c#,java,pdf,C#,Java,Pdf,我需要从PDF文件中提取文本。此文本可能采用表格格式,并将用于外部方和我们的系统之间的数据自动传输 有人能推荐一个命令行工具(例如pdf到txt)或一个库来实现这一点吗 语言选项: C#(首选) Java(如果必须的话) 我在这里找到了一些想法,但我认为这家伙说的更多的是一次性情况,我说的更像是每日进口: 试试这个 再见似乎做得很好 pdftotext file.pdf [textfile.txt] 编辑:我不确定您希望如何保留有关表的信息。最好的输出(至少在我的人眼看来)是由 pdft

我需要从PDF文件中提取文本。此文本可能采用表格格式,并将用于外部方和我们的系统之间的数据自动传输

有人能推荐一个命令行工具(例如pdf到txt)或一个库来实现这一点吗

语言选项:

  • C#(首选)
  • Java(如果必须的话)
我在这里找到了一些想法,但我认为这家伙说的更多的是一次性情况,我说的更像是每日进口:

试试这个

再见

似乎做得很好

pdftotext file.pdf [textfile.txt]
编辑:我不确定您希望如何保留有关表的信息。最好的输出(至少在我的人眼看来)是由

pdftotext -layout file.pdf [textfile.txt]

这将尽可能保持文档的原始布局。特别是,这些表在文本输出中看起来仍然很好。默认情况下,将表中的列解释为文本列(可怕)。另一个对我来说不太好,但可能仍然有用的选项是
-raw
选项。

试试开源java pdf库


我不能提供解决方案,只能提供一般性建议。我的建议是在记事本或其他纯文本编辑器中打开PDF文档并研究格式代码。它们很容易理解。例如,//par是一个段落,//tab是一个选项卡。一旦您了解了表格布局的格式代码,您就很容易找到自己的解决方案,从PDF文档中提取任何内容。

Java上还有PdfBox和JPedal。表不以PDF文件格式存在,因此任何软件都会“猜测”它们。

是一个开源Java工具包,专门研究您要寻找的内容:从各种文档(包括PDF)中提取结构化上下文

它确实将PDFBox用于pdf文件格式,但提供了非常适合提取结构化上下文的抽象级别


它包含命令行实用程序-请参阅。

PDF格式的表格数据通常很难正确提取,因为大多数PDF文件不包含结构化内容元数据。如果没有这些元数据,PDF文件只是一堆文本和其他操作。大多数情况下,只有人类才能说出文档中是否有表

几乎所有足够先进的工具和库都试图使用启发式方法以某种方式构造从PDF中提取的文本。当然,结果因工具和库的不同而不同

您可以尝试(免责声明:我为BitMiracle工作)从PDF文件中提取文本。我认为图书馆应该提取质量足以进行进一步处理的文本


请查看显示的示例。

是否保留文本的表格格式?如果是这样,任务将变得相当困难,如果不是这样,那么任何建议的PDF到文本库都可以。表格格式并不重要,它只需要机器可读,这样我就可以解析它并将其放入数据库。根据维基百科,
xpdf
确实有一个
pdftotext
的实现。我在
poppler-utils
包中找到的一个。我似乎找不到一个包含表的pdf来测试输出是什么样子的。你想要什么样的输出?看起来poppler是xpdf的一个分支,所以它可能是同一个工具。我使用了这个的xpdf版本,对结果非常满意。正如安东在上面指出的那样,-layout标志确实很有帮助。这使用了itextsharp,供以后参考。这并不容易。以人类可读的格式从文档中提取文本涉及到很多工作。如果每次只需要从同一个文档中提取文本,任务会变得更容易一些,但是如果需要从不同来源的随机文档中提取文本,这一点都不容易。所以我不推荐这个选项,除非你想花很多时间来完善它,并且真的不能使用任何第三方库。