什么';从pdf文件导入/读取数据的最佳方式是什么?

什么';从pdf文件导入/读取数据的最佳方式是什么?,pdf,import,Pdf,Import,我们从我们的客户那里获得了大量不同格式的pdf文件中的数据[layout wise],这些文件通常是报表输出,并且通常有正确的注释[它们通常不需要OCR],但格式不够好,以至于从acrobat中复制几百页文本是行不通的 到目前为止,我发现最好的方法是编写一个脚本来解析几乎有效的xml输出(注释无效,许多字符以不同的方式转义,é变为命令行pdftoipe实用程序的[[[e9]]]é、$变为\$,%变为\%…)(为名为的程序转换pdf文件),这为我提供了文本元素及其在每个页面上的位置[参见下面的示例

我们从我们的客户那里获得了大量不同格式的pdf文件中的数据[layout wise],这些文件通常是报表输出,并且通常有正确的注释[它们通常不需要OCR],但格式不够好,以至于从acrobat中复制几百页文本是行不通的

到目前为止,我发现最好的方法是编写一个脚本来解析几乎有效的xml输出(注释无效,许多字符以不同的方式转义,é变为命令行pdftoipe实用程序的[[[e9]]]é、$变为\$,%变为\%…)(为名为的程序转换pdf文件),这为我提供了文本元素及其在每个页面上的位置[参见下面的示例],对于我关心的每个页面上相同值位于相同位置的报表来说,这非常有效,但需要额外的脚本工作才能导入矩阵[cross tab]pdf文件。pdftoipe完全不是为实现这一点而设计的,最多可以使用cygwin for windows手动编译

是否有一些我可以容忍的脚本语言库使这变得容易?一个图形工具也会很棒。还有一匹小马

的pdftoipe输出如下所示:

<ipe creator="pdftoipe 2006/10/09"><info media="0 0 612 792"/>
<-- Page: 1 1 -->
<page gridsize="8">
<path fill="1 1 1" fillrule="wind">
64.8 144 m
486 144 l
486 727.2 l
64.8 727.2 l
64.8 144 l
h
</path>
<path fill="1 1 1" fillrule="wind">
64.8 144 m
486 144 l
486 727.2 l
64.8 727.2 l
64.8 144 l
h
</path>
<path fill="1 1 1" fillrule="wind">
64.8 144 m
486 144 l
486 727.2 l
64.8 727.2 l
64.8 144 l
h
</path>
<text stroke="1 0 0" pos="0 0" size="18" transformable="yes" matrix="1 0 0 1 181.8 707.88">This is a sample PDF fil</text>
<text stroke="1 0 0" pos="0 0" size="18" transformable="yes" matrix="1 0 0 1 356.28 707.88">e.</text>
<text stroke="1 0 0" pos="0 0" size="18" transformable="yes" matrix="1 0 0 1 368.76 707.88"> </text>
<text stroke="0 0 0" pos="0 0" size="12.6" transformable="yes" matrix="1 0 0 1 67.32 692.4"> </text>
<text stroke="0 0 0" pos="0 0" size="12.6" transformable="yes" matrix="1 0 0 1 67.32 677.88"> </text>
<text stroke="0 0 0" pos="0 0" size="12.6" transformable="yes" matrix="1 0 0 1 67.32 663.36"> </text>
<text stroke="0 0 0" pos="0 0" size="12.6" transformable="yes" matrix="1 0 0 1 67.32 648.84"> </text>
<text stroke="0 0 0" pos="0 0" size="12.6" transformable="yes" matrix="1 0 0 1 67.32 634.32"> </text>
<text stroke="0 0 0" pos="0 0" size="12.6" transformable="yes" matrix="1 0 0 1 67.32 619.8"> </text>
<text stroke="0 0 0" pos="0 0" size="12.6" transformable="yes" matrix="1 0 0 1 67.32 605.28"> </text>
<text stroke="0 0 0" pos="0 0" size="12.6" transformable="yes" matrix="1 0 0 1 67.32 590.76"> </text>
<text stroke="0 0 0" pos="0 0" size="12.6" transformable="yes" matrix="1 0 0 1 67.32 576.24"> </text>
<text stroke="0 0 0" pos="0 0" size="12.6" transformable="yes" matrix="1 0 0 1 67.32 561.72"> </text>
<text stroke="0 0 0" pos="0 0" size="12.6" transformable="yes" matrix="1 0 0 1 67.32 547.2"> </text>
<text stroke="0 0 0" pos="0 0" size="12.6" transformable="yes" matrix="1 0 0 1 67.32 532.68"> </text>
<text stroke="0 0 0" pos="0 0" size="12.6" transformable="yes" matrix="1 0 0 1 67.32 518.16"> </text>
<text stroke="0 0 0" pos="0 0" size="12.6" transformable="yes" matrix="1 0 0 1 67.32 503.64"> </text>
<text stroke="0 0 0" pos="0 0" size="12.6" transformable="yes" matrix="1 0 0 1 67.32 489.12"> </text>
<text stroke="0 0 0" pos="0 0" size="12.6" transformable="yes" matrix="1 0 0 1 67.32 474.6"> </text>
<text stroke="0 0 1" pos="0 0" size="16.2" transformable="yes" matrix="1 0 0 1 67.32 456.24">If you can read this</text>
<text stroke="0 0 1" pos="0 0" size="16.2" transformable="yes" matrix="1 0 0 1 214.92 456.24">,</text>
<text stroke="0 0 1" pos="0 0" size="16.2" transformable="yes" matrix="1 0 0 1 219.48 456.24"> you already have A</text>
<text stroke="0 0 1" pos="0 0" size="16.2" transformable="yes" matrix="1 0 0 1 370.8 456.24">dobe Acrobat </text>
<text stroke="0 0 1" pos="0 0" size="16.2" transformable="yes" matrix="1 0 0 1 67.32 437.64">Reader i</text>
<text stroke="0 0 1" pos="0 0" size="16.2" transformable="yes" matrix="1 0 0 1 131.28 437.64">n</text>
<text stroke="0 0 1" pos="0 0" size="16.2" transformable="yes" matrix="1 0 0 1 141.12 437.64">stalled on your computer.</text>
<text stroke="0 0 0" pos="0 0" size="16.2" transformable="yes" matrix="1 0 0 1 337.92 437.64"> </text>
<text stroke="0 0.502 0" pos="0 0" size="12.6" transformable="yes" matrix="1 0 0 1 342.48 437.64"> </text>
<image width="800" height="600" rect="-92.04 800.64 374.4 449.76" ColorSpace="DeviceRGB" BitsPerComponent="8" Filter="DCTDecode" length="369925">
feedcafebabe...
</image>
</page>
</ipe>

64.8144米
486144升
486727.2升
64.8 727.2升
64.8 144升
H
64.8144米
486144升
486727.2升
64.8 727.2升
64.8 144升
H
64.8144米
486144升
486727.2升
64.8 727.2升
64.8 144升
H
这是一个示例PDF文件
E
如果你能读到这个
,
你已经有一个
德必杂技演员
读者一
N
在您的计算机上被暂停。
feedcafebabe。。。

你看过Aspose吗?我们将它用于ASP.net应用程序,我也看到了一些vbscript使用它的示例。也不是特别贵


我们在其中一个应用程序中使用。它是一个C++库,主要用于PDF渲染,虽然它有一个文本提取器,它对于这个项目可能是有用的。

如果你调用外部的东西很好,你可以使用-查看包含在分发中的PS2ASCII脚本。我不确定你想从一个图形工具中得到什么——你按下一个大按钮来选择输入和输出文件?预演?您可能可以使用GSView,具体取决于您需要什么。

pdftohtml-xml


虽然pdftoipe看起来更详细

我不相信这就是我要找的。Aspose.Pdf.Kit似乎仅输出。你能说得更具体些吗?pdftoipe是一个基于Xpdf的代码。不幸的是,这是迄今为止最好的答案:自己修改Xpdf以满足我的需要。